




已阅读5页,还剩64页未读, 继续免费阅读
(计算机应用技术专业论文)基于tdihook和ndishook的主机防火墙研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 摘要 随着信息技术的发展,越来越多的人们加入到了互联网这个虚拟世界中来, 然而网络给人们带来了最新、最快资讯的同时,也给广大网民带来了层出不穷的 安全威胁。在网络应用终端,个人防火墙一直是国内外从事安全研究人员们关注 的焦点,因为它能有效的监控主机上进程的网络行为,保护主机网络安全。 本文对w i n d o w s 平台下的网络驱动h o o k 技术进行了讨论,并且详细描述了基 于t d ih o o k 和n d i sh o o k 技术的个人防火墙的设计,实现了一个原型系统。 首先,介绍了个人防火墙出现的背景,国内外个人防火墙的研究现状;深入 分析了w i n d o w s 平台下驱动h o o k 技术,介绍了w i n d o w s 操作系统的网络体系架构。 其次,分析了w d m 驱动程序架构及基本例程,详细描述了驱动对象、设备对 象、文件对象和i r p 结构,讨论了i o 堆栈与分层驱动的关系。 最后,详细讨论了系统的设计及各个模块的实现,并对整个系统进行了功能 测试和性能分析,接着,给出了整个论文的总结。 在本课题中,作者参与了课题的理论研究与分析工作,并独立负责系统架构 的设计和功能的实现。在系统的开发过程中采用了模块化、结构化的软件设计思 想,提高了系统的可移植性。在实现技术上,采用了t d i 层和n d i s 层双层监控相 结合的技术,实现对数据包的过滤和进程访问网络行为的监控,提高了准确性、 安全性。在规则库构建上,提出了通过验证代码数字签名来构建白名单,自动更 新规则库,引入学习模式来降低个人防火墙的误报率。整个系统由三个部分组成, 分别是:用户交互界面e x e 、用户态接口d l l 和内核态实现过滤与规则管理的s y s 。 关键词:网络安全,个人防火墙,n d i s ,t d i ,数据包拦截 a b s t r a c t a b s t r a c t w i t ht h ed e v e l o p m e n to fi n f o r m a t i o nt e c h n o l o g y , m o r ea n dm o r ep e o p l ej o i nt h e v i r t u a lw o d dt h ei n t e m e t a l t h o u g ht h en e t w o r kb r i n g st h en e w e s ta n df a s t e s t i n f o r m a t i o nw i d lp e o p l e ,i tb r i n g sm a n ys e c u r i t yt h r e a dp r o b l e m sw i t hp e o p l e i n n e t w o r ka p p l i c a t i o ne n d ,p e r s o n a lf i r e w a ui sa l w a y sf o c u s e db yd o m e s t i ca n df o r e i g n s e c u r i t y r e s e a r c h e r s b e c a u s ei tc a nm o n i t o r p r o c e s s n e t w o r ka c t i o ni nh o s t e f f e c t l y m e a n t i m e ,i tc a l lp r o t e c th o s tn e t w o r ks e c u r i t y t h ep a p e rd i s c u s s e st h et e c h n o l o g yo fn e t w o r kd r i v e rh o o ko nw i n d o w s p l a t f o r m ,a n dd e s c r i b e st h ed e s i g no fp e r s o n a lf i r e w a l lt h a ti sb a s e do nt h et e c h n o l o g yo f t d ih o o ka n dn d i sh o o k , a n dt h ei m p l e m e n t a t i o no fp e r s o n a lf i r e w a l lo n w i n d o w sp l a t f o r mi sa l s op r e s e n t e d f i r s t l y , t h ep a p e rp r e s e n t st h eb a c k g r o u n do fi n t r o d u c i n go f t h ep e r s o n a lf i r e w a l l , t h ed e v d o p m e n to fd o m e s t i ca n df o r e i g np e r s o n a lf i r e w a l l ,a n a l y s e st h r o u g h l yt h e t e c h n o l o g yo fn e t w o r kd r i v e rh o o ko nw i n d o w sp l a t f o r mi n c l u d et h e i rm e r i t sa n d d e m e r i t s ,a n di n t r o d u c e st h en e t w o r kf r a m eo fw i n d o w so p e r a t es y s t e m t h e n , t h ep a p e ra n a l y s e st h eb a s i cs t r u c t u r ea n df a c t i o n so fw d md r i v e r , d e c r i b e s d r i v e ro b j e 魄d e v i c eo b j e c t , f i l eo b j e c ta n di r ps t r u c t u r e , d i s c u s s e st h er e l a t i o nb e t w e e n i 0s t a c ka n dl a y e r e dd r i v e r f i n a l l y , t h ep a p e re x p l a i n st h ed e s i g no ft h es y s t e ma n d t h ei m p l e m e n to fa l lt h e m o d u l e si nd e t a i l ,i m p l e m e n t sf u n c t i o nt e s t i n ga n dp e r f o r m a n c ea n a l y s i n gt ot h e w h o l es y s t e m ,a n ds u m m a r i z e st h ee n t i r ep a p e r i nt h es u b j e c t ,t h ea u t h o rt a k e sp m ti nt h et h e o r yr e a s e r c ha n da n a l y s i s ,a l s ob e r e s p o n s i b l ef o rt h ed e s i g no fs y s t e mf r a m ea n dt h er e a l i z a t i o no fs y s t e mf u n c t i o n d u r i n gt h ed e v e l o p m e n to fs y s t e m ,w ea d o p tt h ed e s i g ni d e ao fm o d u l a r i z a t i o na n d s t r u c t u r a l ,w h i c hi m p r o v e st h es y s t e mp o r t a b l e i na s p e c to fr e a l i z a t i o nt e c h n o l o g y , w e a d o p tt h et e c h n o l o g yo fd o u b l el a y e r e sm o n i t o rb e t w e e nt d il a y e ra n dn d i sl a y e r , r e a l i z ed a t ap a c k a g ef i l t e ra n dm o n i t o rt h ea c t i o no fp r o c e s s e sa c c e s s i n gn e t w o r k ,w h i c h i m p r o v e sv e r a c i t ya n ds e c u r i t y w ep r o p o s e dt h ec o n c e p to fd i g i t a ls i n g n a t u r ea b o u tr u l e m a n a g e m e n ta n di n t r o d u c e ds t u d ym o d et or e d u c ef a u l tf o rp e r s o n a lf i r e w a l l t h e i l a b s t r a c t o v e r a l ls y s t e mm a k e su po ft h r e em o d u l e s ,e x ef o ru s e ri n t e r a c t i v ei n t e r f a c e 、d l lf o r u s e rm o d ei n t e r f a c ea n ds y sf o rk e r n e lm o d e f i l t e r i n ga n dr u l em a n a g e m e n t k e yw o r d s :n e t w o r ks e c u r i t y , p e r s o n a lf i r e w a u ,n d i s ,t d i ,d a t ap a c k a g ei n t e r c e p t i o n i i i 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究 工作及取得的研究成果。据我所知,除了文中特别加以标注和致谢 的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也 不包含为获得电子科技大学或其它教育机构的学位或证书而使用 过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论 文中作了明确的说明并表示谢意。 一年芗其刁e l 关于论文使用授权的说明 本学位论文作者完全了解电子科技大学有关保留、使用学位论 文的规定,有权保留并向国家有关部门或机构送交论文的复印件和 磁盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位 论文的全部或部分内容编入有关数据库进行检索,可以采用影印、 缩印或扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签名:住瞧导师签名:互逃 日期:矽绋厂月功e l 第一章绪论 1 1 课题背景和意义 第一章绪论 互联网日新月异的发展,给人们生活和工作带来更多便利的同时,也起着推 动社会进步、促进经济发展的功能,人们的生活、工作和学习已经离不开互联网。 与此同时,大量新的网络服务,比如电子政务、远程教育、远程医疗、电子商务、 移动信息、在线数字内容等的涌现,却使得那些网民直接曝露在互联网上。据金 山公司 2 0 0 8 年中国电脑病毒疫情及互联网安全报告【1 1 ,中国的计算机病毒总 量仍继续快速攀升达1 3 8 9 9 7 1 7 个,与2 0 0 7 年相比增长4 8 倍,且出现新增计算机 病毒数量呈几何级增长,大量黑客攻击事件层出不穷。 从上面金山公司的安全报告可知,大量网民在充满病毒的虚拟世界里学习和 工作,很明显网络安全问题已经是目前刻不容缓需要解决的问题。网络安全隐患 主要表现在三个方面:病毒、内部用户的非法操作和外部黑客的攻击。病毒的功 能发生了巨大的变化,从早期的搞破坏显示个人计算机能力转变为窃取个人用户 的网络信息,比如现在比较泛滥的盗号木马,r o o t k i t 等。病毒的变异速度也比以 前快,致使杀毒软件存在严重的滞后性。内部用户的非法操作常给系统留下安全 隐患和漏洞,致使黑客能轻易的入侵系统,杀毒软件在面对这类威胁时常无法识 别。针对上述安全的现状,个人主机防火墙却不断的体现出优势。因为防火墙【2 】 是一种将内部网和公众访问网( i n t e r n e t ) 分开的方法,实际上是一种隔离技术。 它能增强机构内部网络的安全性。用户可以配置防火墙的访问控制策略,给不同 的用户分配不同的权限,能很好的防止内部用户非法操作,同时,防火墙系统处 在内部网络和外部网络之间,能很好的隔离外部用户对系统的直接访问,只开放 受监控的服务面向外部用户。 虽然目前安全事件频频发生,安全防御产品比如杀毒软件或个人主机防火墙 繁多,但是,这些产品都是受知识产权保护的软件,一般用户根本看不到源代码, 因为安全产品涉及商业利益和知识产权等问题,所以大多是以原理的形式出现, 具体详尽的实现方法或源代码少之又少。而个人防火墙是目前在占绝大数用户的 w i n d o w s 系统上最常用的安全防御产品,它可以监控进出主机的数据包信息,防御 外来的黑客攻击,保护网络安全,使用户的隐私不被窃取。因此研究w i n d o w s 平 电子科技大学硕士学位论文 台下的个人防火墙技术【3 1 具有定的实际意义,也成为公司和高校研究的热门对 象。 1 2 主机防火墙的发展历史和研究现状 从服务对象上看,防火墙主要分为两类:企业级防火墙和个人主机防火墙。 从1 9 8 6 年世界上诞生第一个企业级防火墙系统之后,防火墙技术不断的更新换代, 主要经历过五次演变。 第一代防火墙技术采用了包过滤( p a c k e tf i l t e r ) 技术【4 】。防火墙捕获进出系 统的网络数据包,解析出数据包源地址、目的地址、源端口号和目的端口号等参 数,然后,根据用户制定的规则采取过滤或放行该数据包的动作。这种技术效率 低,且易受i p 欺骗。 第二代的电路层防火墙,物理上从路由器上脱离下来,形成独立的可管理和 配置的产品,提高了效率和可管理性。 第三代的应用层防火墙( 代理防火墙) 。其物理上处于网关位置,逻辑上提供 对特定的处于o s i 参考模型应用层的程序比如f t p 等的安全认证机制。其特点是 功能明确,但性能低。 第四代的状态监控防火墙。对每个网络连接的状态进行动态跟踪。其特点是 效率高,性能高。 第五代的自适应代理技术是一种最新的防火墙技术,在一定程度上反映了防 火墙目前发展的动态。该技术可以根据用户自定义的安全策略,动态去适应传送 中的分组流量。 个人防火墙是在企业防火墙的基础上发展出来的,是在网络应用终端化的趋 势下产生的安全产品。其采用的防火墙技术延续了企业防火墙采用的技术,并且 进行了适当的裁减和改良,以适应主机环境。目前,国内外对于w i n d o w s 系统下 的个人主机防火墙的成熟产品较多,国外的有:z o n e a l a r m ,t i n yp e r s o n a l f i r e w a l l ,n o r t o np e r s o n a lf i r e w a l l ;国内的有:天网防火墙、瑞星个人防火墙、 费尔个人防火墙、金山毒霸个人防火墙等产品。 基于w i n d o w s 操作系统的个人防火墙的主要区别在于w i n d o w s 下网络数据包 的拦截技术的不同。按所采用的拦截技术,个人防火墙可分为:基于s p i ( s e r v i c e p r o v i d e r i n t e r f a c e ) 的个人防火墙、基于t d i ( t r a n s p o r td r i v e r si n t e r f a c e ) 【5 j 的个人防火墙、基于n d i s 钩子驱动的个人防火墙、基于n d i s 中间层驱动程序的 2 第一章绪论 个人防火墙。大部分个人防火墙都采用双层监控机制,例如,著名的费尔个人防 火墙就是采用基于s p i 和n d i s 钩子驱动相结合的技术。 1 3 课题来源及目标 目前,随着新的网络应用的涌现,频繁发生的信息泄漏事件极大地推动了防 火墙、入侵检测、虚拟专用网、杀毒软件和主机入侵防御系统( h i p s ) 1 6 1 阴等各种网 络和主机信息安全技术的发展。针对恶意程序的研究可知,单从特征码角度查杀 具有明显的滞后性和漏报、误报性,安全产品鉴别恶意程序的角度逐渐的转向进 程行为上。一个进程的行为主要体现在两个方面,分别是访问系统资源,包括注 册表、文件等,另一个是访问网络。所以,研究防火墙作为一种研究进程访问网 络行为是切实可行的,防火墙技术被被广泛的应用在主机上。本课题是在w i n d o w s 操作系统上开发一个基于n d i sh o o k 和t d ih o o k 技术的个人防火墙,同时也是作 为华为科技基金项目基于安全行为模型的智能防御系统中的网络监控模块实 现。 本课题的目标是在主机防御系统( h i p s ) 架构下,完成一个w i n d o w s 操作系统 下的个人防火墙,它具备如下基本功能:t c p 连接和监听行为监控、进程端口映射 、i c m p i g m p 网络访问监控、t c p u d p 数据包流量监控、反a r p 欺骗,并在设 计和实现的过程中,注重对网络协议、网络安全、网络体系结构以及在w i n d o w s 操作系统下对网络封包截获技术进行深入的研究。 1 4 论文内容组织 本文共分为五章。 第一章绪论本章主要描述了个人防火墙的背景和意义、发展历史和研究现 状,并简要介绍了本课题的来源和目标。 第二章w i n d o w s 网络驱动h o o k 本章主要介绍了在w i n d o w s 平台下的网络体 系结构和w i n d o w s 系统下h o o k 原理,以及什么是t d ih o o k 和n d i sh o o k 技术。 第三章w d m 驱动开发基础本章主要介绍了w i n d o w s 操作系统的总体架构和开 发w d m 驱动的基本过程及重要的数据结构。 第四章系统的设计与实现本章详细描述了一个个人防火墙在w i n d o w s 平台 的设计与实现。主要由系统概要设计、用户界面e x e 设计、用户d l l 模块设计与 3 电子科技大学硕士学位论文 实现、内核s y s 模块设计与实现四个部分组成。 第五章系统测试及技术分析本章对常见网络应用程序及自己开发的一个后 门程序在本系统下的运行情况进行了测试并给出相应的分析。 第六章结论对本文的主要研究工作进行了总结,同时描述了本系统今后需 要进一步完善和研究的地方 4 第二章w m d o w s 网络驱动钩子 第二章w in d o w s 网络驱动钩子 2 1w i n d o w s 网络组件及网络体系结构 w i n d o w s 2 0 0 0 及后续产品使用由国际化标准组织( i s o ,i n t e r n a t i o n a l o r g a n i z a t i o nf o rs t a n d a r d i z a t i o n ) 开发的基于7 层网络模型的体系结构。i s o 的开放式系统互联( o s i ,o p e ns y s t e m si n t e r c o n n e c t i o n ) 参考模型将网络描述为 【8 】:一一系列的协议层,每层都有一组特定的功能,它们向上层提供特定的服务的 同时,隐藏了这些服务实现的细节。一个明确的相邻层之间的接口定义了下层向 上层提供的服务,以及如何访问这些服务。 o s i 参考模型与w i n d o w s 网络组件问的对应关系如图2 - 1 所示【9 】。 图2 - 1o s i 参考模型与w i n d o w s 网络组件的对应关系 图2 - 1 左边是o s i 参考模型,与其对应的右边是w i n d o w s 网络组件构成的分 层模型即w i n d o w s 网络体系结构,两者在各层之间并非是严格一一对应的。 w i n d o w s 网络体系结构是一种分层实现模式,从上至下分别由e x e ,d l l 和s y s 组成,各层导出对应的接口向上层提供服务。下面根据从上往下的循序介绍 w i n d o w s 网络体系结构的各个组成部分。 e x e 层:该层对应o s i 参考模型的第7 层应用层,主要实现用户的网络应用功 电子科技大学硕士学位论文 能,常见的网络应用有f t p ,s m t p 等。用户通过应用逻辑来调用下层提供的接口 以实现网络服务。 d l l 层:该层以动态连接库的形式存在,w i n d o w s 系统常见的具体库比如 w i n s o c k2 ,主要负责向上e x e 层提供调用的接口,然后,把e x e 层的请求传递给 下层的接口。 s y s 层:该层以内核驱动的形式存在,主要由三个核心模块组成,分别是:t d i 客户端,t d i 传送者和n d i s 库。从图2 - 1 可知,在t d i 客户端和t d i 传输者直接 存在一个传输驱动接口( t d i ,t r a n s f e rd r i v e ri n t e r f a c e ) ,而n d i s 库存在于t d i 传输者与网卡驱动之间。w i n d o w s2 0 0 0 x p 中,t d i 对应驱动t d i s y s ,而n d i s 库 对应驱动n d i s s y s 。t d i 客户端的作用是将上层的调用转化为w i n d o w s 文件i o 请求的形式,即封装成i r p ( i or e q u e s tp a c k e t ) ,然后,通过t d i 接口发送到 t d i 传送者。t d i 传送者即协议驱动,实现了w i n d o w s 的协议细节,它接收t d i 客 户端发送过来的i r p 之后,将协议头部信息加入到该i r p 中,然后,通过调用n d i s 库提供的接口与网卡驱动通信。n d i s ( n e t w o r kd r i v e ri n t e r f a c es p e c i f i c a t i o n ) 网络驱动接口规范,是微软和3 c o m 为使t d i 传送者即协议驱动与不同种类的网卡 驱动无缝通信而引入的一种规范和标准。协议驱动和网卡驱动通过n d i s 库导出的 函数实现数据包的发送和接收。 从上面对w i n d o w 网络体系结构的分析可知,t d i 、t d i 客户端和t d i 传送者三 者之间的关系如下图2 - 2 所示,t d i 客户端与t d i 传送者之间的服务关系如下图 2 3 所示。 1 1 饼 客户端 t d i 传送者 s o c k e t sn c t b l o s 应用程序应用程序 s o l 【t s 接口广_ 1n e t e l i o s 接口广 s o c k c t s n c t b l 0 sr c d i r e c t s , 模拟器模拟器s e r v e r s , :1 2 ) i 磺口 a p p t a l k n c 毋t n b f t c p i p n w i i n k n i cd r h e r ( s ) m l dn l c ( s ) 图2 - 2t i ) i 、t d i 客户端和t d i 传送者之间的关系 6 第二章w i n d o w s 网络驱动钩子 s o c i ( c 伍n 岫i o s 应用程序应用程序 s o k c 吣接e l 口n e t b i o s 接e lt - t d ! 客户端( s o c k e t s 模拟器, n e t b i o s 模拟器,r e d i r e c t o r ,s c l w o re t e 、 完成例程 事件处理函数 j 数调用lt 。lji , 函数谓 z w c r e a t e f i l e i o c a l l d r i v e r z w c i o s e + l o c o m p l e t e r e q u e s t 盯d 巾盯j r fli o c o m p l e t e r e q u e s t1r t d i 传送者( 即协议驱动,比如t c p i p , i p x s p x , n e t b e u i 删 n i cd r i v e r ( s ) a n dn i c ( s ) 图2 3t d i 客户端与t d i 传送者( 协议驱动) 的服务关系 2 2h o o k ( 钩子) 用 h o o k 1 0 即钩子是用来改变程序执行流程的一种技术。w i n d o w s 系统下的安全 产品或恶意程序大量的采用此项技术,常见的h o o k 技术有:t a th o o k 、s s d t h o o k 、i d th o o k 、i n l i n eh o o k 等。本文的t d ih o o k 和n d i sh o o k 都属于 h o o k 技术范畴,只不过t d ih o o k 是劫持i r p 传递,而n d i sh o o k 采用i i l l i n e h o o k 劫持函数调用,其结果都是改变了程序原来的流程。下面将详细讨论最常 用的i n l i n eh 0 0 k 技术。 i n l i n eh o o k 实施前后f u n e a 函数的对比图见下图2 4 。 7 电子科技大学硕士学位论文 函数f u n a p u s h e b p m o ve b p ,c s p m o v e s p ,e b p p o pe b p r e t d e t o u r 图2 - 4i n l i n eh o o k 示意图 从图2 - 4 可知,f u n a 在实施i n l i n eh o o k 前,函数是从头到尾执行,即从第一 条指令p u s he b p 开始一直到退出函数指令r c t 的执行为止。而对f u a a 实施i n l i n e h o o k 之后,函数的执行流程就有两个执行过程: 1 ) f u n a 函数开头的跳转指令j m p a d db 执行后,经过u 跳转到f u n b 函数, 然后f u n b 函数正常执行至r e t 返回。 2 ) f u n a 函数开头的跳转指令j m p a d db 执行后,经过u 跳转到f u n b 函数, f u n b 执行到内部的跳转指令j m p a d dd 后,经过u 跳转到d e t o u r ,最后 d e t o u r 执行f u n a 函数的开头指令之后,执行j m pa d dc 指令,经过u 跳 入f u n a 函数除去开头指令之后的剩余指令。 i n l i n eh o o k 的实现流程为: 1 ) 分配d e t o u r 内存,如上图u 所标识,将f u n a 函数开头的若干条指令拷贝进 d e t o u r ,拷贝的指令总字节数必须大于指令j m _ p a d db 的长度。同时,在 d e t o u r 的末尾填入j m pa d dc 指令。 2 ) 在f u n a 函数开头填入j m p a d db 指令。 从上面对i n l i n eh o o k 的介绍看出,i n l i n eh o o k 对于监控函数的调用具有非常 好的效果。 8 第二章w 讥d o w s 网络驱动钩子 2 3t d ih o o k 2 3 1t d i 简介 t d l1 1 1 1 ( t r 托s 船d 订v e ri i l t e l 触,传输驱动接口) 是w i n d o w s 网络体系结构中 t d i 客户端与t d i 传输者之间的一套i o c t l 接口。主要的功能是负责将t d i 客户 端的请求封装成i r p 形式传递给t d i 传输者。 2 3 2t d ih o o k 1 2 1 t d ih o o k 的实质就是在t d i 传输者接收到t d i 客户端通过t d i 接口发送的i r p 之前,截获该i r p 并根据需求处理该i r p 。 t d ih o o k 实现过程分两步: 1 ) 调用i o c r e a t e d e v i c e 函数,创建过滤设备对象。 2 ) 调用i o a t t a c h d e v i c e 函数将过滤设备对象挂接到t d i 传输者的设备对象 之上。 t d ih o o k 的示意图如下图2 - 5 所示。 叵叵 请求服务:请求服务 l ! 望! 堡塑翌垫鲎旦!i l 三里! ! 堡塑墨塾堡里!】 封装 广j l i r pl i _ j 1 1 ) ihook前tdih o o k 后 图2 5t d ih o o k 前后示意图 从图2 - 5 可以看到h o o k 前后i r p 传递流程的变化,h o o k 前i r p 直接发送到 t d i 传输者,h o o k 后i r p 先被传递到我们的t d ih o o k 驱动,最后才被发送到 t d i 传输者。 9 电子科技大学硕士学位论文 2 4n d i sh o o k 2 4 1n d i s 简介 n d i s 1 3 1 ( n e t w o r kd r i v e ri n t e r f a c es p e c i f i c a t i o n ,网络驱动接口规范) 是微软和 3 c o m 联合创建的为使t d i 传输者与各种网卡驱动无障碍通信的一种统一的接口 规范。在w i n d o w s 系统下,n d i s 以n d i s s y s 驱动的导出函数的形式存在,该驱动 的导出函数提供接口供t d i 传输者和网卡驱动调用。 2 4 1 1n d i s 框架 n d i s 的框架结构如图2 - 6 所示。 图2 6n d i s 框架结构 由图2 - 6 中显示的n d i s 框架可知,发送数据包时,协议驱动将要发送的数据 封装成n d i s p a c k e t 形式,然后调用n d i s s e n d 向下层驱动发送。如果下层无中间 层驱动,则直接发到了网卡驱动上,网卡驱动接收到后做最后的实质性的发送操 作;如果下层驱动是中间层驱动,则中间层驱动的m i n i p o r t x x x x 接口接过 n d i sp a c k e t 之后再通过调用n d i s s e n d 函数将数据包发送到下层驱动。当网卡驱 动接收到数据时候,数据经网卡驱动封装成n d i s p a c k e t 之后,网卡驱动将调用 上层驱动在n d i s 中注册的回调接口p r o t o c o l x x x x 函数来接收该数据包。如果上 层驱动是中间层驱动,中间层驱动收到该数据包后继续调用n d i s 库函数 n d i s m i n d i c a t e p a c k e t 或n d i s m x x x x i n d i c a t e p a c k e t 来接收数据包。如果上层驱动 1 0 第二章w m d o w s 网络驱动钩子 是协议驱动,协议驱动将接收到该数据包且解析该数据包后继续往上传递。 2 4 1 2n d i sp a c k e t 结构【1 2 】 n d i sp a c k e t 结构描述了底层原始数据包所在的虚拟地址空间。对于发送和接 收数据信息都是被封装n d i s p a c k e t 结构中,协议驱动和底层的网卡驱动直接操 作n d i s p a c k e t 结构以实现对数据包发送和接收。n d i s 提供了一些函数来申请和 管理构成封包的子结构,图2 7 所示为封包的结构。 封包由如下3 个部分组成: 封包描述表。这个表包含了与此封包相关的标志、占有的物理页的数量、 封包的总长度,一个到第一个缓冲区描述表的指针,它映射了封包中的第 一个缓冲区。 一系列的缓冲区描述表。缓冲区描述表描述了每个缓冲区的开始虚拟地 址、缓冲区在虚拟地址所指的页面中的偏移量、缓冲区的总长度和到下一 个缓冲区描述表( 如果有的话) 的指针。 虚拟范围,很可能跨越多个页面,它组成了缓冲区描述表所描述的缓冲区。 这些虚拟页面最终映射到物理内存。 尸 。,_ 一 , p h y s i c a lp a g e : v i r t u a lp a g e 、 , j , , ? ,v i r t u a lp a g e p h y s i c a lp a g e j , ; : jv i r t u a lp a g e 、 p h y s i c a lp a g e 厂 , p h y s i c a lp a g e i v i r t u a lp a g e 、 。 、_ 、 i v i r t u a lp a g e p h y s i c a lp a g e 、 图2 7 封包( n d i s _ p a c k e t ) 结构 2 4 1 3n d i sh o o k 在w i n d o w s 网络体系结构中,协议驱动为能够与n d i s 库通信,必须首先调用 函数n d i s r e g i s t e r p r o t o c 0 1 来注册这个协议驱动。n d i s r e g i s t e r p r o t c 0 1 函数初 始化代表该网络协议特征的结构体n d i s _ p r o t o c o l _ c h a r a c t e r i s t i c s ,并生成代表 电子科技大学硕士学位论文 该协议的结构体n d i s ,然后返回指向的指_ p r o t o c o l _ b l o c kn d i s _ p r o t o c o l _ b l o c k 针。所有已注册的网络协议以n d i s p r o t o c o l _ b l o c k 为节点构成一个单链表,单 链表的头指针就是指向刚注册的网络协议。n d i s _ p r o t o c o l _ c h a r a c t e r i s t i c s 中保 存了接收数据包的函数地址和注册网络协议时所指定的各种信息,如支持协议即 插即用的回调函数地址等。当网卡可用时,协议驱动会调用n d i s o p e n a d a p t e r 函 数来打开适配器,打开成功则会有与之对应的结构体n d i s _ o p e n _ b l o c k 生成。每 个协议驱动都对应一个n d i s _ o p e n _ b l o c k 结构的单向链表来维护其所绑定的适配 器信息,协议驱动发送的回调函数地址就保存在这个结构中。因此,我们只需替 换n d i sp r o t o c o lc h a r a c t e r i s t i c s 中收包函数和n d i s _ o p e n _ b l o c k 中的发包函 数就可以控制数据包的发送和接收。n d i s 与协议链的关系如下图2 8 所示。 图2 8n d i s 与协议驱动关系链 在w i n d o w s2 0 0 0 x p 下,实现n d i sh o o k 有两种方法【1 4 】,分别是注册假协议和 修改n d i s s y s 驱动的导出表。本课题采用注册假协议的方法。 采用注册假协议的方法实现n d i sh o o k 的流程: 1 ) 调用n d i s r e g i s t e r p r o t o c o l 注册假协议,保存返回的链表头指针。 2 ) 判断链表头指针是否为空,如果为空,则结束循环退出;否则,继续步骤 3 ) 和4 ) 。 3 ) i n li n eh o o kn d i sp r o t o c o lc h a r a c t e r i s c 中的收包函数地址。 4 ) 遍历n d i s _ 0 p e n _ b l o c k 单链表,i n l i n eh o o k 该结构体中的发包函数地址。 n d i sh o o k 对操作系统平台的依赖性比较大,在程序中需要对不同操作系统下, 不同的结构做不同的偏移对待。 1 2 第二章w m d o w s 网络驱动钩子 2 5 本章小结 本章主要介绍了在w i n d o w s 平台下的网络体系结构和h o o k 、t d ih o o k 以及n d i s h o o k 技术。 1 3 电子科技大学硕士学位论文 第三章w d m 驱动概述 3 1w i n d o w s 操作系统的体系结构 本文研究对象是n t 架构,运行在3 2 位x 8 6 处理器上的w i n d o w s 系统,包括 w i n d o w sn t ,w i n d o w s2 0 0 0 ,w i n d o w sx p ,w i n d o w s2 0 0 3 。下面以w i n d o w sx p 系 统为例介绍w i n d o w s 操作系统的体系结构。 w i n d o w sx p 的设计结合了分层和c s ( 客户服务器) 模型【1 5 1 。在保护模式下, 所有的应用程序都有权限级别( p r i v i l e g el e v e l ,v u ) ,这个权限级别按优先次序 分为4 等:0 ,l ,2 和3 ,其中0 代表优先级别最高,3 代表优先级别最低。w i n d o w s 系统实现了两个特权级别,分别是r i n g0 和r i n g3 ,也叫用户态和核心态。如果 应用程序运行在r i n g3 ,那么它只能执行有限指令,访问有限数据;如果应用程 序运行在r i n g0 ,它可以执行任何指令并访问所有数据。通常操作系统本身的代 码都运行在r i n g0 ,而用户程序一般都运行在r i n g3 ,所以应用程序不能直接访 问操作系统特权代码和数据,所有操作系统组件都受到了特权保护,以免应用程 序出错影响操作系统的运行。 在w i n d o w sx p 中用户态进程有四种基本类型: 1 ) 系统支持进程( s y s t e ms u p p o r tp r o c e s s ) ,包括i d l e 进程,系统进程, 会话管理器( s m s s ) ,w i n 3 2 子系统( c s r s s ) ,登录进程( w i n l o g i n ) ,本地安全身份 验证身份证( l s a s s ) ,服务控制器( s e r v i c e s ) 及其相关的服务进程。 2 ) 服务进程( s e r v i c ep r o c e s s ) ,能够创建在它们自己的w i n d o w s 会话中 可长时间运行的可执行应用程序。这些服务可以在计算机启动时自动启动,可以 暂停和重新启动而且不显示任何用户界面。 3 ) 环境子系统( e n v i r o n m e n ts u b s y s t e m ) ,以动态连接库的形式向应用程 序提供运行环境,w i n d o w sx p 的主要环境子系统w i n 3 2 子系统; 4 ) 应用程序( u s e ra p p l i c a t i o n ) ,例如c m d 等的可执行程序。 内核态组件包括以下内容: 1 ) 内核( k e r n e l ) 是执行体的下一个层次,它为执行体提供一些最基本的功 能和简单的对象,同时,提供了一个低层次的系统原语和机制供执行体来调用以 实现其功能。内核只是提供了底层的机制,而不做任何策略性的事务。但线程的 1 4 第三章w d m 驱动概述 调度和异常处理是在内核中实现的。; 2 ) 执行体执行体提供了一个文档化接口,使得它以上的各个模块可以调用执 行体提供的服务,例如进程和线程管理、内存管理器、安全控制、i o 以及进程间 的通信等。 3 ) 硬件抽象层( h a r d w a r ea b s t r a c t i o nl a y e r ,h a l ) 是一个可加载的核心 态模块( h a l d l l ) ,它提供了w i n d o w s 所运行的硬件平台的底层接口,h a l 隐 藏了各种与硬件有关的细节,比如i 0 接口、中断控制器、多处理通信机制等 这些都是平台相关的。当需要平台相关的信息时,w i n d o w s 的内部模块或者用户程 序通过h a l 来实现。 4 ) 设备驱动程序( d e v i c ed r i v e r s ) 核心态可加载模块( 以s y s 为扩展名) , 它们是i o 管理器和相关硬件设备的接口。 5 ) 图形引擎包含了实现图形用户界面( g r a p h i c a lu s e ri n t e r f a c e ,g u i ) 的基本函数。 w i n d o w s ) 【p 其体系结构如图3 1 所示【1 6 1 。 执行体,比如进程、内存、线程 核心体设备驱动 硬件抽象层( h a l ) 3 2 驱动程序基本例程 图3 - 1w i n d o w sx p 体系结构 驱动程序运行在r i n g0 ,是由一系列的例程组成,由驱动对象d r i v e r
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 消化性溃疡患者用药护理
- 公司职工安全培训总结课件
- 面部皮肤护理概述
- 结构化书面汇报
- 小学数学教师秋季学期教学工作计划2021年
- 公司级安全教育培训材料课件
- 电商运营助理年度工作总结
- 美妆年度工作总结
- 公司福利新员工入职课件
- 公司电气安全培训课件
- 2025-2030滑雪培训行业市场发展分析及前景趋势预测与投资可行性评估报告
- 课堂高效学习的主阵地 教学设计-2023-2024学年高中上学期主题班会
- 2025年放射工作人员培训考试试题(附答案)
- 高考熟词生义解密(复习讲义)-2026年高考英语一轮复习(北京专用)挖空版
- 骨科手术分级目录
- 审计局工程结算审计报告模板
- 破除人行道板及恢复专项工程施工方案
- 土建劳务施工合同模板土建劳务分包合同.doc
- 汽轮机本体检修基础技能知识模拟11
- 建筑工地防台风安全措施专项检查表
- AS1170.2-2002-结构设计作用2-风的作用
评论
0/150
提交评论