《武汉工程大学学报》  2011年04期 103-105,110   出版日期:2011-04-30   ISSN:1674-2869   CN:42-1779/TQ
简单网络管理协议的ARP欺骗防御机制


0引言近年来,有一类叫做ARP的病毒开始不断地向各个行业的网络环境扩散,其目的从最初的窃取QQ、网游、网银等账号,发展到后来专门抢占网络带宽以及纯粹破坏网络通讯等等.2007年,ARP欺骗对教育行业的影响达到顶峰.多所国内知名大学网络中心相继发布了专门针对防治ARP病毒的公告.这两年ARP病毒肆虐大学校园网,严重地干扰着用户的正常上网.ARP协议虽然是一个高效的数据链路层协议,但是作为一个局域网协议,它是建立在各主机相互信任的基础上,因此存在一些问题[1].a. 主机ARP列表是基于高速缓存动态更新的.b. ARP请求时以广播方式进行.c. 可任意发送ARP应答分组.d. ARP应答无须认证.1ARP欺骗原理针对ARP协议的上述漏洞,可以通过定时发送ARP应答分组,不断更新被欺骗主机的缓存,就可以达到ARP欺骗的目的[2].为了降低网络数据流量,ARP处理机制规定当一台主机接收到ARP应答后不进行验证就将收到的MAC地址映射信息放入ARP缓存中,即使该主机从未发出任何ARP请求.因此不管真实与否,当某台主机接收到任何ARP应答将会更新其地址映射表[3].利用此缺陷就能进行ARP欺骗了.例如:某个局域网内有A、B、C等3台主机.A和B之间能进行通信,C在正常情况下无法获得它们的通信数据.但是C希望插入到A和B之间,使A和B之间的通信都经过C转发.这样C就可以得到它们之间的通信内容了,容易得到其中的机密.C的欺骗行为是这样进行的:A的IP为:192.168.0.1,MAC为:0A0A0A0A0A0A;B的IP为:192.168.0.2,MAC为:0B0B0B0B0B0B;C的IP为:192.168.0.3,MAC为:0C0C0C0C0C0C;A和B各自维护自己的ARP表,图1是正确的ARP表.图1各个主机各自维护自己的ARP表
Fig.1ARP table of different main computers主机C开始发送ARP的应答信息给主机A,C发的ARP应答数据包信息为:“IP:192.168.0.2,MAC:0C0C0C0C0C0C”,这个信息中,MAC地址却是主机C的,但IP地址是B的.主机A接收到这条ARP应答信息后直接修改了自己的映射表,把IP:192.168.0.2对应到MAC:0C0C0C0C0C0C.主机C再向B发送ARP应答包:“IP:192.168.0.1,MAC:0C0C0C0C0C0C”,同样的,B接收到后也修改了自己的地址映射表(见图2).图2主机C对主机A和B进行ARP欺骗后,主机A、B的ARP地址表
Fig.2ARP table of main computer A and B after ARP deception by main computer C2防御ARP欺骗的原理2.1防范原理简单网络管理协议(SNMP)是为基于TCP/IP的多厂商异构互联网的管理而设计.它作为工业标准,已被广泛接受,其应用已扩展到其它协议组.目前几乎所有的网络产品,包括交换机、路由器、UPS、MODEM等硬件以及许多软件均支持SNMP.SNMP的基础是MIB数据库,MIB数据库包含了所有被管对象的信息.网络中的所有系统(包括工作站、服务器、路由器、网桥等)都有反映系统中被管对象状态的MIB.网络管理实体可提取MIB中的对象值监来测系统中的资源,也可以通过修改这些对象值来控制资源.MIB变量将记录各个相连网络的状态、通信量数据、发生差错的次数以及内部数据结构等当前内容.与ARP欺骗相关的信息就可以通过这些MIB变量获取,并且通过MIB库定义的其它MIB变量可以设置网络设备的运行参数,从而将实施ARP欺骗的终端隔离开来,阻止ARP欺骗对网络正常通信的破坏[4].SNMP的管理信息库采用树型结构,它的根在最上面,根没有名字.每个MIB对象都用对象标识符(OID)来唯一的标识,其中各个可用信息是带标号的节点,每个节点用数字和字符显示,其中对象标识符OID是由句点隔开的一组整数显示,也就是从根节点通向它的路径,其命名节点并指示它在树中的准确位置.图3是管理信息库的一部分,又称对象命名树(object naming tree).从图3中可看出,在讨论Internet的对象时,只要给出Internet以下的子树(图中的波浪线方框),并在其结点旁标注{1.3.6.1}即可.在Internet结点下的第二个结点是mgmt,标号为2.再往下是管理信息库,其标识为{1.3.6.1.2.1}或{Internet(1).2.1}.这种标识称为对象标识符[5].第4期赵罡:简单网络管理协议的ARP欺骗防御机制
武汉工程大学学报第33卷
图3对象命名树
Fig.3Object naming tree至此,可将此过程的实现分为3个步骤:首先检查网络中是否存在ARP攻击,并确定ARP欺骗者的MAC地址;然后找到欺骗者接入交换机的端口;最后将此端口关闭.2.2判定是否发生ARP欺骗读取网络里所有ARP表,获得对应的MAC_IP内容.该步骤使用3个OID来得到ARP表条目:OID[0] = “1.3.6.1.2.1.4.22.1.1” ,得到端口索引号.然后和OID[1] = “1.3.6.1.2.1.4.22.1.2”比较,得到IP和MAC地址OID[2] = “1.3.6.1.2.1.4.22.1.4”, 得到条目类型(静态或动态)通过遍历ARP表中的端口索引值,将获得的MAC_IP内容填充表ALL_MAC_IP中,然后对此表中的MAC和IP进行判断,若出现了一个MAC对应多个IP的情况,则说明出现了ARP欺骗.2.3定位ARP欺骗源定位欺骗源,主要思想是利用MIB库中的FDB表,也就是MAC地址转发表:首先用FDB表找到欺骗源在交换机上的转发端口,然后再看这个端口是否还和别的交换机相连,如果还有相连的交换机,那么查找过程就会从这个端口转到此交换机上;如果此端口没有和别的交换机相连,那么这个端口就是欺骗源所在的端口,定位完成[6].这个过程可分为以下4步:1)根据此MAC地址,找到其对应于链路层FDB表中的MAC地址,然后通过此地址找到FDB表中的端口.2)根据上步找到的端口,到FDB表中找到其对应的端口索引值.3)用上一步找到的端口索引值和每个设备对象的相邻设备表进行比对,就能找到其相应的端口或者交换机IP.相邻设备表需要预先在网络管理系统中对每个设备对象添加,表中的内容包括对象和接口. 4)在第3)步的比对中如果找到的是交换机IP,说明发往该目的IP设备的数据包是通过相邻交换设备转发的,那么下一步查找就在相邻交换机上进行.也就是从步骤1)开始新的查找.如果第3)步没有得到交换机的IP,那么找到的端口就是所需端口,查找也就可以结束了[7].在定位端口的过程中涉及的MIB变量如下:FDB表中的MAC地址(dotldTpFdbAddress):1.3.6.1.2.17.4.3.1.1FDB表中的端口索引值(dotldTpFdbPort):1.3.6.1.2.17.4.3.1.22.4隔离ARP欺骗源由以上的几步操作就得到了欺骗源对应的交换机端口,那么关闭这个端口就能阻止欺骗的发生了.交换机的每一个端口都有与之对应的MAC地址,在每一台交换机中均维护着这样一个MAC地址表,表中还记录了任何与交换机相连的主机的MAC地址.端口的关闭可以通过改变实时的Switch-Port-MAC对应表的管理状态来实现.此表可以通过SNMP管理站与各个交换机的SNMP代理通信保存的与端口对应的MAC地址表而获得.在MIB表中有一个可读写对象ifAdminStatus(对象标识符号为1.3.6.1.2.1.2.2.1.7) ,此对象代表端口管理状态.给其赋不同的值,可以改变端口的状态:“1”——开启端口,“2” ——关闭端口,“3” ——测试.给交换机发送赋值信息(Set Request),就可以关闭和开启相应的端口.比如要关闭的是交换机192.168.42.157的22号端口,可以向该交换机发出如下信息:set(“private” 192.168.42.157 1.3.6.1.2.1.2.2.1.7.22.0.2).3结语本文介绍了利用简单网络管理协议实现ARP欺骗的防御过程,实现了在普通PC机上查询ARP表以及查询任何一台终端所对应的交换机端口.针对ARP攻击提出一种新的防御模式,该模式通过查找欺骗源,并将其接入网络的端口主动断开达到对ARP攻击的主动防御.该方案主动发现与处理ARP欺骗问题,特别适合在较大规模的网络中部署,代价小,效率高.基于本文所提出的防御模式设计了一套主动防御的方案,这套方案在学校机房监控了20多台网络设备及300多个网络终端,实践证明该方案能及时发现并处理其中任何一个或多个终端的ARP欺骗行为.