已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
南京航空航犬人学颁。学位论文 摘要 本漂豫的目的是开发一个以防木马为主的个人防火墙,用来预防已知的和新出 的木马。通过深入研究a p i h o o k ( a p p l i c a t i o np r o g r a m m i n gi n t e r f a c eh o o k ) 技术 及其实现,综合各种木马的行为特征,本人成功完成了这个防火墙。该防火墙的作用 在于在操作系统和应用程序之间建立一个防护层,任何程序安装到系统都会经过它的 检查,它利用a p i h o o k 技术监视每一个程序行为,一旦发现类似木马的行为,就会根 据用户定义的规则实时做出反应,从而使用户能够避免因为运行带木马的程序而不知 不觉中木马的情况发生,用户再也不怕运行某些来源不明的程序而中木马。由于该防 火墙能详细记录程序的行为,高级用户还可以用它来分析木马。实践证明,该防火墙 能够很好的预防木马,特别是它能预防目前一般防火墙不能预防的未知木马和新代 木马。 关键词:a p i h o o k ,个人防火墙,防木马,信息安全 “一一 第l 页 利川a p i h o o k 技术的个人防火墙 a b s t r a c t t h i sp r o j e c tm a i n l yr e a r c ha p i h o o k ( a p p l i c a t i o np r o g r a m m i n gi n t e r f a c e h o o k ) t e c h n o l o g ya n di t sr e a l i z a t i o n ,a n dd e v e l o pap e r s o n a lf i r e w a l1w h i c h i su s em a i n l yt og u a r da g a i n s tt r o j a n 【t sg o a li st ob u i l das h i e l db e t w e e n o p e r a t i n gs y s t e ma n da p p l i c a t i o n s i tw i l lc h e c ka l li n s t a l f a t i o no ft h e a p p l i c a t i o na n de x a mt h eb e h a v i o ro ft h ea p p l i c a t i o nu s i n ga p i h o o kt e c h n o l o g y r fi tf i n d sb e h a v i o rl i k et r o j a n s i tw i i ir e s p o n s et i m e l ya c c o r d i n gt ot h e r u l e sd e f i n e db yu s e r s ot h eu s e rw i i ln o ti n s t a l lt r o j a nb e c a u s eo fr u n n i n g p r o g r a mw i t ht r o j a nu n c o n s c i o u s l y b e c a u s et h ef i r e w a l lc a nr e c o r db e h a v i o r o fp r o g r a m si nd e t a i l ,i tc a db eu s et o a n a l y z et r o j a n k e y w o r d :a p i h o o k ,p e r s o n a lf i r e w a l l ,g u a r da g a i n s tt r o j a n ,i n f o r m a t i o n s e c u r i t y 第l l 硪 南京航空航大人学硕十学似论文 1 1 背景 第一章绪论 随着网络的飞速发展,越来越多个人电脑加入的网络中,这些用户的电脑水平一 般不怎么高,因此使得他们的电脑很容易被入侵,轻则被盗取密码,重则被删除重要 文件,造成很大的损失。而这些事情很多都是由于用户运行了带木马的程序造成的, 如何简单、有效的预防这种事情是大家关心的问题,而个人防火墙是目前最流行的方 法,a p i h o o k 技术以它特有的优势在防火墙中应用得越来越广泛。 1 2 国内外个人防火墙的研发情况 现在有很多个人防火墙,总的来说可说分为三类:病毒防火墙,网络防火墙,综 合型防火墙。病毒防火墙主要是预防已知的病毒和木马,在有病毒或者木马的文件到 你的计算机里但是没有运行之前给你警告,使你能够避免感染病毒和中木马,它主要 的缺点是不能预防未知的病毒和木马。金山毒霸,诺顿病毒防火墙,瑞星病毒防火墙 都属于这一类。网络防火墙一般预防拒绝服务攻击和入侵,天网防火墙,黑冰防火墙 是属于这一类。综合型防火墙既能预防网络攻击又能发现木马,这类防火墙比较少, 特别是预防木马方面功能不强。 1 3 本文所做的工作 本文深入研究了a p i h o o k ( a p p l i c a t i o np r o g r a m m i n gi n t e r f a c eh o o k ) 技术, 并综合各种木马的行为特征,开发了一个以防木马为主的个人防火墙。其主要作用在 于在操作系统和应用程序之间建立一个防护层,任何程序安装到系统都会经过它的检 查,它利用a p i h o o k 技术监视每一个程序行为,一旦发现类似本马的行为,就会根据 用户定义的规则实时做出反应。 1 4 系统研发的意义 木马的危害性在于它对电脑系统强大的控制和破坏能力,窃取密码、控制系统操 作、进行文件操作等等,一个功能强大的木马一旦被植入你的机器,攻击者就可以像 操作自己的机器一样控制中了木马的机器,甚至可以远程监控用户的所有操作。 木马的危害是很大的,然而它的入侵途径变幻无常,使人防不胜防,一般的病毒 防火墙都是用特征码来发现木马的,但是现在开发木马的人越来越多,出现了很多木 马个人版和未公开的木马,用木马的人也会对木马进行一些处理,比如用e x e 文件压 缩工具进行压缩,用特征码来发现木马的防火墙对这类木马是无能为力的,而本文的 第l 丽 利川a p i h o o k 技术的个人防火瑞 防火墙是根据程序的行为来预防木马,它可以使用户能够避免因为运行带木马的程序 而不知不觉的中木马的情况发生,用户再也不怕运行某些来源不明的程序而中木马。 出于它能详细记录程序的行为,高级用户还可以用它来分析木马。 箱2 贞 南京航空航犬人7 :颂l :学何论文 2 1 概念与分类 第二章木马综述 木马,也称特洛伊木马,名称源于古希腊的特洛伊木马神话,此词语来源于古希 腊的神话故事,传说希腊人围攻特洛伊城,久久不能得手。后来想出了一个木马计, 让士兵藏匿于巨大的木马中。大部队假装撤退而将木马摈弃于特洛伊城下,让敌人将 其作为战利品拖入城内。木马内的士兵则乘夜晚敌人庆祝胜利、放松警惕的时候从木 马中爬出来,与城外的部队里应外合而攻下了特洛伊城。 根据木马的作用,木马可以分为三类:远程控制木马,盗取密码的木马和综合型 木马。而根据木马发展的阶段来分,木马可以分为第一代、第二代、第三代、第四代 和第五代木马,第五代木马是n t j n j 出来的新型木马,它采用目前很多先进的编程技术, 比如a p i t f o o k ,远程线程创建技术,反向连接等,使得它比以前的木马隐蔽得多,也 使得检测木马的工作越来越困难 2 7 1 。 2 2 木马的危害 尽管资深的黑客不属于使用木马,但在对以往网络安全事件的分析统计里,我们 发现,有相当部分的网络入侵是通过木马来进行的,包括去年微软被黑一案,据称该 黑客是通过一种普通的蠕虫木马侵入微软的系统的,并且窃取了微软部分产品的源码 【。 木马的危害性在于它对电脑系统强大的控制和破坏能力,窃取密码、控制系统操 作、进行文件操作等等,一个功能强大的木马一旦被植入你的机器,攻击者就可以象 操作自己的机器一样控制你的机器,甚至可以远程监控你的所有操作。 2 3 木马的入侵途径 般的木马都有客户端和服务器端两个执行程序,其中客户端是用于攻击者远程 控制植入木马的机器,服务器端程序即是木马程序。攻击者要通过木马攻击你的系统, 他所做的第一步是要把木马的服务器端程序植入到用户的电脑里面。 目前木马入侵的主要途径还是先通过定的方法把木马执行文件弄到被攻击者 的电脑系统星,如邮件、下载等,然后通过一定的提示故意误导被攻击者打开执行文 件,比如故意谎称这个木马执行文件是朋友送的贺卡,可能打丌这个文件后,确实有 贺卡的画面出现,但这时可能木马已经悄悄在计算机后台运行了。 般的木马执行文件非常小,大多数是几k 到几十k ,如果把木马捆绑到其它正 常文件上,用户很难发现的。所以,有一些网站提供下载的软件往往是捆绑了木马文 第3 贝 利川a p i i i o o k 技术的个人防火墙 件的,当执行这些下载的文件的时候,也同时运行了木马。 术马也可以通过s c r i p t 、a c t i v e x 及a s p 、c g i 交互脚本的方式植入。由于微软 的浏览器在执行s c r i p t 脚本上存在一些漏洞,攻击者可以利用这些漏洞传播病毒和 木马,甚至直接对浏览者电脑进行文件操作等控制,前不久就出现一个利用微软 s c r i p t s 脚本漏洞对浏览者硬盘进行格式化的h t m l 页面。如果攻击者有办法把木马 执行文件上载到攻击主机的一个可执行聊w 目录里面,他可以通过编制c g i 程序在攻 击主机上执行木马。木马还可以利用系统的一些漏洞进行植入,如微软著名的i i s 服务器溢出漏洞,通过一个i i s h a c k 攻击程序可以把i i s 服务器崩溃,并且同时在被 攻击服务器上执行木马文件。 2 4 木马的行为特征 木马在被植入攻击主机后,它一般会通过一定的方式把入侵主机的信息,如主机 的i p 地址、木马植入的端口等发送给攻击者,这样攻击者有这些信息才能够与木马 里应外合控制被攻击主机。 在早期的木马里面,大多都是通过发送电子邮件的方式把入侵主机信息告诉攻击 者,有一些木马干脆把主机所有的密码用邮件的形式通知给攻击者,这样攻击者就不 用直接连接被攻击主机即可获得一些重要数据,如盗窃o i c q 密码的g o p 木马即是如 此。 使用电子邮件的方式对攻击者来说并不是最好的一种选择,因为如果木马被发 现,可以通过这个电子邮件的地址找出攻击者。现在还有一些木马采用的是通过发送 u d p 或者i c m p 数据包的方式通知攻击者。 2 5 木马技术及其发展 木马已经发展到了第五代,技术也越来越先进了。木马技术的先进性一般表现为 本马隐蔽性上,它分为以下几个方面f 2 8 2 9 i : 1 隐藏端口 端口是木马的最大漏洞,经过大家的不断宣传,现在连一个刚刚上网没有多久的 人也知道用n e t s t a t 查看端口,木马的端口越做越高,越做越像系统端口,被发现的 概率却越来越大。但是端口是木马的生命之源,没有端口木马是无法和外界进行通讯 的,更不要说进行远程控制了。对于这个问题,不同的木马采用了不同的方法,大致 分为以下三种方法:端口重用、反向连接和利用不开端口的协议( 如i c , p ) 进行通 讯。 2 隐藏进程 ;c i4 虻 南京航空航大人。:顽一b 学f 口沧文 在w in 9 x 时代,简单的注册为系统进程就可以使进程从任务栏中消失,可是在 w i n d o w2 0 0 0 盛行的今天,这种方法遭到了惨败,注册为系统进程不仅仅能在任务栏 中看到,而且可以在服务管理器中直接控制停止、运行。使用隐藏窗体或控制台的方 法也不能欺骗无所不见的管理员( 要知道,在n t 下,a d m i n i s t r a t o r 是可以看见所 有进程的) 。在研究了其它软件的长处之后,人们发现,w i n d o w s 下的中文汉化软件 采用的陷阱技术非常适合木马的使用。 d l l 陷阱技术是一种针对d l l ( 动态链接库) 的高级编程技术,编程者用木马d l l 替换已知的系统d l l ,并对所有的函数调用进行过滤,对于正常的调用,使用函数转 发器直接转发给被替换的系统d l l ,对于一些事先约定好的特殊情况,d l l 会执行一些 相对应的操作。一个比较简单的方法是创建一个进程,虽然所有的操作都在d l l 中完 成会更加隐蔽,但是这大大增加了程序编写的难度。实际上这样的木马大多数只是使 用d l l 进行监听,一旦发现控制端的连接请求就激活自身,创建一个开监听端口的进 程进行正常的木马操作,操作结束后关掉进程,继续进入休眠状况。 因为大量木马d l l 的使用实际上已经危害到了w i n d o w s 操作系统的安全和稳定 性,据说微软的下一代操作系统w i n d o w 2 0 0 1 ( 海王星) 已经使用了o l l 数字签名、 校验技术。因此,木马d l l 的时代很快会结束,取代它的将会是强行嵌入代码技术( 插 入d l l ,a p i h o o k ,进程的动态替换等等) 。但是这种技术对于编写者的汇编功底要 求很高,涉及大量硬编码的机器指令,并不是一般的木马编写者可以涉足。 3 反防火墙技术 现在很多的个人防火墙都可以防止别人的机器连接你的机器,反弹端口型木马分 析了防火墙的特性后发现:防火墙对于连入的连接往往会进行非常严格的过滤,但是 对于连出的连接却疏于防范。于是,与一般的木马相反,反弹端口型木马的服务端( 被 控制端) 使用主动端口,客户端( 控制端) 使用被动端口,木马定时监测控制端的存 在,发现控制端上线立即弹出端口主动连结控制端打开的主动端口,为了隐蔽起见, 控制端的被动端口一般开在8 0 ,这样,即使用户使用端口扫描软件检查自己的端口, 发现的也是类似t c pu s e r l p :1 0 2 6c o n t r o l l e r l p :8 0e s t a b l i s h e d 的情况,稍微 疏忽一点你就会以为是自己在浏览网页。 4 更加隐蔽的入侵方式 记得一年前,大家觉得通过所谓图片传播的木马非常神秘,其实现在几乎人人都 知道那只是一个后缀名的小把戏,而绑定e x e 文件的木马也随着“不要轻易执行来路 不明的可执行文件”的警告变得越来越不可行。和过去不同的是,现在木马的入侵方 式更加的隐蔽,在揉合了宏病毒的特性后,木马已经不仅仅通过欺骗来传播了,随着 网站互动化进程的不断进步,越来越多的东西可以成为木马传播的介质,j a v a s c r i p t v b s c r i p t ,a c t i v e x ,x m l 几乎w w w 每个新出来的功能都会导致木马的快速进 化,曾几何时,自g 件木马从附件走向了正文,简单的浏览也会中毒,而一个g u e s t 用户也可以很容易的通过修改管理员的文件夹设置给管理员运行木马程序。 旃5 贞 利用a p i h o o k 技术的个人防火墙 2 6 木马的预防 在过去的一年当中,出过很多有名的木马,s u b ? ,b 0 2 0 0 0 ,冰河等等,他们都有几 个共同的特点,比如:开t c p 端口监听,写注册表等等。因此,针对这些特点,也涌 现出了不少查杀木马的工具,比如l o c k d o w n 2 0 0 0 ,c l e a n 等,这些工具一般都是利用 检查注册表和端口来寻找木马( 也有利用特征码来查找的,前面已经说到,这种方法 是有不足的) ,甚至还出了一些号称能防范未来多少年木马的软件。而在大家的不断 宣传下,以下的防木马的法则很多人都已经知道了】: a 不要随便从不知名的网站上下载可执行文件,不要随便运行别人给的软件; b 不要过于相信别人,不要随便打开邮件的附件; c 经常检查自己的系统文件、注册表、端口、进程; d 经常去查看最新的木马公告,更新自己防火墙的木马库; 第6 贝 南京航空航犬人+ t 硕l :。学何沦文 第三章w i n d o w s2 0 0 0 系统结构 由于a p h o o k 技术是和w i n d o w s 系统结构紧密结合的,为了理解a p i h o o k 技术 就必须先理解w i n d o w s 系统的结构,我们以w i n d o w s2 0 0 0 为例来说明。 3 1 结构概况 首先,让我们来了解系统的结构概况,如下图,在这个图中,并没有包含系统 所有的组成部分,系统的详细组成部分将在下一节中分析。 用户疆式 圈 图3 l 在上图中,在粗黑线以上是系统的用户态部分,而以下是系统的核心态部分。在 黑线以上的方框代表用户态进程,而黑线以下的方框表示系统的核心服务。用户态的 线程是在受保护的进程空间中执行的。因此,系统支持进程,服务进程,用户应用程 序和环境子系统都有它们自己的私有进程空间。 用户态进程包含以下四种基本类型: a 固定的系统支持进程,例如系统登陆进程( 1 0 9 0 n e x e ) ,会话管理进程 ( s m s s e x e ) ,它们不是系统服务进程,因为它们不是由服务控制器启动 的。 b 包含w i n 3 2 服务的服务进程,比如任务调度服务,打印服务等等。许多 应用程序也包含以服务运行的部分,比如一些病毒防火墙。 c 用户应用程序,它包含五种类型:w i n 3 2 ,w i n d o w s3 1 ,m s - d o s ,p o s i x 和 0 s 21 2 d 环境予系统,它们通过一系列可调用的功能为应用程序提供本地的操作 系统服务,也就是提供一个操作系统环境,w i n d o w s2 0 0 0 包含三个环境 子系统:w i n 3 2 ,p o s i x ,和o s 2 。 在图3 1 中。我们可以看到有一个子系统d l l 方框在应用程序和系统服务中间。 在w i n d o w s2 0 0 0 中,应用程序并不是直接调用本地的系统服务:相反,它们是通过 第7 页 型型! ! ! ! ! 塑! 丝查塑竺堕盔坐 一个或几个子系统动态连接库( d l l s ) 调用本地系统服务的。子系统d l l 的作用就是把 应用程序对已公开的功能调用转换为对未公开的系统服务的调用。这种转换有时会发 消息给环境子系统中为应用程序服务的进程。 系统的核心由以下部分构成: a w i n d o w s2 0 0 0 执行者包含基本的系统服务,如内存管理,进程和线程管理, 安全,i 0 ,和进程间的通讯。 b w i n d o w s2 0 0 0 内核包含一些系统的底层功能,如线程调度,中断和意外分配, 和多处理器间的同步。它还包含一些过程和对象给其它执行者实现一些高层 的功能。 c 设备驱动程序包含硬件设备驱动程序、文件系统驱动程序和网络驱动程序。 d 硬件抽象层是隔离内核,设备驱动程序,剩余的w i n d o w s2 0 0 0 执行者和具体 硬件之间差别的一层代码。 e 窗口和图形系统实现了用户图形接口功能,比如处理窗口,用户界面控制和 画图。 3 2 关键组成部分 在这一节中我们研究了w i n d o w s2 0 0 0 系统结构和与a p i h o o k 技术相关的关键组 成部分川,图3 2 就是w i n d o w s2 0 0 0 系统详细的结构图,如下: 帆旧:篇篇嚣。,一一。 图3 2 第8 页t 南京航空航犬人学颐十。学位论文 3 2 1 环境子系统和子系统d l l s 由图3 2 可以看出,w i n d o w s2 0 0 0 包含三个子系统1 4 i ,o s 2 ,p o s i x 。w i n 3 2 。w i n d o w s 2 0 0 0 必须运行w i n 3 2 子系统,其它的两个子系统则根据需要启动。w in 3 2 子系统拥 有键盘,鼠标和显示设备,即使在没有用户登陆的服务器系统中也必须运行它。 环境子系统的作用就是输出基本的w i n d o w s2 0 0 0 执行者系统服务的一个子集给 应用程序。每一个子系统提供访问w i n d o w s2 0 0 0 本地服务不同的子集,这就是说在 个子系统的能完成的事情在另一个子系统中不一定能完成。 任何一个可执行文件都只属于一个子系统,当运行一个可执行文件时,创建进程 的代码就会从文件头中得到文件所属的予系统,然后创建相应的耨进程。 予系统中的函数不能混合调用,也就是说一个p o s i x 子系统的应用程序只能调用 由p o s i x 子系统输出的功能,一个w i n 3 2 应用程序只能调用由w i n 3 2 子系统输出的功 能。由于有这个限制,而p o s i x 子系统的功能调用非常有限,因此p o s i x 子系统对于 移植u n i x 应用程序并不怎么有用。 前面已经提到,应用程序并不是直接调用本地的系统服务:相反,它们是通过一 个或几个子系统动态连接库( d l l s ) 调用本地系统服务的。这些库函数输出程序连接到 子系统功能调用的公开接口。例如,w i n 3 2 子系统d l l s ( 如k e r n e l 3 2 d l l ,u s e r 3 2 d l l , g d i 3 2 d 1 1 ) 提供了w i n 3 2a p i 函数调用,而p o s i x 子系统d l l s 则提供了p o s i x1 0 0 3 1 a p i 当一个应用程序调用子系统d l l 中的函数时,有以下三种情况: a 这个函数完全在用户态子系统d l l 中实现。也就是说,没有发消息给环境子 系统过程,也没有调用w i n d o w s2 0 0 0 执行者中的系统服务。例如 g e t c u r r e n t p r o c e s s 和g e t c u r r e n t p r o c e s s i d 就是这类函数。 b 这个函数需要调用一个或几个w i n d o w s2 0 0 0 执行者中的系统服务。例如, w i n 3 2 函数r e a d f i l e 和w r i t e f i l e 要分别调用未公开的w i n d o w s2 0 0 0i o 系统服务n t r e a d f i l e 和n t w r i t e f i l e c 这个函数需要在环境子系统进程中完成一些功能( 环境子系统进程运行在用 户态,它负责维护受它控制的客户应用程序的状态) 。在这种情况下,应用程 序会发消息请求给环境子系统以完成某些功能。环境子系统d l l 在收到回应 后返回给调用者。 有一些函数包含了b 、c 两种操作,例如,c r e a t e p r o c e s s 和c r e a t e t h r e a d 。 虽然w i n d o w s2 0 0 0 是由多个相互独立的子系统组成,实际上,如果每一个子系 统都实现窗口操作和显示i o 的所有代码,这会导致许多重复的系统功能,最终会对 系统大小和性能产生不利的影响。由于w i n 3 2 是主子系统,w i n d o w s2 0 0 0 设计师们 决定把一些基本的功能放在这里而让其它子系统调用以完成显示i 0 。也就是说 p o s i x 和0 s 2 子系统调用w i n 3 2 子系统中的服务来完成显示i o 。 第9 页 利川a p h o o k 技术的个人防火端 3 2 2n t d l i d l i n t d l l d l l ( 4o 是一个给予系统d l l s 使用的专用系统支持库文件,它包含两种类型 的函数: a w i n d o w s2 0 0 0 执行者系统服务分配接口 b 给子系统、子系统d l l s 和其它本地可执行文件使用的内部支持函数。 第一种函数提供从用户态调用w i n d o w s2 0 0 0 执行者系统服务的接口,这些函数 有2 0 0 多个,例如n t c r e a t e f i l e ,n t s e t e v e n t ,等等。前面已经提到,从w i n 3 2a p i 函数可以访问这些函数实现的大部分功能。 对于每一个这样的函数,n t d l l 中包含一个相同名字的入口函数,在这个函数中 包含一个用来切换到核心态的特定指令,从而执行系统服务分配过程,这个过程在校 验一些参数后,才会调用真正的核心态系统服务。 n t d l l 也包含一些支持函数,如映像装载器,堆管理器和w i n 3 2 子系统进程间通 讯的函数,它也包含用户态异步过程调用分配器和异常分配器。 3 2 3 执行者 w i n d o w s2 0 0 0 执行者是n t o s k r n l e x e 的上层。( 内核是它的下层。) 执行者中包 含以下类型的函数: a 已经输出并且能够从用户态调用的函数。这些函数称为系统服务调用并且由 n t d l l 输出,大部分服务能通过w i n 3 2a p i 或者其它子系统的a p i 访问。然而, 有少数功能并没有包含在已公开的子系统函数中。( 例如, n t q u e r y 工n f o m a t i o n x x x ) 。 b 已输出的、只能从核心态调用的、在w i n d o w s2 0 0 0d d k 和i f s 中有说明的函 数。 c 已输出的、只能从核心态调用的、但是没有在w i n d o w s2 0 0 0d d k 和i f s 中说 明的函数。 d 被定义成全局标号但是没有输出的函数。 e 在模块内没有定义成全局标号的函数。 3 2 4 内核 内核包含了n t o s k r n l e x e 中的一系列功能,它们提供基本的功能( 如线程调 度,同步服务) 给执行者调用,它也提供对底层硬件体系结构相关的支持,这在各个 处理器上是不一样的。内核主要用c 语言实现,对于要访问从c 中不容易访问到的特 殊处理器指令和寄存器的时候,就用汇编语言实现 像前面提到的各种执行者支持函数一样,好多内核函数在d d k 中也有说明,因为 - 第1 0 页 南京航空航犬人学颁十学位论文 在开发驱动程序的时候要用到。 3 2 5 系统进程 在所有的w i n d o w s2 0 0 0 操作系统中,都有以下的系统进程。( 下面中的两个一i d l e 和s y s t e m - - 并不是完整的进程,因为它们并没有运行用户态的可执行文件。) a i d l e 进程( 每个处理器包含一个线程来占用空闲的c p u 时间) 。 b s y s t e m 进程( 包含了大部分核心态系统线程) 。 c 会话管理器( s m s s e x e ) 。 d w i n 3 2 子系统( c s r s s e x e ) 。 e 登陆进程( w i n l o g o n e x e ) 。 f 服务控制管理器( s e r v i c e s e x e ) 。 g 本地安全认证服务器( l s a s s e x e ) 。 为了帮助你更好的理解这些进程之间的关系,你可以用t l i s t t 命令来显示进 程树,它表示了这些进程之间的父子关系。 3 2 6 会话管理器 会话管理器【4 l ( w i n n t s y s t e m 3 2 s m s s e x e ) 是系统第一个创建的用户态进程, 当系统核心态线程执行完执行者初始化的最后阶段时,内核就创建实际的s m s s 进程。 会话管理器在w i n d o w s2 0 0 0 开始时负责一些重要的步骤,如打开附加的页面文 件,实现延迟的文件改名和删除操作并且创建环境变量。它也创建予系统进程和登陆 进程,再由这些进程创建其它的系统进程。 在完成这些初始化步骤以后,s m s s 中的主线程永远在c s r s s 和w i n l o g o n 进程旬 柄上等待。只要这两个进程中任意一个意外结束,s m s s 就使系统崩溃,因为w i n d o w s 2 0 0 0 系统必须依赖它们的存在。同时s m s s 也等待请求装载子系统,启动新的子系统 和调试事件。 - 第1 l 页 利川a p h o o k 技术的个人防火墙 4 1 概念和分类 第四章a p i h o o k 技术 由前一章可知,应用程序都是通过调用系统d l l 中的a p i 函数来完成它们的功能 的,而系统d l l 又是通过调用系统驱动程序来完成功能的,a p i h o o k 技术就是用我们 自己写的a p i 函数来替换系统d l l 中的a p i 函数,使得应用程序在调用a p i 函数时, 就会调用我们写的a p i 函数。这样我们就可以根据需要替换系统的某些a p i 函数,来 监视和控制应用程序的行为,从而判断应用程序中是否有木马。而通过替换网卡驱动 程序中的某些a p i 函数,就可以监视和控制整个系统的网络数据包,就可以根据规则 来允许或禁止数据包的通过,从而防止瞬络攻击。 根据替换a p i 函数作用的范围来分可以分为全局a p i h o o k 和单个应用程序的 a p i h o o k 。全局a p i h o o k 使得所有的程序调用被替换的系统a p i 函数时都会调用我们 写的a p i 函数,而单个应用程序的a p i h o o k 只有当被h o o k 的应用程序调用系统a p i 函数时才会调用我们写的a p i 函数。 根据被替换a p i 函数的位置可以分为用户态a p i h o o k ,和核心态a p i h o o k ,用户 态a p i h o o k 是指被替换的a p i 函数处于用户态d l l 或者非核心驱动程序中,而核心态 a p i h o o k 是替换系统内核中的a p i 函数,它一般通过写驱动程序来实现。它的缺点是 实现比较困难,优点是效果比用户态的好。 应用a p i h o o k 技术后的系统结构如下: r m b 妇 4 2a p i h o o k 技术的实现 图4 1 我们分用户态a p i h o o k 和核心态a p i h o o k 来介绍它的实现方法。 第1 2 页 塑里堕宝堕盔叁堂堡堂壁笙苎 4 2 1 核心态a p i h o o k w i n d o w sn t 系统核心中包含了一套系统服务中断调用,就像d o s 的i n t2 1 h 中断 一样,n t 中是i n t2 e ha 好多系统功能都是通过调用i n t2 e h 系统中断服务来完成的, 例如注册表的访问等。应用程序调用系统服务的过程如下图例: 图4 2 系统通过服务号到系统服务分配表中查找对应的中断服务过程的地址,到系统服 务参数表中得到调用的参数,然后执行中断服务过程。下图是系统服务分配表和系统 服务参数表的结构【5 】: 图4 3 通过以上介绍,我们知道通过替换中断服务分配表中对应某些服务号的中断服务 过程的地址,就可以达到我们的目的。这可以通过写驱动程序来实现。 这个方法属于全局a p i h o o k 。 4 2 2 用户态a p i h o o k 1 修改函数输出表 这是一种最常的用全局a p i h o o k 方法,它适用于各种i n d o w s 操作系统。首先我 们来分析一下w i n d o w s 操作系统可执行文件的结构( p e 结构) 1 3 l ,如下图: 第1 3 页 利州a pr h o o k 技术的个人防火端 图4 4 其中的e x p o r tt a b l e 就是函数输出表,它表明这个d l l 文件输出哪些a p i 函数, 它包含了函数名和函数的地址。当w i n d o w s 系统启动后,它会自动加载系统d l l 到系 统内存地址空间中,为了替换系统d l l 中的a p i 函数,我们只要修改内存中d l l 文件 的函数输出表,把要替换的函数的地址改成我们写的a p i 函数的地址就可以了。这种 方法一般也要通过写驱动程序来完成。 2 修改函数输入表 如图4 4 ,e x e 文件中有一个函数输入表,它记录了这个e x e 文件调用了哪些a p i 函数,也包含了函数地址,输出该函数的d l l 文件名等信息。我们只要把输入表中某 个a p i 函数的地址改为我们写的函数的地址,那么这个程序对被改的a p i 函数的调用 就会调用我们写的函数。 这种方法由于比较容易实现,应用也很广泛,但是它不能监视整个系统的a p i 调 用,用这种方法替换的a p i 函数只能对某些应用程序有效。 3 代理d l l 由于w i n d o w sa p i 函数存在系统d l l 中,而w i n d o w s 系统是通过d l l 文件名和文 件位置来加载系统o l l 的,我们只要把系统o l l 改名,而后用我们自己写的d l l 文件 替换系统d l l ,那么所有程序调用系统d l l 中的a p i 函数时就会调用我们写的d l l 中 的a p i 函数,在我们的d l l 中并不需要实现全部的a p i 函数,对于不需要改变的a p i 函数,就可以利用函数前传把它转到改名后的系统d l l 中。 从以上说明可以看出,我们写的d l l 的作用就像一个代理,对于不需要替换的系 统a p i 函数的调用,就把它转到真正的系统d l l 中,而要替换的系统a p i 函数,就由 我们写的d l l 处理。 这种方法非常容易实现,但是由于替换了系统的d l l ,当操作系统更新时( 比如 打补丁) ,我们写的d l l 文件也要更新。 4 修改c a l l 指令 程序对a p i 的调用都是通过c a l l + a p i 函数地址来实现的,这种方法是当程序装 入内存后,通过搜索程序的地址空间来找出它对要替换a p i 函数调用的c a l l 指令, 第1 4 页 南京航空航犬人学预r # 他论文 然后把c a ll 指令后跟的a p i 函数地址改为我们写的函数的地址,就把这个程序对系 统a p l 的调用改成了对我们写的函数的调用了。 这种方法比较复杂,不大常用。 5 修改a p i 函数 当系统d l l 装入内存以后,每个a p i 函数都有固定的地址,如果我们要替换某个 a p i 函数,我们可以找到这个a p i 函数的地址,然后修改这个a p i 函数前几个字节, 把它改为跳转到我们写的a p l 函数的j m p 指令,这样也可以达到目的。由于j m p 指令 有五个字节,这种方法不适用于函数体小于五个字节的a p i 函数。 第1 5 页 利川a p i h o o k 技术的个人| j ! 火端 第五章a p h o o k 技术的应用 5 in d i s h o o k 技术 n d i s 是网络接口规范,w i n d e w s 使用n d i s 函数库实现n d i s 接口。所有的网 络通信最终必须通过n d i s 完成。n d i s 横跨传输层、网络层和数据链路层,n d i s 的 结构如下图: 田固 图5 i 微软提供了以下几种标准接口编程方式: a t d i 传输层过滤驱动程序( t d if i l t e r ,比如常见的t c l ) f i l t e rd r i v e r ) b 协议驱动程序( p r o t o c o ld r i v e r ) c 中间驱动程序( i md r i v e r ) d 小端口驱动程序( m i n i p o r td r i v e r ) 其中t d if i l t e rd r i v e r 和i md r i v e r 通常用做封包过滤。也是防火墙和v p n 软件常用的技术。但是它们都有些缺陷: t d if i i t e rd r i v e r 属于上层驱动,位于t c p l p s y s 之上,这就意味着由 t c p l p s y s 接收并直接处理的数据包就不会传送到上面,从而无法过滤某些接收的数 据包,典型的就是i c m p ,i 锄p 的应答包直接由t c p l p s y s 生成并回应,上面的过滤 驱动程序全然不知。 i md r i v e r 功能比较强大,但编程接口复杂。最麻烦的是安装,自动化安装太困 难。 n d i s - h o o k 克服了上面的缺陷。n d i s h o o k 的工作原理是直接替换n d i s 的函数 库中的函数地址,这样只要向n d i s 的请求就会先经过我们自己函数的处理,这样就 非常简单,处理完转发给系统函数就完成了。这里替换n d i s 函数库中的函数是通过 第1 6 页 一童室堕皇堕鲞2 三堂堡主堂堡堡苎 修改函数输出表来完成的。 n d i s h o o k 技术有以下特点: a 编程方便、接口简单、思路明确、性能稳定。 b 更灵活,可以仅仅截获自己需求的,不需要冗余的代码。 c 功能强大,可以截获所有n d i s 和t d i 函数完成的功能。当然比标准方式功能强 大许多。还可以用这项技术延伸到h o o k 所有系统函数。 d 安全性高,可以截获底层的封包,不容易被穿透。 e 安装简单。 n d i s h o o k 安装前的结构示意图: n d i s h o o k 安装后的结构示意图: 图5 2 - 第l7 页 利用a p i h o o k 技术的个人防火墙 5 2 防木马技术 图5 3 前面我们说了预防木马的常规方法,在这一节中我们分析怎样利用a p i h o o k 技术 来预防木马,一般来说有三种方法:注册表监视,文件监视和网络监视。 5 2 1 注册表监视 木马一个重要的特点就是当每次系统启动时,木马也会自动运行,为了达到这个 目的,大部分木马都会修改注册表,而修改的地方一般都是固定的,利用木马的这个 特性,我们就可以利用a p i h o o k 技术监视注册表来发现木马。 木马经常修改的注册表位置有: a 、在以下位置增加键值 h k e y l o c a lm a c h i n e s o f t w a r e m i c r o s o f t w i n d o w s c u r r e n t v e r s i o n 的r u n 、 r u n o n c e 、r u n o n c e e x 、r u n s e r v i c e s 子键下 h k e y c u r r e n t _ u s e r s o f t w a r e m i c r o s o f t w i n d o w s c u r r e n t v e r s i o n 的 r u n 、 r u n o n c e 、r u n o n c e e x 、r u n s e r v i c e s 、s e r v i c e s 子键下 b 、修改下面的键值 l i k e y _ c l a s s e s r o g r t x t f i l e s h e l l o p e n c o m m a n d 中的默认项 h k e y c l a s s e s r o o t e x e f i l e s h e l l o p e n l c o m m a n d 中的默认项 h k e y l o c a l m a c h i n e x s o f t w a r e m i c r o s o l t w i n d o w sn t c u r r e n t v e r s i o n w i n d o w s 中 的a p p l n i t d i 。l s h k e y l o c a l m a c h i n e s o f l 、w a r e k m i c r o s o f t w i n d o w s n t c u r r e n t v e r s i o n w i n l o g o n 第18 负 垦塞堕窒堕鲞奎堂堡主堂垡笙奎 中的u s e r i n i t 、s h e l l 、g i n a d l l 我们只要监视这些地方,就可以发现大部分木马了。 5 2 2 文件监视 有些w i n d o w s9 x 下的木马并不修改注册表,而是通过修改w i n i n i 和s y s t e m i n i 这两个系统文件来启动自己。这种木马必须通过文件监视来发现。 大多数木马在安装的时候都会把自己复制到s y s t e m 目录下,并且把文件名改 成和系统文件非常相似,使它不容易被发现。根据这个特点,当我们要运行可疑程序 时,就可以监视s y s t e m 目录下增加的文件,从而发现木马。 5 2 3 网络监视 几乎所有的木马都要访问网络,黑客必须通过网络才能控制被安装远程控制型木 马的机器,而盗密码的木马也必须通过网络才能把密码发给黑客,如果你的机器不上 网,那木马就没有任何作用了。 通过监视网络的各种活动,来发现可疑的网络活动,从而发现木马。 常用的方法有: a 、监视所有向外的连接请求,判断请求的程序是否合法,这可以对付反向连接的木 马 b 、由于木马一般会通过e m a i l 把记录的密码发给黑客,我们必须监视发送e m a i l c 、一般远程控制型木马会开端口,通过监视本机开的端口就可以发现一些可疑端口, 从而发现木马。 第1 9 负 利j ja p i i i o o k 技术的个人防火端 第六章个人防火墙的设计与开发 6 1 本系统的设计目标 建立一个个人防火墙,它利用a p i h o o k 技术监视每一个程序行为,旦发现类 似木马的行为,它就会根据用户定义的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年电子商务师中级职业技能鉴定试卷附答案
- 塔山矿顶板事故应急预案演练脚本
- 2025年中小学生防范电信网络诈骗知识考题测试卷附答案
- 第一节 环境管理概述教学设计-2025-2026学年高中地理湘教版选修Ⅵ环境保护-湘教版2004
- 2024年起重机作业人员Q1证理论考试练习题及答案
- 2025年心肺复苏笔试题库及答案
- 2025年安全培训考试试题及参考答案
- 2025江苏招教考试真题及答案
- 六年级上册心理健康教育教案 -7在合作中成长 | 辽大版
- 2025监装员考试真题及答案
- 管理人员素质培训
- 建筑行业项目经理任职表态发言稿范文
- 车辆升级改装合同协议
- 《临床急救技能培训》课件
- 健康产业园区建设与发展策略研究
- 仪器维护与保养试题及答案
- 高性能计算应用的软件定义网络优化-全面剖析
- 同程旅行外包合同协议
- 保密警示教育典型泄密案例教育学习
- 骨科围术期血糖管理
- 短剧制作合同协议
评论
0/150
提交评论