您的位置:网站首页 > 网络管理 > 网络安全 > 正 文

ARP欺骗病毒专题

【来源:兰州大学公共设施中心 | 发布日期:2016-10-21 】     【选择字号:

鉴于目前ARP欺骗对局域网安全运行造成的影响,我们收集整理了这个ARP欺骗病毒的专题,希望
能给您的网络安全运行带来帮助!我们将从下面几个方面来讲解ARP欺骗病毒的原理及防治办法:


1、什么是ARP协议

要想了解ARP欺骗攻击的原理,首先就要了解什么是ARP协议。 ARP是地址转换协议(Address Resolution Protocol)的英文缩写,它是一个链路层协议,工作在OSI 模型的第二层,在本层和硬件接口间进行联系,同时对上层(网络层)提供服务。我们知道二层的以 太网交换设备并不能识别32位的IP地址,它们是以48位以太网地址(就是我们常说的MAC地址)传输 以太网数据包的。也就是说IP数据包在局域网内部传输时并不是靠IP地址而是靠MAC地址来识别目标 的,因此IP地址与MAC地址之间就必须存在一种对应关系,而ARP协议就是用来确定这种对应关系的 协议。ARP工作时,首先请求主机会发送出一个含有所希望到达的IP地址的以太网广播数据包,然 后目标IP的所有者会以一个含有IP和MAC地址对的数据包应答请求主机。这样请求主机就能获得要 到达的IP地址对应的MAC地址,同时请求主机会将这个地址对放入自己的ARP表缓存起来,以节约不 必要的ARP通信。ARP缓存表采用了老化机制,在一段时间内如果表中的某一行没有使用(windows系 统这个时间为2分钟,而Cisco路由器的这个时间为5分钟),就会被删除,这样可以大大减少ARP缓 存表的长度,加快查询速度。通过下面的例子我们可以很清楚的看出ARP的工作机制。
如上图所示,假如我们有两个网段、三台主机、两个网关、分别是:
主机名    IP地址        MAC地址
网关1  192.168.1.1  01-01-01-01-01-01
主机A  192.168.1.2  02-02-02-02-02-02
主机B  192.168.1.3  03-03-03-03-03-03
网关2  10.1.1.1     04-04-04-04-04-04
主机C  10.1.1.2     05-05-05-05-05-05


假如主机A要与主机B通讯,它首先会通过网络掩码比对,确认出主机B是否在自己同一网段内,如果
在它就会检查自己的ARP缓存中是否有192.168.1.3这个地址对应的MAC地址,如果没有它就会向局域
网的广播地址发送ARP请求包,大致的意思是192.168.1.3的MAC地址是什么请告诉192.168.1.2,而
广播地址会把这个请求包广播给局域网内的所有主机,但是只有192.168.1.3这台主机才会响应这个
请求包,它会回应192.168.1.2一个arp reply包,大致的意思是192.168.1.3的MAC地址是
03-03-03-03-03-03。这样的话主机A就得到了主机B的MAC地址,并且它会把这个对应的关系存在自
己的ARP缓存表中。之后主机A与主机B之间的通讯就依靠两者缓存表里的MAC地址来通讯了,直到通
讯停止后两分钟,这个对应关系才会被从表中删除。

再来看一个非局域网内部的通讯过程,假如主机A需要和主机C进行通讯,它首先会通过比对掩码发
现这个主机C的IP地址并不是自己同一个网段内的,因此需要通过网关来转发,这样的话它会检查
自己的ARP缓存表里是否有网关1(192.168.1.1)对应的MAC地址,如果没有就通过ARP请求获得,如果
有就直接与网关通讯,然后再由网关1通过路由将数据包送到网关2,网关2收到这个数据包后发现
是送给主机C(10.1.1.2)的,它就会检查自己的ARP缓存(没错,网关一样有自己的ARP缓存),
看看里面是否有10.1.1.2对应的MAC地址,如果没有就使用ARP协议获得,如果有就是用该MAC地址将
数据转发给主机C。


2、ARP欺骗原理

在了解ARP协议后我们再来看看什么是ARP欺骗,它的目的又是什么?通过上面的例子我们知道了 在以太局域网内数据包传输依靠的是MAC地址,IP地址与MAC对应的关系依靠ARP表,每台主机(包 括网关)都有一个ARP缓存表。在正常情况下这个缓存表能够有效的保证数据传输的一对一性, 也就是说主机A与主机C之间的通讯只通过网关1和网关1,象主机B之类的是无法截获A与C之间的 通讯信息的。但是在ARP缓存表的实现机制中存在一个不完善的地方,当主机收到一个ARP的应答 包后,它并不会去验证自己是否发送过这个ARP请求,而是直接将应答包里的MAC地址与IP对应的 关系替换掉原有的ARP缓存表里的相应信息。如下图所示:
 
这就导致主机B截取主机A与主机C之间的数据通信成为可能。首先主机B向主机A发送一个ARP应答
包说192.168.1.1的MAC地址是03-03-03-03-03-03,主机A收到这个包后并没有去验证包的真实性而
是直接将自己ARP列表中的192.168.1.1的MAC地址替换成03-03-03-03-03-03,同时主机B向网
关1发送一个ARP响应包说192.168.1.2的MAC是03-03-03-03-03-03,同样网关1也没有去验证这个
包的真实性就把自己ARP表中的192.168.1.2的MAC地址替换成03-03-03-03-03-03。当主机A想要与
主机C通讯时,它直接把应该发送给网关1(192.168.1.1)的数据包发送到03-03-03-03-03-03这个
MAC地址,也就是发给了主机B,主机B在收到这个包后经过修改再转发给真正的网关1,当从主
机C返回的数据包到达网关1后,网关1也使用自己ARP表中的MAC,将发往192.168.1.2这个IP地
址的数据发往03-03-03-03-03-03这个MAC地址也就是主机B,主机B在收到这个包后再转发给主
机A完成一次完整的数据通讯,这样就成功的实现了一次ARP欺骗攻击。
因此简单点说ARP欺骗的目的就是为了实现全交换环境下的数据监听与篡改。到这里我们可以知道
要完成一次有效的ARP欺骗的关键点就是双向欺骗,也就是说欺骗者必须同时对网关和主机进行欺骗。



3、ARP欺骗病毒

首先需要说明的是,这里说的ARP欺骗病毒并不是特指某一种病毒,而是指所有包含有ARP欺骗功 能的病毒的总称。由于ARP欺骗到目前为止依然是一种难以控制且非常有效的攻击手段,在今后很 长一段时间它都会被病毒、木马程序等利用。这也加大了我们对这类病毒的控制难度。 ARP病毒的危害: 影响局域网正常运行??局域网内一旦有ARP的攻击存在,会欺骗局域网内所有主机和网关,让所 有上网的流量必须经过ARP攻击者控制的主机。其他用户原来直接通过网关上网现在转由通过被控 主机转发上网,由于被控主机性能和程序性能的影响,这种转发并不会非常流畅,因此就会导致用 户上网的速度变慢。而由于ARP表存在老化机制,这就导致在某段时候主机能获得正确的网关MAC直 到新的欺骗完成,这两种情况的交替过程中,主机显示的状况就是时断时续。 泄露用户敏感信息??大部分时候这些信息是黑客们所感兴趣的东西(如游戏帐号和密码、QQ号 和密码、网银帐号和密码等) ARP病毒的传播方式 前面讲过ARP欺骗是一种攻击方式,所有的病毒都可以采用这种方式,因此ARP病毒传播的方式 包括现有大部分病毒传播的方式,从前我们掌握的情况来看,主要为以下几种: 通过网页下载传播(目前大部分ARP木马的传播方式) 网络共享传播(弱口令共享等) 移动存储介质传播(如U盘、移动硬盘等) 文件感染 ARP病毒的查杀 对于已知的ARP病毒,可以使用杀毒软件或者是专杀工具进行查杀,而对于一些杀毒软件无法查杀 的未知ARP病毒,建议用户重新安全系统并及时升级补丁程序!

4、ARP欺骗的检测与控制办法

目前比较有效的检测ARP欺骗攻击的方法主要有两种,一种是在局域网内部使用抓包软件进行抓 包分析、另一种是直接到到三层交换机上查询ARP表,这两种方法各有优缺点,具体分析如下: 1、抓包分析 方法??使用抓包软件(如windump、sniffer pro等)在局域网内抓ARP的reply包,以windump为 例,使用windump -i 2 -n arp and host 192.168.0.1(192.168.0.1是您的网关地址)抓下来 的包我们只分析包含有reply字符的,格式如下: 18:25:15.706335 arp reply 192.168.0.1 is-at 00:07:ec:e1:c8:c3 如果最后的mac不是您网关的真实mac的话,那就说明有ARP欺骗存在,而这个mac就是那台进行 ARP欺骗主机的mac。 优点??简单易行,无需特别权限设置,所有用户都可以做,误判率较小! 缺点??必须在局域网内部(广播域内部)听包才有效。 2、三层交换机上查询ARP缓存表 方法??登陆局域网的上联三层交换机,并查看交换机的ARP缓存表(各种品牌的交换机命令有差异) 如果在ARP表中存在一个MAC对应多个端口(请注意是一个MAC对应多个端口,而不是一个端口上 存在多个MAC)的情况,那么就表明存在ARP欺骗攻击,而这个MAC就是欺骗主机的MAC。 优点??可以远程操作,无需到局域网内部,可以通过脚本来自动分析。 缺点??需要特殊权限,普通用户无法进行操作。 ARP欺骗的控制方法 1、主机静态绑定网关MAC 方法??使用arp命令静态绑定网关MAC,格式如下: arp -s 网关IP 网关MAC 如果觉得每次手动输入比较复杂,您可以编写一个简单的批处理文件然后让它每次开机时自动运行, 批处理文件如下: ----------------------------------- @echo off echo 'arp set' arp -d arp -s 网关IP 网关MAC exit ------------------------------------ 优点??简单易行,普通用户都能操作 缺点??只能单向绑定。需要跟网关绑定MAC结合使用。 2、网关使用IP+MAC绑定模式 方法??交换机启用静态ARP绑定功能,将用户的IP与MAC进行静态绑定,防止ARP欺骗发生。 优点??效果明显 缺点??操作复杂,工作量巨大。无法保证主机端不被欺骗,需要与主机端绑定网关MAC结合使用。 3、使用ARP服务器 方法??在局域网内架设ARP服务器,替代主机应答ARP包。 优点??效果明显 缺点??配置复杂,需要改变客户端设置。成本高,需要大量的服务器。 4、使用防ARP攻击的软件 方法??下载和使用防ARP攻击的软件,如ARPFix或者是AntiARP等。 优点??简单易行 缺点??需要用户端都安装,无法保证网关不被欺骗。 总结:因为ARP欺骗利用的是ARP协议本身的缺陷,所以到目前为止,我们依然没有一个十分有效 的方法去控制这种攻击。目前难点主要集中在网关交换机上,我们还没有找到一个很有效 的方法来防范网关上的ARP列表不被欺骗修改。所以当前最有效的办法还是迅速阻断这种攻击的来源。 这就要求能够快速检测到攻击并定位出攻击主机位置后加以处理。

5、防范ARP欺骗的常用工具

ARP防火墙??ARPFix 这是我们CCERT为了解决ARP病毒所开发的一个小防火墙软件,当它被安装在正常主机上时,它能 有效地防范自身被ARP欺骗并能检测出感染主机的MAC地址,如果它被安装在感染主机上时它 可以阻断感染主机对外发起的ARP欺骗攻击。需要说明的是这只是一款防火墙软件,它不具备查 杀ARP病毒的能力,如果需要查杀ARP病毒,您还是需要专业杀毒软件。 windump软件??windump tcpdump软件在windows系统下的版本,简单易用!需要winpcap的支持。 sniffer pro软件??sniffer windows系统低下功能最强大的抓包分析软件。 趋势的ARP专杀工具??TSC_ARP 趋势提供的最新的ARP专杀工具,解压缩后直接运行TSC.exe即可。 AntiARP软件??AntiArp 网络上比较流行的防范ARP欺骗攻击的软件。软件的下载地址和详细信息请参见: http://www.antiarp.com/

6、ARP欺骗病毒的最新状况

以往的ARP病毒使用ARP欺骗的目的绝大多数都是为了窃取用户的敏感信息,但是我们最近监测到 ARP欺骗在病毒中又得到了新的应用,那就是作为传播网页木马病毒的传播手段,当一台主机感 染带有这种ARP欺骗功能的病毒后,会在局域网内发动ARP欺骗,它会监听局域网内所有主机的数据 包,一旦发现其它主机有访问WEB网页的行为后,就会通过修改相应的数据封包在你访问的网页代 码里加入包含有木马程序的网页链接。从而导致局域网内其它主机不管访问什么网站都会被导引到含 有木马病毒的网站上去的。当您访问任何网站您的杀毒软件都在报该网页有毒的话,很可能您的局域 网内就存在这种攻击。

7、其他相关

ARP在注册表中的项: 1、关于arp缓存表项的生存期(有效时间) 在默认情况下,Windows Server 2003家族和Windows XP中,ARP缓存中的表项仅存储2分钟。 如果一个ARP缓存表项在2分钟内被用到,则其期限再延长2分钟,直到最大生命期限10分钟为止。 超过10分钟的最大期限后,ARP缓存表项将被移出,并且通过另外一个ARP请求??ARP回应交换 来获得新的对应关系。 ARP缓存表项的存放时间可以通过改变ArpCacheLife和ArpCacheMinReferencedLife的注册表 值来重新设置。 ArpCacheLife Location:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters Data Type: REG_DWORD Valid range: 0-0xFFFFFFFF Default value: 120 Present by default: No ArpCacheLife设置了未被使用的ARP缓存表项可以被保持的时间。如果注册表中没有ArpCacheLife项, 则ArpCacheLife的默认值是120秒(2分钟)。 ArpCacheMinReferencedLife Location:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters Data Type: REG_DWORD Valid range: 0-0xFFFFFFFF Default value: 600 Present by default: No ArpCacheMinReferencedLife设置被重复使用的表项可以在ARP缓存中存放的时间。 ArpCacheMinReferencedLife的默认值是600秒(10分钟)。 在注册表中ArpCacheMinReferencedLife和ArpCacheLife的值的使用方法如下: 如果ArpCacheLife比ArpCacheMinReferencedLife的值大或与之相等,则被使用和未被使用的ARP 缓存表项可存储的时间都是ArpCacheLife。 如果ArpCacheLife比ArpCacheMinReferencedLife的值小,则未被使用的ARP缓存表项在 ArpCacheLife秒的时间后就过期了,被使用的表项的生存期为ArpCacheMinReferencedLife秒。 2、无偿ARP和重复的IP地址检测 ARP可以被用来检测重复的IP地址,这是通过传送一种叫做无偿ARP的ARP请求来完成的。无偿 ARP就是一个发往自己IP地址的ARP请求。在无偿ARP中,SPA(发送者协议地址)和TPA(目标协议 地址)被设置成同一个IP地址。 如果节点发送一个发往自己IP地址的ARP请求,就不应收到任何一个ARP回应帧,这样节点就可以 判断没有其他节点使用跟它相同的IP地址。如果节点发送一个发往自己IP地址的ARP请求,结果收 到ARP回应,这样此节点就可以判断有另外一个节点使用同样的IP地址。注册表中对ArpRetryCount 的设置控制了无偿ARP的发送数量。 ArpRetryCount Location:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters Data Type: REG_DWORD Valid range: 0-3 Default value: 3 Present by default: No ArpRetryCount设置了当初始化某个IP地址时,发送的无偿ARP的次数。如果发送了ArpRetryCount 个无偿ARP后,都没有收到ARP回应,IP就假定此IP地址在此网络段中是唯一的。 提示:无偿ARP试图检测在同一个网络段中的IP地址重复。由于路由器并不转发ARP帧,无偿ARP 并不能检测在不同网络段之间的IP地址冲突。个人感觉这种无偿ARP是不是能够用在开发检测ARP 病毒的机制上?

8、讨论

目前我们还没有一个针对该种攻击方式特别行之有效的办法,如果您在处理ARP病毒的时候有什 么好的方法和经验,欢迎您与大家分享!稍后我们会建立一个邮件列表,用来讨论相关的问题!