时间:2022-08-22 09:03:32
摘要:本文分析局域网内频繁发生的ARP欺骗攻击原理,通过软件来构造ARP欺骗数据包,编写出进行模拟ARP 攻击实验。
关键词:安全;ARP;攻击;WinPcap
中图分类号:TP393.08 文献标识码:A文章编号:1007-9599 (2011) 06-0000-01
Design and Implementation of ARP Spoofing Attack Experimental Simulation
Bo Lin
(Sichuan of Business School,Deyang618000,China)
Abstract:This paper analyzes frequently occur of ARP spoofing attacks principle in the LAN,ARP spoofing software to construct the data packet,write ARP attack experiment simulation.
Keywords:Safety;ARP;Attacks;WinPcap
近年来,许多局域网内频繁出现区域性或整体性掉线,重新启动计算机或网络设备后恢复正常;网速变得时快时慢,并且极其不稳定,但单机进行数据链路测试时一切正常;时常听到用户的网上银行、游戏及QQ账号频繁丢失的消息。经研究发现,这些问题的出现有很大一部分要归咎于ARP攻击。
一、ARP欺骗攻击原理
ARP协议在网络通讯的过程中是高效而且可行的,但该协议在实际运作中存在明显的漏洞。
首先,ARP协议是无连接的,ARP只考虑将数据发送出去,不管对方是否收到,也不保证数据在传输过程中的完整性和正确性。其次,它是动态的,它的应答是随意的。
更为重要的是,ARP协议是建立在对整个网段上所有主机完全信任的基础之上的。无论局域网中哪台电脑,其发送的ARP数据包都是正确的。这样就很危险了!因为局域网中并非所有的电脑都安分守己,往往有非法者的存在,他们“无意”或“有意”发出的ARP请求或ARP应答必将对网络上的其他主机产生影响。
换而言之,ARP欺骗攻击的核心就是向目标主机发送伪造的ARP应答,并使目标主机接收应答中伪造的IP与MAC间的映射对,并以此更新目标主机缓存。设在同一网段的三台主机分别为A,B,C,如表1。
假设A与B是信任关系,A欲向B发送数据包。攻击方C通过前期准备,可以发现B的漏洞,使B暂时无法工作,然后C发送包含自己MAC地址的ARP应答给A。由于大多数的操作系统在接收到ARP应答后会及时更新ARP缓存,而不考虑是否发出过真实的ARP请求,所以A接收到应答后,就更新它的ARP缓存,建立新的IP和MAC地址映射对,即B的IP地址12.31.100.2对应了C的MAC地址00-E2-5A-33-33-33。这样,导致A就将发往B的数据包发向了C,但A和B却对此全然不知,因此C就实现对A和B的监听。
二、模拟ARP欺骗攻击实验的设计
我们就可以通过软件来构造ARP欺骗数据包,编写出进行ARP攻击的工具。本文用Visual C++6.0作为开发平台,使用WinPcap api编写模拟ARP欺骗攻击的程序进行攻防实验。代码如下:
1>以太网头
typedef struct ethdr
{
unsigned char eh_dst[6];//以太网的目的mac 地址
unsigned char eh_src[6];//以太网的源MAC 地址
unsigned short eh_type;//以太网的上层协议类型
}ETHDR,*PETHDR;
2>Arp 头
typedef struct arphdr
{
unsigned short arp_hdr;//硬件地址 以太网0x0001
unsigned short arp_pro;//协议类型 IP 协议0X0800
unsigned char arp_hln;//硬件地址长度 0X06
unsigned char arp_pln;//协议地址长度 0X04
unsigned short arp_opt;//操作类型 0X0001 请求0X0002 应答
unsigned char arp_sha[6];//发送端mac
unsigned long arp_spa;//发送端ip
unsigned char arp_tha[6];//目的mac
unsigned long arp_tpa;//目的ip
}ARPHDR,*PARPHDR;
3>ARP request 包的扫描
ARPHDR *DST;
for(i=1;i
{
DST->arp_tha =0xff-ff-ff-ff-ff-ff; //目的mac 为广播
DST-> arp_spa=i; //ip 遍历
Memcpy(DST,buf,sizeof(DST));//copy 到发送区
pcap_sendpacket ( pcap_t * p, u_char * buf, int size ); //发送数据包
}
4>ARP reply 包(IP 地址冲突)
for(i=0;i
{
DST->arp_tha=攻击主机的MAC;
DST->arp_spa=攻击主机的IP;//对目标主机进行攻击使目标主机发出ip 地址冲突
}
5>ARP reply 包2(IP 断网)
for(i=0;i
{
DST->arp_spa=Gatway 的IP; //源IP 为网关的IP
DST->arp_sha=攻击主机的MAC; //源MAC 为目标主机的MAC
DST-arp_tha=攻击主机的MAC; //目的MAC 为目标主机的MAC
}
三、结束语
在目前仍然是IPv4为主的以太网络中,ARP协议在从源主机到目的主机的数据传输过程中起到了至关重要的作用。文中用Visual C++6.0作为开发平台,通过构造不同的ARP数据包来模拟各种ARP欺骗数据包,进行网络攻击和查找实施ARP攻击或被ARP病毒感染主机的实验。
参考文献:
[1]MS系网研究小组著.Windows Server 2003系统配置、管理与应用.清华大学出版社
[2]Cisco Systems公司著.思科网络技术学院教程(第三、四学期))第三版).人民邮电出版社
[3]万荣泽,王世斌等著.网络规划与系统集成.北京航空航天大学出版社
[4]谢希仁.计算机网络(第四版).电子工业出版社
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文