(信息与通信工程专业论文)windows+bootkit技术研究与应用.pdf_第1页
(信息与通信工程专业论文)windows+bootkit技术研究与应用.pdf_第2页
(信息与通信工程专业论文)windows+bootkit技术研究与应用.pdf_第3页
(信息与通信工程专业论文)windows+bootkit技术研究与应用.pdf_第4页
(信息与通信工程专业论文)windows+bootkit技术研究与应用.pdf_第5页
已阅读5页,还剩90页未读 继续免费阅读

(信息与通信工程专业论文)windows+bootkit技术研究与应用.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 摘要 w i n d o w sb o o t l d t 作为目前最前沿的w i n d o w sr o o t l d t 技术,把寄宿地由传统的 操作系统磁盘文件扩展到了硬件b i o s 芯片、硬盘m b r 等位置,同时将自身的启 动提前到了与w i n d o w s 系统内核启动相同的级别,甚至还要更早的阶段。这样 b o o t k i t 就能较早的取得对计算机的控制权,从而实现较强的隐藏和控制功能。 虽然该技术目前还处于概念性验证阶段,没有实际的成熟的恶意程序产品,但 是如果现在不研究检测、清除的方法,将会给网络留下安全隐患。而只有先掌握 好b o o t l d t 所使用的关键技术和攻击手段,达到知己知彼,才能找到相应的解决方 案。因此本文从攻击者的角度对w i n d o w sb o o t l d t 技术进行研究与分析。 本文对当前的w i n d o w sb o o t l d t 实例的核心技术进行了分析和总结。从复杂的 w i n d o w sb o o t l d t 技术原理中,抽象出了基于w 砌o w $ b o o t k i t 的协同隐藏模型,并 给出了其形式化的描述。在此基础上设计和实现了一个基于m b r 的w i n d o w s b o o t k i t 原型。 该原型相对于传统的基于m b r 的b o o t k i t ,在h o o k 特征码的选取上更具有通 用性,同时通过h o o km b r 的读写操作,提高反检测能力。在隐藏实现中,除了 使用r o o t l d t 的d k o m 、h o o ks s d t 、驱动过滤等常规技术外,使用了一种新的文件 隐藏技术对象劫持,用以绕过当前所有的检测工具。在b o o t l d t 的功能模块中, 实现了一个用于远程控制的s h e l l 功能。通过三个实验验证了w i n d o w sb o o t l d t 协同 隐藏的有效性的同时,也发现了该b o o t l d t 原型的许多不足,为该领域的进一步研 究提供了可供参考的资料。 最后,提出了一种结合漏洞攻击的b o o t l d t 利用方案,研究了一种穿透主动防 御软件的磁盘操作技术,提出了一种通过感染p e 文件绕过v i s t a 的u a c 安全机制 的方法。同时也提出了一些w i n d o w sb o o t l d t 的预防手段和检测方法。 关键词:b o o t l d t ;协同隐藏;h o o k ;m b r ;w i n d o w s 内核 a b s t r a c t a b s t r a c t w i n d o w sb o o t l d ta st h ef o r e f r o n tr o o t l d tt e c h n o l o g y , i tp u ts t o r a g el o c a t i o nf r o m t h ef i l es y s t e me x t e n s i o nt ot h eh a r d w a r es t o r e ,a n da d v a n c e di t sb o o tp r o c e s si nt h e s a m el e v e lo fw i n d o w sk e r n e ls y s t e m ,o re v e ne a r l i e r t h e r e f o r e , b o o t l d tc a nb cm a d e e a r l i e ro nt h ec o m p u t e rc o n t r o li no r d e rt oa c h i e v eas t r o n gh i d ea n dc o n t r 0 1f u n c t i o n s a l t h o u g ht h et e c h n o l o g yi ss t i l li nt h ec o n c e p t u a ls t a g eo fv e r i f i c a t i o n , a n dt h e r ei s n oa c t u a ls o p h i s t i c a t e dm a l i c i o u sp r o g r a l r l s ,i ft h ed e t e c t i o na n dr e m o v a lm e t h o d sa l e n o tr e a s e r c h , i tw o u l dp o s eat h r e a tt ot h en e t w o r k o n l ym a s t e r e dt h ec o r et e c h n o l o g y o ft h eb o o t l d t ,t h ec o r r e s p o n d i n gs o l u t i o n sc a l lb ef i n d t h e r e f o r e ,t h i sd i s s e r t a t i o nf r o m t h ep e r s p e c t i v eo fa l la t t a c k e r ,t or e s e a r c ha n da n a l y s i st h ew i n d o w sb o o t k i t t h ew 缸l d o w sb o o t k i tt e c h n i c a lf r o mt h ee x a m p l e si ss u m m a r i z e da n da n a l y z e d a f o r m a lm o d e lo ft h ec o o p e r a t i v ec o n c e a l m e n to fb o o t k j tf r o mt h ec o m p l e xt e c h n i c a l p r i n c i p l ei sa b s t r a c t c o m b i n a t i o no fp r i o rr e s e a r c l 1 aw i n d o w s b o o t k i tp r o t o t y p eb a s e d o nt h em b ri sd e s i g n e da n di m p l e m e n t a t i o n t h ep r o t o t y p ec o m p a r e dw i t ht h et r a d i t i o n a lb o o t l d tb a s e do nt h em b i t sh o o k s i g n a t u r ei sm o r eg e n e r a l ,a n dt h ea n t i - d e t e c tc a p a b i l i t i e si se n h a n c e db yt h er e a da n d w r i t eo p e r a t i o n so fm b rt oh o o k a tt h eh i d d e nm o d u l e , t h eu s eo ft h eo b j e c th i j a c k t e c h n o l o g yc a nb y p a s st h ec u r r e n th i d d e nf i l ed e t e c t i o ns y s t e m i nt h ef u n c t i o n a l m o d u l e as h e l lf u n c t i o nf o rr e m o t ec o n t r o lh a dc o m p l e t e d 1 1 圮t h r e et i m e so ft h e e x p e r i m e n ts h o wt h e b o o t k i tp r o t o t y p er e f l e c t st h et h i n k i n go ft h ec o o p e r a t i v e c o n c e a l m e n ta n do w n sas a t i s f i 酣c o n c e a l i n g , a n di ta l s of o u n dm a n yo ft h e s h o r t c o m i n g so fb o o t k i t i tp r o v i d e ds o m er e f e r e n c ei n f o r m a t i o nf o rt h ef i e l do fb o o t l d t t of u r t h e rr e s e a r c h f i n a l l y , ac o m b i n a t i o no fv u l n e r a b i l i t ya t t a c kt oi m p l a n tb o o t k i ti sp r o p o s e d , a n d t h ep e n e t r a t i o nt e c h n i q u eo fp r o a c t i v ed e f e n s es o f t w a r et od i s ko p e r a t i o ni sr e a s a r c h e d , a l s oap ef i l ei n f e c t i o nt e c h n i q u e st ob y p a s st h ev i s t a su a cs e c u r i t ym e c h a n i s mi s p r o p o s e d a tt h es a m et i m e ,s o m ep r e v e n t i o na n dd e t e c t i o nt e c h n o l o g i e so ft h ew i n d o w s b o o & i ta r ep r o p o s e d k e y w o r d s :b o o t k i t ;c o o p e r a t i v ec o n c e a l m e n t ;h o o k ;m b r :w i n d o w sk e r n e l i i 图索引 图索引 图2 1r i n g o 、r i n 9 3 与操作系统用户模式、内核模式的关系5 图2 2w i n d o w s 内核中进程和线程结构关系8 图2 3w i n d o w s 内核驱动程序工作流程9 图2 4d e t o u r 技术修改控制流程1 1 图2 5 硬盘布局示例1 2 图3 1 修改m b r 的流程图2 1 图3 2s u m a i n 执行流程2 4 图3 3o s l o a d e r e x e 执行流程2 5 图3 4c b r o m 显示的b i o s 文件结构3 6 图3 5b i o sj m p 指令的原始字节3 8 图3 6b i o si m p 指令的反汇编结果3 8 图3 7i c e l o r d e x ei d a 逆向结果图3 9 图3 8i c e l o r d 三个子程序逆向结果4 0 图3 9i c e l o r d 提取资源操作4 0 图3 1 0i c e l o r d e x e 的e x t r a c t d r v 逆向结果4 1 图3 1 li c e l o r d e x e 的o p e n d r v 逆向结果4 1 图3 1 2i c e l o r d e x e 刷写b i o s 逆向结果4 2 图3 1 3i c e l o r d e x e 写b i o s 操作的逆向结果4 2 图3 1 4i o _ _ h l p e r s y s 的d r i v e r e n t r y 逆向结果4 3 图3 1 5i o _ h l p e r s y s 的i o 允许位图设置的逆向结果4 3 图3 1 6l e a v i n g 的i s a 头的逆向结果4 4 图3 1 7l e a v i n g b i n 的i s a 模块主体逆向结果4 4 图3 1 8l e a v i n g b i n 中的h o o k1 9 h 逆向结果4 5 图3 1 9l e a v i n g b i n 中的n e w _ i n t l 9 h 的逆向结果4 5 图3 2 0l e a v i n g b i n 中对n t l d r 特征码搜索的逆向结果4 5 图3 2 1l e a v i n g b i n 中的h o o k1 3 h 的逆向结果4 6 图3 2 2l e a v i n g b i n 中对原始i n t1 3 h 恢复的逆向结果4 6 v i 图索引 图3 2 3b o o t k i t 插入前后的对比4 7 图4 1w i n d o w sb o o t k i t 原型总体结构图5 4 图4 2d k o m 技术的驱动隐藏技术处理流程。5 8 图4 3h o o ks s d t 隐藏隐藏进程的处理流程5 9 图4 4 驱动对象劫持示意图6 0 图4 5 绑定网络t c p 协议处理设备的执行流程6 1 图4 6 通信隐藏的i r p 过滤流程6 2 图4 7 定位a p i 地址的流程6 3 图4 8 实验一的结果图6 9 图5 1 结合漏洞攻击的b o o t k i t 利用方案7 3 图5 2 穿透主动防御进行磁盘操作的执行流程7 5 图5 3 感染p e 文件示意图7 7 图5 4 基于内存搜索的隐藏进程检测流程8 0 1 表索引 表3 1 表3 2 表4 1 表4 2 表4 3 表4 4 表4 5 表5 1 表索引 m b r 结构2 0 i s a 模块头3 8 不同操作系统中断汇编代码中的特征值5 5 函数名的h a s h 摘要值及对应关系6 4 c m d 对应的a c s i i 值及其对应的汇编指令6 5 实验环境6 8 实验结果汇总7 1 s c s i _ p a s s _ t h r o u g h 结构的填充7 5 v m 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作 及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地方 外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为 获得电子科技大学或其它教育机构的学位或证书而使用过的材料。与 我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的 说明并表示谢意。 签名:蝴垂男 日期:弘珂年 | 关于论文使用授权的说明 y 月穆日 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁盘, 允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文的全 部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描 等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签名:钥币船导师签名:芬秒 日期:多9 口7 年r 月2 岁日 第一章绪论 1 1 研究背景 第一章绪论 r o o t k i t 定义为能够持久地或可靠地、无法检测地存在于计算机系统上的一组 程序和代码【1 1 ,其强大的无法检测的隐藏特性【2 巧】成为瞩目的焦点,发展非常迅速。 但是伴随着a n t i r o o t l d t 深入到系统内核,传统的r o o t l d t 在系统控制和隐藏自身 上已经没有明显优势【6 9 1 。如果进攻者和防御者都运行在最高系统权限下,谁加载 启动得越早,谁进入到内核越深,谁就能先感知到对方的存在而获胜。因此研究 人员开始关注在系统内核启动过程中、甚至在系统内核启动之前加载运行 r o o t k i t l l 0 】。这种利用系统内核准入技术,在开机过程进行隐藏执行代码的高级 r o o t l d t 称之为b o o t k i t t l l l ,意义为 b o o t ”的 k i t ”,即在系统启动阶段就能被执行的 代码。 b o o t l d t 技术作为目前最前沿的一种r o o t l d t 技术,因为其隐蔽性的特点使得 目前的检测软件无可奈何【l l 】。利用了b o o t l d t 技术的后门程序将能够轻易的窃取计 算机信息,对于国家的信息安全和个人的隐私都会带来巨大的安全威胁。因此, 对于b o o t l d t 的检测和清除方法的研究是迫在眉睫的。而为了完成对b o o t l d t 的检 测和清除方法的研究,必须要及时的跟踪和掌握其发展动态及其核心技术,达到 知己知彼。因此,对b o o t l d t 技术的研究,并结合实际应用在某些关键方向上进行 有所创新的发展,是一项在安全防御方面所必须的基础性工作。 本文主要从攻击者的角度出发,通过对w i n d o w s 操作系统下的b o o t k i t 关键 技术的研究与分析,提出b o o t k i t 的协同隐藏模型,并在此基础上实现一个w i n d o w s b o o t l d t 原型,为其检测和防范打下基础。 1 2w i n d o w sb o o t k i t 的产生历史 随着w i n d o w s 系统的大量应用和普遍,针对w m d o w s 系统的r o o t l d t 开始陆 续出现。第一个已知的w i n d o w s 平台上的内核模式r o o t l d t 是w w w r o o t l d t c , o n l 的 网站创始人g r e gh o g l u n d 在1 9 9 9 年发布的 n t r o o t i d t ,它可以隐藏注册表项和重 定向可执行程序【1 2 】。研究人员继续研究w i n d o w s 系统保护问题,并且在n t r o o t l d t 电子科技大学硕士论文 发布不久后,其他几个工具也相继出现,都是用于在操作系统中隐藏对象的工具。 2 0 0 0 年的h e 4 h o o k 【”】,由一名俄罗斯程序员设计而成,这个工具并不是恶意软件, 但是它能够隐藏文件,并且能够在内核模式下运行。2 0 0 2 年的h a c k e rd e f e n d e r 1 4 j , 这同样也只是一个工具,但是更加强大,它可以被用于隐藏文件、进程和注册表 项,可以在配置文件中灵活地设置,该工具已经实现在w i n d o w s 内核模式。2 0 0 3 年的v a n q u i s h ”】,这个工具可以用来隐藏文件、目录和注册表项,而且它还有一 个恶意有效载荷,能够密码登录,但是该工具仅实现于用户模式。后来人们立刻 明白了这些研究正在带来某种变化,随着研究重点逐渐从中立的工具转移到别有 用心的工具,包括用于恶意目的等。2 0 0 3 年的h a x d o o r 1 6 】,这已经不仅仅是一个 工具这么简单了,它是一个使用r o o t l d t 技术来在操作系统中隐藏自己的后门程序, 并工作在系统内核。2 0 0 4 年的f u t r 丌,一个隐藏进程的工具,这种工具引入了一种 新的技术,即重新修改程序构建自己,而不是修改进入系统的访问,该工具也在 系统内核模式下运用。到2 0 0 5 年,现存的r o o t k i t 中几乎有8 0 是h a c d e f 和 h a x d o o r 的变体【1 1 】。与此同时,该技术开始被应用到木马程序当中,因为利用r o o t k i t 技术提高商业木马的整体功能,能够为木马编写者或操控着创造财务收益。到2 0 0 6 年,r o o t l d t 技术开始应用于常见的电子邮件蠕虫病毒,这种演变给安全公司带来 巨大的挑战。 r o o t k i t 发展的另一个重要方面就是与r o o t k i t 迅速发展相对应的a n t i r o o t k i t 热潮。到2 0 0 6 年6 月份左右,几乎所有的安全公司都已经意识到有必要对r o o t k i t 造成的安全威胁作出反应了,每一家安全公司都以自己的方式来抵抗r o o t k i t 攻击。 有些安全公司对他们的产品进行了修复,使其产品在定期防病毒扫描时能够搜寻 隐藏的文件;有些公司则发布了独立于产品的a n t i r o o t k i t 工具;还有一些公司承 诺在他们的产品中加入a n t i r o o t l d t 扫描,通过他们的产品界面来实现这一功能。 与此同时,独立的a n t i r o o t l d tt 具开始发展,与安全公司提供的解决方案相比, 这些工具使人们能够对系统从不同的条件角度来进行快速的表面的分析,如果有 必要的话,他们同样也可以用于进行更加深入更加专业的分析。到2 0 0 7 年为止, 至少有2 0 个有效的免费a n t i r o o t k i t 工具【l l 】,每一种工具都是基于使用不同的方法 来检测r o o t l d t ,这样几乎所有的r o o t k i t 都能够被检测出来,这使一度猖獗的 w m d o w sr o o t l d t 开始走下坡路。 当w i n d o w sr o o t k i t 被各种安全公司严防死堵以后,研究人员开始关注在系统 启动过程中实现r o o t l d t ,b o o t l d t 技术也就应运而生。 2 第一章绪论 1 3b o o t k i t 的研究现状 b o o t l d t 最早于2 0 0 5 年被e e y ed i g i t a l 公司在他们的b o o t r o o t 1 s 项目中提及, 该项目通过感染m b r ( m a s t e r b o o tr e c o r d 主引导记录) 的方式,实现绕过内核检 查和启动隐身。另一个著名的b o o t k j t 是在2 0 0 7 年4 月欧洲的b l a c h h a t 上,来自 印度n v 实验室的研究人员公布了允许接入内核的引导代码v b o o t l d t 【l 圳,因为该 b o o t k i t 可以在w i n d o w s s 乜启动过程中执行任意的代码,成为了现在热门的v i s t a 系统安全问题的导火索。 b o o t l d t 正成为信息安全领域最大的挑战之一,越来越多的研究人员开始涉及 b o o t l d t 技术【2 0 】。由于w i n d o w s 系统的普及率,研究人员主要研究针对n t 系统内 核的b o o t k i t ,从最早的基于m b r 的w i n d o w sb o o t k i t ,到后来出现的基于b i o s 【2 、 m 1 _ d r t 2 2 】等的b o o t l a t 都是在w i n d o w s 内核启动过程中进行。对于n t 系统的内 核,微软只提供了非常有限的资料,因此多数的细节需要通过对二进制代码的逆 向分析才能完成。另外,由于b o o t k i t 技术涉及到对b i o s 、硬盘的m b r 等硬件位 置的写入【2 3 】 2 4 1 ,使得插拔主板跳线或电池、高级格式化硬盘等操作都无法消除一 些利用b o o t l d t 技术写入的代码【l 们。虽然该技术目前还处于概念性验证阶段,即仅 有原理利用方法的技术验证,而没有实际的成熟的恶意程序产品,但是如果现在 不对其检测、清除的方法进行研究,必将给网络留下安全隐患。而只有先掌握好 b o o t l d t 所使用的关键技术和攻击手段,才能找到相应的解决方案。 1 4 本文的研究内容和主要工作 本文课题来源于国家8 6 3 项目“软件安全缺陷主动发掘方法和技术研究” ( 2 0 0 9 a a 0 1 2 4 0 3 ) 。该课题是对软件缺陷进行模型描述,并对安全缺陷机理进行分 析与特征提取,在此基础上对安全缺陷进行识别与捕获。通过以上研究,建立系 统化的应用软件安全漏洞发现与分析机制,帮助用户预先发现软件系统中的安全 缺陷以及可能面临的安全威胁,从而选取和实施相应的策略和措施,以避免危险 和损失的发生。本文的研究内容作为该课题中的缺陷发现部分,通过研究攻击技 术的方式,为相应的对抗策略打下基础。 同时,本课题也得到了北京x x x 部门的“渗透性检测方法和技术研究”项目 和“未知恶意代码检测技术研究 项目的支持。第一个项目是通过分析和利用系 统漏洞对内网的远程计算机系统进行渗透来达到检测和预警的目的。本文的研究 3 电子科技大学硕士论文 内容就该课题的渗透利用部分进行后续的研究,在渗透成功以后,利用b o o t l d t 技 术来达到从外网到内网的可持续的检测和预警。而第二个项目是利用非特征码的 方式对未知的恶意代码进行检测。本文的研究内容就其中恶意代码实现技术部分 进行研究,确立恶意代码的行为特征,为其检测打下基础。 另外,本文的部分研究成果也得到了北京电子科技学院开放基金课题“安全芯 片旁路攻击技术及其防御研究”( k f h t 2 0 0 7 0 4 ) 项目的支持。 本文主要从攻击者的角度对当前的w i n d o w sb o o t l d t 的技术原理和实现方法进 行全面的分析,完成以下的工作: ( 1 ) 深入分析与b o o t l d t 实现相关的w i n d o w s 系统内核原理; ( 2 ) 对w i n d o w sb o o t l d t 实例的实现原理进行分析,掌握其核心技术; ( 3 ) 提出b o o t l d t 协同隐藏模型,并给出其形式化描述; ( 4 ) 设计与实现一个基于m b r 的w i n d o w sb o o t l d t 原型,并通过实验验证 其协同隐藏的有效性; ( 5 ) 研究w i n d o w sb o o t k i t 的隐藏执行和穿越主动防御软件的相关技术,并 提出相应的解决方案。于此同时,在综合分析的基础上,给出一些 w i n d o w sb o o t l d t 的防御和检测手段。 本文共分为六个部分: 第一章是绪论,阐述研究背景,w i n d o w sb o o t l d t 的产生以及国内外研究现状, 本文的研究内容和主要工作,以及本文的组织。 第二章对与b o o t k i t 相关的w i n d o w s 内核原理和相关实现技术进行简介,针对 b o o t l d t 与w i n d o w s 内核引导与启动紧密相关的特点,深入分析w i n d o w s 系统内核 的引导与启动过程。 第三章分析目前已知的各种w i n d o w sb o o t l d t 的技术原理,包括基于m b r 的 b o o t l d t ,基于b i o s 的b o o t l d t ,基于n t l d r 的b o o t k i t 以及基于b o o t i n i 的b o o t k i t 。 并对w i n d o w sb o o t l d t 进行了技术总结。 第四章结合木马协同隐藏模型的思想提出b o o t l d t 的协同隐藏模型,从复杂的 w i n d o w sb o o t l d t 实现技术之中,抽象出b o o t k i t 各个部件之间的协同关系,并给出 形式化描述。结合该思想,设计和实现一个基于m b r 的w i n d o w sb o o t l d t 原型。 第五章对w i n d o w sb o o t l d t 进行利用和防御检测的研究。提出一种结合漏洞攻 击技术的w i n d o w sb o o t l d t 利用方案,给出一种穿越当前主动防御软件进行磁盘读 写操作的方法,并研究对w i n d o w sb o o t l d t 的一些防御检测手段。 第六章对本文做的工作进行总结,提出下一步研究的方向和重点。 4 第二章b o o t l d t 相关操作系统原理 第二章b o o t k i t 相关操作系统原理 本章首先阐述w i n d o w s 内核中与b o o t k i t 相关的基本原理,包括c p u 的r i n g 级别的原理、c p u 表和系统表中的重要表结构、控制寄存器原理和作用、w i n d o w s 系统的进程与线程的数据结构以及w i n d o w s 系统的驱动程序相关概念和方法。接 着对b o o t l c i t 的实现过程中要使用到的h o o k 技术,d e t o u r 技术,d k o m ( d i r e c t k e r n e l o b j e c tm a n i p u l a t i o n 直接内核对象操作) 技术进行简要的介绍和说明。最后重点分 析w i n d o w s 系统内核的引导和启动过程。 2 1w i n d o w s 系统内核相关概念和原理 2 1 1r i n g o 与r i n 9 3 i n t e lx 8 6 微芯片系列使用r i n g 的概念来实施访问控制【2 5 1 。r i n g 有4 个级别:r i n 9 0 是最高权限的,r i n 9 3 是最低权限的。每个r i n g 都内部保存为一个数字。w i n d o w s 操作系统中的所有内核代码都在r i n g o 级别上运行。因此,在内核中运行的b o o t l d t 也被看作是在血9 0 级别上运行。不在内核中运行的用户模式程序工作在r i n 9 3 级 别。w i n d o w s 操作系统在i n t e lx 8 6 微芯片上只使用了r i n 9 0 和r i n g # 2 6 1 ,并不使用 r i n 9 1 和血9 2 。w i n d o w s 将内核模式运行在c p u 的血印级别,而将用户模式运行 在c p u 的r i n # 级别,如图2 1 所示。幽g o 和t i n # 是c p u 上的概念,而用户模 式和内核模式是操作系统上的概念。 c p u 操作系统 图2 1 血g o 、r i n 9 3 与操作系统用户模式、内核模式的关系 5 电子科技大学硕士论文 c p u 负责跟踪为软件代码和内存分配r i n g 的情况,并在各个r i n g 之间实施访 问限制。通常,每个软件程序都会获得一个r i n g 编号,它不能访问任何具有更小 编号的r i n 9 2 7 1 。例如,r i n 妒的程序不允许访问r i n 9 0 程序,试图访问将会导致c p u 产生异常中断。最初的许多安全检测工具都是在r i n 审级别上运行,因此无法控制 运行在r i n 9 0 级别的r o o t k i t 。但是当目前安全检测工具同样运行在r i n 9 0 级别上的 时候,与r o o t l d t 之间的竞争就变成了相对公平的竞争,即谁先被执行,谁就更有 优势,而b o o t k i t 技术就是在这样的竞争中应运而生的。 2 1 2c p u 表和系统表 c p u 除了负责跟踪r i n g 的信息以外,还负责指定其他许多决策【2 丌。例如,c p u 必须决定当中断发生、软件程序崩溃、硬件发出注意信号、用户模式的程序试图 与内核模式的通信,以及多线程程序切换时需要执行的动作。显然操作系统代码 必须处理这类事情,但总是c p u 最先处理它们。对于每个重要事件,c p u 必须指 出处理该事件所用的软件例程【2 7 】。由于所有软件例程都生存于内存中,因此c p u 有必要存储重要软件例程的地址。c p u 内部无法存储所有地址,因此它必须对其 取值进行查询,这个操作通过地址表完成。当中断等事件发生时,c p u 在一个表 中查询该事件,并寻找处理该事件的某个软件例程的相应地址。c p u 需要的唯一 信息是这些表在内存中的基地址。其中有如下几个重要的c p u 表与系统表: g d t ( g l o b a ld e s c t i p t o ft a b l e 全局描述符表) ,用于映射不同的地址范围,也 可导致任务切捌2 7 1 。通过s g d t 指令可以获取g d t 的基地址,通过l g d t 指令 可以更改g d t 的位置。 l d t ( l o c a ld e s c r i p t o rt a b l e 本地描述符表) ,l d t 允许每个任务拥有唯一的描 述符集合【2 7 1 。当指定一个段时,表指示符位可以在g d t 和l d t 之间进行选择。 l d t 可以包含和g d t 相同类型的描述符。 i d t ( i n t e r r u p td e s c r i p t o r 删e 中断描述符表) ,用于寻找中断处理程序【2 。i d t 是一个由2 5 6 项组成的数组,每个中断对应于一项。因此每个c p u 最多处理2 5 6 个中断。当中断发生时,c p u 从中断指令或可编程中断控制器中获取中断编号, 然后通过i d t 寻找要调用的软件函数。该函数称为i s r ( i n t e r r u p ts e r v i c er o u t i n e 中断服务例程) 。为了获取i d t 的内存地址,必须读取i d t r ( i n t e r r u p td e s c r i p t o r t a b l er e g i s t e r ,中断描述符表寄存器) ,这由s i d t 指令完成。而l i d t 指令用于修 改i d t r 的内容,因此,b o o t l d t 可以创建一个新的中断表并替换c p u 的中断表, 6 第二章b o o t k i t 相关操作系统原理 或者修改原i s r 的地址,实现对中断处理流程的控制。 t ( i n t e r r u p tv e c t o rt a b l e ,中断向量表) ,c p u 在执行指令时因为检测到预 先定义的某个( 或多个) 条件而产生的同步事件( 如除法指令的除零错误) ,称之 为内中断。c p u 收到中断信息后,需要对中断信息进行处理,而用来处理中断信 息的程序称为中断处理程序。所谓中断向量就是中断处理程序的入口地址,而t 就是中断处理程序入口地址的列表【2 5 1 。 s s d t ( s y s t e ms e r v i c ed i s p a t c ht a b l e 系统服务调度表) ,用于查询处理特定系 统调用的函数【2 8 】。该表可以基于系统调用编号进行索引,以便定位函数的内存地 址。k e s e r v i c e d e s e r i p t o r t a b l e 是由内核导出的表。该表拥有一个指针,指向s s d t 中包含n t o s k m l e x e 实现的核心系统服务的相应部分,它是内核的主要组成部分。 通过公开的变量k e s e r v i c e d e s c r i p t o r t a b l e ,在内核程序中可以通过数据结构之间的 关系,找到k i s e r v i c e t a b l e ,然后从k i s e r v i c e t a b l e 中查找任何一个n t o s k r l n e x e 实现的系统服务的入口地址。 2 1 3 控制寄存器 除了系统的各个表之外,还存在着一些控制c p u 重要特性的特殊寄存器。 b o o t k i t 可以对这些寄存器加以利用。 控制寄存器包含一些控制处理器如何运作的数据位。例如,禁用内核中内存访 问保护机制的一种常见方法就是修改控制寄存器c r o 。c r 0 中的写w p ( w r i t e p r o t e c t 写保护) 位控制是否允许处理器写入标记为只读属性的内存页 2 7 1 。该位设 置为0 的话,会禁用内存的保护机制。这对打算向操作系统的数据结构中写入信 息的b o o t l d t 来说是非常重要的。 另外还有4 个控制寄存器用于管理处理器的其他功能【2 9 】:c r l 是未使用的或 未在文档中说明。c r 2 当处理器处于保护模式时用于存储上一个导致页故障的地 址。c r 3 存储页目录的地址。c r 4 处理的事务包括何时启用虚拟8 0 8 6 模式,即何 时在w i n d o w sn t 上运行旧的m s d o s 程序。若启用了该模式,c p u 将自陷( 自 陷的概念和原理见参考文献 2 6 】) c l i 、s t i 和i n t 等特权指令。 还有个e f l a g s 寄存器也是重要的。首先,它处理陷阱标志 2 9 1 。如果设置了该 标志,处理器将步进执行。b o o t l d t 可以使用诸如步进执行之类的特性来检测调试 器是否正在运行或向病毒扫描软件隐藏自身【l 】;通过清除中断标志,就可以禁用中 蝌2 6 1 。另外,还可以通过i op r i v i l e g el e v e l 来修改大多数基于i n t e l 的操作系统所 7 电子科技大学硕士论文 采用的基于r i n g 的保护系统【2 6 】。 2 1 4 进程与线程 进程和线程都是由操作系统所管理的程序运行的基本单元,系统利用该基本单 元实现系统对应用的并发性。进程通常被定义为一个正在运行的程序的实例,它 由两部分组成:进程内核对象和地址空间【2 6 】。进程内核对象是操作系统用来管理 此进程的信息块。地址空间包含所有可执行模块的代码和数据,以及动态分配的 内存空间( 如线程堆栈和堆的分配空间) 。 线程是进程地址空间中代码的具体执行者,w i n d o w s 内核基于线程而不是进程 的数量来进行系统任务调度的。进程可拥有一个或多个线程,由线程负责执行进 程地址空间中的代码,同一个进程中的多个线程之间可以并发执行。 在w i n d o w s 内核中,进程和线程结构的关系如图2 2 所示: 图2 2w i n d o w s 内核中进程和线程结构关系 其中,k t h r e a d 和e t h r e a d 是线程结构,k p r o c e s s 和e p r o c e s s 进程 结构,进程与线程内核结构中记录了与该进程或线程相关所有内核信息 ( e t h r e a d 、e p r o c e s s 内核结构见参考文献【2 8 】) 。每个进程可能包含多个线 程,但每个线程都只能属于某一个进程。进程与线程的内核结构中都有值域可以 用来索引相互在系统内核中的结构,如:k p r o c e s s 中的t h r e a d l i s t h e a d , k t h r e a d 中的p r o c e s s 。k t h r e a d 中有一个域s e r v i c e t a b l e ,它指向了系统服务 描述符表k e s e r v i c e d e s e r i p t o r t a b l e ,通过这个指针,线程就可以访问到所有的系统 8 第二章b o o t k i t 相关操作系统原理 服务。e p r o c e s s 中有一个域d i r e c t o r y t a b l e b a s e ,它存储了该进程的页目录的物 理地址,也就是该进程c r 3 的值。 2 1 5 驱动程序 将代码植入内核中的直接方式是使用可加载模块,即成为设备驱动程序或内核 驱动程序【2 9 1 。大多数现代操作系统都允许加载内核扩展模块,以便第三方硬件如 存储系统、显卡、主板和网络硬件的制造商能够添加对自己产品的支持。w i n d o w s 操作系统提供了关于将驱动程序引入内核中的文档和支持( 相关文档可见参考文 献 3 1 】) 。这种方式也是我们将代码植入内核所采用的途径( w i n d o w s 驱动程序的 开发技术可见参考文献 3 2 】) 。 驱动程序运行在内核空间,它要响应用户空间进程的用户请求,对设备进行操 作。几乎所有的硬件设备都存在驱动程序链。最低层驱动程序处理对总线和硬件 设备的直接访问,更高层的驱动程序处理数据格式化、错误代码以及将更高层请 求转化为更细小更有针对性的硬件操作细节转发给下层的驱动程序。 内核驱动程序工作流程的模式如图2 3 所示。 用 内 用户应用程序 用户虚拟 i o 功能调用地址空间 2 g b r 虚拟 1 ” 中断门 i 地址 亥空间 空间 0 - - 4 g b , 内核虚拟 系统服务调度程序 地址空何 2 g b i 内枋桑统髓备甬精1 j 最上层驱动程序的 i 传递i f 一 i r pm j + 派遣例程 p 哟管理器

温馨提示

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

评论

0/150

提交评论