局域网ARP攻击解决方案
2014-04-29贺武征
贺武征
摘 要:目前有一种网络破坏行为很常见,主要发生在局域网中,这种破坏行为利用了ARP地址解析协议的工作过程,故障现象是:忽然整个内部网络的电脑全部不能上网了、或者一台一台掉线。本文档对于这种攻击将进行简单的分析介绍,并给出解决方案。
关键词:局域网; 破坏行为; 解决方案
中图分类号:TP393 文献标识码:A 文章编号:1006-3315(2014)03-171-002
目前有一种网络破坏行为很常见,主要发生在局域网中,这种破坏行为利用了ARP地址解析协议的工作过程,一般是内网某台电脑中了病毒,病毒无规律的自动进行破坏,或者是内网某台电脑的操作者故意发起攻击。
一、攻击原理分析
局域网里每个节点都有自己的IP地址和MAC地址。
如果电脑A需要上网,电脑A就需要将数据包发送给局域网网关路由器,那么电脑A必须知道网关路由器的MAC地址,所以电脑A就会发出询问的广播包,询问网络里网关路由器的MAC地址是多少?
网关路由器收到电脑A的询问广播包后,获知并记录了电脑A的MAC地址,然后回复电脑A(蓝色线条所示),告知电脑A自己的MAC地址是多少?这样电脑A就获知了网关路由器的MAC地址,在相互获知并记录了对方的MAC地址这个基础上,两者才开始正常收发数据包。
电脑A获知网关路由器的MAC地址后,将这样一个信息动态保存在自己的ARP地址表中,可以动态即时更新。另外单位时间内电脑A和网关路由器之间没有传输数据包的话,电脑A和网关路由器都会将保存的相应的ARP表条目删除掉。等到有需要的时候,再次通过上面询问的方式重新获取对方的MAC地址就可以了。
上面这样一个询问对方MAC地址,然后相互发送数据包的过程一直正常运转着。忽然,ARP攻击发生了。
局域网中某台电脑(IP地址为192.168.1.30)发起ARP攻击,它向局域网中发送了一个ARP广播包(红色线条所示),告诉所有的电脑:“现在进行广播,局域网的网关路由器MAC地址已经不是以前的00-00-00-00-00-01了,而是新的MAC地址00-00-00-00-00-30,请各位更新自己的ARP表。”
就这样所有的电脑都被欺骗了,将自己的ARP条目条中对应网关路由器的MAC地址更新为这个假网关的MAC地址,更新过以后,这些电脑凡是发往网关的数据包都不再发向00-00-00-00-00-01这个正确的MAC地址,而是发往了错误的MAC地址00-00-00-00-00-30(绿色线条所示),因为所有电脑都被欺骗并更新了自己的ARP条目。
根据上面的演示,所有本应发送到正确网关路由器MAC地址的数据包,都发往错误的假网关MAC地址了,而一般发往网关路由器的数据包都是去往互联网的,所以发生ARP攻击最常见的现象是:瞬间所有需要上网的电脑都无法上网。这个时候无论是PING网关路由器的IP地址或是尝试登录网关路由器的管理界面,都是失败的,因为所有的数据包都发向了错误的00-00-00-00-00-30,而不是真实的网关路由器的MAC地址。
上面我们简明扼要的分析了ARP攻击发生的过程,既然找到了病因,就可以对症下药了。从上面的分析可以得出,故障出现的原因是每台电脑上记录真实网关路由器MAC地址的ARP表是动态的,是允许被动态更新的。如果在每台电脑上采用固定的ARP表条目,不允许动态更新,这样即使有恶意的ARP欺骗包在网络里面进行广播,因为每台电脑的ARP表中都采用静态绑定的方式,将真实网关的MAC地址固定了下来,这样就可以应对ARP攻击的发生。
二、ARP攻击判断
如何判断网络里面发生了ARP攻击呢?
比如您的网络出口使用的我司宽带路由器作为网关路由器。
登录路由器管理界面“运行状态”页面。
可以看到网关路由器的IP地址和MAC地址分别是多少?如果显示网关路由器的MAC地址是00-0A-EB-B9-5C-CE,那么正常上网的时候,在内网任意一台电脑的DOS界面运行arp–a这个命令,可以看到,任意一台电脑arp–a的回显信息中,都有一条对应网关路由器的IP地址和MAC地址的条目,可以看到其中的Physical Address就是前面在路由器“运行状态”页面看到的LAN口MAC地址00-0a-eb-b9-5c-ce,当发生ARP攻击的时候,这个Physical Address就变为另一个MAC地址了,而不是00-0a-eb-b9-5c-ce。
所以说,判断是否发生ARP攻击的办法就是:
正常情况下,登录网关路由器管理界面并记录网关面向局域网接口(LAN口)的MAC地址。
发生异常情况的时候,在内网发生故障的电脑(/或任意一台电脑)上运行arp–a命令,在回显的信息中查看对应网关IP的MAC地址,还是不是之前记录的网关的MAC地址?如果不是,则说明局域网发生了ARP攻击。
三、基本配置步骤
在上面第一步“攻击原理分析”里,我们从理论上简要描述了ARP攻击的发生过程,以及解决的办法。在第二步“ARP攻击判断”里又引入了实际的参数界面,如何察看参数?看到了正常情况的参数都应该是怎样的?等等。
接下来我们以第二步“ARP攻击判断”里面的参数为例,来说明基本的防护配置方法:
1.电脑端进行ARP条目绑定
下面以Microsoft Windows2000操作系统为例,来说明如何在电脑上绑定静态的ARP条目:
(1)“开始”-“程序”-“附件”-“记事本”,
打开“记事本”以后在里面输入命令,
分别是:“arp”、“–s”、“网关IP地址”和“网关MAC地址”,这四个参数中间以“空格”隔离开。
可以看到“网关IP地址”和“网关MAC地址”这两个参数分别就是路由器的“LAN口IP地址”和“LAN口MAC地址”,也就是说如果您使用我司出品的宽带路由器作为网关路由器使用,那么对于内网所有电脑来说,它们的“网关IP地址”就是路由器的“LAN口IP地址”,“网关MAC地址”就是LAN口的MAC地址。
输入完成后点击记事本菜单栏“文件”-“另存为(A)…”,
选择保存在桌面(或者别的路径也可以)。
“文件名(N)”这一栏需要注意,这里举例取名为“protection.bat”。您可以随便取名为别的文件名*.bat,这里“bat”是文件名后缀,“*”可以输入任意数字或者字母或者两者的组合,但是不能取为“arp”或者“ARP”,也就是不能输入,否则会和系统参数冲突而不能生效:
填入了文件名以后,就可以点击“保存”按钮。
(2)“开始”-“程序”-“启动”,对着“启动”单击鼠标右键,选择“打开”,单击后可以将“启动”文件夹打开,然后将刚才建立的“protection.bat”文件复制进去。
(3)复制完成后,重新启动电脑,上面那个protection.bat文件将会被操作系统自动执行一次,执行的结果就是电脑上记录网关路由器MAC地址的ARP条目成为静态的,不会动态改变,这样就确保了这台电脑不会因为受到ARP欺骗而动态修改自己的ARP表,导致上不了网。在这台电脑DOS界面运行arp –a 可以看到ARP表条目已经由以前的动态(Dynamic)变为静态(Static),
上面的配置只是在一台电脑上进行了ARP绑定,实际上在局域网里,并不仅仅是电脑A和网关路由器之间有一个询问MAC地址的过程,而是任意两台电脑之间通讯之前,都有一个询问对方MAC地址的过程,所以实际上内网所有的电脑都需要进行上面第1步“电脑端进行ARP条目绑定”的操作。有一个简单的办法就是将上面这个protection.bat 文件拷贝到内网每臺电脑上,然后再复制到各自的“启动”文件夹内即可。
2.网关路由器端进行ARP绑定
在上面第1步操作里,对所有电脑的ARP表进行了静态绑定,绑定后确保了电脑上面记录的网关路由器的地址信息正确不会改变,那么也就确保了电脑可以将数据包正常发送到路由器。
实际情况是,网关路由器也有一张ARP表格,用来记录内网某台主机的IP和MAC地址,如果网关路由器受到ARP欺骗,那么网关路由器将不能把数据包发送到正确的主机,而是发送到了错误的假MAC地址去了。
网关路由器为了防止受到ARP欺骗,也需要具备IP和MAC绑定的功能,也就是说在网关路由器上进行配置,将内网每台电脑的IP地址和MAC地址组合体现出来,绑定以后确保了网关路由器知道内网每台电脑正确的IP地址和MAC地址。
在网关路由器上进行绑定后,网关路由器就可将数据包发送到正确的MAC地址,而不会因为受欺骗而将数据包发送到错误的MAC地址去。
经过上面两步,分别在电脑端和网关路由器端进行IP和MAC的绑定,就可以有效防止ARP欺骗的发生。