毕业设计论文核心层网络封包截获技术应用

上传人:沈*** 文档编号:149234259 上传时间:2022-09-06 格式:DOC 页数:29 大小:491.50KB
收藏 版权申诉 举报 下载
毕业设计论文核心层网络封包截获技术应用_第1页
第1页 / 共29页
毕业设计论文核心层网络封包截获技术应用_第2页
第2页 / 共29页
毕业设计论文核心层网络封包截获技术应用_第3页
第3页 / 共29页
资源描述:

《毕业设计论文核心层网络封包截获技术应用》由会员分享,可在线阅读,更多相关《毕业设计论文核心层网络封包截获技术应用(29页珍藏版)》请在装配图网上搜索。

1、四川师范大学本科毕业设计核心层网络封包截获技术应用学生姓名XXX院系名称计算机科学学院专业名称XXXXX班 级200X级 X班学 号XXXXXXXXX指导教师XXX完成时间20XX年 5 月 XX 日核心层网络封包截获技术应用学生:XXX 指导教师:XXX内容摘要:随着网络安全问题的日益突出,计算机用户对网络安全技术及其相关产品也越来越关注。在众多的网络安全技术中,核心层封包截获技术有着非常重要的地位,它是包过滤防火墙的基础,并且被广泛的用于封包过滤、协议转换、截取报文分析以及网络嗅探等技术中。因此,本文就核心层网络封包截获技术进行了探究。首先,本文对目前该技术的国内外现状进行了说明,以明确进

2、行研究的目的。随后,详尽地对核心层网络封包截获技术的实现原理作了讲述,在讲述原理时主要介绍了一下几个方面的内容:分层服务提供者(LSP)的相关概念、原理和用途;核心层网络驱动和NDIS网络驱动程序;核心层网络封包截获技术的实现。通过对原理的说明,使读者了解实现这项技术的具体方法。最后,为了实现这项技术并对前面提出的原理进行验证设计了相关的软件,本文对这个软件作了系统分析和系统设计,最终并实现了该软件。通过测试,证明了其具有在核心层截获封包,在应用层分析封包的功能,也验证了本文所探讨的原理的正确性和重要性。关键词:网络安全 核心层 封包截获The Technoloty of Packet Int

3、erception in Kernel LayersAbstract: Because the network security problems have gone from bad to worse, computer users begin to notice network security technology and network security products. Among all kinds of security technologies, the technology of packet interception in kernel layer is very imp

4、ortant for it is the basis for packet filter firewall and it is widely used in packet filtering, protocol conversion, interception of message analysis and network sniffering. Therefor, I devote myself to studying on the technology of the packet interception in kernel layer.In this article, firstly,

5、the present situation of this technolony is described to tell reader why I study on it. Secondly, principles of packet interception are told about in detail.In this detailed description part, the concept of the LSP ,the theory of the LSP and the usage of LSP are introduced in more detail. Whats more

6、, I also explain many aspects of the network drivers in kenel layer and tell reader how to implement the interception.Thus, reader can understand the technology of packet interception in kernel layer accurately. Finally, to implement and check out the technology I have discussed, I compile the softw

7、are named NetFilter which is analyzed and designed systematically in this article. By testing , the software can intercept packets in kenel layer and analyze packet in application layer.Key words:network security kernel layer packet interception目录1概述11.1研究目的和意义11.2研究背景21.2.1国内现状21.2.2国外现状21.3主要贡献31.

8、4文章的结构42预备知识及原理说明42.1分层服务提供者(LSP)42.1.1分层服务提供者(LSP)的概念42.1.2分层服务提供者(LSP)的原理42.1.3分层服务提供者(LSP)的用途用户级封包截获52.2核心层网络驱动和NDIS网络驱动程序52.2.1核心层(Kernel Mode)概述52.2.2核心层网络驱动62.2.3 NDIS网络驱动程序62.3核心层网络封包截获技术72.3.1Windows网络系统体系结构82.3.2用户模式下的网络数据过滤92.3.3内核模式下的网络数据过滤102.3.4应用层封包截获与核心层封包截获113 NetFilter系统分析113.1需求分析1

9、13.2功能说明123.2.1网络访问监视123.2.2应用层过滤规则123.2.3核心层过滤规则133.2.4系统设置134 NetFilter系统设计134.1系统总体设计134.1.1系统的工作流程134.1.2系统的功能模块144.2系统详细设计144.2.1系统关键类154.2.2系统重要数据结构154.2.3系统重要模块详细设计165. NetFilter系统实现175.1开发平台175.1.1 Windows Server 2003 DDK185.1.2 DbgView185.1.3 Micosoft Visual C+ 6.0185.1.4 Micosoft Visual Vi

10、sio 2003185.2模块实现185.2.1 SYS模块185.2.2添加应用层规则196 NetFilter系统测试与运行206.1 测试206.1.1单元测试206.1.2 功能测试216.1.3 系统综合测试216.2 系统运行217 结束语238 致谢23参考文献2424核心层网络封包截获技术应用1概述1.1研究目的和意义 随着网络的普及,安全问题正在威胁着每一个网络用户。由于黑客攻击和信息泄露等安全问题并不像病毒直截了当地对系统进行破坏,而是故意隐藏自己的行动,所以往往不能引起人们的重视。但是,一旦网络安全问题发生,通常会带来严重的后果。因此,利用网络安全技术及产品来加强安全意识

11、,并及早防范是非常必要的。在网络安全技术中,核心层网络封包截获技术有着很重要的作用。1、核心层网络封包截获技术是包过滤防火墙的技术基础。包过滤防火墙是PC机上使用的主流防火墙, 核心层包过滤技术为之提供设置规则表,按照规则表检查数据包并对其施行相关动作(如放行,拒绝等)。2、核心层网络封包截获技术应用于协议转换。当网络类型不同(比如以太网、令牌环),彼此不认识对方的帧格式,单纯依靠数据链路层协议无法实现两个网络的相互连接。因此这个问题需在网络层上进行解决:方法是在不同的网络类型中分别设置两个网关,网关需要核心层封包过滤技术的支持,获取封包以后在转化为相应的协议。3、核心层网络封包截获技术用作包

12、过滤器。按照不同的参数设置,如IP地址段,地址掩码等。这一项技术的核心同样需要核心层封包技术的支持。4、核心层网络封包截获技术应用于截取报文分析。在网络层截获数据包,并对其进行源地址、源端口以及内容的分析。5、核心层网络封包截获技术应用于网络嗅探技术。嗅探(Sniffer)技术是网络安全攻防技术中很重要的一种。对黑客来说,通过嗅探技术能以非常隐蔽的方式攫取网络中的大量敏感信息,与主动扫描相比,嗅探行为更难被察觉,也更容易操作。对安全管理人员来说,借助嗅探技术,可以对网络活动进行实时监控,并进行发现各种网络攻击行为。6、核心层网络封包截获技术应用于个人网络安全工具。根据管理者设置的安全规则把守网

13、络,提供访问控制,信息过滤等功能,帮助用户抵挡网络入侵和攻击,防止信息泄露。总的来所,核心层网络封包截获技术有着相当大的应用前景。它在技术上对很多网络安全技术提供支持;同时,也是许多商业网络安全产品中必要的知识。当我们掌握了这项技术了后,开发防火墙,嗅探器等安全软件就会变得容易。所以我们有必要学习和探究这项技术。1.2研究背景1.2.1国内现状在国内的产品中使用这项技术的有很多的例子,例如我们耳熟能详的“360安全卫士”、以及“瑞星”、“江民”等杀毒软件中提供的“实时监控系统”都无一例外的采用了这项技术。因为他们都需要实时的监控网络的情况,实时的对应用服务进行监控。对我来说,印象最深刻的是“3

14、60安全卫士”的实时保护功能。它提供了琳琅满目的各种防火墙,比如“漏洞防火墙”、“系统防火墙”、“木马防火墙”、“网页防火墙”、“U盘防火墙”以及“ARP防火墙”等。让我对奇虎公司的专注精神尤为佩服。若我们撇开以上各个防火墙的具体功能,把注意力放在实现方法上,发现其中哪一个也离不开“核心层网络封包截获技术”的支持。因为这些防火墙中大多数采用的监控方法是:当数据包从网络到达NIC后,继而截取分析包,最后判断这个应用是否是危险的;或者根据服务调用下层驱动时,通过在驱动上添加截获分析功能了解你的服务是否是合法的。图 1 360安全卫士实时监控图使用过“360安全卫士”的用户,对图1的提示框应该不会陌

15、生,它提示您现在Google的更新软件正在工作(装入服务),询问您允许它工作还是阻止它工作。这是比较典型的利用这项技术进行网络安全防范的例子。1.2.2国外现状国外产品中使用“核心层网络封包截获技术”的最好的例子是Network General 公司的Sniffer这款软件,中文名字是嗅探器。首先了解Sniffer的基本功能:1、网络安全的保障与维护 (1)对异常的网络攻击的实时发现与告警; (2)对高速网络的捕获与侦听; (3)全面分析与解码网络传输的内容;2、面向网络链路运行情况的监测 (1)各种网络链路的运行情况; (2)各种网络链路的流量及阻塞情况; (3)网上各种协议的使用情况; (

16、4)网络协议自动发现; (5)网络故障监测;3、面向网络上应用情况的监测 (1)任意网段应用流量、流向; (2)任意服务器应用流量、流向; (3)任意工作站应用流量、流向; (4)典型应用程序响应时间; (5)不同网络协议所占带宽比例; (6)不同应用流量、流向的分布情况及拓扑结构;Sniffer是嗅探器中的重要产品,除了这三种基本功能外,它还有很多独特而专业的功能,Sniffer是网络分析产品中的首选工具。除了Sniffer外,国外种类繁杂的包过滤防火墙产品也都相应的有核心层网络封包截获技术的支持,所以我们有必要了解和学习这一技术为以后的网络安全学习打下基础。总之,纵观国内外的产品,这项技术

17、不乏有相当成功的事例;可在国内,我们还没有这方面知识的完备描述和相关资料。这让一个初次接触网络编程的学生感到很困难,不仅是由于对网络编程体系知识的不了解,其次资料的匮乏也是一个重要的原因;另外,不容忽视的一点,这项技术涉及到Windows驱动程序的开发,这使包括我在内的很多初学者都很茫然,一度不知道何从下手,因为驱动程序开发需要大量经验的积累和调试,若出意外,小者系统死机,系统崩溃也是常发生的事情。所以本文尽自己最大的努力学习和研究了这项技术,希望提升自己,也希望有同样需求的人士可以参考与指正。1.3主要贡献 本文就核心层网络封包截获技术进行了探究。首先,本文对目前该技术的国内外现状进行了说明

18、,以明确进行研究的目的。随后,详尽地对核心层网络封包截获技术的实现原理作了讲述,在讲述原理时主要介绍了一下几个方面的内容:分层服务提供者(LSP)的相关概念、原理和用途;核心层网络驱动和NDIS网络驱动程序;核心层网络封包截获技术的实现。通过对原理的说明,使读者了解实现这项技术的具体方法。最后,为了实现这项技术并对前面提出的原理进行验证设计了相关的软件,本文对这个软件作了系统分析和系统设计,最终并实现了该软件。通过测试,证明了其具有在核心层截获封包,在应用层分析封包的功能。1.4文章的结构本文共为八个主要部分:第一部分是概述,这部分主要说明了核心层网络封包截获技术研究的必要性和重要性,主要从市

19、场和技术两个角度说明为什么进行这项研究。第二部分是研究前必要的预备知识和原理说明,在研究这项技术前我们必须有一些预备知识,才能更好的理解和讨论这项技术。第三部分是NetFilter系统分析,主要使用层次方框图等说明本系统包括的主要功能。第四部分是系统设计,说明了系统的工作流程和代码的主要组成部分。并通过系统关键类和主要数据结构来说明系统的详细设计。第五部分是系统实现,主要通过程序流程图对本系统的几个主要的功能模块的实现进行详细的说明。第六部分是系统测试与运行,说明该系统开发在这些方面所做的工作。第七部分是总结篇,对该系统进行了综述性的评述,并提出了系统可能存在的不足及解决方案。最后是本文所参考

20、的各种有价值的资料列表。2预备知识及原理说明在研究“核心层网络封包截获技术应用”时,有必要了解一些预备知识,用以更好的理解核心层封包截获的原理和实现过程。这些预备知识包括“分层服务提供者”,“核心层网络驱动”和“NDIS网络驱动程序”等。2.1分层服务提供者(LSP)2.1.1分层服务提供者(LSP)的概念LSP的全称是Layered Service Provider ,中文名为“分层服务提供程序”。 简而言之,LSP就是TCP/IP协议等的接口。LSP为应用程序提供建立连接,传输数据,流量控制,出错控制等相关的服务。LSP本身是DLL,使用之前将其安装在Winsock目录中。以便创建套接字的

21、应用程序不必知道此LSP的任何细节就能调用它。2.1.2分层服务提供者(LSP)的原理用户在创建套接字时,套接字创建函数(如socket)会在Winsock目录中寻找合适的协议,然后调用此协议的提供者导出函数完成各种用户需要的功能。如果将自己编写的LSP安装在Winsock目录中,让用户调用编者的服务提供者,再由编者的服务提供者调用下层提供者。这样一来,便可以截获所有的Winsock调用了。Ws2_32.dll基础服务提供者LSP1LSP2SPISPISPIAPI图 2 LSP原理图LSP导出一些与Winsock API相对应的函数,如WSPStartUp,WSPSentTo等。如图2所示。W

22、insock库加载服务提供者之后,便是依靠调用这些函数来实现相关的Winsock API(如WSASocket等)的。2.1.3分层服务提供者(LSP)的用途用户级封包截获LSP是实现用户级数据封包截获的有力工具,它可以用来编写监视系统网络通讯情况的Sniffer(嗅探器);在生活中,我们看见LSP最常用的用途是“浏览器劫持”。 在封包截获技术上,根据所有与网络交换的信息都必须通过LSP这个原理,从而使它可以监视使用者的信息。当然,除了LSP这种方法可以实现用户级封包截获技术外,还有Windows 2000/XP封包过滤接口也支持这项功能,然而由于Windows 2000/XP封包过滤接口的限

23、制太多,本文便采用了LSP的方法实现用户级封包截获。2.2核心层网络驱动和NDIS网络驱动程序2.2.1核心层(Kernel Mode)概述有许多功能在用户模式(User Mode)下是实现不了的,如原始MAC数据的发送和诊断,这个时候我们必须开发核心层的驱动,也称为内核模式下的驱动来解决问题。Ring0层Ring3层用户模式内核模式图 3 CPU特权层和操作系统用户模式、内核模式关系图CPU特权层和操作系统用户模式、内核模式的关系如图3所示,Ring0的特权最高,也就是说可以执行任意的代码,而Ring3特权最低,只能执行有限的代码。Windows将内核模式运行在CPU的Ring0层,而将用户

24、模式运行在CPU的Ring3层,所以核心层的组件可以进行所有权限的操作。当然由于本文探讨的“核心封包截获技术”是对核心级的操作,就必须要使用到核心层网络驱动;相应的开发核心驱动来配合实现目的功能。2.2.2核心层网络驱动Windows的产品使用了由ISO开发的基于7层网络模型的体系结构。ISO开放式系统互连(OSI)参考模型将网络描述为:“一系列的协议层,每层都有一组特定的功能,他们向上层提供特定服务的同时,隐藏了这些服务实现的细节。一个明确的相邻层之间的接口定义了下层向上层提供的服务,以及如何访问这些服务”。在核心层,网络驱动程序实现了OSI参考模型中的4层:物理层,链路层,网络层和传输层。

25、这样它可以完成相应层功能。2.2.3 NDIS网络驱动程序NDIS是Network Driver Interface Specification(网络驱动接口标准)的缩写,它为网络驱动抽象了网络硬件,指定了分层网络驱动间的标准接口,因此,它为上层驱动(如网络传输)抽象了管理硬件的下层驱动。NDIS也维护了网络驱动的状态信息和参数,这包括一些函数和指针等。NDIS支持3中类型的驱动,它们是微端口(Miniport)驱动,中间层(Intermediate)驱动和协议(Protocol)驱动。如图4所示:图 4 NDIS支持的三种驱动图 1、微端口(Miniport)驱动:是指常说的网卡驱动,它负责

26、管理网卡,包括通过网卡发送和接收数据,它也为上层驱动提供接口。微端口驱动一般由硬件提供商提供。2、中间层(Intermediate)驱动:中间层协议驱动(Intermediate)介于NDIS的协议层驱动(Protocol)和微端口驱动(Miniport)之间。是基于链路层和网络层之间的驱动。他导出一系列的虚拟适配器,对用户来说,跟真实的物理网卡一样,对于上层的协议驱动来说,当它向这个虚拟适配器发送封包或者请求时,中间层驱动将这些封包和请求传播到下层微端口驱动。当下层微端口驱动向上指示接受封包或者状态时,中间层驱动向上将这些封包、状态传播到绑定在虚拟适配器上的协议驱动。这样利用它来实现对核心层

27、的封包截获,并且他能实现对所有封包的截获。3、协议(Protocol)驱动:即网络协议,它位于NDIS体系的最高层,经常用作实现传输协议堆栈的传输驱动中的最底层驱动。总之,对NDIS有了必要的认识后,我们可以发现利用NDIS的中间层驱动来实现核心级上的封包过滤是很好的办法,它能够截获所有的网络数据包(如果是以太网那就是以太帧)。2.3核心层网络封包截获技术核心层网络封包截获技术主要应用于过滤,转换协议,截取报文分析等。在讨论这项技术前,有必要详尽的了解Windows网络系统体系结构;而后再研究用户模式下的网络数据过滤和内核模式下的网络数据过滤。2.3.1Windows网络系统体系结构1.图5是

28、用户模式下的网络系统体系结构Windows Socket1.1APIWindows Socket2.0APIWindows Socket1.1API图 5 用户模式下的网络系统体系结构图通过观察上图不难发现,用户模式下的网络系统由一些列的DLL相互支持完成,上层应用程序调用下层的服务DLL,继而再继续调用更下层的服务DLL。最终形成一个完整的网络体系结构。2.内核模式下的网络系统体系结构图内核模式下的网络系统是由一系列的服务驱动构成,比如由NDIS(网络驱动接口标准)构成的网络系统。Miniport驱动导出虚拟网卡连接到实际的网卡,Intermediate驱动在下层调用Miniport驱动的服

29、务,并为上层协议驱动导出服务。NDIS为TCP/IP提供了驱动服务,是网络系统体系结构中非常重要的部分。弄懂了内核模式下的网络系统体系结构,我们发现在系统中为TCP/IP协议提供驱动的服务,简称为TCP/IP Driver,这个驱动服务在整个网络系统体系结构中有着非常重要的作用,通过他不仅仅可以实现Packet Filter技术,同样的IP路由也由它提供着支持,另外的一个重要应用就是Firewall HOOK。具体结构如图6所示:图 6 内核模式下的网络系统体系结构图2.3.2用户模式下的网络数据过滤首先认识一下网络通信程序,最常见的网络通信程序是QQ。如图7所示:A输入信息,发送QQ将数据传

30、送给服务程序(核心层的驱动程序)QQ接受驱动程序送来的数据B显示应用层核心层驱动程序按照协议要求将数据打包发送到网卡网卡通过网络连线将数据包发出驱动程序按照协议要求将数据翻译成QQ识别的数据网卡接受QQA发出的数据包图 7 通信程序QQ的网络传输数据原理图从此例子可以看出,所有的网络通信程序在通信前都需要调用下层的驱动或者服务,如果将自己编写的LSP放在Winsock目录下,让用户不知不觉的调用LSP导出的一些列服务(函数),再由LSP调用下层的服务,于是我们便可以在LSP上跟踪用户的网络服务请求,从而实现用户模式下的网络数据过滤。在这里使用的关键技术就是前面谈到的分层服务提供者LSP。2.3

31、.3内核模式下的网络数据过滤首先引入以图8示例:驱动程序下层NIC-下层NIC-下层NIC用户模式内核模式DLL(winsock)DLL(winsock)访问网络的应用程序1访问网络的应用程序2图 8 一般网络通信程序传输数据原理图通过上图以及前面对于核心层网络驱动的介绍,我们可以看出,需要在内核模式下实现封包截获就需要编写内核模式下的驱动服务。这样,需要进行任何网络活动的应用程序都需要加载这项服务,在这个驱动程序上就可实现核心层的封包截获任务。前面讨论了NDIS,本篇使用NDIS的中间层驱动服务,根据它导出的一些列虚拟网卡我们可以较容易的实现对经过真实NIC(网卡)的所有网络数据进行截获。2

32、.3.4应用层封包截获与核心层封包截获7应用层6表示层5会话层4传输层3网络层2数据链路层1物理层7应用程序6Winsock API5 SPI4 TDI3 NDIS2网络驱动1 网卡应用层核心层网络协议模型Windows结构图 9 核心层与应用层网络封包截获实现原理图如图9所示,最终为了实现应用层和核心层的双重封包截获,我们可以采用这样的方法。在应用层实现封包截获,本文使用了SPI中的LSP技术,在核心层实现封包截获本文使用了NDIS中的中间层驱动。这样便可以构造一个比较合理的封包截获系统。3 NetFilter系统分析3.1需求分析在本文中,利用核心层网络封包截获技术设计了NetFilter

33、软件。NetFilter网络访问监视应用层过滤规则核心层过滤规则系统设置添加应用层规则编辑应用层规则删除应用层规则添加核心层规则编辑核心层规则删除核心层规则核心层规则设置公共设置应用层规则设置图 10 NetFilter层次结构图如图10所以,NetFilter具有在核心层截获封包,在应用层归结到具体应用分析封包的功能;并对所有进出系统的数据包进行检查,以阻止那些不符合既定规则的数据包的传输。NetFilter能够基于数据包使用的协议(如TCP),数据包的源地址,数据包的目的地址,端口号,数据包的传输方向等对封包进行过滤。3.2功能说明3.2.1网络访问监视NetFilter对向网络上传或从网

34、络下载的数据流进行有选择的控制。这种控制动作发生在从Internet向Intranet传输数据时,或从Intranet向Internet传输数据时。网络访问监视页面记录所有的网络动作,将其显示在该页面中,以供用户查看和分析。3.2.2应用层过滤规则设置应用层过滤规则。主要参数包括:应用程序名,进出方向,对其实施的动作(如放行),服务类型,服务端口等。设置了这些规则后,符合规则的数据包才会被系统接收。3.2.3核心层过滤规则设置核心层过滤规则。主要参数包括:协议类型,对其实施的动作(如放行),源端和目的端的IP地址值,IP掩码,端口号码等。设置了核心层规则后,符合规定的数据包才会被下层的驱动服务

35、接收。3.2.4系统设置下层服务驱动的安装与卸载,用户层和核心层工作模式的默认设置。4 NetFilter系统设计4.1系统总体设计4.1.1系统的工作流程如图11所示,当需要进行网络访问的应用程序提交了自己的服务请求,这个请求(如winsock)首先被LSP(分层服务提供者)截获,LSP根据应用层的工作模式,控管规则,对程序进行控管。而后LSP继续调用下层的服务最终接受核心层网络驱动程序的服务(NDIS的中间层驱动),在这里根据核心层的工作模式,控管规则,对封包进行控管。这样最终实现了用户层和核心层的双重过滤功能。用户界面(NetFilter)NetFilter.exe需要网络服务的应用程序

36、 LSP根据工作模式,控管规则,参数设置,对用程序联网动作控管系统Winsock 2 SPI工作模式,控管规则核心层过滤网络驱动服务(NDIS的中间层驱动)图 11 NetFilter工作流程图LSP提供应用层的过滤规则,NDIS提供核心层的过滤规则。4.1.2系统的功能模块如图12所示,NetFilter整个程序代码主要分为三部分:主程序,应用程序过滤模块,核心层过滤模块。NetFilter访问网络的应用程序3DLL(winsock)DLL(LSP)SYS模块(驱动程序)下层NIC-下层NIC-下层NIC用户模式内核模式DLL(winsock)DLL(winsock)访问网络的应用程序1访问

37、网络的应用程序2IOCTL发送消息设置共享数据图 12 NetFilter功能模块图主程序(EXE)主要就是用户所看到的程序界面,是用户和NetFilter进行对话的对象。它负责管理过滤规则,安装与卸载应用层过滤模块(DLL模块),与应用层过滤模块和核心层过滤模块(SYS模块)进行通信等。应用层过滤模块是一个分层服务提供者,它主要用来截获应用程序的Winsock调用,根据用户设置的应用程序权限规则限制各个应用程序对网络访问,实时向主模块报告用户层网络活动状态。核心层过滤模块是一个NDIS中间层驱动程序,它的作用是根据核心层过滤规则管理输入输出封包,记录网络活动状态。4.2系统详细设计在设计Ne

38、tFilter时,程序代码主要分为三部分:主程序,应用程序过滤模块,核心层过滤模块。为了使设计方便和合理,在程序中创建了许多结构体和宏定义。同时在主程序中设计了许多类。4.2.1系统关键类图 13 NetFilter系统关键类名图1、 CPIControl类:管理LSP共享内存。为了方便与LSP模块进行通信,主模块封装了CPIControl类来访问LSP模块中的共享数据,这个类主要是是通过调用LSP的导出函数来实现的。2、 CPRuleFile类:管理规则文件。它负责将规则从文件读出,保存到CPRuleFile对象中,或者将CPRuleFile对象中的数据保存到文件中。3、 CnetFilte

39、rUApp类:主应用程序类。4.2.2系统重要数据结构如图14所示,是NetFilter中所涉及到的重要的结构体及其中的数据成员。1、RULE_ITEM结构体:用户层访问规则是针对应用程序而言的,比如允许那些应用程序访问网络,禁止哪些应用程序访问网络、允许应用程序使用哪些网络服务器等。所以定义了RULE_ITEM结构体描述单个用户层规则。2、SESSION结构体:用户层访问规则记录在共享内存中,每当应用程序访问网络时,LSP模块就将应用程序会话属性与访问规则进行比较。因此需要定义SESSION结构来描述发生在各个套接字上的网络事件的属性,如使用的协议,IP地址,应用程序等。应用程序每创建一个套

40、接字,LSP模块就创建一个SESSION结构,跟踪用户在此套接字上的活动,并将这些网络事件发送给主模块。SESSION在传输网络数据之前,LSP模块在应用层过滤规则中查找相关应用程序表项,如果找不到,就询问主模块,要求添加规则。3、RULE_FILE_HEADER结构体和RULE_FILE结构体:每个应用程序都需要将用户配置信息和必要的数据保存到磁盘上。NetFilter要保存的主要是用户设置的用户层访问规则和核心层访问规则。图 14 NetFilter系统重要数据结构名图4.2.3系统重要模块详细设计1、LSP模块设计:它一个分层服务提供者,本身是一个DLL,它截获WS2_32.DLL对WS

41、PSocket、WSPCloseSocket、WSPBind、WSPAccept、WSPcConnect、WSPSendTo、WSPRecvFrom的调用,如图15所以结构。LSP导出了PLSPIoControl函数。该函数主要是完成与主模块的通信。为了实现LSP,为其建立了动态链接库,在该库里面声明了类CAcl类。图 15 NetFilter中LSP模块中CAcl图2、共享数据与I/O控制:主模块主要是通过共享内存来与DLL模块进行交互的。LSP共享数据分为两类:一类是加载进程加载DLL时候初始化了的,这些数据定义在LSP的“initdata”段;一类是未经初始化的数据,它们定义在LSP的“

42、uninitdata”段。在“initdata”段中,声明了主窗口句柄,和应用层工作模式。在“uninitdata”段中,声明了应用层规则向量(记录所有应用程序的规则),以及用于与主程序通信用的SESSION类型的g_SessionBuffer和g_QuerySession向量。为了让主模块访问DLL的共享数据,LSP向外导出了PLSPIoControl函数,这个函数用来设置共享内存中的数据。g_SessionBuffer数组作用是在DLL和主模块间传递会话信息。当有新的会话创建,会话属性改变或者会话销毁时,DLL模块要将这个会话通过Windows消息的形式发送给主模块。在做这件事时,它首先在

43、g_SessionBuffer数组中找到一个没有被使用的成员,然后将发生事件的会话复制到找到的成员中,最后发送给主模块的是这个成员的索引。主模块接收到索引之后,调用PLSPIoControl函数取得整个SESSION结构。g_QuerySession数组的作用于g_SessionBuffer相似,它在DLL和主模块间传递发出询问的应用程序信息。一个应用程序访问网络时,如果LSP发现过滤规则中没有该应用程序规则项,就询问主模块,使用g_QuerySession数组中的一个成员来传递应用程序消息。3、核心层SYS模块设计:SYS模块是一个NDIS中间层驱动程序。在SYS模块中实现了重要的功能。包括

44、了基本的DeviceIoControl接口为Win32应用程序与SYS模块通信提供基本的机制;枚举绑定功能允许Win32应用程序查询SYS驱动绑定的适配器;ADAPT结构添加引用计数向驱动中ADAPT结构添加引用计数;适配器句柄打开/关闭功能提供一种机制,让用户程序可以创建被关联到指定适配器的用户模式句柄。这个句柄可以用来在特定适配器上做NDIS请求,做读和写I/O以及其他操作;句柄事件通知这里要处理这种情况,就是驱动程序可能会使已经成功打开的Win32句柄无效;在一个打开的适配器句柄上获取和设置OID数据添加一种机制,使得用户可以获取和设置特定适配器的OID数据。5. NetFilter系统

45、实现由于在本系统设计时,设计涉及Windows驱动程序的开发,这也是本篇开发的重点与难点。由于驱动程序的开发涉及操作系统底层的很多知识,而且很多概念非常的抽象,不容易理解。所以采用需要采用较好的开发环境协助我们的设计开发式非常重要的。5.1开发平台选择合适的开发工具与语言可以有效的提高开发效率。5.1.1 Windows Server 2003 DDK在设计SYS模块时,涉及Windows驱动程序的开发,往往开发驱动程序需要对Windows内核要有深入的了解和大量的内核调试技巧,稍有不慎,就会造成系统的崩溃。所以一个好的平台开发工具是必备的。再开发驱动之前,首先安装微软公司提供的Windows

46、驱动程序开发包DDK(Driver Development Kit)。微软提供了Windows 2000 DDK,Windows XP DDK 和Windows Server 2003。为了使用DDK的最新功能建议安装Windows Server 2003 DDK。5.1.2 DbgView同时,在编写驱动程序时,比较头痛的一个问题就是调试。因为驱动程序运行在内核模式下,很难像一般Win32程序一样进行调试。一般说来驱动程序的调试有两个途径。其一是在关键的地方打印出调试信息,也就是俗称的打log。其二就是调用内核调试工具,诸如Softice或者WinDbg等工具进行内核调试。本篇推荐DbgVi

47、ew。因为这是一个免费软件,DbgView可以同时监听内核和Win32上层应用程序发送的调试信息。如果接收的调试的信息太多时,用户还可以根据自己需要过滤无用的调试信息。5.1.3 Micosoft Visual C+ 6.0LSP模块本身是DLL;主程序模块是Win32程序。他们是在Micosoft Visual C+ 6.0下开发的,所以还需要Micosoft Visual C+ 6.0开发工具的支持。5.1.4 Micosoft Visual Visio 2003它辅助设计本文的相关图。5.2模块实现5.2.1 SYS模块以服务形式被安装后,SYS模块接受系统的服务请求,为系统服务。工作流

48、程如图16所示。NetFilter加载服务OpenSCManager返回值CreateService非NULL返回值非NULLStartService结束GetLastError返回值StartServiceERROR_IO_PENDING其他NULL图 16 NetFilter中SYS模块程序流程图5.2.2添加应用层规则设置应用层过滤规则。用户选择需要添加的应用程序,按照主要参数:协议类型,对其实施的动作(如放行),源端和目的端的IP地址值,IP掩码,端口号码等设置了应用层规则后,告诉主模块,然后将规则显示在页面中。其具体过程见图17。开始选择程序设置进出方向设置过滤动作高级设置设置服务类

49、型设置服务端口成功不成功是备注将规则写入规则文件显示在页面中结束否图 17 NetFilter中添加应用层规则程序流程图6 NetFilter系统测试与运行6.1 测试 对NetFilter采用模块化测试,按照功能模块分别进行测试。该系统的主要进行了以下几个方面的测试:单元测试、功能测试、性能测试等。6.1.1单元测试为了确保在开发中实现了所有的需求,同时也为了使项目代码满足各种编码规范,在正式测试之前对代码进行了人工排查,对系统进行了静态单元测试代码审查。程序中有齐全的各种注释:各种方法都有功能描述,方法中的功能模块具有功能的相关描述;参数和返回值也有相关的文字描述;除局部变量外都进行了变量

50、的含义注释。方法,变量等都使用了统一的命名规范。本系统的开发完全遵照C#的编码规范,如代码按行进行书写,一行只有一个语句等等,变量使用camelCase(驼峰) 命名规范进行命名。命名空间也使用了规范的命名规则和组织规则。如上这些规范都可以提高代码的可读性和系统的可维护性。通过代码审查可以发现一些显而易见的逻辑错误和功能缺失,这些先期的处理可以为后面的测试节省时间和测试代价。6.1.2 功能测试功能测试主要是对需求中的各功能要求进行测试性运行,保证系统的正确运行。在测试中,首先进行了用户界面和适用性的测试。使产品更具人性化,人们在使用时更加灵活、舒适,提高软件使用者客户的体验。使用基于功能需求

51、的回归测试对项目进行各个功能的验证。在测试中发现功能缺陷或其他的不足,返回到代码中修改这些不足,然后继续进行测试。直到满足所有功能需求为止。6.1.3 系统综合测试在进行了如上的各种测试后,为了确保系统的正确整合,对系统进行了综合测试。采用阿尔法测试对系统进行了综合测试。系统测试将系统的所有组成部分综合在一起进行测试,在系统的实际运行环境下进行测试,在用户的直接参与下进行。包括功能集成测试,可靠性与适应性测试,安全性测试,强度测试等等。该步骤是先前各阶段的综合,也是系统的最后开发阶段。6.2 系统运行经配置好服务,测试以后,系统就可以正常运行了。图18、图19、图20是运行的结果示意:图 18

52、 NetFilter系统运行网络监视页面图图18示意NetFilter网络状态监视页面的工作情况,图中显示了QQ程序,浏览器程序和迅雷程序正在工作。并指示它所使用的协议类型,和目前的通信情况。图 19 NetFilter系统添加应用层规则面图图19示意NetFilter的添加应用层规则页面。用户可以设置应用层的相关过滤规则,设置好后按照既定规则进行过滤。图 20 NetFilter系统运行系统设置面图图20示意NetFilter的系统设置页面。用户能进行公共设置,用户模式设置,核心层工作模式设置。7 结束语本文对核心层网络封包截获技术进行了探究,对其实现原理进行了详尽的说明。为了实现和验证这项

53、技术,并设计了相关软件NetFiler。总的来说NetFilter实现了用户级和内核级数据报截获。用户可以按照自己的需要设置相应的应用层过滤规则和内核过滤规则,最终建立一个完备的规则表来实现在内核级和用户级上的双重数据包过滤。同时注意在使用本系统时与设置包过滤防火墙一样需要注意规则的配置,一个好的配置才能达到预期的目标。然而,由于本技术的实现难度较大及时间的限制,还有我自身的能力有限,NetFilter在功能上还缺乏完备性。在后续的改进中还可以实现截取报文分析和可以随时更新的规则库文件。以便完善本软件。8 致谢在项目完成之际,衷心感谢我的指导老师XXX,他过硬的专业知识,朴实的待人之道,热情的

54、工作态度,都是我学习的榜样。在项目实施期间他给予了我悉心的指导和精心的培养,让我在各个方面都有很大的提高。在此我向他表示深深的谢意。在此也感谢在大学四年中教导过我的老师们,他们造就了我正确的人生观和丰富的知识储备,使我能更加从容地面对将来的学习和工作。感谢四川师范大学,是她让我拥有了健全的心智,是她塑造了我完美的人格。参考文献1 张帆,驱动开发技术详解.北京:电子工业出版社,2008.2 朱雁辉,Windows防火墙与网络封包截获技术.北京:电子工业出版社,2002.3 张惠娟,Windows环境下的设备驱动程序设计.西安:西安电子科技大学出版社.4 武安平,于洪涛,Windows 2000/

55、XP WDM 设备驱动程序开发.北京:电子工业出版社,2006.5 斯诺等译.Windows2000设备驱动程序设计指南.北京:机械工业出版社,2006.6 王艳平,Windows网络与通信程序设计.北京:人民邮电出版社,2006.7 李玉林,王岩.网络编程从入门到精通.北京:清华大学出版社,2006.8 张海藩.软件工程导论.北京:清华大学出版社,2003.9 Cant.C,Writing Windows WDM Device Drives,199910 Baker.A,Lozano.J,The Windows 2000 Device Driver BOOK:Second Edithion,200111 Christopher Fox.软件工程设计导论.北京:清华大学出版社,2007.12 J Postel,J Reynolds.RFC959. Network Working Group,1985.

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!