近期,“ARP欺骗”木马在互联网上迅速扩散,很多计算机感染了此病毒,有的网络甚至因为它而全面瘫痪。
  笔者一直在关注此病毒,积累了一些心得,希望与大家共享。
  下面,笔者就从ARP木马欺骗中毒现象、危害、成因、检测、处理和预防措施等几个方面入手,与大家共同探讨应对ARP欺骗木马的方法。

ARP木马中毒现象
  ARP欺骗木马的中毒现象表现为:使用校园网时会突然掉线,过一段时间后又会恢复正常。比如客户端状态频频变红,用户频繁断网,IE浏览器频繁出错,以及一些常用软件出现故障等。
  如果校园网是通过身份认证上网的,会突然出现可认证,但不能上网的现象(无法ping通网关),重启机器或在MS-DOS窗口下运行命令arp -d后,又可恢复上网。

ARP木马破坏性分析
  ARP欺骗木马十分猖狂,危害也特别大,各大学校园网、小区网、公司网和网吧等局域网都出现了不同程度的灾情,带来了网络大面积瘫痪的严重后果。
ARP欺骗木马只需成功感染一台电脑,就可能导致整个局域网都无法上网,严重的甚至可能带来整个网络的瘫痪。
  该木马发作时除了会导致同一局域网内的其他用户上网出现时断时续的现象外,还会窃取用户密码。如盗取QQ密码、盗取各种网络游戏密码和账号去做金钱交易,盗窃网上银行账号来做非法交易活动等,这是木马的惯用伎俩,给用户造成了很大的不便和巨大的经济损失。目前,已经发现一些用户密码被窃取的情况。
  这次大面积的木马病毒不仅会影响用户自己的上网和网络安全,还会波及整个单位,对学校、公司的网络运行和安全构成了严重的威胁。

欺骗成因和攻击方式
  该病毒主要通过ARP(Address Resolution Protocol,地址解析协议)欺骗实施攻击和破坏行为。
  它通过交换机的MAC地址学习机制,伪造网关。其原理是建立假的网关,让被它欺骗的计算机向假网关发送数据,而不是通过正常的路由器或交换机途径寻找网关,造成同一网关内的所有计算机无法访问网络。
  以校园网为例,ARP欺骗问题一般是由传奇外挂携带的ARP木马攻击引起的。当有同学在校园网内使用上述传奇外挂时,外挂携带的病毒会将该机器的MAC地址映射到网关的IP地址上,向局域网内大量发送ARP数据包,从而致使同一网段地址内的其他机器误将其作为网关。这就是为什么掉线时内网是互通的,计算机却不能上网的原因。
  还有的ARP欺骗是有一定时间限制的,这也是网络时断时续的原因。

检测进程
  方法一:
  同时按住键盘上的“Ctrl+Alt+Del”键,选择“任务管理器”,选中“进程”标签,察看其中是否有一个名为“MIR0.dat”进程。如果有,则说明已经中毒。
右键点击此进程后,选择“结束进程”。
  方法二:
  如果用户突然发现无法上网,可以通过如下方法验证是否中此木马病毒:
  (1)点“开始→运行”,输入cmd,再输入arp -d,回车。
  (2)重新尝试上网,若能短暂正常访问,则说明此次断网是受木马病毒影响。
  该病毒发作后,在系统进程列表中会有“MIR0.dat”这个进程存在,可通过上述方法一来查看。

定位ARP欺骗
  方法一:
  对于利用三层交换机设备接入校园网的单位,可以检查其三层交换机设备上的ARP表。如果发现有多个IP地址对应同一MAC地址,则说明此MAC地址对应的计算机很可能中了此木马病毒。
  然后可通过下连的二层交换机的转发表查到此MAC对应的交换机端口,从而定位出有问题的计算机,关闭此端口,通知用户查杀病毒结束后再开放端口。
  方法二:
  在局域网内通过交换机端口镜像进行抓包,凡大量发送ARP请求的均可能是本木马感染者。立即关闭端口,通过交换端口确定上网用户,通知用户查杀病毒后再开放端口。
  方法三:
  扫描本子网内的全部IP地址,然后再查ARP表。如果有一个IP地址对应的MAC与网关的MAC地址相同,那么这个IP地址和MAC地址就是中毒计算机的IP地址和MAC地址。
  方法四:
  检查网内感染“ARP欺骗”木马染毒的计算机。在“开始→程序→附件”菜单下调出“命令提示符”,输入并执行ipconfig命令。
  记录网关IP地址,即“Default Gateway”对应的值,例如“192.168.1.1”。再输入并执行arp -a命令,在“Internet Address”下找到上步记录的网关IP地址,记录其对应的物理地址,即“Physical Address”值,例如“00-01-02-03-04-05”。
  在网络正常时,这就是网关的正确物理地址。在网络受“ARP欺骗”木马影响而不正常时,它就是木马所在计算机的网卡物理地址。

处理方案
1.静态ARP绑定网关
  步骤一:
  在能正常上网时,进入MS-DOS窗口,输入命令:arp -a,查看网关的IP对应的正确MAC地址, 并将其记录下来。
  注意:如果已经不能上网,则先运行一次命令arp -d将arp缓存中的内容删空,计算机可暂时恢复上网(攻击如果不停止的话)。一旦能上网就立即将网络断掉(禁用网卡或拔掉网线),再运行arp -a。

  步骤二:
  如果计算机已经有网关的正确MAC地址,在不能上网只需手工将网关IP和正确的MAC地址绑定,即可确保计算机不再被欺骗攻击。
  要想手工绑定,可在MS-DOS窗口下运行以下命令:
  arp -s 网关IP 网关MAC
  例如:假设计算机所处网段的网关为192.168.1.1,本机地址为192.168.1.5,在计算机上运行arp -a后输出如下:
  C:Documents and Settings>arp -a
  Interface:192.168.1.5 — 0x2
  Internet Address Physical Address Type
  192.168.1.1  00-01-02-03-04-05 dynamic

  其中,00-01-02-03-04-05就是网关192.168.1.1对应的MAC地址,类型是动态(dynamic)的,因此是可被改变的。
  被攻击后,再用该命令查看,就会发现该MAC已经被替换成攻击机器的MAC。如果希望能找出攻击机器,彻底根除攻击,可以在此时将该MAC记录下来,为以后查找该攻击的机器做准备。
  手工绑定的命令为:
  arp -s 192.168.1.1  00-01-02-03-04-05
  绑定完,可再用arp -a查看arp缓存:
  C:Documents and Settings>arp -a
  Interface: 192.168.1.5 — 0x2
  Internet Address Physical Address Type
  192.168.1.1  00-01-02-03-04-05 static

  这时,类型变为静态(static),就不会再受攻击影响了。
  但是,需要说明的是,手工绑定在计算机关机重启后就会失效,需要再次重新绑定。所以,要彻底根除攻击,只有找出网段内被病毒感染的计算机,把病毒杀掉,才算是真正解决问题。
2.制作批处理文件
  在客户端做对网关的arp绑定,具体操作步骤如下:
  步骤一:
  查找本网段的网关地址,比如192.168.1.1,以下以此网关为例。在正常上网时,“开始→运行→cmd→确定”,输入:arp -a,点回车,查看网关对应的Physical Address。
比如:网关192.168.1.1 对应00-01-02-03-04-05。
  步骤二:
  编写一个批处理文件rarp.bat,内容如下:
  @echo off
  arp -d
  arp -s  192.168.1.1  00-01-02-03-04-05
  保存为:rarp.bat。
  步骤三:
  运行批处理文件 将这个批处理文件拖到“Windows→开始→程序→启动”中,如果需要立即生效,请运行此文件。

  注意:以上配置需要在网络正常时进行

3.利用安全工具软件
  及时下载Anti ARP Sniffer软件保护本地计算机正常运行。潮流风软件下载站http://www.beewind.net已经收录了两个版本的anti arp sniffer,一个是绿色版,一个是3.5版,都很有效果,我用v2绿色版很快就找到了局域网中arp病毒的机器,需要的朋友可以去http://www.beewind.net/soft/10006.htm下载该软件,最新版本是安装版的v3.5版,同样给出下载地址http://www.beewind.net/soft/10005.htm,需要的朋友可以去下载,用法很简单,参考下压缩包里的文档就可以了。

  如果已有病毒计算机的MAC地址,可使用NBTSCAN等软件找出网段内与该MAC地址对应的IP,即感染病毒的计算机的IP地址,然后报告单位的网络中心对其进行查封。
  或者利用单位提供的集中网络防病毒系统来统一查杀木马。另外还可以利用木马杀客等安全工具进行查杀。
4.应急方案
  网络管理管理人员利用上面介绍的ARP木马检测方法在局域网的交换机上查出受感染该病毒的端口后,立即关闭中病毒的端口,通过端口查出相应的用户并通知其彻底查杀病毒。而后,做好单机防范,在其彻底查杀病毒后再开放相应的交换机端口,重新开通上网。

预防和注意事项
  预防ARP欺骗木马病毒的最根本的措施其实还是老生常谈的那几项:定期更新操作系统,下载和安装最新的系统补丁;安装杀毒软件,并及时升级病毒库;提高上网用户的网络安全防范意识和能力。
笔者在这里要特别强调一下,一定要努力提高上网用户的网络安全防范意识和水平。
  要知道,网络安全问题不是网络中心一个部门就能解决的,需要所有上网用户的配合和支持。因为蠕虫、病毒和木马等在网络中的传播速度越来越快,任何一个用户受到病毒感染,都可能给整个网络带来致命的影响。应该通过培训和讲座提高用户的网络安全防范意识和能力,提高整体的防毒意识。
只有靠大家共同努力,才可能营造一个稳定、安全、畅通的网络环境。

1、使用静态ARP缓存(应急办法)
用arp -s命令在各主机上绑定网关的IP和MAC地址,同时在网关上绑定各主机的IP和MAC地址的方法。
如果是WIN主机可编写一个批处理文件rarp.bat内容如下:(其中192.168.16.254 00-22-aa-00-22-aa是网关的IP和MAC地址)
@echo off
arp -d
arp -s 192.168.16.254 00-22-aa-00-22-aa
将文件中的网关IP地址和MAC地址更改为您自己的网关IP地址和MAC地址即可。
将这个批处理软件拖到“windows–开始–程序–启动”中。

arp 命令简介:
arp –a :显示ARP高速缓存中所有的内容
arp –d [IP地址 MAC地址]:删除指定的IP-MAC条目,若不指定就清空ARP高速缓存
arp –s [IP地址 MAC地址] :手工设置IP-MAC静态条目
(注:在不同的系统中,手工设置的arp静态条目是有区别的。在linux和win2000中,静态条目不会因为伪造的arp响应包而改变,而动态条目会改变。而在win98中,手工设置的静态条目会因为收到伪造的arp响应包而改变。)
使用静态ARP缓存增大了网络维护量,在较大的网络或经常移动主机的网络中这样做更为困难。使用静态ARP缓存只能防止ARP欺骗,对IP地址冲突、Flood攻击仍然没有办法阻止,因此不推荐这样做。

2、用可防ARP攻击的交换机(彻底防治,推荐)
使用三层交换机,绑定端口-MAC-IP,限制ARP流量,及时发现并自动阻断ARP攻击端口,合理划分VLAN,彻底阻止盗用IP、MAC地址,杜绝ARP的攻击。

电信网络内部一套112测试系统,涉及到一系列服务器和测试头(具有TCP/IP三层功能的终端),原有的拓扑在电信内网(DCN)中。由于测试范围的扩大,有些机房没有内网接入点,变通的方案是在城域网上建立一个VPN,将那些没有DCN接入点的测试头设备接在此VPN上,然后此VPN通过一个防火墙(PIX)与DCN做接口。可以将这些测试头看作一些提供测试服务的服务器,使用NAT静态转换将这些测试头映射为DCN内网网段上的IP地址,内网的一些客户端使用这些映射后的地址访问测试头。
  方案实施后,用DCN内网设备访问有些测试头,时通时不通,对这些局点的112测试工作带来了极大的困扰。通过使用Sniffer抓包工具,结合对ARP协议的理解,逐步分析出了故障的真正原因,解决了问题。这个分析解决问题的思路本人自己觉得有归纳总结的必要,所以成文推荐给大家,共同学习。

  故障现象说明

  112系统的部分网络拓扑图如图1所示。

  故障现象

  1.DCN中的112CLIENT有时访问不到测试头A。112CLIENT ping 不通测试头A,网关F上也ping 不通测试头A。
  2. F上始终有ARP记录:例如嘉兴某NPORT测试头A
  Internet 10.0.2.70 118 0090.e809.b82f ARPA FastEthernet0/1
  3. 如果F上clear arp,则112CLIENT再ping,可以ping通。
  4. 如果不采取步骤3,用DCN内机器telnet 134.100.200.10(测试头B),再用B来ping 10.0.2.70(测试头A),能ping通。再用112CLIENT ping A,能ping通。
  5. 将测试头换下,换上同IP地址笔记本电脑,没有任何问题。
  对问题的预先判断中,有两种倾向性猜测,如下:
  ◆ A:NPORT测试头的TCP/IP实现不规范。测试头是厂家应局方要求加工组装的,其TCP/IP协议簇的实现是建立在NPORT MOXA卡上的,主要是为了实现TCP/IP与SERIAL协议之间的转换。而这种实现的可靠性并没有100%的把握。如果是这个原因,需厂家解决。
  ◆ B:宽带交换机的设置不科学。交换机的ARP条目失效时间对其ARP对照表有很大影响,设的太短,很快就失效,包过来后就会不知道流向哪个端口,会被交换机丢弃。宽带交换机属于数据部门维护,一般情况下不会提供给我们口令,没有确实的判断,他们一般不愿意改交换机设置。
  所以确实的定位问题的所在,是我们解决故障的先决条件。
 
  查找故障源

  在不能确定故障源的情况下,我们同时从以上两种倾向性猜测的角度出发,力图从两个方向做出解释,最后找出符合实际的故障点。
  首先,改变拓扑结构如图2所示,网关接口之一连接一台共享带宽的HUB,HUB上的两个端口分别连接宽带部分和一台运行Sniffer的电脑。这样,Sniffer能“抓”到所有宽带与网关F之间的包。

  针对现象一:IDSCLIENT ping不通测试头A

  测试动作一:
  1)网关F上有A的ARP记录。
  112_edge#sh arp | include 10.0.2.70
  Internet 10.0.2.70 3 0090.e809.b82f ARPA FastEthernet0/1
  2)用内网的IDSCLIENT来ping A,结果ping不通。
  用Sniffer抓包,从图3中可以清楚地看出,ICMP探测包从网关F准确地向目的A 10.0.2.70(09B82F)发送,但A没有回响应包。所以结果为ping不通。

  基于两种猜测,故障的原因可能解释有:
  解释A:应该为A的ARP缓存中没有网关F的ARP记录,所以A找不到网关的MAC地址,而且它对这种“找不到网关的MAC地址”不作为(NPORT测试头对ARP的实现不完善)。
  解释B:连接测试头A的宽带交换机中的MAC对端口的对应记录过期,在MAC地址表中目的MAC地址无对应端口,交换机丢掉此包。

  针对现象二:将测试头换下,换上同IP地址笔记本电脑,没有任何问题。

  测试动作二:
  1)A的位置换上一台电脑hongjing(IP与A一致),且让网关F有hongjing的ARP记录。
  112_edge#sh arp | include 10.0.2.70
  Internet 10.0.2.70 3 000b.dbe0.1de9 ARPA FastEthernet0/1
  2)IDSCLIENT2(134.100.5.52) ping 10.0.2.70(HONGJING),能ping通。
  基于两种猜测,故障的原因的解释有:
  解释A:包从网关F中发过来,ICMP探测包准确的发送到目的A 10.0.2.70,hongjing同样由于本机ARP缓存中没有网关F的记录,不能立即发送ICMP回应包。但hongjing没有“不作为”,而是根据ICMP包的源IP地址跟自己的掩码判断此ICMP查询包发自广播域外,所以hongjing当机立断,向本广播域发起ARP查询,要查出网关10.0.0.1的MAC地址,查到后,将ICMP回应包发送到10.0.0.1,所以网络能通。
  对比动作一,动作二的网络包分析,不难发现问题所在。相同的条件与情况下,产生“通”与“不通”的两种结果,关键在于测试头(A)与电脑(hongjing)对ICMP查询包的“态度”不一样所致。电脑hongjing的态度“积极”,当没有该包的传递者F的MAC地址时,会想方设法找到“回答”的路径,并“回答”。而测试头A的态度“消极”,收到询问包时,发现自己没有该包传递者F的MAC地址时,没有采取任何措施,保持“沉默”,所以没回答。
  解释B:笔记本电脑hongjing一接上交换机后立刻发出广播包,通知局域网内其他机器,hongjing的MAC地址是多少。此时,交换机记下hongjing-MAC与端口的映射。所以包从网关F过来后,能到达测试头A。

  针对现象三:“如果F上clear arp,则112CLIENT再ping ,可以ping通”

  测试动作三:
  登录网关F,执行clear arp命令,然后在内网中,用IDSCLIENT ping A,结果可以ping通。
  基于两种猜测的原因解释:
  解释A:本来由于测试头的“消极”,是不通的。但网关F上执行了clear arp命令后,网关F由于ARP地址影射清空,F不知网关的MAC,会向广播域发送ARP包,该包中包含了自己的MAC地址。根据RFC826,虽然广播域中的机器不会回应此包,但会将F的MAC地址记录到ARP缓存中,所以能使得本不通的112CLIENT pingA能ping通。
  解释B:网关F上执行了clear arp命令后,网关F由于ARP地址映射清空,F不知网关的MAC,会向广播域发送ARP包,该包中包含了自己的MAC地址。测试头A上连的交换机会将F的MAC地址和相关端口绑定;A回应此ARP请求时,交换机又会将NPORT测试头A的MAC地址与相关端口绑定。所以后续的连接能通。

  针对现象四:“用DCN内机器telnet 134.100.200.10(测试头B),再用B来ping 10.0.2.70(测试头A),能ping通。再用112CLIENT ping A,能ping通。”  测试动作四:
  用内网机器IDSCLIENT telnet 到134.100.5.66,然后从134.100.5.66上ping 测试头B,结果本来ping不通的,现在可以ping通了。
  基于两种猜测的原因解释:  
  解释A:此现象用猜测A解释不了。
  解释B:测试头B向测试头A ping时,先会发ARP广播,测试头B回应此ARP请求。这个过程中,A上连的交换机会将A<->相应端口,B<->相应端口的记录记在地址端口映射表。
  所以F到A的包就能通了。
  至此,可以排除猜测A。同时,由于同一批次的NPORT测试头在其他地区及内网用的比较正常,所以,倾向于猜测B。为进一步证实猜测B,进一步做了以下测试。
  做动作一的时候,在交换机与A间抓包。看是否有源地址为F的物理地址,目的地址为A的物理地址的包从交换机端口出来,结果确实无包被监听到,所以,从理论上得出,猜测B是正确的。从理论上定位出正确的故障原因后,我们理直气壮的联系数据部门,请他们修改了部分交换机的ARP失效时间。经过一段时间的检验,系统运行良好,原有故障消失。
  本次排障工作中,我们坚持理论指导实践,对每种可能的故障原因进行不偏不倚的分析,在客观公正不带主观臆想的前提下,对每种观点进行逐步考察,终于确定故障点,解决了问题。