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