ARP病毒的攻击与防范论文.docx
机都无法正常上网。这点在以前是不行能的,因为一般计克机没有管理权限来限制网美所以说。ARp欺瞒的危害是巨大的,而X1.特别难应付,非法用户和恶意用户可以随时发送ARP欺瞒和兔原数据包,这样就增加f网络管理员查找攻击源的难度-归纳ARP欺瞒类攻击的危杏性如下:(1)攻击点范闹广:不须要攻占具体服务器,在不获得目标主机的权限的条件下,只要在网络环境的任何一个点上安放一台“肉机”便可以感染整个网段:(2)攻击特别隐藏:不须要改动任何目标主机的页面或者是配置,在网络传输的过程中间干脆插入病毒的代码;(3)发觉困难:如没有机房网络管理人员帮助协查,服务器系统管理员光靠系统日志无法在短时间内找到攻击源;(4)笑原困难:网站管理制即时发觉被攻击后,但是从系统U面上无法自己清除:(5)攻击手段变更多样:黑客可以最大化的利用ARP欺瞒,将他与其他攻击方法组合后运用于多种攻击,如,侦听、拒绝服务、挂载病毒。从而实现多中攻击目的.如:窃取信息、病毒传揭、破坏网络路由,暴力广告等等:2.3ARP攻击程序结构随着互联网的发展,ARP攻击已经从早期简洁模式,即发送ARPl可应包使收欺瞒机器无法上网发展到不只是对ARP协议层的攻击。攻击者利用ARP信任局域的重大缺陷作为突破口,并通过系列数据包,专发的方法模拟出正常的通讯手段来欺蹒数据收发双方,然后作为一个透亮的网关在当中进行监听与数据伪装的方法。ARP协议MAClft数抠包转发数抠KA停止吸务攻击数«施听l三2-2ARP攻击的结构框架图整个攻击的结构如图2-2所示,全部ARP类攻击的核心原理是ARP协议MAC地址欺瞒。在数据链接层MAC地址欺瞒基础上运用类似于路由器的数据包转发技术可形成对攻击目标的网络数据侦听。然后便可以与各种攻击方式相比结合,达到数据夔截获胜利。由于ARp缓存表项是动态更新的,其生命周期默认是两分钟,假如再没有新的信息更新,ARP映射项将会自动去除。所以,假如要保持A上的错误信息,C接下来要做的就是始终连绵不断地向A和B发送虚假的ARP晌应数据帧,让A的ARP缓存中保持被篡改了的映射表项。A能要连接8需要妇潮泞1.ACiSrARPS读以ARP龙4B的MAC交成CCCCCCCCCCCC栩误连接CCCCCCCCCCCC图2-5ARP欺瞒的流程图2-5演示了如何运用ARP协议固有的缺陷对其进行欺瞒,但是仅仅这种欺瞒并不能完成对A与B之间数据交换的窃听与篡改,缘由是,光有其次%的欺瞒是不够的,在建立起数据连接层欺瞒后,虽然A对这个变更一点都没有意识到,但是接下来在进行网络层TCP/IP握手以及应用层会话建立时由于C上并没有能仿照B的应用端口监听,所以A和C是无法建立连续连接的,通常当TCP/IP:次握手不胜利时,A与C的接限制功能.不过在Windows中,暇如安装了TCP/IP网络协议组件,就可以执行吩咐RP.ARP吩咐的作用是查看本机的AR峻存、静态绑定IP地址和MAe地址和删除静态绑定项。其实绑定IP地址和MAC地址的本意是为r削减ARP广播流量,只是可以利用这一功能来限制IP地址的运用。(4)不同操作系统中ARP设置的差异:在WindOwSSerVer2(X)3和XP以前的WlNDowS系统中,就算设置了静态MAC地址绑定项,同样会通过接收其他主机的数据包而更新己经绑定的项。而在WindOWSSCrVCr2003和XP中,静态绑定的项不会被动态更新,直到TCP/IP协议终止为止,例如重启计算机。假如耍创建永久的静态MAC地址绑定项,可以写一个脚本文件来执行ARP势态绑定,然后运用安排任务在启动计算机时执行该脚本即可。(5)ARP高速缓存超时设置:在ARP高速缓存中的表项一般都要设理超时值.默认状况卜ARP缓存的超时时限是两分钟,假如再没有新的信息更新,ARP映射项会自动去除。所以,为了保持A与C被修改的ARP表,B始终连绵不断地向A和C发送这种虚锻的ARP响应包.可以在注册表中进行修改。可以修改的键值有两个,都位于HKEY_1.OCA1._MACH【NE'SYSTEMCurrcntControlSetScn-iccsTcpipParameters<.键值1:ArpCache1.ife,类型为DWOrd.单位为秒,默认值为120。健值2:ArpCachcMinRcfcrcncc<I1.ifc.类型为Dword,单位为秒,默认值为600这些健值默认是不存在的.假如想修改,必需自行创建,修改后重启计算机后生效,假如ArpCaChe1.ife的值比ArPCaCheMinReferenCed1.ife的值大,那么ARP缓存的超时时间设置为ArPCaChe1.ife的值。假如ArPCaChC1.ife的值不存在或者比ArPCaCheMinReferenCed1.ife的值小,那么超时时间设置为12()秒,对于正在运用的ARP缓存,超时时间则设置.为ArPCaChCMinRCfCrCnCed1.ifC的值。2.6ARP伪造帧格式在ARP攻击中,黑客是运用ARP协议缺陷更改ARp缓存表的.要发动ARP欺蹒攻击须要获得ARP恳求与应答帧的格式。ARP帧运用是工作在数据琏接层的协议,它也可以用于其他类型的网络以解析IP地址以外的地址(报文第13、14两字节的“帧类型”以及15、16字节“硬件类型”以及17、18字节“协议类型”说明白解析的是什么网络)。对于ARP攻击我们仅探讨在以太网地址解析时的格式。ARP恳求和应答帧的格式如图2-7所示:表2-2ARP帧机构试脸的IP-MAC地址比照关系机器IP地址MAC地址状态A192.168.1.1aaaaaaH3auaaA机器上MAC表被修改B>CCCCCCCCCB192.168.1.2bb-bb-bb-bb-bb-bbB机器上.VAC茨被修改A-CCCCCCCCCC192.168.1.3cc-cocccccc-cc攻击源D192.168.1.4dddddddddddd(1)假设在表2-2网络环境中:A主机的IP地址为,它现在须要与IP为的主机(主机B)进行通讯,那么将进行以下动作:(2)A主机查询自己的ARP缓存列表,假如发觉具有对应于11的IP地址的MAC地址项,则干脆运用此MAC地址项构造并发送以太网数据包,假如没有发觉对应的MAC地址项则接着下一步:(3)在A主机发出ARP解析恳求广播的过程中,A会发出一个目的MAC地址是卜F:FF:FF:FF:FF:FF的ARP恳求帧,来恳求IP为的主机回笈MC地址:0x08061l-10x0800卜卜卜卜卜科卜AAASEiE1UAAA!AA1«IUUMWIttIUI:H14字可以人网人28字节Awil求或应存图28ARP恳求数据帧格式(4)B主机收到ARP解析恳求广播后,I可笑给A主机一个ARP应答数据包,其中包含自己的IP地址和MAC地址bb-bb-bb-bb-bb-bb:在表2-2示例的网络环境中,当主机A在自己的缓存中找不到B的MAC地址而须要进行询问BkA发送了个ARPi旬间报文.在这个报文中,目的地址为全I(FF-FF-FF-FF-FF-FF)的特殊广播地址。广播域内链接的全部以太卡网都会接收广播的数据帧。广播报文结构娟图3-1所示:图3-1ARP广播帧构造对一个ARP恳求来说,除目的湍彼件地址外的全部其他的字段都有填充值.当系统收到一份目的端为本机的ARP思求报文后,它就把硬件地址填进去,然后用两个目的端地址分别替换两个发送端地址,并把操作字段置为2,最终把它发送回去。所以,我们要进行ARP欺瞒所须耍构造的伪装应答报文如下所示:0x080614字双入同人28字VAKr承率或匕骨图3-2ARP欺瞒帧构造构造报文的结构代码可以这样写:苜先我们定义“14字节的以太网头部''结构ETHHDR1:Iypedefstructethhdrl(/«定义”14字节的以太网头部unsignedcharch-ds(6;产目标以太网地址6字节*/unsignedcharch-srcl6;/“源以太网地址6字节*/unsignedShoriehjype;)产帧类型2字节*/ETHHDRI,*PETHHDRI;定义”28字节的ARP恳求或应答”的结构:»/memcpy(ARPPacket1.e1hhdr1.eh-dst,MacAddr,6);/*定义目的MAC地址AAAAAAAAAAAA*/ToMacddrt"CCCCCCCCCCCC".Macddr)*4CCCCCCCCCCCCt成MAC地址*/mcmcpy(ARPPackctl.Cthhdrl.eh-src.MacAddr.6);定义源MAC地址cccccccccccc*/ARPPackct1.ethhdr1.ch-typc=htons(T_ARP);常量ARP表示ARP的类型值*/ARPPacketI.ethhdr1.arp,hrd=htons(H_ARP);/*值为1即表示以太网硬件类型/ARPPackctI.cthhdrl.arp.pro=htons(T_IP);产常此P协议表示IP的类型值*/,XRPPackctI.cthhdrl.arp.hln=6:*MAC地址长度为6字节"/ARPPacketI.ethhdr1.arp-pln=4;*IP地址长度为4字节*/ARPPackclI.cthhdrl.arp.op=htons(OP_ARPB);产OP操作类里2表示ARP应答*/ToMacAddrfccccccCCCCCC".MacAddr);nemcpy(ARPPacket1.arphdrI.arp-sha.MaCAddr.6):伪造的B的N4AC地址ARPPacketI.arphdrl.arp-spa=inet.addr("l92.168.1.2");/B的IP地址ToMacAddrCAAAAAAAAAAAAWlacAddr)mency(ARPPackei1.arphdr1.arpjha,MacAddr,6);目标A的MAC地址ARPPackctl.arphdrl.arp-tpa=inet_addr("l92.l68.1.l");目标A的IP地址3.2发送ARP欺瞒帧在3.1中已经构造了伪装的ARP【同更报文ARPPaCkCII,接下来须要将数据包发送到局域网内主机A上。在此我们运用开发包PaCkCt32中供应的APl函数组。PaCkCt32是闻名的网卡数据读写开发包他有众多版本,在这里运用的是最常用的微软PACKET32.h,现在闻名的网络监听程序如nisni11EthernctSpy,ntpackci,WinPCaP等都运用Packet32开发。应用程序通过PaCket32下PaCketSendpaCkel等函数可以干脆操作网卡,设置网卡的工作模式,干脆在网卡上读写数据“Packe32包中的有如下一些功能函数:(I)PaCkeIGetAdaPlerNameS:从注册表中读取网卡名PaCkCtIniIPaCkeUlPPaCkCl,SZPaCkCIBuf.60);if(PacketSetNumWrites(lpdapter.2)=F1.SE)PrinlH"warning:Unabletosendmorethanonepacketinasinglewrite!n");(6)发送我们构造的伪造ARP数据包if(PacketSendPacket(lpdapte