陈晨
天津财经大学,天津 300222
ARP攻击的认识与防护
陈晨
天津财经大学,天津 300222
ARP攻击已经成为校园网环境中最常见、最难缠的问题之一。本文介绍了ARP的原理和ARP欺骗的方式,并且从交换机和PC机两个层面提出了防范的方法和策略。
ARP;网络攻击
近期 “地址解析协议欺骗”(简称:ARP欺骗)攻击手段正在校园网中扩散,严重影响了包括校园网在内的各种类型局域网的正常运行。黑客通过伪造一个假的网关进行木马的散播,让局域网内的用户一上网就会连接有木马的地址,而用户唯一的感觉只是网络不畅通。那么ARP欺骗是怎样的一种黑客攻击手段?普通的用户又该如何防范ARP欺骗攻击呢?
ARP(Address Resolution Protocol,地址解析协议)用于将网络层的IP地址解析为数据链路层的物理地址。IP地址只是主机在网络层中的地址,如果要将网络层中数据包传送给目的主机,必须知道目的主机的数据链路层地址 (比如以太网络MAC地址)。那么ARP负责将局域网中32位IP地址映射为48位硬件地址(MAC地址)。因为局域网中的两台主机要相互直接通信,必须是A主机先向B主机发送包含IP地址信息的广播数据包 (ARP请求),然后B主机再向A主机发送含有自身IP地址和MAC地址的数据包,A主机收到B主机的MAC地址后便建立数据连接,实现数据传输,这相当于一个身份核实的过程。当然,并不是说每次通信都需要身份核实,因为ARP缓存表可以简化这个过程。
安装了TCP/IP协议的局域网设备中有一张ARP缓存表,也叫本地ARP缓存,它保存着网内曾与本机通信过的其他主机的IP及MAC地址,且IP地址与MAC地址逐一对应,今后本机与其他主机通信时就会首先查询本地ARP缓存表,如果目标主机存在于表中,则使用表中的MAC地址发送数据。
那么,如果目标主机不在缓存表中会怎么样呢?比如本机想与192.168.0.1通信,但缓存表中并无此机MAC地址,这时本机便向全网发送广播询问谁的IP是192.168.0.1,通常情况下其他主机接收到此广播后都会保持沉默,只有192.168.0.1会作出回应并向本机返回它的MAC地址,随后本机重写ARP缓存,即将192.168.0.1的MAC地址写入本地ARP缓存表,下次访问192.168.0.1时无须向全网广播,直接向其发送数据。
表1 ARP表项
ARP的报文格式
ARP报文分为ARP请求和ARP应答报文,ARP请求和应答报文的格式如下面的表2所示。
当一个ARP请求发出时,除了接收方硬件地址(即请求方想要获取的地址)字段为空外,其他所有的字段都被使用。
ARP应答报文使用了所有的字段。
表2 ARP报文格式
一般情况下,ARP动态执行并自动寻求IP地址到以太网MAC地址的解析,无需管理员的介入。
ARP是网络通信中一种经常使用的网络协议,那么ARP为何会成为病毒利用目标呢?从前面的介绍我们可以了解到ARP缓存表的作用便是提高网络效率减少数据延迟。然而,ARP缓存表存在易信任性,即对发来的ARP数据包正确与否不做审查。当主机接收到被刻意编制的,将IP地址指向错误的MAC地址的ARP数据包,主机会不加审查地将其中的记录加入ARP缓存表。这样,当主机下次访问此IP时,就将根据这个虚假的记录,将数据发送到记录中所对应的“错误的MAC地址”,而真正使用这个IP的目标主机,则收不到数据,这就是ARP欺骗。
常见的ARP欺骗有以下两类。
这使得用户主机发送的网络数据“石沉大海”,发出去的信息无法得到回应。访问网关的失败,将导致用户没有办法与外网进行通信。这时在命令行方式下键入:arp-a,会得到如下信息:
Internet Address Physical Address Type
202.113.128.95 00-00-00-00-00-00 invalid
这种做法会让用户主机发送的网络数据传到了原本不应该传输的地方。MAC地址所对应的主机,将接收到原本应该被发到网关的网络数据。如果收到数据的主机直接丢弃数据,结果就是被欺骗主机得不到回应,不能正常上网。而如果收到数据的主机,对数据内容进行分析处理,就可能从中得到被欺骗主机用户的隐私信息比如账号、密码,这种行为危害性更大。当然,此时被欺骗主机并非一定得不到回应。因为接收到数据的“伪网关”可以选择充当起“真网关”的替代者,成为数据的中转站,为用户向“真网关”呼叫,用户仍可以收到“真网关”经由“伪网关”传来的回应数据。
如图1所示:Host A和Host C通过交换机进行通信。此时,如果有黑客(Host B)想探听Host A和Host C之间的通信,它可以分别向这两台主机发送伪造的 ARP应答报文,使 Host A和 Host C用MAC_B更新自身ARP映射表中与对方IP地址相应的表项。此后,Host A和Host C之间看似“直接”的通信,实际上都是通过黑客所在的主机间接进行的,即Host B担当了“中间人”的角色,可以对信息进行了窃取和篡改。
图1 中间人攻击示意图
了解了ARP欺骗的特点,我们再来看看ARP病毒。需要注意的是,“ARP病毒”不是一个病毒,而是“一群”病毒,我们把所有具有ARP欺骗行为的病毒统称为 “ARP病毒”。对于某一个具体的病毒而言,ARP欺骗只是它的一个行为和手段,永远是为了达到其目的而设置的。使用ARP欺骗的病毒,可以是盗号木马,也可以是蠕虫病毒,其危害性如下。
将ARP欺骗包指向不能提供数据传输服务的,无效的MAC地址;或指向中毒的主机,但中毒主机不为用户向“真网关”传递数据。这将导致局域网全网掉线,其他主机无法访问网络。
将ARP欺骗包指向中毒主机的MAC地址,则局域网中被欺骗主机会将数据传送给中毒主机。中毒主机系统中的病毒,可以通过嗅探这些数据的内容,进行包括破译密文等处理,从而得到包括网络游戏、网络银行账号密码在内的各种信息,直接或间接威胁到用户的隐私和财产安全。这样的病毒明显具有木马的性质,换句话说,盗号木马可以采用这样的方式,得到用户的账号密码。
一位安全业界人士说过:“ARP欺骗造成的局域网上网断线,只是表面现象。更深层的危害在于,ARP欺骗造成了网络数据的违规‘出站’和‘回传’(即被欺骗主机将数据传到了原本不应该被信任的目标)。攻击者因此可以利用‘回传’给他的数据,作出进一步危害用户安全的行为,包括利用数据中的信息,发动有针对性的‘进站’攻击(即向被欺骗主机发送带有恶意攻击性代码的数据)。”
将ARP欺骗包指向中毒主机的MAC地址,中毒主机接收到被欺骗主机传来的信息,并充当“伪网关”,在被欺骗主机与“真网关”之间进行数据交互。然而,“伪网关”得到由“真网关”传来的数据后,在将数据传回给被欺骗主机的过程中,在其中加插了恶意代码。不知情的被欺骗主机接收了数据,主机系统中的应用程序执行了包括恶意代码在内的内容,就直接导致用户的计算机安全遭到破坏。
对于搜索局域网中的ARP病毒主机,可以从两个方向入手。一是从交换机层面,一是从PC层面。
1.从交换机层面查出病毒主机。由于ARP攻击属于二层网络攻击,这就决定了攻击数据包不可能跨越子网攻击其它的网络主机,所以我们要找某一子网内的攻击源,只需要在该子网所在的三层交换机上搜索即可。目前,大多数的交换机都有ARP检测功能,以华为8016交换机为例,当网络中存在ARP攻击的时,我们可以清楚地在交换机日志中发现如下的提示:
The last fake gateway ARP packet was detected at:
Year=2008,Month=11,Day=24 9:50:33
Packet's info:
Port Index:3/0/0
IP Addr:202.113.135.3
Mac Addr:0016-36df-9cb8
信息里写明了出现问题的端口、IP、和MAC,下一步需要做的只是去针对这台主机做杀毒或去除木马的工作了。
2.从PC层面查出病毒主机。对于一些没有ARP入侵检测功能的交换机,我们只能从PC方面入手查找ARP的攻击源。
(1)使用Sniffer抓包。在网络内任意一台主机上运行抓包软件,捕获所有到达本机的数据包。如果发现有某个IP不断发送ARP Request请求包,那么这台电脑一般就是病毒源。
原理:无论何种ARP病毒变种,行为方式有两种,一是欺骗网关,二是欺骗网内的所有主机。最终的结果是,在网关的ARP缓存表中,网内所有活动主机的MAC地址均为中毒主机的MAC地址;网内所有主机的ARP缓存表中,网关的MAC地址也成为中毒主机的MAC地址。前者保证了从网关到网内主机的数据包被发到中毒主机,后者相反,使得主机发往网关的数据包均被发送到中毒主机。
(2)使用arp-a命令。任意选两台不能上网的主机,在DOS命令窗口下运行arp-a命令。例如在结果中,两台电脑除了网关的IP、MAC地址对应项,都包含了 192.168.0.186的这个 IP,则可以断定192.168.0.186这台主机就是病毒源。
原理:一般情况下,网内的主机只和网关通信。正常情况下,一台主机的ARP缓存中应该只有网关的MAC地址。如果有其他主机的MAC地址,说明本地主机和这台主机最近有过数据通信发生。如果某台主机(例如上面的192.168.0.186)既不是网关也不是服务器,但和网内的其他主机都有通信活动,且此时又是ARP病毒发作时期,那么,病毒源也就是它了。
(3)使用tracert命令。在任意一台受影响的主机上,在DOS命令窗口下运行tracert命令。
假定设置的缺省网关为202.113.128.3,在跟踪一个外网地址时,第一跳却是202.113.128.95,那么,202.113.128.95就是病毒源。
原理:中毒主机在受影响主机和网关之间,扮演了“中间人”的角色。所有本应该到达网关的数据包,由于错误的MAC地址,均被发到了中毒主机。此时,中毒主机越俎代庖,起了缺省网关的作用。
对于ARP入侵的防范我们仍然从交换机和PC两个层面入手。
1.交换机层面。目前多数新型号的交换机都支持APR入侵检测功能,如H3C的S3600以上的交换机都加入了此功能。它的工作原理是:将经过交换机的所有ARP(请求与回应)报文重定向到CPU,利用DHCP Snooping表或手工配置的IP静态绑定表,对ARP报文进行合法性检测。
开启ARP入侵检测功能后,如果ARP报文中的源MAC地址、源IP地址、接收ARP报文的端口编号以及端口所在VLAN与DHCP Snooping表或手工配置的IP静态绑定表表项一致,则认为该报文是合法的ARP报文,进行转发;否则认为是非法ARP报文,直接丢弃。
除了开启ARP入侵检测功能之外,还应该对ARP报文进行限速控制,因为当某一个端口以高频率发送ARP报文的时候会占用交换机大量的CPU资源,严重时甚至会造成交换机死机,所以千万不要忽视这点。开启某个端口的ARP报文限速功能后,交换机对每秒内该端口接收的ARP报文数量进行统计,如果每秒收到的ARP报文数量超过设定值,则认为该端口处于超速状态 (即受到ARP报文攻击)。此时,交换机将关闭该端口,使其不再接收任何报文,从而避免大量ARP报文攻击设备。同时,设备支持配置端口状态自动恢复功能,对于配置了ARP限速功能的端口,在其因超速而被交换机关闭后,经过一段时间可以自动恢复为开启状态。
2.PC机层面。对于PC机这端的防范就相对简单的多,安装一个专门的ARP软件防火墙即可。目前此类的防火墙品种很多,其中金山ARP防火墙的防护效果尤为突出。金山ARP防火墙最大的特点是:完全免费、支持Vista、安装免重启、低资源占用,并且能够双向拦截ARP欺骗攻击包,监测锁定攻击源。
图2 金山ARP防火墙界面
总之,ARP病毒的危害可以说是遍及整个局域网。目前ARP病毒已经对众多高校的校园网造成严重影响,因此从校园网中主机受到ARP欺骗攻击,到发现中毒主机并进行清除病毒的处理,校园网的网管,需要在这其中扮演积极的角色。如果反应和处理不及时,病毒造成的影响和损失会更大。而对于用户来说,一旦发现自己受到ARP欺骗攻击的影响,在做好防护措施,避免由于违规的“回传”数据而导致的“进站”攻击的同时,应该尽快联系网管协调处理。而一旦确认自己的电脑被感染了ARP病毒,更应该配合网管,自觉进行查杀病毒的处理。
[1]姚小兵.校园局域网ARP病毒的解决方案[J].山西广播电视大学学报,2009,(5).
[2]任侠,吕述望.ARP协议欺骗原理分析与抵御方法[J].计算机工程,2003,(9).
[3]王奇.以太网中ARP欺骗原理与解决办法[J].网络安全技术与应用,2007,(2).
责任编辑:陈 卓 陈 岩
On ARP Attack and the Protection
CHEN Chen
(Tianjin University of Finance and Economics,Tianjin 300222)
ARP attack has become the most common and difficult problem on campus network.This article introduces the ARP on its principle and cheating methods,and promotes the prevention of methods and tactics from two aspects of the switch and the pc.
ARP;network attack
TP393.18
A
1008-9055(2011)01-0074-04
2010-10-17
陈晨(1981—),男,汉族,天津市人,天津财经大学信息化建设办公室工程师,天津师范大学高校教师硕士。研究方向:计算机网络。