一、    ARP欺骗原理
在局域网中,通过ARP协议来完成IP地址转换为第二层物理地址(即MAC地址)的。ARP协议对网络安全具有重要的意义。通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞。
ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写。在局域网中,网络中实际传输的是“帧”,帧里面有目标主机的MAC地址。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议(ARP协议)获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。
每台安装有TCP/IP协议的电脑里都有一个ARP缓存表,表里的IP地址与MAC地址是一一对应的,如下表所示。
主机 IP地址         MAC地址
A 192.168.16.1     aa-aa-aa-aa-aa-aa
B 192.168.16.2     bb-bb-bb-bb-bb-bb
C 192.168.16.3     cc-cc-cc-cc-cc-cc
D 192.168.16.4     dd-dd-dd-dd-dd-dd
 
我们以主机A(192.168.16.1)向主机B(192.168.16.2)发送数据为例。当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到了,也就知道了目标MAC地址,直接把目标MAC地址写入帧里面发送就可以了;如果在ARP缓存表中没有找到相对应的IP地址, 主机A就会在网络上发送一个广播,向同一网段内的所有主机发出这样的询问: “192.168.16.2的MAC地址是什么?”网络上其他主机并不响应ARP询问,只有主机B接收到这个帧时,才向主机A做出这样的回应: “192.168.16.2的MAC地址是bb-bb-bb-bb-bb-bb”。这样,主机A就知道了主机B的MAC地址,就可以向主机B发送信息了。同时主机A还更新了自己的ARP缓存表,下次再向主机B发送信息时,就可以直接从ARP缓存表里查找。ARP缓存表采用了老化机制,在一段时间内如果表中的某一行没有使用,就会被删除,这样可以大大减少ARP缓存表的长度,加快查询速度。
从上面可以看出,ARP协议的基础就是信任局域网内所有的人,那么就很容易实现在以太网上的ARP欺骗。例如,主机D告诉目标A:“192.168.16.3的MAC地址是DD-DD-DD-DD-DD-DD”,则会更新A的ARP缓存表,使得主机A记录的主机C的IP对应为主机D的MAC,,从而A发送到C上的数据包都变成发送给D的了。这使得D能够接收到A发送的数据包,实现嗅探的功能。而当D对C也进行了同样的欺骗时,使得C发送给A的数据包也发送给了D,就会使得主机A和C之间的通信均通过D做了中转,而此时A和C通信却是正常的,A和C也许并不知情,它们之间的通信被D嗅探了。
 
二、    常见ARP病毒欺骗方式
以上的ARP欺骗原理逐渐开始被病毒所使用,越来越多的病毒开始在自身的功能中加入了ARP欺骗的功能。以下用一个实例说明ARP病毒在网络中的欺骗过程。
假设网络中有4台主机,如下表所示,其中A为网关(可以是三层交换机、路由器或网关):
主机 IP地址           MAC地址
A 192.168.16.1     aa-aa-aa-aa-aa-aa
B 192.168.16.2     bb-bb-bb-bb-bb-bb
C 192.168.16.3     cc-cc-cc-cc-cc-cc
D 192.168.16.4     dd-dd-dd-dd-dd-dd
当主机D感染了具有ARP欺骗特性的病毒时,病毒主机将开始以下的欺骗过程:
1.    病毒在主机上安装Packet Capture网络协议模块,通常对应为Remote Packet Capture Protocol服务和npf.sys数据包过滤驱动。
2.    主机D向网络中发送广播数据包,询问192.168.16.1-192.168.16.254整个C类网段所有IP地址计算机的MAC地址,例如:
Who has 192.168.16.1?  Tell 192.168.16.4
Who has 192.168.16.2?  Tell 192.168.16.4
Who has 192.168.16.3?  Tell 192.168.16.4
Who has 192.168.16.4?  Tell 192.168.16.4
Who has 192.168.16.5?  Tell 192.168.16.4
Who has 192.168.16.6?  Tell 192.168.16.4
……
3.    网络中每一台活动的主机都将响应一次该ARP询问请求。例如C收到ARP询问请求“Who has 192.168.16.3? Tell 192.168.16.4”后,将向D主机回复一个ARP响应数据包:“192.168.16.3 is at CC-CC-CC-CC-CC-CC”。
4.    D主机收到所有响应后,知道了网络中现存的所有活动主机IP和MAC地址,记录在自身ARP缓存表中。
5.    D主机开始向B、C主机发送ARP响应数据包:
192.168.16.1 is at DD-DD-DD-DD-DD-DD
这时,B和C主机成功被D主机欺骗,当它们访问网关时,会将数据包发送到D主机。
6.    同时,D主机向网关A发送响应数据包:
192.168.16.2 is at DD-DD-DD-DD-DD-DD
192.168.16.3 is at DD-DD-DD-DD-DD-DD
这时,网关A也成功被D欺骗,当A向B和C发送数据包时,会将数据包发送到D主机。
7.    当B访问网关时,会将数据包发送到D,D对数据包进行修改后,转发给网关A;当A回应B的数据包时,会将返回的数据包发送到D,D对数据包进行修改后,转发给主机B。这时,D主机成为B和C与网关A通信的一个桥梁,可以侦听来自双向的通信。
至此,整个网络已经成功被D主机上的ARP病毒欺骗,所有该网段计算机访问该网段外的网络时,都会将数据包先发送给网关,这就使得所有与外部的通信都都将经过D主机。当D主机的性能不足,无法处理过多数据包时,就会出现访问外部网络慢的现象;当D主机关机时,被欺骗的主机会无法上网,出现断网现象。
假如D关机后,B主机的ARP缓存表被清空更新,从而找到了正确的网关A的MAC地址,但由于网关A的ARP缓存表中记录仍是被欺骗后的虚假记录,A仍然认为主机B(192.168.16.2)的MAC地址为DD-DD-DD-DD-DD-DD,使得A无法将对主机B的响应发送到正确的MAC,这会造成主机B仍然处于“断网”的状态。
同时,由于网络中存在大量ARP数据包,也很可能会造成网络阻塞甚至瘫痪。
传统的ARP病毒通过作为内网主机访问外网的桥梁,用以实现窃取内网用户隐私信息的功能。而近期开始有病毒利用ARP欺骗的功能,实现对网页的“挂马”。例如当主机B访问某网站时,网站服务器返回给B的网页数据包在经过D主机时,被D主机在网页代码中进行了修改,则B所看到的网页实际上是被病毒修改后的网页,网页中可能含有病毒,也可能会指向另一个网站。
从而,这类ARP病毒会使所有受欺骗的计算机打开网页出现异常现象。 
三、    病毒处理方法
  (1) 定位病毒主机
当遇到ARP欺骗性质的病毒时,首先需要定位病毒主机:
1.    使用Sniffer、Ethereal、Etherpee等网络抓包工具,在发生网络问题的网段中抓取数据包。通常抓取10秒到30秒的数据包即可。
2.    从抓包结果中进行分析。针对数据包协议类型进行排序,查看ARP类数据包,查看是否存在某主机在短时间内发送大量ARP数据包。如图:
从图中可以看出,10.13.140.8计算机在向所有IP发送ARP欺骗响应数据包,告诉所有计算机:网关(10.13.140.1)的MAC地址为00:06:1b;d4:58:0c。
这里可以看到,00:06:1b:d4:58:0c这个MAC地址就是10.13.140.8自身的MAC地址。我们可以确定,10.13.140.8计算机感染有ARP病毒。
同时,从下图我们还可以看到,10.13.140.164在向网络中发送广播包,查询所有计算机的MAC地址,我们也怀疑该计算机可能感染有ARP病毒。
有时我们会看到网关也在向多台计算机发送ARP响应数据包,如图:
由于真实的网关也会发送这类数据包,这时我们需要判断该网关的MAC,看它是否是真实的网关地址。上图中的实例中,我们事先知道网关的真实MAC地址应该是00:19:aa:4f:e2:c2,因此判断上图中的网关MAC地址是虚假的,这是由于我们用来抓包的计算机本身已经被这个虚假网关所欺骗。这时,我们只需对这个虚假MAC进行定位,找出其对应的其他IP地址,即可分析出病毒主机IP。
有时候,我们在ARP数据包发送源Source一栏中,看到的不是IP地址,而是一个MAC地址,如图:
    这时,我们也需要对这个MAC地址进行定位。
对MAC地址的定位方法参考下一步。
3.    当分析出的主机地址为一个MAC地址时,我们可以通过ipscan、ipbook等局域网扫描工具,扫描整个C类网段,找出所有活动主机的IP-MAC对应关系,再根据上一步中分析出的MAC地址,反向查找出主机的IP地址。如图:
 
至此,已经成功找出了病毒主机的IP地址,对病毒主机进行了定位。
 
 (2) 恢复网络
1.    找到病毒主机后,首先应断开病毒主机的网线,避免病毒主机继续发包影响网络。直到所有病毒主机均已从网络中断开,这时再次使用工具进行抓包时,将不会再有大量异常的ARP数据包。
2.    登陆到网关设备上(网关、交换机或路由器),清空网关的ARP缓存表。重启网关设备也可以将ARP缓存表清空。
3.    清空ARP缓存,具体解决过程如下:
通过点击桌面上任务栏的“开始”->“运行”,然后输入cmd后回车,进入cmd(黑色背景)命令行模式。在命令行模式下输入arp –a(有空格)命令来查看当前本机储存在本地系统ARP缓存中IP和MAC对应关系的信息。再使用arp -d命令,将储存在本机系统中的ARP缓存信息清空,这样错误的ARP缓存信息就被删除了,本机将重新从网络中获得正确的ARP信息,达到局域网机器间互访和正常上网的目的。
 
这时,病毒对网络造成的影响已经被消除,其他正常主机将不会再出现断网等异常现象。
最后,对病毒主机进行清毒操作,清除所有病毒后,即可再次接入网络。
转载自
原文无图