再仔细看了一下ARP数据包,终于恍然大悟欺骗原理。
是这样的,为了能和其他机器通讯,局域网上的各个机器都缓存了ARP列表(ARP列表可以简单理解成“一个IP地址对应一个MAC地址”)。机器要通过网关和其他机器通讯,其实是在局域网内发了查询ARP请求(可以简单理解成“网关啊,请把你的MAC地址告诉我好吗?”);网关收到此类请求后,就会发送ARP回应报文,回应网关的MAC。这样,某个机器就会把通讯数据发到网关的MAC上。
那么运行了p2pOver之类的软件后是怎么欺骗的呢?简单起见,我们设使用了p2pOver的机器为”A”,”A”的MAC地址为”M”。
首先,”A”通过ARP查询得到真实的网关MAC,和不停地轮询局域网上其他主机(IP)及其MAC。
其次,”A”不停地给局域网上其他主机发送伪造的ARP回应报文:告诉他们网关的MAC是”M”;
同时,”A”也不停给交换机发送伪造的ARP回应报文:告诉真正的网关局域网上所有主机的MAC地址为”M”。
因为是不停地发送报文,到了最后:局域网上的其他主机以为网关就是”A”,真正的网关以为局域网上的所有通讯只来自”A”。也就是”A”变成了事实上的中转中心:不仅可以截取其他主机的流量和数据,还能随心所欲地截断网络通讯。
ARP欺骗防治从欺骗原理,不难推出防治关键就是想办法不接收错误的ARP回应报文:
1) 使用智能交换机,绑定网内所有IP-MAC。这样也就不需要ARP查询才能知道MAC。
2) 还有一个办法,就是在网内所有机器上绑定死网关的MAC(下面适用于WinXP):
在网络正常情况下:
arp -a 网关IP(如192.168.1.1),查询到正确的网关MAC
然后绑定网关MAC:
arp -s 网关IP 网关MAC在执行arp -a,看到网关IP和MAC是静态(Static)的,就可以了