基于ndishou技术的网络驱动程序的研究.docxVIP

基于ndishou技术的网络驱动程序的研究.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于ndishou技术的网络驱动程序的研究 0 实现个人安装主机的方法 随着信息技术的快速发展,信息安全越来越受到重视。一些大中型企业通过购买防火墙、入侵检测系统等安全设备希望保障企业的信息安全。防火墙和入侵检测系统处于网络的边界,虽可以有效保护内部网络免受Internet的攻击,却不能对来自网络内部的攻击进行防御。因此,个人主机防火墙成为企业信息安全不可缺少的重要组成部分。实现个人防火墙的方法可分为应用态和核心态两类,分别以LSP(Layered Service Provider )和TDI(Transport Driver Interface)过滤驱动程序为代表。但这两种方法都有其自身的缺点,如LSP对于那些通过TDI直接发送数据的木马和病毒无能为力,而TDI无法拦截ICMP数据包。有的软件防火墙是利用hook系统核心函数的方法来实现的,这种修改PE文件导出表实现hook的方法必须重新启动系统才能生效,不利于开发调试,也给病毒和木马的入侵留下了隐患。本文提出的防火墙驱动程序设计方法克服了前面的这些缺点,并针对驱动程序与应用程序的通信方法进行了改进。 1 网络系统的结构和驱动程序的总结 1.1 osi网络模型 微软Windows网络体系结构是基于ISO(International Standards Organization)开发的七层网络模型。OSI(Open Systems Interconnection)参考模型把网络描述成一系列完成特定功能的协议层。每一层向上层提供约定的服务,而隐藏服务的具体实现。在相邻的协议层之间接口定义了底层提供的服务及高层如何访问该服务。 我们提出的防火墙驱动程序位于NDIS wrapper,对应于OSI的网络层,这是过滤网络数据包理想的层次位置。 1.2 安装ndis后的驱动 驱动程序是操作系统的一个信任部分,运行在系统的内核模式。Windows网络驱动程序遵循ISO的OSI标准,从上到下依次是协议驱动(TCP协议)、NDIS中间层驱动、微端口驱动,各层之间的接口由网络驱动程序接口规范(Network Driver Interface Specification, NDIS)定义。协议驱动属于OSI的传输层,是NDIS层和更高层软件抽象层(例如套接字和NetBIOS)之间的接口。 防火墙驱动程序一般属于协议驱动或NDIS驱动程序。如图1所示,NDIS wrapper包括网络层及网络层与上下层的接口。把驱动程序挂接到NDIS wrapper,就可以得到系统所有的发送和接收的数据包。文中提出的防火墙驱动程序就是采用NDIS钩子的方式嵌入NDIS而实现数据包过滤的。 驱动程序使用一个入口点模型。在这个模型中,每个入口点对应一个特定的函数。在每个入口点,I/O管理器传递相应的参数给函数,使得它可以完成所要求的功能,这个特定的函数被称为回调例程。驱动程序使用的基本入口点如下: DriverEntry 这是驱动程序必需的入口点,当驱动程序被加载时,由内核调用DriverEntry例程。因此,适合在这里对设备进行初始化。 Dispatch例程 该入口点提供给驱动程序所支持的每个主要I/O函数。当I/O管理器有要处理的请求时,它就在与请求的主要I/O函数代码相关的分派入口点调用驱动程序。 Unload例程 在支持动态卸载的驱动程序中,当要求动态卸载时,I/O管理器就会调用这个例程做设备和资源的清除工作。 2 基于ndishok的自定义驱动程序 2.1 基于hool系统核心函数的软件外墙实现 NDIS hook就是用自定义的回调例程替换NDIS wrapper的相应函数,使得系统调用被截获的一种系统监视机制。在个人防火墙领域,有一种利用hook系统核心函数来实现软件防火墙的方法。这种技术的基本原理如下:操作系统在加载NDIS驱动程序时,将NDIS协议特征结构表中的API函数映射到内存中。通过在内存中定位这些API地址,按照PE格式将导出表中的函数地址替换成自定义的函数地址,在操作系统调用系统自身API函数前,先进行自定义函数的处理,实现对数据包的过滤.使用这种技术实现的驱动程序要求重新启动操作系统后才能生效,给开发调试带来了不便,同时给病毒和木马的入侵留下了隐患。 2.2 协议与装配一式链表 针对已有的API hook技术的缺点,我们提出了一种注册假协议(fake protocol)的方法,它没有重启限制,不仅加快了开发调试,还可以方便防火墙的使用。 在Windows NT系统内核中,所有已注册的网络协议是通过一个单向链表来维护的。链表的节点为NDIS_PROTOCOL_BLOCK结构,在这个结构中保存了注册网络协议时所指定的各种信息,如支持协议即插即用的回调函数地址等。并且,每个协议驱动都对应一个NDIS

文档评论(0)

xcwwwwws + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档