入侵检测系统中网络数据截获模块分析.doc

入侵检测系统中网络数据截获模块分析.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
入侵检测系统中网络数据截获模块分析

入侵检测系统中网络数据截获模块分析 [日期:2006-05-20] 来源:? 作者: [字体:大 中 小] 祝小伟? 张学平 ? ? 摘? 要:介绍了入侵检测系统在不同的操作系统中实现网络数据截获模块的技术基础,在对BPF 和Libpcap分析的基础上,分析了在UNIX和Linux系统下基于BPF包截获技术和Libpcap函数库的网络数据截获模块,然后给出了在WIN9x系统中采用虚拟驱动程序VPacket.vxd和Winpcap实现数据截获的方法,并介绍了Win2000系统中捕获数据包的一些方法。 关键词:入侵检测;数据截获;虚拟设备驱动 网络数据截获模块是实现整个入侵检测系统高效工作的基石,为整个系统提供数据来源。因此,在设计整个入侵检测系统时,必须保证网络数据截获模块工作稳定可靠,为整个入侵检测模块稳定可靠地提供数据。现在比较流行的有两种方法,一种网络数据截获方法是在BPF 模型的基础上,利用一些流行的函数库进行开发;另外一种是在Windows的驱动程序的基础上进行的开发。 1? 基于UNIX/Linux系统的网络数据截获 网络上数据的截获主要依赖于所使用的操作系统,不同的操作系统一般有不同的实现途径。在UNIX或Linux系统中,一般采用由美国洛伦兹伯克利国家实验室所编写的专用于数据包捕获功能的API函数库Libpcap来实现。Libpcap实质上是一个系统独立的API函数接口,用于用户层次的数据截获工作,Libpcap接口支持基于BSD的数据包过滤器(BPF,Berkeley Packet Fliter)的数据过滤机制。 1.1 模型和数据截获函数库 1.1.1 BPF 模型 目前,许多版本UNIX和Linux平台上多数嗅探器都是基于BPF开发的。这主要是因为监听程序以用户级别进程工作,数据包的拷贝必须跨越内核/用户保护界限,这就需要使用名为数据包过滤器(Packet Fliter)的内核代理程序。BPF过滤使用了新的基于寄存器的预过滤 机制,它的缓存机制也对整体效率提高有很大作用。 图1是BPF的模型及其接口。由图可见,BPF在核心设置了过滤器,预先可对数据包进行过滤,并且只将用户需要的数据提交给用户进程。每个BPF都有一个Buffer,如果过滤器判断接收某个包,BPF就将它复制到相应的Buffer中暂存起来,等收集到足够的数据后再一起提交给用户进程,提高了效率。 ? ?????????????????????????????????????????????????????????????????????? 图1 BPF 的模型及其接口 1.1.2 数据截获函数库 一种支持BPF模型过滤机制的包函数库是Libpcap,目前它仅对BPF使用内核过滤。该数据截获函数库最大优点是不需要为解析过滤规则耗费过多的精力,而且可在不同系统上不加变化地移植,提供了一个可独立于系统用户层包截获的系统程序开发接口。其主要库函数有: 1)pcap_lookupdev():该函数返回一个网络设备接口名,pcap_open_live(),pcap_lookupnet()等函数将用到这个网络设备接口名。失败时返回NULL,errorbuf包含了失败原因。 2)pcap_open_live():该函数用于获取一个抽象的包截获句柄,后续很多Libpcap函数将使用该句柄,类似文件操作函数频繁使用文件句柄。 3)pcap_lookupnet():该函数用于获取指定网络接口的IP地址、子网掩码。 4)pcap_compile():用于将过滤规则字符串编译成一个内核过滤程序。 5) pcap_setfilte():该函数用于设置过滤规则。 6)pcap_loop():该函数用于捕捉报文、分发报文到预先指定好的处理函数(回调函数)。 7)pcap_close():关闭关联文件并回收资源。 1.2 网络数据截获模块的设计方案 在UNIX系统或Linux系统中,实现数据包截获可利用BPF模型和作为一个通用可移植的包截获Libpcap函数库来实现。实现框图如图2所示。 系统首先设定所要监视的与端口相连接的设备,扫描并截获数据链路层的数据包。然后,在此基础上,用一个callback对所截获到的数据包进行分析,交给上层处理。 ? ? ? 图2 模块设计框图 2? 基于Win32系统的网络数据截获 在Windows操作系统的保护模式下,各种进程被赋予不同的特权级。运行于内核级(Ring 0)的进程可以拥有系统资源的所有访问权和管理权;而运行于用户级(Ring 3)的进程只能访问自己的程序空间,不允许对系统资源的直接访问。应用程序均运行于Ring 3层,因而必须通过相应的客户虚拟驱动程序才能实现对底层的直接访问。在用户级下进行数据包拦截最致命的缺点就是只能在Wi

文档评论(0)

youshen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档