您的位置:首页 > 其它

局域网中的ARP重定向攻击及防御措施

2007-04-07 13:20 459 查看
摘 要:地址转换协议(ARP)如果被恶意利用,会对局域网产生严重威胁。本文介绍了ARP在TCP/IP协议中的地位和作用,描述了它的工作原理,详细分析了它的几个主要特点,然后通过一个生动的实例介绍了黑客如何利用ARP协议的特点来进行ARP重定向,劫持目标主机与其它主机的会话,通过伪造会话信息实现攻击目的。最后,提出了几种防御ARP欺骗的解决方案并分析了每种方案的利弊及应用场合。
关键词:ARP;ARP欺骗;防御

计算机网络已经深入到社会生产、生活的每一个领域,人们正像离不开电一样离不开网络。勿庸置疑,TCP/IP已经成为网络体系结构“事实上的国际标准”。它的正式名称是TCP/IP互联网协议族(TCP/IP Internet Protocol Suite),一般称为TCP/IP(取名于它的两个主要标准)。地址解析协议ARP(Address Resolution Protocol)是TCP/IP协议族中的底层协议,用它来完成IP地址到硬件地址的转换。ARP由于其本身的特点,如果被恶意利用,就用对局域网产生严重的危害,我们必须予以足够的重视。

1.ARP在TCP/IP中的位置及作用
从图中可以看出,ARP位于IP层的底部,这是因为IP经常要用到ARP。IP(Internet Protocol)是网际协议,使用它可以屏蔽网络底层的细节,实现不同物理网络的互联,但IP地址本身是不能直接用来进行通信的,它只是主机在抽象的网际层中的地址。主机中网际层的数据只有封装到数据链路层MAC帧中才能发送到实际的网络,这就需要IP地址到MAC地址(硬件地址)的转换。相反,网际层的数据到达一个网段后,只有得到IP地址对应的MAC地址,才能将数据交付给目的主机。ARP就是用来实现IP地址到MAC地址的转换的。





2.ARP的工作原理及特点
2.1 原理
注:网络接口卡(网卡)的硬件地址一般为6个字节,为简便起见,本文一律用2个字节表示硬件地址
如图二所示,如果主机A的IP地址为192.168.0.6,想要发送报文给IP地址为192.168.0.8的主机。IP报文必须由MAC层封装成数据帧才能发送,但此时并不知道与IP地址192.168.0.8对应的硬件地址是多少,所以主机A以广播的形式向网络发送ARP请求。请求报文中包含自己的IP地址及硬件地址,以及目标IP地址。主机C收到ARP请求后,发现目标IP地址是自己,于是向主机A发送ARP应答报文,告知主机A自己的硬件地址为CC-CC。





2.2 特点:
2.2.1动态绑定

由于网络中经常会有主机的加入和撤出,而且主机会因硬件故障等原因更换网络接口卡,从而改变硬件地址,所以IP地址到硬件地址的映射不是一成不变的。地址转换协议ARP提供了一种既相当高效又易于维护的机制,实现IP地址到硬件地址的动态绑定。
2.2.2使用高速缓存
主机并不是每发一个数据包都要先广播ARP请求。每个主机维护着一个高速缓存,其中存放着一张ARP表,表中每一个条目就是一个IP地址到硬件地址的对应。当主机发送ARP请求并收到应答后,就在ARP表中保存这个对应关系。当其它主机收到ARP请求广播时,也将请求报文中发送方的IP地址到硬件地址的对应关系保存到各自的ARP高速缓存中。这样,每一个主机在发送报文时,先从高速缓存中查找目标硬件地址,如果能查到,就不用再发送ARP请求广播了。使用高速缓存不但减少了网络中的通信量,降低了网络负载,而且提高了效率。
2.2.3 ARP高速缓存超时
ARP缓存中的每一个条目都会超时,否则就不是“动态绑定”了。ARP协议会为表中每一个条目设置一个计时器,从该条目创建之时开始计时,计时器超时后,会删除相应的条目。超时时间因不同的操作系统而有所不同,典型的时间为20分钟。
2.2.4 ARP请求与ARP响应无对应关系
ARP的这个特点是说,主机在没有收到ARP请求时也可以发送ARP应答;而且,主机在没有发送ARP请求时,也会“愉快地”接受ARP应答。也就是说,不管主机有没有发送请求,收到ARP应答后都要根据应答包中的IP地址到硬件地址的对应信息刷新ARP缓存。
2.2.5 ARP协议用于局域网
因为只有MAC层的数据帧才用到硬件地址,而MAC层的数据帧是点对点传输,不经过中间节点的,所以ARP协议只用于局域网内,一般是同一网段内。路由器和网桥都不转发ARP报文。

3.基于ARP欺骗(ARP重定向)的攻击
由于ARP本身的特点,攻击者很容易实施ARP欺骗。所谓ARP欺骗,又叫ARP重定向,就是向目标主机发送ARP报文(一般是应答报文),其中含有攻击者伪造的IP地址和硬件地址的对应信息。目标主机收到该报文后,会用报文中伪造的信息刷新ARP高速缓存,如果攻击者定时向目标主机发送该报文,而且时间间隔比ARP缓存的超时间隔要小的话,目标主机就会一直维持着一张含有错误信息的ARP缓存表。
由于网际协议IP要依赖地址转换协议ARP来解析目标主机硬件地址,所以利用ARP欺骗可实现多种攻击。下面演示一个利用ARP欺骗实施攻击的例子。我们的做法是劫持目标主机的HTTP请求,然后发送含有恶意代码的HTTP应答,达到攻击目标主机的目的。
如图三所示,主机A的IP地址为192.168.0.6,硬件地址为AA-AA;主机B的IP地址为192.168.0.8,硬件地址为BB-BB;网关C的IP地址为192.168.0.1,硬件地址为CC-CC。假设B为攻击者,A为目标主机。B定时向A和C发送伪造的ARP应答报文,在发给A的ARP应答报文中,含有硬件地址BB-BB和IP地址 192.168.0.1的绑定信息;在发给C的ARP应答报文中,含有硬件地址BB-BB和IP地址192.168.0.6的绑定信息。这样,当主机A和网关C收到伪造的ARP应答报文时,会根据报文中的绑定信息刷新ARP高速缓存,主机A以为主机B就是网关,而网关以为主机B就是主机A。于是,主机B和网关之间的通信就对被攻击者A劫持。
如果主机B向主机A和网关C发送虚假ARP应答报文的时间间隔小于ARP缓存的超时时间,则主机A和网关C不会相互发送ARP请求,在它们的ARP缓存中,各自维持着虚假的绑定信息。
如果主机A要访问远程主机(Web服务器)www.abc.com上的网页,它首先会通过网关与www.abc.com进行三步握手建立TCP连接。由于主机A以为主机B就是网关,所以它会把握手信息发送给主机B。主机B收到主机A发来的握手信息后,再伪造握手信息发送给主机A。主机A收到握手信息后,以为与远程Web服务器www.abc.com成功建立了连接,于是发送HTTP请求。主机B收到HTTP请求后,发送含有恶意代码的网页脚本给主机A。然后,主机B向主机A和网关C发送包含正确绑定信息的ARP响应报文,使主机A能正常地访问外部网络。至此,攻击任务完成。





4.ARP欺骗的防御措施
4.1 使用静态的IP地址至硬件地址的对应表
最简单的办法,是将IP地址和硬件地址进行静态绑定。在windows和linux操作系统下,可使用如下命令:
arp –s 192.168.0.1 CC-CC(注:有些系统只允许6个字节的硬件地址)
使用此命令静态绑定IP地址192.168.0.1和硬件地址CC-CC后,这条绑定信息在ARP缓存表中就相对固定,没有超时设置。在linux和windows XP操作系统下,静态绑定的条目不会根据收到的ARP报文进行动态刷新。但是,在windows 9X/NT/2000系统下,此命令并不能真正实现“静态”绑定,只是在ARP缓存中设置了一条不会超时的地址对应关系,这条对应关系仍然会根据收到的ARP报文而动态改变。
另外,在linux系统下,还可以从文件中加载静态的ARP对应表,命令如下:
arp –f <filename>
filename文件格式如下:
……
192.168.0.1 CC-CC-CC-CC-CC-CC
192.168.0.2 AA-AA-AA-AA-AA-AA
……
从文件中加载和使用arp –s命令的效果是一样的。
注意,ARP绑定信息存在于高速缓存中,所以系统重新启动时会失效。静态的ARP对应表在每次系统重启时都需要重新从文件中加载或使用命令进行绑定。静态绑定有违ARP动态解析和更新地址对应关系的原则,而且增加了管理网络的成本,不太适用于经常变动的网络环境和大规模的网络,但是对于小规模的安全网络来说,还是有效而且可行的。
4.2 禁止使用ARP协议
在linux操作系统下,可以使用如下命令来禁止使用ARP协议:
ifconfig <interface> -arp
这样,interface所指的网卡就不会发送和接受ARP报文。
禁止使用ARP的前提是使用静态ARP对应表。表中没有的主机,将不能进行通信。如前所述,这个办法同样只适用于小规模的安全网络。
4.3 使用ARP服务器
思路是,在本地网络中设立ARP服务器,服务器中保存有本地网络中所有主机的IP地址和硬件地址的对应关系。当网络中的主机需要解析地址时,就向ARP服务器发送ARP请求,而不是向整个网络中广播ARP请求。服务器收到主机发送来的ARP请求后,就把目标主机的IP地址和硬件地址的对应关系发送给请求者。网络中的所有主机,只接受ARP服务器发送来的ARP报文。这样,只需保证服务器的安全,就可以避免本地网络中的ARP欺骗。
使用ARP服务器后,主机的一种更为理想的选择是使用相对固定的ARP对应表。当主机启动时,从ARP服务器拷贝一份ARP对应表,表中的条目不设置超时值,只根据从ARP服务器收到的ARP报文更新。当ARP服务器中的条目有所更新时,就把变化的部分向所有主机广播。这样,当主机进行通信时,不必先向ARP服务器发送ARP请求,所以提高了工作效率,而且降低了ARP服务器和网络的负载。
使用ARP服务器不会增加硬件成本,只需在一台比较有安全保障的主机上运行ARP服务器软件即可。

5.结语
局域网中的ARP欺骗很让人头疼。只要你发送和接受ARP报文,就可能会受到虚假信息的欺骗。不使用ARP协议和静态ARP表,你就无法得到其它主机的IP地址和硬件地址的对应关系,别人也同样不知道你的,从而你不能和任何人通信,这无异于自己从网络中断开。使用静态ARP表有悖于ARP协议动态且易于维护的精神。使用ARP服务器目前还很难实现,因为这涉及到对ARP协议的修改。
尽管有一定困难,但我们根据ARP的工作原理,以及我们的网络及主机系统的具体情况,采取一些相应的防护措施来抵御ARP欺骗,还是可行且有效的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: