陈来传
(1.福建师范大学福清校区 计算机科学与技术系,福建 福清 350300;2.厦门安捷物联网络科技有限公司,福建 厦门 361000)
细数局域网中ARP攻击类型
陈来传1,2
(1.福建师范大学福清校区 计算机科学与技术系,福建 福清 350300;2.厦门安捷物联网络科技有限公司,福建 厦门 361000)
ARP协议是工作于数据链路层的协议,由于其本身的缺陷,造成了局域网ARP攻击的频发,并且攻击的手段和类型日益增加.本文在ARP协议原理的基础上,分析了几种比较典型的基于ARP协议的攻击类型,并提出了相应的防范策略.
ARP协议;攻击类型;防范策略
随着局域网技术的不断发展和成熟,许多企业、学校、政府机关都建立了自己的局域网络,在享受着资源共享、数据通讯所带来的便捷的同时也带来了安全问题.由于局域网最初的设计前提是网络中的每一个用户都是安全的,可信任的,这就给网络安全埋下了隐患,随着局域网的应用日益广泛,网络中的用户也越来越多,其中不乏一些黑客和攻击者.相对于由外网发起的攻击,由他们发起的攻击更加隐蔽,更加难以预防.ARP攻击大多数时候就是由局域网内的用户发起的,发作时会影响正常的网络使用,严重时甚至会使整个局域网络瘫痪,影响正常的办公,造成巨大的经济损失.
ARP全称Address Resolution Protocol,地址解析协议,其作用是提供IP地址到MAC地址的转换,即在主机发送帧之前,将目标地址的IP地址转换为目标MAC地址,查询出目标设备的MAC地址.局域网中,IP地址是每一个网络节点的逻辑标识,但是在数据传输过程中,数据包却是以48位的MAC地址寻址的,因此,必须建立IP地址与MAC地址之间的映射关系,ARP协议的作用就是建立这样的映射.
当发送主机和目的主机处于不同的局域网中,发送主机即便获知目的主机的MAC地址,两者也是不能直接建立通信,须通过路由转发.发送主机这时通过ARP协议获得的将不是目的主机的真实MAC地址,而是局域网外路由某个端口的MAC地址.发送主机发往目的主机的所有帧,都将发往该路由器,并通过它向外发送.这种情况称ARP代理(ARP Proxy).
在局域网中的每一台主机或网关设备的缓冲区中都实时维护着一张ARP列表,表里的IP地址与MAC地址是一一对应,在发起通讯时,首先会从本地的ARP表中查找是否有与目标IP地址相对应的MAC地址,如果有,就直接将数据发送到这个MAC地址.若没有就向本网段发送一个ARP请求广播包,此ARP请求包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址,然后等待该IP地址对应的主机报告它的MAC地址.
网络中与之相连的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致.若不一致则丢弃此数据包,并向其他相连的主机转发;若一致,该主机首先将接收到的广播包的MAC地址和IP地址添加到自己的ARP列表中,而如果列表中已存在此IP信息,则覆盖旧的信息并更新,然后给源主机发送一个ARP响应数据包,告诉对方自己正是它所需要查找的MAC地址.
源主机收到ARP应答数据包后,更新本地ARP缓冲区,将目的主机的MAC和IP地址添加到ARP列表中,并发起正式的数据通讯.如果源主机一直没有收到ARP响应数据包,则返回ARP查询失败[1].
ARP协议的通讯模式采取一应一答的模式,它是一个高效的数据链路层协议,实现IP地址到MAC地址的映射关系.对于网络主机而言,这个映射关系存放在ARP高速缓存中.ARP协议设计初衷是为了方便数据之间的传输,但其设计前提是必须保证网络在绝对安全的情况下,协议的本身是建立在局域网内主机之间相互信任的基础上.因此,导致ARP协议存在着不少安全问题,其表现主要有以下四点:
ARP协议是无连接的,任何主机都可以随意发送ARP协议包.只要接收到的协议包是有效的,主机就无条件的根据协议包的内容刷新ARP缓存列表.
ARP协议在默认情况下,是信任网络内所有的节点,并且出于传输效率以及实现简单性的考虑,ARP协议在收到ARP包时,主机不检查其合法性,直接根据其所带信息修改本机相关状态.
保存在设备内的ARP列表通常不是静态不变的,其状态是根据所接收到的ARP协议包进行动态更新的.
ARP协议对通讯端的MAC地址的寻找采用广播的形式,一般主机是不知道通信端的MAC地址,其通过ARP广播请求方式获取通讯端的MAC地址,用于实现网络间的通信.
通过对ARP协议安全性的分析,ARP协议对于用户身份和ARP报文的合法性都缺乏必要的验证,一旦收到ARP请求就实时更新本地的ARP列表.这样一来,网络上的任一台主机都有可能成为ARP攻击的发起者,网络上的任一台主机都可以随意伪造ARP数据包.网络攻击者正是抓住了ARP协议在运行机制上的漏洞,对局域网内的用户进行ARP攻击,并且ARP攻击的类型层出不穷.目前主要有以下三种:
一台主机检测本机IP地址是否与网上的其他IP地址有冲突的方法是用本机IP地址作为目的地址,向外发送ARP请求,若收到应答则判定为本机IP地址与网上其他用户的IP地址冲突,本机上会弹出IP地址冲突的警告,同时释放本机的IP地址.
ARP攻击者利用这一原理,将ARP应答数据包的“发送端IP”和“目的IP”字段设置为被攻击者的IP,将“目的MAC地址”设置为被攻击者的MAC地址.被攻击者在收到这样的ARP应答之后就误认为产生了IP地址冲突.频发的IP地址攻击造成被攻击者的IP地址被释放,从而无法进行正常的网络通信.
在网络中的所有网络设备都保存着一张ARP表,但是因为处理ARP报文需要占用系统资源,所以ARP表的大小通常是固定的.攻击者通过不断发送伪造的ARP广播数据包,一方面使得交换机忙于处理广播数据包而耗尽网络带宽,另一方面,这大量虚假的MAC地址迅速填满了网络设备的ARP列表,使设备的ARP表溢出,合法用户的ARP报文不能生成有效的ARP表项,造成网络设备无法根据ARP表进行正确的通信.尤其是当交换机的ARP表被伪造信息填满时,就会将更新信息以泛洪方式发送到所有的接口,这时在跨越多个交换机上建立的同一个VLAN的主机都有可能被攻击,严重时会使整个网络的通信瘫痪[2].
ARP欺骗的主要原理就是攻击者通过冒充网关或者主机发送ARP应答,用伪造的IP和MAC之间的映射来更新目标主机的ARP表,让送至特定的IP地址的流量被错误送到攻击者所取代的地方,攻击者将这些流量转到指定的网络或篡改后再转送,从而使本机不能与网内其他主机进行正常的通信.
ARP欺骗分为2种:一种是攻击者将自己伪装成网关,建立假网关,让被它欺骗的设备向假网关发送数据包,而不是通过正常的路由途径进行网络通讯,从而截获从被欺骗的主机发来的所有信息,甚至作为“中间人”将截获的信息再向正确的网关转发.这样可以更好的伪装自己,避免被识破.这种攻击方式所造成的后果就是主机对外发送的信息中包含的账号,密码等重要信息会被攻击者截获,给用户造成损失.另一种是攻击者将自己伪装成主机,按照一定的频率向网关不断发送错误的内网MAC地址,网关中的ARP表很快就会被伪造的MAC地址填满,造成网内正确的地址信息无法更新保存在ARP表中,结果是网关无法将信息转发到正确的MAC地址[3].
可以用一个简单的案例描述ARP欺骗的核心步骤,假设一局域网,只有三台主机A、B和C,其中主机C为攻击者,攻击者C首先获取局域网上的MAC地址,并进一步得到主机A和主机B两台主机的ARP请求,得到2台主机的IP和MAC地址,攻击者C接着发送一个ARP回复包给主机B,把ARP回复包里面协议头的发送端IP设为主机A的IP地址,发送端的MAC地址设为攻击者C自己的MAC地址,此时主机B收到ARP回复包后,更新其ARP表,其中ARP表中主机A信息的MAC地址被更新为攻击者C的MAC地址,而当主机B发送数据包给主机A时,交换机收到主机B发送给主机A的数据包时,根据ARP信息把数据包转发给攻击者C,攻击者C截取到数据包,保存主机A信息再发给主机A,或篡改信息后把数据转发给主机A,造成ARP欺骗.
从以上分析可知,ARP协议是建立在信任局域网内所有用户的基础上的,这恰恰是它最大的漏洞.建立怀疑机制的ARP认证体系是解决ARP攻击最根本的办法,但这需要更改现有的数据和互联网传输协议,显然现阶段还无法实现.因此,在现有状况下,我们只能从以下几个方面防御ARP攻击.
4.1 利用有管理端口及节点MAC地址功能的网络路由设备,例如交换机等,对VLAN进行合理的分段.交换机将所连接的主机的IP-MAC映射及其对应的端口保存在内部表格中.当交换机的某个端口收到ARP数据包时,就将包中的源地址与内部表格中记录的源地址进行比较,若二者不符,则自动禁止该端口发来的所有数据包直到冲突解决为止.
4.2 采用IP与MAC绑定的方法.在ARP攻击中,攻击者就是利用ARP表动态更新的特点,通过不断发送伪造的MAC地址来塞满ARP表.因此,将IP地址和MAC地址映射绑定后写入ARP表中,并且不允许随意刷新,这样能够有效防止ARP攻击.但是,这样做也有缺点.对于主机来说,重启后就必须重新绑定IP地址和MAC地址,这很麻烦;对于交换机来说,这种绑定方法不够灵活,一旦用户有变更就需要重新再绑定其IP地址和MAC地址,不适用于用户较多的网络.
4.3 采用设置静态ARP缓存方法.在网络通讯中,当主机和其他计算机通信时,其主要的原理是在自己静态的ARP缓存中根据对方IP地址找到其相对应的MAC地址,然后直接发送给对方,采用静态ARP缓存机制,若攻击者向主机发送ARP应答,目标主机不会刷新ARP缓存,从而避免了ARP欺骗攻击.
4.4 用Sniffer等监听软件,监听网络中所有ARP包.正常的主机在一定时间内发送或接受的广播包或单播包的数量是一定的,而ARP欺骗往往使用广播形式在短时间内发送大量的数据包.因此,可以安装网络监听软件,通过分析和判断数据包的包头的数量及工作状态,找到可疑节点,对可能节点进行排查,找出攻击者并进一步处理[4].
4.5 在网关和主机上装上ARP防火墙等网络安全软件,现在一些ARP安全软件可以有效地拦截ARP的攻击、IP冲突和防止恶意的篡改ARP缓存表,可以在一定程度上防止计算机和网关受到攻击,从而保证了网络的安全.
由于ARP协议本身的认证机制存在漏洞,所以单靠现有的技术手段无法轻易杜绝ARP攻击.但是,只要针对ARP攻击的特征,同时使用多种防御方法,并养成良好的上网习惯,可以有效减少ARP攻击的可能性.
〔1〕金星.基于ARP的网络攻击与防御[J].计算机安全,2010(9).
〔2〕徐森.基于ARP的网络攻击与防御[J].数字技术与应用,2010(5).
〔3〕杨春秀,庹宁.局域网ARP攻击和防范分析[J].华南金融电脑,2010(6).
〔4〕董辉.网络ARP攻击及防范[J].图书情报论坛,2010(2).
TP393.1
A
1673-260X(2011)03-0033-02