前些天我在黑基上看到了一篇文章《虚拟网关解决ARP攻击》,感觉很巧妙,原文地址是(http://www.hackbase.com/tech/2008-10-07/41833.html)。唯一不足的地方是原文写的不够通俗。为了让更多的人掌握这个巧妙的方法,今天我斗胆来分析一下《虚拟网关解决ARP攻击》的原理,如果你已经对ARP攻击的原理还不熟悉的话,建议你先去了解一下ARP攻击的原理。
1. 局域网内通信靠IP地址还是MAC地址?
答案:MAC地址。通常局域网内MAC地址是通过IP地址查询到的。
2. 如果已知网关的MAC地址,而不知道网关IP地址,能否通过网关上网?
答案:可以,因为上面已经说过了,局域网内通信靠的是MAC地址,而不是IP地址。
要实现虚拟网关上网,还需要经过一些特殊的设置。方法如下(假设已经知道真实网关 MAC:11-11-11-11-11-11,IP:192.168.1.1/24):
第一步 在网段内找一个空闲的IP地址作为虚拟网关的IP,例如192.168.1.123。在“TCP/IP属性”里将“默认网关”设置成192.168.1.123。
第二步 使用“arp -s 192.168.1.123 11-11-11-11-11-11”命令将我们设置的虚拟网关的IP和真实网关的MAC地址绑定起来。(这一步是关键,arp -s命令可以将IP地址和MAC地址绑定起来。命令在哪里执行?cmd下。)
设置完了,试一试,你会发现你仍然能够上网,为什么呢?继续往下看。
上面的讨论貌似和今天的主题没有什么联系,其实 “虚拟网关解决ARP攻击”,已经在不知不觉中被我们设置完成了。通过上面的那种虚拟网关,我们不但依然能上网,而且还能防止ARP攻击。
下面说分析一下两个问题:
第一,为什么能够通过虚拟网关上网?
第二,为什么虚拟网关设置能否防止ARP攻击?
第一个问题:为什么能够通过虚拟网关上网?
答案:当我们的电脑要连接互联网时,数据需要经过网关的中转,如果能维持和网关的通信,我们的电脑就能保持上网。我们的电脑向外部网络发送数据时,先发送给了网关,我们已经设置了网关的IP地址是192.168.1.123,但是局域网内通信靠的是MAC地址,因此,我们首先需要根据网关的IP地址获取网关的MAC地址,在上面我们已经绑定了虚假网关“192.168.1.123” 和真实网关的MAC,这样我们使用这个虚假的网关IP就获取到了真实的网关MAC,因此我们的电脑让然能正确地向网关发送数据。于是乎,我们就能上网了。
第二个问题:为什么虚拟网关设置能够防止ARP攻击?
答案:这个才是我们今天要讨论的关键。如下图所示的局域网环境。
图中主机A进行了虚拟网关设置(虚拟网关IP地址是192.168.1.123)。
现在,我们针对两种常见的ARP攻击进行分析.
第一种情况:主机B对主机A发动ARP攻击(冒充路由器向主机A发送ARP应答)。根据ARP攻击的原理,ARP数据包的源IP肯定是路由器的IP:192.168.1.1,源硬件地址肯定是一个虚假的MAC地址,主机A接收到数据包,建立起一条ARP映射的缓存(192.168.1.1-虚假MAC),由于我们使用的是虚假网关,因此这个虚假的映射对我们已经没有什么影响了。
第二种情况:主机A中了ARP病毒,不断对外发送ARP攻击数据包(通常是冒充网关发送的ARP应答),病毒获取到的网关IP是我们设置的虚假网关IP,因此它对外冒充的也就是虚假网关,呵呵,这当然对其它电脑也没有影响了。
从上面的两种情况我们可以看出,这种虚拟网关的方法不但能够防止自己不够攻击,还能防止自己中毒后攻击别人,真是一石二鸟。如果在路由器中再静态绑定局域网内机器的IP和MAC,那就更完美了。小弟不才,说的不当之处还请指出。