基于Windows操作系统的入侵检测系统设计
2010-07-27赵妙军
赵妙军
(杭州师范大学钱江学院 计算机科学与技术专业,浙江 杭州 310012)
1 入侵检测系统主要功能及通用模型
一个合格的入侵检测系统能大大简化安全管理员的工作,保证网络安全的运行。具体说来,入侵检测系统的主要功能有以下几点:监测并分析用户和系统的活动;核查系统配置和漏洞;评估系统关键资源和数据文件的完整性;识别已知的攻击行为;统计分析异常行为;操作系统日志管理,并识别违反安全策略的用户活动。
一个入侵检测系统(IDS)的通用模型。它将一个入侵检测系统分为以下组件:事件产生器(Event Generators);事件分析器(Event Analyzers);响应单元 (Response Units);事件数据库(Event Databases)
CIDF将IDS需要分析的数据称为事件(event),它可以是网络中的数据包,也可以是从系统日志等其他路径得到的消息。入侵检测的通用模型见图1:
图1 入侵检测的通用模型
2 入侵检测的系统数据流程及模块划分
入侵检测系统的主要功能就是通过采集网络数据对数据进行分析,发现入侵则进行实时报警且进行日志记录,并且能够动态配置检测规则,将配置信息记录在数据库中。数据流图如图2所示。
图2 入侵检测系统数据流程图
预处理实现数据分析中的一个预处理功能,即根据目标主机的IP地址将检测的规则分组,并将采集到的网络数据包分发为所属分组。系统的数据、预处理、检测规则等的初始化都是在捕获数据包前进行的。一旦初始化完毕,那么就开始捕获数据包,每收到一个数据包都会首先调用预处理程序中的函数进行处理后,再调用规则函数。即首先根据数据包的协议类型定位规则函数,其次调用规则函数进行规则的逐一匹配,即首先匹配规则头,若匹配则继续匹配规则选项,若不匹配,直接匹配下一条规则。本系统采用模块化设计方法,依据入侵子系统的功能需求和系统结构将系统划分成如下功能模块,如图3:
图3 系统功能模块
各模块功能如下:
采集模块:网络数据采集与包过滤。
分析模块:对数据包进行包分析和模式匹配、判断网络入侵。
响应模块:控制台屏幕报警、控制台警报报警、发送警报由防火墙阻断攻击。
系统管理模块:控制系统的启动和系统的停止。
系统设置模块:配置入侵检测策略。
日志管理模块:记录系统日志和记录网络攻击日志:读取日志、分析日志和归类综合日志内容。
帮助模块:提供入侵检测系统的一些帮助文档。
3 基于WinPcap伯克利开发包的网络数据包截获
WinPcap是面向Win32平台的进行数据包捕获和网络分析的一个架构。它包括一个核心层的数据包过滤器,一个底层的动态连接库(packet.d 11)和一个高层并且系统独立的动态连接库(wpcap.dll)。数据包捕获是一个面向底层的机制,它需要与网络适配器、操作系统、特别是网络应用程序进行严格的交互。
NPF(Netgroup Packet Filter)是WinPcap的核心部分。它的主要功能就是捕获数据包,还可以发送数据包、存储数据包以及对网络进行统计分析。NPF工作在内核层,有一个网络转发部件,从网卡驱动程序收集网络数据包,即可以发送给过滤部件,对网络数据包进行过滤,也可以发给统计部件,对网络进行统计分析,还可以发送给存储部件,把网络数据包直接存储到磁盘。数据包在NPF中使用了缓存机制,主要是为了提高效率和速度。
NPF和NDIS(Network Driver Interface Specification)有密切的关系。NDIS是一个标准,它定义了网络适配器(确切地说,是管理网络适配器的驱动程序)和协议驱动程序之间的通信规范。NDIS的主要目的是使协议驱动程序独立于网络适配器的特殊性和Win32操作系统的特殊性来接收网络上的数据包或发送数据包到网络上。
Winpcap使用NPF部件捕获数据包。为了用户层的应用程序能利用核心驱动程序所提供的服务,还提供一个接口。WinPcap提供了两种不同的动态连接库:packet.dll和wpcap.dll来提供这种服务。packet.dll提供了一个底层的API使用这个独立于微软操作系统的编程接口即可直接访问核心驱动程序提供的功能。wpcap.dll提供了一个更加强大的用于高层捕获的函数子集,它和libpcap,并允许以一种独立于下层的网络硬件和操作系统的方式来捕获数据包。
本系统就是运用了wpcap.dll实现了高层的数据包捕获。通过调用一系列的wpcap.dll函数,实现数据包采集工作。过程如下:首先调用函数pcap_findalldevs ex()获得本机网卡名,接着调用函数pcap_open()获得网长句柄,最后调用函数pcap_next_ex()获得网络数据包句柄,接收网络数据包。出于数据分析时只需要IP包,所以数据采集只接收IP包,其它数据包则丢弃。
4 异常检测与误用检测综合运用的检测技术
木系统基于误用检测的实现:事件判决引擎依据协议解码器提交的网络协议数据进行分析,并从这些网络活动中找出预先定义的攻击模式,一旦发现其中含有攻击事件的特征码,即将此事件提交“响应系统”。
本系统基于异常检测的实现:对攻击规则进行初始化存储的同时也根据配置初始化相应的计数器、定时器,用来记录特征包的到达。特征包到达速度判决器对每一种要检测的初始化一个“先进先出”队列,记录一定数量的包到达的时间戳,对符合条件的包的到达时问进行登记,并对一段时间内到达包进行计数,一旦超出预先设置的门限值,即将此事件提交“响应系统”。
误用检测以网络协议数据为检测数据源,异常检测以特征包的到达速度为检测数据样本。通过这种方式综合运用了两种检测技术,实现误用、异常技术的互补,最大限度地阻断网络入侵行为,解决工DS检测效率低的问题,提高工DS的综合检测能力,很好的控制了检测系统产生的误报、漏报现象。
检测引擎通过循环捕获数据包,对网络流量进行实时监控的过程从程序设计的角度看是一个无限循环的过程,这个过程必将耗尽系统资源,使系统无法响应其它事件。为了能够主动控制过程的开始和中止,WNIDS系统采用了vc++提供的线程技术,采用主线程响应用户输入,两个检测线程分别控制误用、异常检测的技术。
[1]薛静锋,入侵检测技术,机械土业出版社,2004
[2]韩东海等著,《入侵检测系统实例剖析》[M],清华大学出版社,2002
[3]李晓莺,协议分析在入侵检测系统中的应用,网络安全技术与应用,2002