韩少聪+陈玉慧+刘嘉华+康睿
摘 要: 针对企事业内部网络中存在的非法主机接入网络产生的安全问题,设计了一种基于ARP协议的非法主机接入监测系统。在该系统中,通过底层驱动阻断操作系统ARP的收发,构造具有签名的私有ARP实现主机接入的监视及非法接入主机的识别和网络通信阻断。实验结果表明,该系统可以感知并识别非法接入的设备,阻断非法设备的通信,并可识别非法构造的ARP主机。通过该系统可以快速、及时发现非法接入设备,降低非法设备的存活时间。
关键词: ARP; 主机接入; 监测系统; 非法主机阻断
中图分类号: TN702?34 文献标识码: A 文章编号: 1004?373X(2015)16?0133?05
Design of ARP?based monitoring system against illegal host connection
HAN Shaocong, CHEN Yuhui, LIU Jiahua, KANG Rui
(NARI Group Corporation/State Grid Electric Power Research Institute, Nanjing 210003, China)
Abstract: An ARP?based monitoring system against illegal hosts connection was designed to solve the security problems caused by illegal hosts access to the internal network of enterprises. In this system, by means of the communication of ARP in bottom driven interdiction operating system, the privately?owned ARP with signature was constructed to achieve the purpose of monitoring the hosts access, recognizing and interdicting the illegal access hosts. The experiment result show that the system can perceived illegal host access and block its communication. Meanwhile, the ARP hosts with illegal signature can be recognized. The illegally?accessed hosts can be perceived immediately by this system, which can reduce the survival time of illegal equipments.
Keywords: ARP; host connection; monitoring system; illegal host interdiction
0 引 言
随着网络的日益普及,各企事业单位也都建立了自己的内部网络,如何及时感知接入网络的设备,并阻断非法接入设备通信,保护内部网络的信息安全成为网络管理面临的亟待解决的问题。目前在这方面已有许多较为成熟的研究[1?4]:通过IP与MAC地址对绑定,接入主机的IP及MAC地址与绑定列表中的对比判断接入主机的合法性[1?3];通过监视代理是否收到新接入主机的请求判断其合法性[4]。这些方法存在以下不足:
(1) 非法主机通过修改其IP,MAC等信息冒充合法主机接入网络;
(2) 非法主机在合法主机上通过旁路侦听技术获取信息,并在非法主机上构造信息伪装成合法主机与监视代理通信;
(3) 非法主机接入后会存活一段时间导致病毒等传播。本文在研究ARP协议原理的基础上对ARP协议进行了扩展,设计了一种基于ARP协议的非法主机接入监测系统,通过该系统可以快速、及时识别接入的设备并阻断非法接入的设备。
1 ARP协议简介
1.1 ARP协议工作原理
ARP(Address Resolution Protocol)全称为地址解析协议,其基本功能就是实现设备IP地址和MAC地址的转换,通过在ARP缓存列表中查找IP及MAC地址的对应关系,确定目标设备IP对应的MAC地址,以便双方可以进行通信[5]。当主机接入网络后会主动发送ARP广播,并接收其他主机的ARP响应。其工作原理如下:
每台主机都会有一个ARP缓存区,其中存放着表示IP及MAC地址对应关系的ARP列表。当两台主机A和B要进行通信时,主机A首先会检查自己的ARP缓存列表中是否存在主机B的IP,MAC地址对,如果存在,则与主机B的IP对应的MAC地址进行通信;如果不存在,那么主机A就会在本地网段内发送ARP请求包,目的是查询主机B的MAC地址,请求包中包括源主机A的IP地址和MAC地址、目的主机B的IP地址和MAC地址。本网段内的其他主机收到主机A的ARP请求包后会判断请求包中的目的IP是否与自己的IP相同,如果不同则忽略该请求包;当主机B收到请求包后发现目的IP与自己的IP相同,那么主机B就会根据请求包的信息更新自己的ARP缓存列表,并向主机A发送ARP应答包说明自己就是A要查询的主机。主机A收到主机B的应答包后会将得到的IP,MAC地址对添加到自己的ARP列表中,如果A一直未收到ARP应答包,则表示ARP查询失败[6]。
1.2 ARP报文格式
ARP的数据包是封装在以太网数据包中进行传输的,以太网帧格式如图1所示,ARP数据报文格式如图2所示(单位:B)。endprint
图1 以太网帧格式
图2 ARP报文格式
由图1可以看出以太网帧长度最小为6+6+2+46+4=64 B,由图2可以看出ARP报文长度固定为6+6+2+28=42 B,要发送ARP数据包还需要填充18 B才能达到以太网帧长度的要求。
2 NDIS协议驱动概述
监测系统需要从底层驱动实现对操作系统自身ARP的阻断,并构造私有ARP进行信息收发,需要网络接口标准(Network Driver Interface Specification,NDIS)的支持。NDIS为网络驱动抽象了网络硬件,屏蔽了底层物理硬件的不同,制定了底层物理硬件与协议驱动层的通信接口规范,使底层任何型号的物理网卡都能与上层的协议驱动程序进行通信。NDIS支持微端口(Miniport)、中间层驱动(Intermediate)和协议驱动(Procotol)等3种类型的驱动,如图3所示。其中,NDIS体系的最高层为协议驱动,它接收底层物理网卡或中间驱动的消息并为应用层提供服务[7];中间层位于微端口驱动和协议驱动之间,它可以提供多种服务,可以对通过链路层、网络层的网络数据包进行截获、过滤[8]。由中间层所处NDIS体系层次位置可知,它必须与下层微端口及上层协议驱动进行通信,它是通过两个函数集来实现的:微端口驱动(MiniPortXxx)入口点,用来传送上层协议层的协议驱动请求;协议驱动(ProtocolXxx)入口点,用来传送下层微端口的驱动请求。微端口为物理网卡与上层驱动程序提供通信接口,负责上次数据包的收发。
图3 NDIS的3种类型驱动
3 系统总体结构和框架
监测系统采用C/S+B/S架构,在局域网内的每台主机上安装监视代理程序,该代理程序实现阻断操作系统自身ARP、构造私有ARP、监视主机接入功能,当有非法主机接入时上报给服务端,管理员通过Web浏览器可以查看主机接入、离线状态,非法主机接入告警等信息。系统总体结构设计如图4所示。
图4 系统总体结构
客户端主要包括主机接入监测模块、非法接入阻断模块、非法信息上报模块及日志模块;服务端主要包括主机状态管理模块、告警模块、展现模块及日志模块。具体框架如图5所示。
图5 系统框架
4 基于ARP协议的非法主机监测系统的设计
客户端通过底层驱动实现对操作系统自身ARP的阻断,并构造具有签名的私有ARP,实现主机接入监测并通过判断收到的是否为合法的私有ARP判断主机的合法性,并将非法主机信息上报给服务端;服务端接收客户端信息,如果一定时间内未收到客户端信息说明该客户端处于离线,同时对收到的非法主机进行判断生产告警信息。远程用户可以通过Web浏览器查看主机接入状态及非法主机告警信息。
4.1 驱动开发
客户端需要通过底层驱动对操作系统自身ARP的阻断并构造私有ARP,这些都是发送和接收以太网数据帧,需要驱动支持。
NDIS的中间驱动层位于微端口驱动与协议驱动中间,因此可以在微端口驱动与协议驱动之间插入自己的驱动程序,自己的驱动程序可以实现网络数据包的截获、转发等功能。这样,当下层的微端口驱动程序接收到网卡传输的数据后会通过Miniport接口发送到导出的Protocol接口上,NDIS中间层驱动程序对从微端口接收的数据进行处理,当NDIS中间层驱动处理完数据后,再把处理后的数据通过导出的Miniport接口发送到接口Protocol上,这样就完成了一个截获数据包的过程[9]。
当上层协议驱动要发送数据时,首先会通过中间层接口将数据发送到中间层,然后中间层使用MiniportSend和MiniportSendPackets两个函数对接收的数据进行转发,在转发时可以在这两个函数中设置过滤规则以过滤无关的数据,NDIS可以过滤任何网络协议[10]。本文只需要过滤ARP协议,中间层如果发现是ARP协议则进行阻断不转发,其他协议放行,同时构造私有ARP数据包发送出去。当有网络数据包到达网卡时,微端口驱动会调用NdisMindicateReceive通知中间层,然后NDIS会调用中间层的函数PtReceive/PtReceivePacket来接收和处理数据包,如果发现是ARP数据包则判断是否是合法的私有ARP,如果是合法私有ARP说明是合法主机,否则是非法主机。
4.2 私有ARP的构造
如第1.2节所述,以太网数据帧最小长度为64 B,而ARP固定长度为42 B,去除4 B的CRC还剩余18 B需要填充。构造的私有ARP就是通过对这18 B进行填充来实现的,填充内容为私有内容,同时需要签名机制实现“完整性检查机认证”,以防非法用户在合法主机上通过旁路侦听技术捕获合法主机的ARP通信技术,从而构造非法的私有ARP伪造成合法主机接入网络。
4.3 客户端处理流程
步骤1:通过第4.1节所述实现阻断操作系统自身ARP的收发,判断收的数据包是否为ARP数据包,如果不是则丢弃,如果是ARP数据包,则进行阻断;
步骤2:Agent构造私有ARP,原有ARP数据报文的格式不变,在此基础上增加最长为18 B的私有标记,因为原有ARP协议数据包长度固定位42 B,而以太网的最小帧长度为64 B,还有18 B的空余可供填充。在构造私有ARP时需要对私有标记进行完整性检查及认证,防止非法设备获取私有标记进而伪造成合法设备接入网络。
步骤3:将构造的私有ARP数据包进行广播,接收其他设备的ARP请求及应答。如果收到其他设备的ARP请求,则对该ARP进行解析,取出私有标记,使用一定的加密算法及局域网内所有主机的共享密钥对私有标记进行合法性和完整性检查。如果检查通过,说明是安装Agent的合法设备,则可以进行通信;如果检查不通过,说明是非法设备,则Agent向非法设备发送一个ARP应答报文,该ARP数据包的发送端IP为非法设备IP,发送端MAC地址为一个伪造的、不存在的MAC地址的数据包,以阻断非法设备与其通信,并将该非法设备上报给服务端。阻断并构造ARP及判断非法设备的具体流程如图6所示。
4.4 服务端处理流程
步骤1:客户端与服务端一直保持通信,当一定时间内服务端未收到客户端的消息,则认为客户端已经处于离线状态。
步骤2:服务端在其库表中查找客户端的IP,如果没有找到,说明该客户端是安装Agent的合法设备,因为没有安装Agent的设备是不能与服务端通信的;如果在库表中找到了,说明此设备IP或者曾经与服务端通信过或者作为非法设备上报过;如果其状态为非法,那么此时将其状态修改为合法、在线,如果其状态为合法,则需要查看其是否在线;如果不在线说明是合法设备离线后现在重新接入,将状态标记为在线。具体处理流程如图7所示。
图6 客户端处理流程
图7 服务端处理流程
4.5 告警处理流程
服务端收到客户端上报的非法设备的信息后,在服务端库表中查找该非法IP,如果未找到,说明此非法IP是首次使用,产生告警;如果找到了,则查看此IP在数据库表中的状态是否合法。如果是合法,说明此前该IP作为合法设备使用,但是当前有非法设备使用该IP,因此需要将其状态修改为非法,同时产生告警;如果查找的IP状态为非法,要查看是否已有其他客户端上报过该IP。如果没有其他设备上报过该IP而该IP状态时非法,说明此前该IP非法使用过,则产生次告警;如果已有其他客户端上报过该IP则不需要再次产生告警。具体处理流程如图8所示。
图8 告警处理流程
5 实验结果
通过安装修改过的ARP驱动监测网络中非法设备。本实验所处环境中有主机100多台,将字符串为“NARIMONITOR”作为构造ARP的私有标记,经过处理后其在ARP数据包中的表现为“05919CA23243AA3BF
4333EB561414D39”。
分别做2组实验:第1组实验中,只有主机A安装监测程序,其余主机都未安装;第2组实验中除了主机A安装监测程序外,主机B(10.144.100.57)和主机C(10.144.100.117)也安装了监测程序。
(1) 第1组实验。如图9所示,只有主机A安装了驱动程序,因此合法的主机设备只有A,而其他设备都是非法设备,并且主机A与其他非法设备通信中断。
图9 只有主机A安装监测程序
如图10所示,通过对其他设备的抓包可以发现ARP填充部分与构造的私有ARP填充部分不一致。
(2) 第2组实验。第2组实验中有3台主机安装了监测程序,其余主机未安装。如图11所示,安装了监测程序的主机A,B,C为合法设备,而其他未安装监测程序的主机为非法设备。
如图13所示,即使其他设备(10.144.100.129)对ARP数据包进行了填充,但是填充的信息经过处理后不能与设定的字符串相符,也作为非法设备。
图10 非法设备ARP数据包
图11 多台合法设备
如图12,通过对合法设备抓包可以发现合法设备的ARP数据包中填充部分与设定的字符串相符。
图12 合法ARP数据包
如图13所示,即使其他设备(10.144.100.129)对ARP数据包进行了填充,但是填充的信息经过处理后不能与设定的字符串相符,也作为非法设备。
图13 非法设备相关ARP数据包
6 结 语
如何快速发现主机接入,并及时阻断非法主机的通信是网络管理的一个重要内容。本文以NDIS驱动为基础,开发中间层驱动实现对操作系统自身ARP阻断、构造私有ARP、识别非法主机,当主机接入网络之时即可发现该主机,同时对其合法性进行判断,对非法主机阻断与其他设备的通信,降低非法主机存活时长。本文通过ARP欺骗实现对非法接入主机的阻断,后续还可通过驱动层直接阻断非法接入主机的通信。
参考文献
[1] 吴少华,方勇,胡勇,等.基于ARP协议的非法入网检测与阻止技术研究[J].微计算机信息,2007(18):27?28.
[2] 刘贵松,晏华,章毅.基于ARP协议的局域网访问控制[J].电子科技大学学报,2005,34(2):240?243.
[3] 郭幽燕,杜晔,王杨,等.基于ARP协议的内网访问控制系统[J].计算机工程与科学,2010,32(1):21?24.
[4] 周晴伦,石恒,高明.一种非法主机接入内部网络监视系统的设计与实现[J].桂林电子科技大学学报,2011,31(4):300?303.
[5] 胡清桂.确认机制对ARP协议的改进[J].华中师范大学学报:自然科学版,2011,45(3):380?385.
[6] 宋建,王文蔚,赵玉国,等.利用ARP协议进行网络管理[J].微计算机应用,2007,28(12):1270?1273.
[7] 杨智军,马骏骁,田地,等.基于NDIS的IP安全协议的研究与实现[J].计算机工程,2007,33(22):166?168.
[8] 韩玲艳,夏靖波,李健勇.基于NDIS中间层驱动程序的网络嗅探神器[J].现代电子技术,2007,30(21):73?75.
[9] 何映,覃以威,李丹.基于Windows内核态个人防火墙的设计与实现[J].现代电子技术,2012,35(6):49?51.
[10] CHEN Shin?Shung, CHEN Yuwei, KUO Tzong?Yih. Defence design for ARP spoofing based on NDIS intermediate driver [C]//International Conference on Security Science and Technology. Hong Kong: ASME, 2012: 111?121.