APP下载

基于NDIS 中间层驱动的数据采集模块研究与设计

2014-01-03丽,陈

电子测试 2014年8期
关键词:中间层驱动程序数据包

曹 丽,陈 姝

(1.渤海大学,辽宁锦州,121000;2.辽宁省基础测绘院,辽宁锦州,121000)

0 引言

在各种的网络安全手段中,入侵检测系统发挥着重要的作用。在这个过程中,入侵检测技术也得到了迅速的发展,随之入侵检测算法也不断涌现和完善。

在当今社会,随着现代网络技术的迅猛发展,现存的网络入侵检测系统正面临着越来越严峻的挑战。网络的主机在不断地增多,网络的速度在飞速地提高,网络的带宽在不断地增大。就需要配套的网络入侵检测系统。提高已有系统的入侵检测的速度,减少已有系统的丢包率,成为现代网络入侵检测领域急待解决的问题。另外亟待解决的问题还有入侵检测系统的误报与漏报现象等。

目前网络入侵检测系统多数采用的是UNIX 平台。在windows 平台下的入侵检测模型还不完善,本文描述了一个在windows 平台下的网络入侵检测模型,使用NDIS 中间层驱动来实现数据的采集,引入协议分析技术来实现模块的预处理,提高了检测的速度,减少了漏报和误报现象。优化了应用程序与驱动程序之间的通信。

1 基于NDIS 技术的中间层驱动器

NDIS 技术支持协议驱动、中间层驱动、网络接口卡驱动程序这三种类型的网络驱动。因为存在NDIS 库函数,因此为NDIS 驱动程序提供了一个完整的运行环境,

在windows 平台使用Winpcap 数据包截获机制,在协议驱动层之下为中间层驱动程序,中间层驱动程序可以为系统提供更高的数据采集速度,具有不可绕开性和系统耦合度高等优点。因此本文采用基于NDIS 中间层驱动的技术完成了入侵检测中数据采集模块的设计与实现。

如图1 所示是目前最常用的公共入侵检测框架模型。现代网络入侵检测系统一般可以分为事件产生单元、事件分析单元、响应单元、事件数据库单元这四个基本的工作单元。本文的检测模型是在公共入侵检测框架模型的基础上设计和实现的。

图1 入侵检测模型的总体架构

协议分析模块在入侵检测系统中占有举足轻重的地位,是入侵检测分析模块的预处理部分,协议分析模块的好坏直接影响检测的结果,本文主要针对数据抓包模块和协议分析模块进行改进和优化。本文采用的NDIS 中间层驱动实现了对数据采集模块的优化。采用协议分析模块提高系统的准确性和快速性。

本文引入协议分析模块存在以下有点:其一:利用通信协议的结构特性,可以准确地找到检测域,快速有效的处理会话信息。其二:引入协议分析技术可以大大地减少误诊断率和误报率,协议分析技术和命令分析技术的有效结合,可以产生一个命令字符串,以此来判断操作系统或应用系统在通信连接时是否存在恶意攻击。其三:通过协议分析技术重装数据包,可以检测到存在IDS逃避技术的攻击,因此大大降低了系统的漏检率。提高了系统的准确率。其四:有效性和准确性的提高大大降低了系统资源的占有率,因此基于协议分析技术的IDS 系统具有低能耗的特点。

2 基于NDIS 技术的数据采集模块的设计

2.1 驱动注册

在现有的Windows 运行环境当中,下层的微端口驱动和上层的协议驱动这两部分驱动,可以直接进行通信。首先我们可以利用中间层驱动入口函数Driver Entry,注册中间层驱动程序,我们将中间层驱动程序加入到微端口驱动和协议驱动这两个驱动的中间。中间层驱动入口函数Driver Entry 中,首先应调用NDIS 库函数Minport***,为上层协议提供接口函数,随后我们需要为底层的微端口驱动提供一个接口函数,所以我们需要调用Protocol***函数,并在底层驱动程序上绑定中间层的驱动入口函数。其中的协议驱动函数包括:封包函数、绑定函数、PNP 函数和状态函数这四个主要函数。

2.2 数据截获实现

由于接收数据包和发送数据包的截获方式比较类似,所以在本文中主要讨论接收部分的研究方法。当我们需要在底层网络进行传输数据时,下层微端口驱动需要调用被注册的接收封包函数—Protocol Receive Packet 函数或者Protocol Receive 函数,其中在程序中Pt Receive Packet 函数应该对应函数库中的Protocol Receive Packet 函数,Protocol Receive 函数在程序中应该对应函数库中的Pt Receive 函数。在实际进行数据包的接收的过程中,由网卡的类型决定具体调用这两个函数中的哪个函数,Pt Receive 函数主要用于接收较为廉价环境下的数据包,例如Realtek RTL8139。而Pt Receive Packet 函数主要用于接收虚拟机环境及intel 网卡环境下的数据包。两者接收数据包的形式不同,其中Pt Receive 函数可以接收不完整的数据包,而Pt Receive Packet 必须接收整个数据包。本文在windows 环境下分别利用Protocol Receive Packet 和Protocol Receive函数对数据包进行了截获,以提高系统的兼容性。

如图2 所示,为采用本文方法实现的抓包实验结果,说明本文的方法可以在接收数据包时有效的完成抓包。提高了系统的准确性和有效性。并且由于本文通过调用被注册的接收封包函数—Protocol Receive Packet 或者Protocol Receive,保证了本文方法的兼容性。

图2 Protocol Receive Packet 和Protocol Receive 函数抓包效果图

图3 核心态协议下的输出分析结果

3 协议分析模块的设计

核心态与用户态组成了协议分析模块,在内核态的实现过程中,本文根据TCP/IP 协议的格式来定义各种协议的结构,其中的函数包括struct _IP_PACKET 函数、struct _udphdr 函数和struct _tcphdr 函数等。

为了进行验证,本文用debugview 调试输出工具查看我们实验的输出结果,如图3 所示。说明本文采用的方法是在核心态分析中得到了正确的输出结果。

关于用户态协议分析模块,本文没有进行深入的研究与实现,因为用户态协议分析模块涉及到应用层协议的具体分析,所以本文没有进行深入讨论。为了证明本文的方法具有普遍性和兼容性,除了对以上几个模块进行实现,本文对传输层以下的常用攻击,利用本文的协议分析机制进行了检测,取得了较好的效果。

land 攻击是当今网络中拒绝服务攻击中的典型类型,它具有向目标机发送源IP 地址的特点,以及目的IP 地址为目标机地址的TCP SYN 发送报文的特点,按照上面的特点目标机就会对自身不断地发送ACK 报文。因此,会导致接收的封包数量超过系统的极限值,引起整个系统信息壅塞,甚至会导致系统的崩溃。

其检测程序段如下所示:

If(p_ip->proto == 6&& p_ip-> sourceIP== p_ip-> destIP)

{DbgPrint("This is a land attack packet");}

类似的我们还可以对其它几种攻击进行检测,比如WinNuke攻击以及TCP 标志位错误等攻击形式。

4 结论

本文提出了一种基于NDIS 的入侵检测模型,对数据包截获模块和协议分析模块进行了设计和实现。并在debugview 调试输出工具中查看了输出结果,输出结果显示本文采用的方法其丢包率与Ethereal 持平。但本文采用的方法优化了应用程序与驱动程序之间的通信,实现了核心态协议分析机制与现代网络技术的有效结合,有效的提高了网络入侵检测的速度,并且进一步降低了系统的漏检率,并且基于协议分析技术的IDS 系统具有低能耗的特点。在windows 平台下,实现了基于NDIS 的中间层驱动的数据采集模块的研究与设计。

[1] Microsoft Corporation.Microsoft Windows XP DDK [Z],2001.

[2] Mark E.Russinovich, David A. Solomon.Microsoft Windows Internals,Fourth Edition:[M],Microsoft Press, 2005.

[3] 宋维.一种分布式入侵检测基础架构的设计与实现[D],沈阳:东北大学,2006.

[4] 杨智君等.基于NDIS 网络中间层驱动程序的网络检测器,吉林:吉林大学学报,2006

猜你喜欢

中间层驱动程序数据包
二维隐蔽时间信道构建的研究*
Zn-15Al-xLa中间层对镁/钢接触反应钎焊接头性能影响
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
一种十七股子午胎钢丝帘线
SmartSniff
计算机硬件设备驱动程序分析
镍基高温合金TLP扩散焊中间层材料研究进展
B含量对IC10合金TLP焊接用中间层材料及接头组织的影响
基于MPC8280的CPU单元与内部总线驱动程序设计
妙用鼠标驱动