基于ARP欺骗的局域网防御界面研究
2014-08-15赵飞
赵飞
(绥化学院 黑龙江绥化 152061)
一、ARP协议及ARP欺骗简介
随着互联网的普及,人类的生活变得越来越便利。购物、查询、看电影等都可以通过互联网进行。网络已经变成了人类在工作和生活中不可分割的一部分。随着人类对网络依赖性的增强,对网络安全也有了更高的要求。互联网发展的如此迅速很大程度上要归功于TCP/IP协议簇运行的高效性和开放性。但在高效和开放的同时安全性也就下降了很多。在TCP/IP协议簇中存在着大量的安全漏洞,极易被黑客利用或攻击。Address Resolution Protocol(中文名字:地址解析协议),简称ARP,是TCP/IP协议簇中的重要一员。其主要作用是为局域网的网络设备提供IP地址向硬件地址的转化,也就是将网络层(相当于OSI的第三层)地址解析为数据链路层(相当于OSI的第二层)的物理地址。ARP协议的设计是基于局域网内网络设备之间相互信任的基础上,因此ARP协议存在着许多容易被黑客利用的安全漏洞,ARP欺骗就是利用ARP协议的漏洞产生的一种计算机病毒。
ARP欺骗是一种普遍的针对局域网的攻击方式,在PC端一般表现为局域网不稳定或者根本无法连通。ARP欺骗的基本原理就是利用局域网内某台主机(以下称病毒主机)对其它主机实施MAC地址欺骗,病毒主机会通过局域网向其他主机发出错误的ARP信息,使其他主机的ARP缓存表被存入错误的信息,这样在ARP协议进行解析时就会出现错误导致网络不通。另一方面病毒主机发出的错误ARP信息还是不间断的,这样还会在网络中产生大量错误的ARP信息,导致网络拥堵,最终达到欺骗攻击的目的。ARP欺骗大致分为二种,第一种是对ARP缓存表的欺骗。其原理是病毒主机截获网关数据,同时通知路由器或受害主机一系列错误的MAC地址,而且是不间断的发送错误的地址信息,使正确的地址信息无法通过更新保存在路由器或受害主机的缓存表中,结果数据则不能按照正确的地址发送,造成PC无法收到信息。第二种是对内网PC的网关欺骗。其原理是建立错误的网关地址,让被欺骗的PC向错误的网关地址发数据,从而得不到回应,使PC出现掉线的情况。
二、ARP欺骗防御研究现状
由于ARP欺骗给局域网络带来的严重的安全问题,目前已经有很多前辈做了很多具有实践意义的工作。我们对目前常见的几种ARP防御欺骗的解决方案进行了总结。
(一)人工设置固定的ARP缓存。此种方法是通过命令提示符中的arp-s命令将相应静态ARP缓存记录添加到主机的ARP缓存中去。这样即使有中了ARP病毒的主机向该目标主机发送错误的ARP映射信息,目标主机在接收此信息后也不会刷新ARP缓存的映射信息,这样就避免了错误的ARP映射被写入目标主机的缓存表。这种方法虽然可以有效的阻止ARP欺骗的发生,但必须通过人工设置固定的ARP映射信息,因此此种方法仅适用于小型的局域网络。并且某些老的操作系统即使设置了固定的ARP映射信息,也会被主机后接受的新的映射信息所更改。
(二)按一定频率清除ARP缓存表内容。编写一个简单的应用程序,其功能为按一定的频率使用命令提示符中的arp-d命令清除ARP缓存中的内容。此种方法虽然可以保证错误的ARP映射信息被清除,但使用起来的条件比较苛刻,而且还会带来其它的问题。为了保证错误的ARP映射信息及时的被清除,清除ARP缓存表的频率就一定要大于ARP欺骗的频率。但频率过高的使用arp-d命令又会导致网络中出现过多的ARP请求广播,造成网络拥堵的更严重。
(三)使用独立的服务器保存ARP映射信息。将局域网内各主机的ARP映射信息保存在一个独立的服务器中,并且禁止各主机的ARP应答,仅保留服务器对接收到的ARP请求进行应答。此种方法虽然比较有效,但是单独架设的服务器成本较高,而且一旦出现故障,会导致整个网络瘫痪。
(四)使用交换机的端口绑定功能。将局域网内的交换机的每一个端口都与唯一的MAC地址绑定。当检测出交换机端口绑定的MAC地址发生变化时,交换机就会锁死该端口,使该端口连接的主机无法连接到局域网,这样病毒主机就无法发送错误的ARP映射信息了,也就阻止了ARP欺骗的发生。此种方法和人工设置固定的ARP缓存存在着一样的问题,就是需要人工设置交换机端口与MAC地址的对应关系,工作量相对较大,而且一旦主机位置发生变化时,又需要重新设置,不够灵活。并且目前市面上的大部分交换机都不支持端口绑定技术,需要单独购买高端的交换机才行,这样又增加了成本。
(五)将整个局域网络划分为多个虚拟的局域网络。此方法是针对错误的ARP信息不能跨网段传播的特点。这样即使某个虚拟的局域网络发生ARP欺骗也不会影响到其它的虚拟局域网络。这样一来ARP欺骗的范围便被控制在了一小片的虚拟局域网络中,缩小了ARP欺骗的范围。但此种方法也需要高端的网络设备支持,成本同样较高。
除以上方法外还有一些例如把网络中的数据进行加密后再发送或者删除Windows系统中的 Npptools.Dll(network packet provider tools helper)动态链接库等方法都可以一定程度上的阻止ARP欺骗,在这里就不一一介绍了。
三、ARP协议改进研究现状
在ARP协议的改进和算法方面,前人也做了许多重要而突出的工作。国外学者Bruschi提出将数字签名技术引入ARP帧发送方验证的S-ARP协议。它采用在源主机发送ARP信息时,对其摘要进行签名;在目标主机接收ARP信息时,对其签名进行验证。攻击者无法发送伪造的ARP帧,从而加强了局域网安全[1](P3)。Goyal在其论文“An Efficient Solution to the ARP Cache Poisoning Problem”提出了基于数字签名和Hash链表的一次一密方案相结合,比较S-ARP协议在实现效率上有了进一步的提高[1](P3)。Lootah提出一种基于公钥体制的安全ARP协议TARP,即Ticket-based Address Resolution Protocol(基于票据的地址解析协议)。票据中除包含数字签名外,还引入有效期。这种TARP协议与S-ARP相比,其优势为不必每次ARP解析时都进行签名和验证,减轻了主机的负担,提高了效率[1](P3)。
国内学者郑文兵提出一种改进的ARP协议算法。加入两个线性表RequesList和Responselist用于保存已发送ARP请求和接收ARP应答信息。在发送ARP请求报文和接收ARP应答报文时,对这两个线性表进行相应检测,将不符合要求的报文丢弃并记录[1](P3)。林宏刚提出一种主动检测和防范ARP攻击的算法。分别对接收ARP请求、接收ARP应答、发送ARP请求、发送ARP应答这四个事件分别进行处理,采用封装TCPSYN数据包检测目标主机存在的方法,设计了一种发送ARP报文和更新ARP缓存的安全性方案[1](P3)。
本文则是在前人研究的基础上,针对ARP攻击原理及攻击方式并对现有的ARP防御方式进行研究分析,提出一种基于WinPcap(Windows Packet Capture)技术,并利用服务器和客户端搭建的ARP攻击防御体系模型。这样在现有的低端交换机相连的局域网中就能够实现各主机间的相互检测,而不必要再花大价钱去购买高端的交换机,从而达到了防御ARP攻击的目的。
四、WinPcap技术简介
WinPcap是Windows平台下访问网络中数据链路层的开源库,它已经达到了工业标准的应用要求,是非常成熟、实用的捕获与分析网络数据包的技术。而关键在于WinPcap可以独立于TCP/IP协议发送和接收数据包,其主要功能如下:首先,独立于网络协议栈捕获数据包,支持远程数据包的捕获;其次,先于应用程序实现数据包过滤;再则进行网络通信过程中的信息统计。
数据包、核心层和用户层构成了WinPcap的体系结构。数据包:顾名思义即网络中的数据包。核心层:核心层由NPF模块和NIC驱动器两部分构成。NPF(Netgroup Packet Filter)即网络包组,主要用于处理网络中传输的数据包,同时提供对数据包的捕获、发送和分析能力;NIC(Network Interface Card)即网络适配器也就是我们常说的“网卡”。那么NIC驱动器也就是”网卡”的管理者,可以实现对“网卡”的暂停、中断、重设等操作。“网卡”和TCP/IP协议之间通过NDIS(Network Driver Interface Specification)即网络驱动接口规范来实现通信的标准。用户层:用户层主要是指用户所使用的代码以及wpcap.dll和packet.dll两个动态链接库所构成。
WinPcap的主要功能就是抓捕数据包,通过NIC驱动器使用网络接口捕获数据包,并把他们进行统计、分析传送的用户层。在捕获过程中,使用了过滤器和核心缓冲区。
过滤器的功能是决定一个数据包是否会被传送到用户层。如果不使用过滤器,把网络中所有的数据包全部传送到用户层,会给用户层带来相当大的负载,大大降低用户层应用程序的工作效率。所以大部分数据包都会被过滤器所抛弃,只有少部分数据包会被接收。过滤器通过一个布尔值函数实现,如果函数值返回TRUE,则NIC驱动器会将数据包传送到用户层;否则会将数据包丢弃。
核心缓冲区的功能主要是用来暂时存储数据包。由于网络中的数据流量很大,虽然已经经过过滤器的筛选,但接收数据包的速度还是很快。NPF模块一般都无法及时地把数据包传送到用户层。这样无法及时传送到用户层的数据包则被暂时存储在核心缓冲区,不至于被丢弃从而影响用户应用程序的分析结果。这样缓冲区的大小则决定了一个系统调用一次可以传送到用户层的最大数据量。另外,系统调用一次传送到用户层的最小数据量也是很重要的。如果最小数据量较大的话,缓冲区则需要存储够相当数量的数据包后才能统一把数据包传送到用户层去。这样就减少系统调用的次数,虽然可以使CPU使用率降低,但却失去了传送的实时性。因此适当的最小数据量是高效率的关键。在wpcap.dll动态链接库中默认情况下,读操作的超时时间为1秒钟,缓冲区传送给用户层的最小数据量为16KB。
五、基于WinPcap技术的ARP欺骗防御方法
本文提出一种在WinPcap的捕获包技术的基础上构建一种ARP欺骗攻击检测防御模型的想法。本模型可以对是否发生ARP攻击进行判断,并将ARP攻击进行处理,同时还可以使被欺骗的主机更改ARP地址列表,以保证域内主机与可信任主机通信,从而起到防范ARP攻击的作用。模型在数据包捕获过程中,通过过滤器的过滤功能设置为只捕获经过网卡的ARP数据包并将数据包送入协议解析模块,此模块把数据包解析成为两部分,分别为链路层头部和网络头部,这里我们只需要解析到网络层头部的数据包就足够了。然后将在网络层头部解析出来的IP地址和MAC地址送到检验模块,在此模块中将解析出来的IP地址和MAC地址进行比较,判断是否发生ARP欺骗。如果判断发生ARP欺骗,则系统进入响应模块来处理检验结构。首先,将正确的ARP信息发送给被欺骗主机,使其更新自己的ARP地址列表,这样便中断了ARP欺骗的发生;其次,发出报警;最后,将ARP欺骗信息存储以备管理员查询。
通过大量测试证明,利用WinPcap技术中的数据包捕获和过滤机制构建的ARP欺骗防御模型,可以有效的判断是否发生ARP欺骗,并可以在发生欺骗的时候有效的阻止ARP欺骗的传播,并将正确的ARP地址列表更新至被欺骗的主机,恢复网络运作。完成了在使用低端互连设备组成局域网中,实现ARP欺骗的防御。
[1]陈晨.APR欺骗的防御研究[D].河北农业大学,2009.
[2]曲春强.基于WinPcap的ARP欺骗攻击的防御的研究[D].大连海事大学,2008.
[3]陈春泉.规范MAC防范ARP欺骗攻击技术的研究[D].华南理工大学,2010.
[4]单国杰,徐夫田,王小姣.针对ARP欺骗攻击的防御策略研究[J].计算机与现代化,2010(12).
[5]安玉红.基于WinPcap的ARP欺骗攻击检测器的设计与实现[J].电脑编程技巧与维护,2010(19).