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

    1、什么是ARP协议
    2、ARP欺骗原理
    3、ARP欺骗病毒
    4、ARP欺骗的检测与控制办法
    5、防范ARP欺骗的常用工具
    6、ARP欺骗病毒的最新状况
    7、其他相关
    8、讨论

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_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
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_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
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_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
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病毒的时候有什
么好的方法和经验,欢迎您与大家分享!稍后我们会建立一个邮件列表,用来讨论相关的问题!