论文部分内容阅读
摘要:阐述了ARP欺骗技术的基本原理,对ARP欺骗造成局域网无法正常通讯的实例进行分析,提出了针对ARP欺骗的多种防范办法。实际应用效果较好。
关键词:ARP;局域网;MAC地址;IP地址;TCP/IP
0 引言
在大型局域网的维护工作中,最近常常发现网络时断时续的现象,而且断网的计算机也不固定。经过多方面的监控和测试,最终确定是时下比较流行的ARP欺骗病毒导致断网。由于这个病毒相当普遍而且易发,所以对ARP欺骗的原理做一些分析是很有必要的。
1 ARP欺骗的基本原理
ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写,是一个位于TCP/IP协议栈中的低层协议,负责将某个IP)地址解析成对应的MAC地址。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。
首先以总线型以太网上三台主机通信(如图1所示)了解一下ARP协议的通信过程。以太网中的主机A发送数据给主机B时,主机A会先检查自己的ARP缓存表中是否有主机B的MAC地址。如果没有,则主机A就会在网络上发送一个广播,向同一网段内的所有主机发出这样的询问:“IP地址为主机B(即IP地址为192.168.12)的MAC地址是什么?”网络上其他IP地址不匹配主机并不响应ARP询问,只有主机B接收到这个帧时,才向主机A做出这样的回应:“IP地址为主机B的MAC地址是BB-BB-BB-BB-BB-BB”。这样,主机A就获得了主机B的MAC地址,并对ARP缓存表进行更新,随后就可以向主机B发送信息了。
ARP欺骗过程如下:
假定主机A是进行监听的主机(ARP欺骗发起的主机),B和C为以太网内任意两台台主机,处于被监听状态。
①首先主机A主动向主机B发送ARP应答报文,告诉主机B,192.168.1.3地址的MAC地址改为AA-AA-AA-AA-AA-AA(原先ARP表中的MAC地址是CC-CC-CC-CC-CC-CC)。
②主机A主动向主机c发送ARP应答报文,告诉主机c,192.168.1.2地址的MAC地址改为AA-AA-AA-AA-AA-AA(原先ARP表中的MAC地址是BB-BB-BB-BB-BB-BB)。
③这样,当主机c需要发数据给主机B的时候,因为主机B的IP地址192.168.1.2在c的ARP表中对应MAC地址是AA-AA-AA-AA-AA-AA,所以实际数据就转发到主机A上。同理,当主机B发送数据到主机c的时候,数据也同样发到了主机A上。
还有一些ARP欺骗采用存储转发方式:将C给B发送消息,改为c先发消息给A,A再发给B;将B给C发送消息,改为B把消息发给A,A再发给C。
2 ARP欺骗在局域网中的危害实例
下面以最基础的通过VLAN通信的局域网为例,剖析ARP欺骗在局域网中的危害。
如图2所示,假设局域网中的主机A、B、c、D等等处于VLAN2(192.168.2.0/24),Web代理服务器E处于VLANl(192.168.1.0/24),其IP地址是192.168.1.8。主机A想要连接Intemet,必须通过Web代理服务器E,A想发数据给E,就会发现服务器E的IP地址并不在自己所属网段内,因此必须通过网关s2来转发,因此,需要检查自己的ARP缓存表里是否有网关s2的IP地址(192.168.2.254)所对应的MAC地址,如果没有就通过ARP请求获得,如果有就直接与网关通信,然后再由网关S2通过路由将数据包送到网关S1,网关S1收到这个数据包后发现是送给服务器E的,就会检查自己的ARP缓存,看看里面是否有192.168.1.8对应的MAC地址,如果没有就使用ARP协议获得,如果有就用该MAC地址与Web服务器E通信。
当主机D被植入了ARP欺骗的木马程序,D就主动向VLAN2中的所有主机发送ARP应答报文,告诉它们,网关S2的JP地址192.168.2254所对应的MAC地址是DD-DD-DD-DD-DD-DD(原先MAC地址是22-22-22-22-22-22)。所有接受到报文的主机都将更新自己的ARP缓存表。于是,当主机A想连接Internet的时候,会寻找IP地址为192.168.2.254的网关,因为对应的ARP缓存表已被修改,主机A最终找到的网关其实是主机D,于是把数据发送给了D,所以,主机无法连接Web服务器E,接入Internet失败。同样,其他的主机也无法接入Internet。
ARP欺骗最典型的应用就是一些盗号木马。以传奇盗号软件为例,当软件开始运行的时候,ARP欺骗也同时运行。在主机A中输入账号密码想登录传奇服务器,由于A一直连不上Internet,而把它的相关数据一直发给监听的主机D,所以D就能通过这个手段获取A主机上的账号和密码。
当然,这只是针对代理服务器连接Internet的攻击,同样,ARP欺骗也会影响局域网中的Ftp、Telnet、Email等服务,并导致无法使用。
3 针对ARP欺骗的几种防范方案
ARP欺骗实质上是利用主机对ARP应答的无条件信任,篡改主机的ARP缓存表,从而实现各种攻击。因此,为了防御ARP攻击,就需要保证主机的ARP缓存表的IP地址与MAC地址映射关系正确,尽可能地阻止非法篡改ARP缓存表。主要措施有以下几点:
(1)主机上静态地解析ARP缓存表
主机的IP和MAC地址对应表用手工维护,不作动态更新,可以避免ARP协议攻击。大多数三层交换机都支持这种方法。但是,这种方法的缺陷也很明显,移动或经常变化的网络环境中,这种静态手工维护MAC表的方式不适用。
(2)使用ARP服务器
使用ARP服务器查找自己的ARP转换表来响应其他机器的ARP广播,但必须确保这台ARP服务器不被黑客攻击。
(3)使用DHCP服务器
建立DHCP服务器(建议建在网关上),所有主机的IP地址及相关主机信息,只能从网关取得,网关开通DHCP服务,但是要给每个网卡绑定固定惟一的IP地址。一定要保持网内的机器IP/MAC一一对应的关系。
(4)使用三层交换方式
现在,更多的三层以至于四层交换机应用于局域网之中,第三层交换技术用的是IP路由交换协议,因而ARP欺骗攻击在这种交换环境下不起作用。但相对来讲第三(四)层交换机价格普遍比较昂贵。
上面所讲的各种方法都是切实可行的,实际工作中,可以根据不同的网络环境采取不同的方法。
举个例子,一个有将近1000台计算机的局域网,如果都采取第四钟方法使用三层交换机连接,显然费用过大,所以适当地在汇聚层采用几台三层交换机,可以有效地减少ARP欺骗的影响范围。此外,由于前面三种方法都必须把ARP表或者DHCP对应表一一输入,未免工作量太大(每台机器都要输入将近1000条记录),所以可以采用一种折衷的方式。如果网络更新不是太多的话,可以在第一种方法的基础上作部分修改,编写一个针对网关地址静态ARP解析的批处理文件,内容如下:
@echo off
arp d
arp-s 1 92.1 68.2.254 22-22-22-22-22-22将这个批处理软件拖到每台主机“Windows—开始一程序一启动”中。于是主机每次启动的时候都会对网关进行静态ARP绑定。虽然,这样做也有缺陷:无法防范针对个别机器进行的ARP攻击,比如说图2中,D篡改的是主机B的地址,而非网关s2的地址时,就会发生断网现象,但这样的可能性很小,而且只有当任意主机和主机B通信的时候才会出现无法连接的情况。所以,对于如此大型的一个网络,这种小范围的、暂时的攻击是可以接受的。
4 结束语
ARP协议在设计上是有一定缺陷的,而且为了节省ARP缓存表内存,被解析过的ARP条目的寿命都是有限的:如果一段时间内该条目没有被引用过,则条目被自动删除。在工作站PC的Windows环境中,ARP条目的寿命是2分钟,在大部分Cisco交换机中,该值是5分钟。这就注定了ARP表是在不断更新的,因此给网络黑客们提供了可利用的漏洞。本文提出的几种解决办法,通过实践验证,可以有效地避免ARP欺骗发生。ARP病毒版本不断更新、不断升级,给各地的网络不断带来新的冲击与危害,但是如果网络管理员们能够不断学习新的防范欺骗类技术,提前做好防治工作,相信ARP的危害会减少到最小的程度。
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
关键词:ARP;局域网;MAC地址;IP地址;TCP/IP
0 引言
在大型局域网的维护工作中,最近常常发现网络时断时续的现象,而且断网的计算机也不固定。经过多方面的监控和测试,最终确定是时下比较流行的ARP欺骗病毒导致断网。由于这个病毒相当普遍而且易发,所以对ARP欺骗的原理做一些分析是很有必要的。
1 ARP欺骗的基本原理
ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写,是一个位于TCP/IP协议栈中的低层协议,负责将某个IP)地址解析成对应的MAC地址。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。
首先以总线型以太网上三台主机通信(如图1所示)了解一下ARP协议的通信过程。以太网中的主机A发送数据给主机B时,主机A会先检查自己的ARP缓存表中是否有主机B的MAC地址。如果没有,则主机A就会在网络上发送一个广播,向同一网段内的所有主机发出这样的询问:“IP地址为主机B(即IP地址为192.168.12)的MAC地址是什么?”网络上其他IP地址不匹配主机并不响应ARP询问,只有主机B接收到这个帧时,才向主机A做出这样的回应:“IP地址为主机B的MAC地址是BB-BB-BB-BB-BB-BB”。这样,主机A就获得了主机B的MAC地址,并对ARP缓存表进行更新,随后就可以向主机B发送信息了。
ARP欺骗过程如下:
假定主机A是进行监听的主机(ARP欺骗发起的主机),B和C为以太网内任意两台台主机,处于被监听状态。
①首先主机A主动向主机B发送ARP应答报文,告诉主机B,192.168.1.3地址的MAC地址改为AA-AA-AA-AA-AA-AA(原先ARP表中的MAC地址是CC-CC-CC-CC-CC-CC)。
②主机A主动向主机c发送ARP应答报文,告诉主机c,192.168.1.2地址的MAC地址改为AA-AA-AA-AA-AA-AA(原先ARP表中的MAC地址是BB-BB-BB-BB-BB-BB)。
③这样,当主机c需要发数据给主机B的时候,因为主机B的IP地址192.168.1.2在c的ARP表中对应MAC地址是AA-AA-AA-AA-AA-AA,所以实际数据就转发到主机A上。同理,当主机B发送数据到主机c的时候,数据也同样发到了主机A上。
还有一些ARP欺骗采用存储转发方式:将C给B发送消息,改为c先发消息给A,A再发给B;将B给C发送消息,改为B把消息发给A,A再发给C。
2 ARP欺骗在局域网中的危害实例
下面以最基础的通过VLAN通信的局域网为例,剖析ARP欺骗在局域网中的危害。
如图2所示,假设局域网中的主机A、B、c、D等等处于VLAN2(192.168.2.0/24),Web代理服务器E处于VLANl(192.168.1.0/24),其IP地址是192.168.1.8。主机A想要连接Intemet,必须通过Web代理服务器E,A想发数据给E,就会发现服务器E的IP地址并不在自己所属网段内,因此必须通过网关s2来转发,因此,需要检查自己的ARP缓存表里是否有网关s2的IP地址(192.168.2.254)所对应的MAC地址,如果没有就通过ARP请求获得,如果有就直接与网关通信,然后再由网关S2通过路由将数据包送到网关S1,网关S1收到这个数据包后发现是送给服务器E的,就会检查自己的ARP缓存,看看里面是否有192.168.1.8对应的MAC地址,如果没有就使用ARP协议获得,如果有就用该MAC地址与Web服务器E通信。
当主机D被植入了ARP欺骗的木马程序,D就主动向VLAN2中的所有主机发送ARP应答报文,告诉它们,网关S2的JP地址192.168.2254所对应的MAC地址是DD-DD-DD-DD-DD-DD(原先MAC地址是22-22-22-22-22-22)。所有接受到报文的主机都将更新自己的ARP缓存表。于是,当主机A想连接Internet的时候,会寻找IP地址为192.168.2.254的网关,因为对应的ARP缓存表已被修改,主机A最终找到的网关其实是主机D,于是把数据发送给了D,所以,主机无法连接Web服务器E,接入Internet失败。同样,其他的主机也无法接入Internet。
ARP欺骗最典型的应用就是一些盗号木马。以传奇盗号软件为例,当软件开始运行的时候,ARP欺骗也同时运行。在主机A中输入账号密码想登录传奇服务器,由于A一直连不上Internet,而把它的相关数据一直发给监听的主机D,所以D就能通过这个手段获取A主机上的账号和密码。
当然,这只是针对代理服务器连接Internet的攻击,同样,ARP欺骗也会影响局域网中的Ftp、Telnet、Email等服务,并导致无法使用。
3 针对ARP欺骗的几种防范方案
ARP欺骗实质上是利用主机对ARP应答的无条件信任,篡改主机的ARP缓存表,从而实现各种攻击。因此,为了防御ARP攻击,就需要保证主机的ARP缓存表的IP地址与MAC地址映射关系正确,尽可能地阻止非法篡改ARP缓存表。主要措施有以下几点:
(1)主机上静态地解析ARP缓存表
主机的IP和MAC地址对应表用手工维护,不作动态更新,可以避免ARP协议攻击。大多数三层交换机都支持这种方法。但是,这种方法的缺陷也很明显,移动或经常变化的网络环境中,这种静态手工维护MAC表的方式不适用。
(2)使用ARP服务器
使用ARP服务器查找自己的ARP转换表来响应其他机器的ARP广播,但必须确保这台ARP服务器不被黑客攻击。
(3)使用DHCP服务器
建立DHCP服务器(建议建在网关上),所有主机的IP地址及相关主机信息,只能从网关取得,网关开通DHCP服务,但是要给每个网卡绑定固定惟一的IP地址。一定要保持网内的机器IP/MAC一一对应的关系。
(4)使用三层交换方式
现在,更多的三层以至于四层交换机应用于局域网之中,第三层交换技术用的是IP路由交换协议,因而ARP欺骗攻击在这种交换环境下不起作用。但相对来讲第三(四)层交换机价格普遍比较昂贵。
上面所讲的各种方法都是切实可行的,实际工作中,可以根据不同的网络环境采取不同的方法。
举个例子,一个有将近1000台计算机的局域网,如果都采取第四钟方法使用三层交换机连接,显然费用过大,所以适当地在汇聚层采用几台三层交换机,可以有效地减少ARP欺骗的影响范围。此外,由于前面三种方法都必须把ARP表或者DHCP对应表一一输入,未免工作量太大(每台机器都要输入将近1000条记录),所以可以采用一种折衷的方式。如果网络更新不是太多的话,可以在第一种方法的基础上作部分修改,编写一个针对网关地址静态ARP解析的批处理文件,内容如下:
@echo off
arp d
arp-s 1 92.1 68.2.254 22-22-22-22-22-22将这个批处理软件拖到每台主机“Windows—开始一程序一启动”中。于是主机每次启动的时候都会对网关进行静态ARP绑定。虽然,这样做也有缺陷:无法防范针对个别机器进行的ARP攻击,比如说图2中,D篡改的是主机B的地址,而非网关s2的地址时,就会发生断网现象,但这样的可能性很小,而且只有当任意主机和主机B通信的时候才会出现无法连接的情况。所以,对于如此大型的一个网络,这种小范围的、暂时的攻击是可以接受的。
4 结束语
ARP协议在设计上是有一定缺陷的,而且为了节省ARP缓存表内存,被解析过的ARP条目的寿命都是有限的:如果一段时间内该条目没有被引用过,则条目被自动删除。在工作站PC的Windows环境中,ARP条目的寿命是2分钟,在大部分Cisco交换机中,该值是5分钟。这就注定了ARP表是在不断更新的,因此给网络黑客们提供了可利用的漏洞。本文提出的几种解决办法,通过实践验证,可以有效地避免ARP欺骗发生。ARP病毒版本不断更新、不断升级,给各地的网络不断带来新的冲击与危害,但是如果网络管理员们能够不断学习新的防范欺骗类技术,提前做好防治工作,相信ARP的危害会减少到最小的程度。
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。