表1 ARP缓存表
主机 |
IP地址 |
MAC地址 |
主机 |
网关 |
192.168.16.254 |
xx-xx-xx-xx-xx-xx |
网关 |
A |
192.168.16.1 |
aa-aa-aa-aa-aa-aa |
A |
我们以主机A(192.168.16.1)上网为例。当发送数据时,主机A会在自己的ARP缓存表中寻找是否有网关的IP地址。如果找到了,也就知道了目标MAC地址,直接把目标MAC地址写入帧里面发送就可以了;如果在ARP缓存表中没有找到相对应的IP地址,主机A就会在网络上发送一个广播,目标MAC地址是“FF.FF.FF.FF.FF.FF”,这表示向同一网段内的所有主机发出这样的询问:“192.168.16.254的MAC地址是什么?”网络上其他主机并不响应ARP询问,只有网关接收到这个帧时,才向主机A做出这样的回应:“192.168.16.254的MAC地址是xx-xx-xx-xx-xx-xx”。这样,主机A就知道了网关的MAC地址,它就可以向网关发送信息了。同时它还更新了自己的ARP缓存表,下次再向网关发送信息时,直接从ARP缓存表里查找就可以了。ARP缓存表采用老化机制,在一段时间内如果表中的某一行没有使用,就会删除,这样可以大大减少ARP缓存表的长度,加快查询速度。
当局域网内某台主机运行ARP欺骗的木马程序时,会欺骗局域网内所有主机和路由器,让所有上网的流量必须经过病毒主机。其他用户原来直接通过路由器上网现在转由通过病毒主机上网,切换的时候用户会断一次线。当ARP欺骗的木马程序停止运行时,用户会恢复从路由器上网,切换过程中用户会再断一次线。
于是我们在网关交换机的“系统历史记录”中看到大量如下类似的信息:
%1/15/2006 18:32:30-SYSM-5-IP COLLISION:Rcv src IP 10.4.1.26 arped 00-00-93-64-48-d2 By 00-00-b4-52-43-10 resided in port 16 |
这个消息代表了用户的MAC地址发生了变化,在ARP欺骗木马开始运行的时候,局域网主机的MAC地址更新为病毒主机的MAC地址。
双向绑定防止ARP欺骗
我们可以采用双向绑定的方法来解决并且防止ARP欺骗。
(1)在PC上绑定路由器的IP和MAC地址。
(2)在路由器上绑定用户主机的IP和MAC地址。
对于网络运营商来说,在不方便进行双向绑定时,只有通过管理员经常查阅路由器日志,尽早发现相关提示信息,断开问题用户连接的办法来保障其他用户正常上网。