




已阅读5页,还剩71页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
硕士学位论文基于行为监测的Anti-R/Bootkit的研究与实现研究与实现 摘 要Rootkit是一种新型的恶意程序程序或程序集,设计的目的是用来秘密的控制被攻占的计算机的行为。通过隐蔽后门程序或其他类似的工具程序,使得这些工具程序能在指定计算机上长期非法存在;同时当用户查询计算机的当前状况时,通过隐藏相关信息的方法来欺骗用户,使用户相信此计算机未受到侵害。Bootkit是继承自Rootkit内核权限获取和自我痕迹擦除技术的Rootkit高级发展形式,对系统启动和内核准入安全提出了最新挑战。由于Rootkit/Bootkit(R/Bootkit)属于信息安全攻防的新型技术亮点和潜在的危险变种,当前业界和学术界竞相公布出各自富有特色研究项目。本文的主要工作和特色如下:1. B/Rootkit行为剖析以及预防监测的技术瓶颈的提出深入探索当前主流B/Rootkit的危害原理以及技术要点实现,以及主流Anti-R/Bootkit在行为判断上过多依赖用户选择的现状,指出了恶意进驻内核这个行为特征提取是Bootkti/Rootkit防范与检测的技术瓶颈。2. 行为特征的形式化描述语言的提出为了统一且完整描述R/Bootkit的各种行为以及子行为彼此间内在的关联关系,我们定义出形式化描述语言规范,以描述出该恶意行为特征。3. 基于恶意进驻内核行为特征的Anti-R/Bootkit原型系统的设计与实现在此基础上,利用该形式化描述语言规范和行为策略,我们设计并实现了一个基于恶意进驻内核行为特征的Anti-R/Bootkit原型系统。在和同类商业化的Anti-R/Bootkit系统的比较中,显示出较优的自主识别能力以及较好的未知R/Bootkit预防能力。本文最后提出了R/Bootkit和Anti-R/Bootkit对抗中新的发展趋势,并介绍了下一步的工作方向。关键词:Rootkit,Bootkit,行为特征,布控,优先启动,进驻内核,形式化描述,Behavior Detection(BD)*本论文工作得到电子信息产业发展基金(操作系统安全加固软件研发及产业化 文号:财建2008329,工信部运200897)的支持,在此表示感谢。AbstractAs a new kind of malware sets, Rootkit has been designed to control the behavior of the hijacked computer secretly. The tool program can survive illegally on the designated computer for a long time through covert backdoors or similar program which can also make the user believe that his computer is away from inbreak by hiding key relative information while the user consults the current status of his computer. As an advanced form of Rootkit inheriting the kernel-level privilege exploitment and self-concealment technology, Bootkit has interposed a new challenge towards system boot and kernel entrance safety. Because Rootkit/Bootkit(R/Bootkit) belongs to potential dangerous mutation with new technoloy in information security field, both the industry line and the academe have published their featured research projections.The major contribution and feature of the thesis is as follow:1. R/Bootkit behavior analysis and the extraction of the technological bottle-neck of the prevention and detection for R/BootkitWe proposed the behavior feature of entering into kernel maliciously as the bottle-neck of preventing and detecting R/Bootkit throught exploring the hazard principle and technological key point of current major B/Rootkit and the weakness of relying on the user choice when judging the behavior intention for major Anti-B/Rootkit.2. Definition of the formal description of the behavior featureWe have defined a formal description language to descript the internal relationship between every behavior and sub-behavior in gereral and in common for behavior feature description.3. The design and implementation of Anti-R/Bootkti prototype system based on the behavior feature of malicious entrance into kernelOn this base, we have designed and implemented a set of Anti-R/Bootkti prototype system based on the behavior feature of malicious enterance into kernel through utilizing the behavior rules and policy descripted by the language mentioned above. This prototype presented better independent identification ability and prevention ability towards unknown R/Bootkit compared with the same kind of commercial Anti-R/Bootkit system.At last we have proposed the new development trend between R/Bootkit and Anti-R/Bootkti and introduced the further work foreground.Keywords: Rootkit, Bootkit, behavior feature, Hook, boot ahead, enter into kernel, formal description, Behavior Detection(BD)* This work is supported by Electronic Information Industry Development Fund (Operating System security reinforcement, CaiJian2008329, GongXinBuYun200897).目录摘要IAbstractIII目录V插图目录和表格目录VII第 1 章绪论11.1引言11.2研究现状与意义21.3论文主要工作与组织4第 2 章R/Bootkit关键技术研究62.1引言62.2Rootkit攻击原理62.3Rootkit分类72.4R/Bootkit技术研究72.4.1Rootkit 关键Hook技术72.4.2Bootkit启动劫持技术122.5本章小结15第 3 章行为语义抽取和形式化描述研究163.1引言163.2R/Bootkit行为特征分析163.2.1典型Rootkit Klog行为剖析163.2.2典型Bootkit行为剖析203.2.3行为特征提取233.3形式化描述语言253.3.1形式化语言定义253.3.2恶意进驻内核行为特征形式化语言描述293.4本章小结30第 4 章基于行为监测的Anti-R/Bootkit的设计与实现314.1相关技术基础314.1.1进程314.1.2驱动程序314.2设计与实现404.2.1优先启动404.2.2探针布控474.2.3行为语义解析模块514.2.4编译器模块544.3实验结果评估554.3.1评估思路554.3.2实验环境554.3.3功能评估564.4本章小结59第 5 章全文总结605.1主要工作和特色605.2后续工作研究60参考文献61在读期间发表的学术论文与取得的研究成果64致 谢65插图目录和表格目录图 21 执行路径截获8图 22 Windows PE 文件格式示意9图 23 IRP挂接11图 24 Windows启动流程13图 31 Klog 植入感染示意图17图 32 BIOS内存布局21图 33 Windows引导过程执行流程24图 34 规则范式库框架简图29图 41 App-Sys模式的总体设计32图 42 IOCTL码格式34图 43 IRP结构34图 44 IRP固定头部35图 45 I/O 堆栈单元数据结构36图 46 驱动程序对象的属性37图 47 设备对象的数据结构38图 48 设计框架图40图 49 PBD劫控原理43图 410 劫控点函数调用堆栈44图 411 修改PBD磁盘镜像45图 412 PBD Anti-Rootkit框图46图 413 Windows系统调用机制48图 414 SSDT Hook51图 415 行为语义解析模块52图 416 状态迁移发现行为特征53图 417 行为解析模块执行流程54图 418 编译器模块55藏锋者专业网络安全免费论文:/lunwen/表 41 优先启动对比结果46表 42 机器配置56表 43 横向比较对象56表 44 已知R/Bootkit评估57表 45 非RBootkit评估58表 46 不同加载方式评估58第 1 章 绪论1.1 引言作为成为20世纪最杰出的研究成果之一,Internet改变了人们生活方式和工作方式,改变了全球的经济社会结构,越来越成为人类物质社会的最重要组成部分。开放、灵活、丰富的应用是Internet的特色,但同时潜在地也带来了安全问题。由于越来越多的组织开始利用Internet处理和传输敏感数据,与此同时在Internet上也到处传播和蔓延着攻击方法和恶意代码,使得连入Internet的任何系统都处于将被攻击的风险之中。在Internet安全事件中,恶意软件/代码造成的危害最为严重。恶意软件(Maleware)是非用户期望运行的、怀有恶意目的或完成恶意功能的完整的程序集合32 33 34。恶意代码(Malicious Code)含义与恶意软件相近,区别在于所描述的粒度不同, 是指用于描述完成特定恶意功能的代码片段。恶意代码正在成为信息战、网络战的主要手段,日益严重的恶意代码威胁,新型威胁和组合式威胁的爆炸式增长让防护工作变得复杂起来。例如,AV-Test GmBH表示,1998年安全厂商共收集到1738种独特的威胁样本。那个时候,安全专家监测到近30种签名,因为样本很容易组合形成特征码。10年以后,恶意软件样本数量攀升至177615种,仅仅2008年前两个月就报告了110万种独特样本。根据趋势科技全球防病毒研发暨技术支持中心TrendLabs的发现,从2005年到2008年为止,TrendLabs报告网络威胁增长了2355%。TrendLabs研究人员也预测,如果威胁数量继续以现在的速度增长,那么2015年将会出现233亿种独特威胁。Rootkit作为恶意程序的子集,用于实现自身及系统中特定资源和活动的隐藏,破坏可信任计算机的完整性1。经常用来隐蔽后门程序或其他类似的工具程序,使这些工具程序能在指定计算机上长期非法存在。当用户查询计算机的当前状况时,通过隐藏相关信息的方法来欺骗用户,使用户相信此计算机未受到侵害。Bootkit是继承自Rootkit内核权限获取和自我痕迹擦除技术的Rootkit高级发展形式。Bootkit通过感染可引导的外设固件和关键系统文件,驻留在整个系统的启动过程,获取系统控制底层权限并且擦除自我存在痕迹,从而为网络恶意代码的进一步攻击行为提供隐蔽、可靠、持久的执行环境。国际知名的信息安全厂商卡巴斯基实验室去年发表了题为卡巴斯基安全公告:2008恶意软件发展情况的报告,在这个报告中,卡巴斯基表示,2009年度的恶意软件发展情况将持续恶化。2008年对整个反病毒行业以及整个信息安全产业都产生了重大影响的安全事件主要为Rootkit的传播,以及针对在线游戏产生的恶意程序及僵尸网络。Bootkit这个概念自2005年eEye Digital安全公司的研究人员研究如何在系统启动时利用BIOS接入windows内核的BootRoot项目中被第一次提出以后,也越来越为黑客所钟爱,最近更被全球知名的杀毒厂商卡巴斯基在其年度报告中列为2008年度互联网安全的重大挑战。1.2 研究现状与意义 Rootkit按照运行环境的不同,主要分为两类 :内核模式Rootkit和用户模式Rootkit。内核模式Rootkit具有内核态的权限,以非常底层的方式存在于操作系统中;用户模式Rootkit则运行在权限较低的用户态中。内核模式Rootkit比用户模式Rootkit更具隐蔽性,更难被检测。按照隐藏的内容来分,Rootkit隐藏的部件包括文件、目录、进程、注册表项、网络端口、设备驱动器等所有使用户判定系统异常的系统模块。Bootkit是继承自Rootkit内核权限获取和自我痕迹擦除技术的Rootkit高级发展形式,对系统启动和内核准入安全提出了最新挑战。由于Bootkit/Rootkit(R/Bootkit)属于信息安全攻防的新型技术亮点和潜在的危险变种,当前业界和学术界竞相公布出各自富有特色研究项目。如安全人员John Heasman利用ACPI(Advanced Configuration and Power Interface)操作BIOS的新型Rootkit进行过探讨27,这是一种特殊的利用ACPI机制存在的BIOS Rootkit;Darmawan M S a.k.a Pinczakko 发表过一系列的关于Award BIOS文件进行逆向改造的文章28;John Heasman还就PCI设备(如显卡、网卡等设备)可能存在的Rootkit(其植入PCI设备中,特性类似于植入BIOS芯片的Rootkit)进行过讨论29;还有Kris Kaspersky在其专著中30也编写专门章节来就BIOS Rootkit的实现原理进行阐述等等。Shawn Ebleton等在文献31第一次发表了基于SMM的跟平台无关的bootkit的实现思路;国内的安全研究员Mj0011在文献26中实现了基于预启动驱动方式的Tophet Bootkit的思想。目前针对以恶意程序的预防、检测技术主要有以下几种:1. 扫描技术:作为目前商用恶意代码检测软件使用的主要方法之一,特征码扫描是检测己知恶意代码的最简单的方法2425。扫描原理是打开被检测磁盘文件、关键内存区域、网络邮件等,扫描其中是否含有特征数据库中的恶意代码特征串,如果含有,则判断该文件含有恶意代码。其中特征数据库是在确定某个程序是恶意代码后,通过静态反汇编或动态调试,手工提取其中不同于其他程序的指令片断组成的特征数据库。特征码扫描的主要优点是误报率低,检测准确。但是恶意程序的搜集很困难,面对层出不穷的恶意代码,需要建立一个庞大的恶意代码的搜集网络才能有效搜集;即便得到恶意代码样本,由于其特征码的提取需要专业人士人工完成,费时费力。由于对于未知的不在特征数据库中的恶意代码无能为力,越来越多的恶意代码通过使用变形、加壳、加花、多态等技术可以轻松避过特征码扫描。2. 检测技术:针对目前出现的各种R/Bootkit隐藏的非常巧妙的各种内核恶意代码,目前为止没有一种通用的高效方法来进行检测,主要的检测方式有:(1) 基于特征码的内核内存扫描检测该方法的检测原理是通过在内核内存中匹配具有特征码的内存块来检测 Rootkit,但它通常只能检测出已知特征码的Rootkit。(2) 启发式扫描检测该方法的检测原理是通过发现非常规的系统行为来寻找 Rootkit 的隐藏痕迹。但是由于通常不可避免会挂钩系统频繁调用的关键处理函数,对操作系统性能有较大影响。目前比较成熟的启发式扫描检测的应用实例是 VICE 和 PatchFinder等。(3) 基于内存完整性校验的检测该方法的检测原理是假设关键的系统部件譬如Ntoskrnl.exe的磁盘PE文件是可信的、完整的,通过对比磁盘文件中相应部分来校验内存部件的完整性。虽然对于采用挂钩不同层次的 API调用、 挂钩 SSDT(系统服务描述表)以及挂钩IDT等技术的Rootkit具有较好的检测效果,但它一般只能判断Rootkit 的存在,而并不能精确检测出 Rootkit 的位置,也较难区分采用类似技术的安全防护程序和Rootkit。(4) 基于交叉视图的检测该方法的检测原理是通过比较不同途径所枚举到的系统信息,譬如文件目录列表、网络连接列表、如进程列表、SSDT、IDT等关键系统部件,根据其中的差异来发现Rootkit的隐藏痕迹。虽然通过枚举系统信息的途径较为可靠通用,但是监测的可靠性依赖于不同途径的可信性。3. 主动防御技术:主动防御技术可以在新的未知的安全威胁破坏计算机之前检测到并且排除之。其实现原理在于定义程序执行的威胁程度规则列表,通过由某种应用程序或进程执行的行为序列来辨认一个在计算机中的新威胁。在实际运行过程中,通过全面监控运行在计算机上的系统注册表、系统文件、网络接口、设备等关键系统模块的系统调用行为,每次截获到可疑的潜在进程操作时根据操作所关联的安全属性,查询规则列表来决定此次操作是否被允许或者禁止。用户可以通过增加、删除或编辑规则来修改规则列表来阻拦程序运行或者授予程序执行权限。而由于缺乏关联行为序列的分析与判断,这种方式存在误报率高和自主识别率的问题。例如:有些恶意程序会伪装成正常干净的程序,进行逃避监控;还有的软件会用到类似恶意程序的方式,进行安装和调用,以获得更高一级的加载权和启动权。因于二者行为的混淆,往往要求用户自己通过经验判断来决定放行还是拒绝,因此容易造成比较高的误报率。1.3 论文主要工作与组织目前针对以恶意程序的预防、检测技术或多或少都存在本身固有的缺点,本文通过深入研究主流R/Bootkit的设计思路以及内核准入关键技术剖析,提出基于行为特征监测的Anti-R/Bootkit的设计思路以及实现方式,以有效弥补主流恶意程序预防、检测技术的不足。本文主要工作和创新之处在于:1. 提出了Bootkti/Rootkit防范与检测的技术瓶颈本文深入探索当前主流B/Rootkit的危害原理以及技术要点实现,以及主流Anti-R/Bootkit在行为判断上过多依赖用户选择的现状,提出了恶意进驻内核这个行为特征提取是Bootkti/Rootkit防范与检测的技术瓶颈。2. 提出了形式化描述语言规范为了统一且完整描述系统运行包括恶意代码的各种行为以及子行为彼此间内在的关联关系,我们参考自然语言叙事逻辑的主语、谓语、宾语结构还有计算机体系中实际的指令格式的定义的操作码、目的操作数、源操作数,提出了一套以执行事务的概念为基础的形式化描述语言规范,完备描述出该恶意行为特征。3. 设计与实现了基于恶意进驻内核行为特征的Anti-R/Bootkit原型系统在此基础上,利用该形式化描述语言规范和行为策略,我们设计并实现了一个基于恶意进驻内核行为特征的Anti-R/Bootkit原型系统。在和同类商业化的Anti-R/Bootkit系统的比较中,显示出较优的自主识别能力以及较好的未知R/Bootkit预防能力。本论文共分为五章,内容组织如下:第一章绪论。介绍当前针对以Rootkit/Bootkit为代表的新的网络安全威胁的预防与检测的迫切形势,以及目前学术界的相关项目研究和主流商用产品的对抗方式。第二章R/Bootkit关键技术研究。由于R/Bootkit之所以较传统恶意软件更为隐蔽底层难以预防、检测,是在入侵感染技术上有所突破,本章深入研究了R/Bootkit的攻击原理和分类情况以及在实现技术上的关键点。第三章行为语义抽取&形式化描述研究。通过剖析典型的Rootkit/Bootkit的入侵感染行为,总结出R/Bootkit恶意进驻内核这个行为特征可以作为行为分析的特征依据,为此定义并使用形式化描述语言描述行为特征。第四章BD:Anti-R/Bootkit的设计与实现。设计并实现了一个基于恶意进驻内核行为特征的Anti-R/Bootkit原型系统BD(Behavior Detection)。在和同类商业化的Anti-R/Bootkit系统的比较中,显示出较优的自主识别能力以及较好的未知R/Bootkit预防能力。第五章对本文的工作进行了全面的总结,并提出了有待进一步深入研究的几个方面。第 2 章 R/Bootkit关键技术研究2.1 引言Rootkit是攻击者在入侵系统后用来保持系统的超级用户访问权限,创建后门和隐藏攻击痕迹等常采用的技术,代表了恶意软件在创建后门和隐藏攻击痕迹等高级入侵技术上的新兴发展趋势,而Bootkit则是Rootkit在劫持系统启动技术上的高级发展形式。由于R/Bootkit之所以较传统恶意软件更为隐蔽底层难以预防、检测,是在入侵感染技术上有所突破,因此分析R/Bootkit的攻击原理、分类R/Bootkit、研究R/Bootkit的关键技术点有助于在R/Bootkit和Anti-R/Bootkit的技术对抗中占据优势。R/Bootkit已经入侵感染了各个主流的平台譬如Linux、Unix、Mac、Windows等,但考虑到危害的广度和深度等因素,本文优先考虑的是Windows平台下的R/Bootkit技术。2.2 Rootkit攻击原理 1. 收集目标系统信息攻击者在攻击某个系统之前,会使用各种社会工程学方法探查目标系统的型号、帐户弱点、系统以及应用程序等未打补丁的漏洞等。2. 获得超级用户访问权限攻击者在收集了目标系统的足够信息,检测到了目标系统的可供利用的漏洞后,就会对目标系统发起攻击。为了获得目标系统的超级用户访问权限,攻击者可能先获得普通用户访问权限,然后再利用目标系统的本地漏洞提升到超级用户访问权限;或者直接利用已经查明的网络服务的漏洞获得超级用户访问权限。 3. 在目标系统上安装R/Bootkit攻击者在获得超级用户访问权限后,攻击者就可以在目标系统上安装Rootkit从而绕过或者直接关闭防护系统、创建隐蔽通道、隐藏攻击行为。如果是Bootkit的话可能会篡改某些系统部件,然后强制系统重启,从而在系统启动阶段劫持系统。4. 控制目标系统攻击者在目标系统上安装R/Bootkit后,就可以持久的控制目标系统,对其进行各种攻击而不被目标系统的管理员察觉。例如:利用目标系统作为傀儡机攻击其它目标系统,使目标系统拒绝提供某些服务等等。2.3 Rootkit分类根据Rootkit运行所在的操作系统层次67,可分为应用级Rootkit和内核级Rootkit。应用级Rootkit是指入侵到操作系统应用层的工作在Ring3级别的Rootkit,通常会替换或修改一些系统工具、信息收集程序等来执行特定攻击任务。比如提取运行的进程、文件系统的内容、网络连接状态等信息,以及安装网络嗅探器(Sniffer ) 来获取一些敏感信息(比如其它系统的用户名和密码等)。目标是重新获得更多的用户访问权限和隐藏攻击痕迹,一般不会对操作系统的其它应用服务造成影响。内核级Rootkit是指入侵到操作系统内核层的工作在Ring0级别的Rootkit,通常会篡改、过滤任何感兴趣的底层数据结构,比如中断处理函数、系统调用、文件系统、驱动设备、句柄管理器、对象管理器等以伪造虚假的底层系统信息给应用层从而达到隐蔽感染痕迹、维持持久后门等目的。由于拥有对CPU的最高操作权限,可直接操作硬件设备,无内存访问限制,不仅可以实现应用级Rootkit无法完成的隐藏功能,还可以逃避任何应用层的检测,预防和检测的难度更大。2.4 R/Bootkit技术研究根据Rootkit 实现隐藏的方法可分为两类8:一类是通过修改应用程序调用系统函数的执行路径,劫持正常程序及系统函数调用的执行路径,篡改函数调用函数的返回值以达到向用户隐藏攻击信息的目的;一类是通过修改系统内核数据结构,当用户程序向内核查询信息的时候,内核系统函数查找了被 Rootkit 篡改的内核对象,错误地返回了隐藏攻击信息的结果。2.4.1 Rootkit 关键Hook技术 执行路径劫持所谓可执行路径就是程序操作从用户态到核心态包括环境切换所执行代码的序列。对于属于某个操作的任何可执行路径(代码序列),理论上都可以通过Hook(钩挂、挂接)技术将控制权导向额外的拦截代码,经过附加处理后再跳转到原来的执行路径。典型的执行路径截获全景图如图2-1所示:图 21 执行路径截获 而根据被替换代码在操作系统中所处的优先级级别的不同,可执行路径劫持可分为:用户级Hook 和内核级Hook。1. 用户态Hook 技术是指被替换的API 函数处于用户态DLL或者非核心驱动程序中。常见的方式有:(1) 代理DLL钩挂代理DLL(也称为“特洛伊DLL” ),工作原理是直接用重写的DLL文件来替换系统中原有的DLL,并将原DLL改名并且保证重写的DLL的IAT(Import Address Table )和原DLL 的EAT(Export Address Table)之间存在一个一一映射。系统调用到需Hook的API,就跳转到代理DLL中相应的API入口,执行了额外的恶意代码截获并处理特定的消息之后跳转到原DLL中的API运行。(2) 修改Call 指令采用直接修改代码的方式来实现挂接。其基本思想是,程序装入内存后,通过搜索程序的地址空间,找出调用目标API 函数的CALL指令,然后修改该CALL 指令后的函数地址,从而实现挂接。(3) 修改函数输入表(IAT,Import Address Table)该方法基于Windows PE 文件。PE 格式是微软Win32 环境可执行文件(包括.EXE、 .DLL 、.VXD、 .SYS、 .VDM 等)的标准格式,基本结构如图2-2所示:图 22 Windows PE 文件格式示意idata 节中包含函数输入表,IAT中记录着该文件运行中需调用的所有链接库,以及链接库中需调用的所有库函数。PE文件运行时,文件自身和IAT中记录的链接库都加载到内存,将调用导入函数的指令和函数实际所处的地址联系起来,以后就通过 IAT来调用这些函数。IAT Hook的原理是:在进程加载时修改 IAT,将要 Hook的API函数地址改为自定义函数的地址。这样,进程每次调用此函数时,其实执行的是Rootkit代码,然后再跳转回原来的正常代码。(4) 修改函数输出表(EAT,Export Address Table)EAT存在于PE文件中的edata节,保存了可执行文件(如DLL 文件)的导出的可供其他模块来调用的函数和公共变量,包括函数名称和地址等。通过替换Windows 系统某些重要DLL中的输出函数地址,即可实现目标函数的挂接。(5) 修改API 函数常见修改API 函数的方法:a) 通过某个CPU 控制转移指令(如CALL 或JMP) 修改目标API 的头几个字节;具体操作如下19:找到目标API 函数在内存中的地址,然后修改这个API 函数前几个字节(修改前需另外开辟空间存储被修改的字节),把它改为跳转到替换API 函数的JMP指令。取消API 函数的挂接时,取出事先保存的字节,并将它们放回挂接函数的开头即可。b) 通过中断指令(Int 3)代替目标API 第1 个字节。通过Int 3 产生异常,截获异常实现挂接API。(6) 其它技术除了以上技术,用户态布控技术还包括:内存映射技术;dll插入技术,如远程线程插入,内存映射文件插入、调试程序插入等;2. 内核级Hook46用户级Hook 比较简单,但容易被Rootkit之类的隐藏植入工具轻易绕过。如果将挂接深入到系统内核,使它与检测工具处于相同的运行环境,将极大的提高挂接的深层布控效果。常见的方式有:(1) 修改系统服务分配表(System Service Description Table,SSDT)系统调用是操作系统内核向应用程序提供的操作硬件设备、请求内核服务的接口。系统调用接口位于用户态与核心态之间,应用程序通过系统调用向操作系统内核请求服务,操作系统内核完成服务后将结果返回给应用程序。系统服务调度表中存放了所有系统服务函数的入口地址,在系统服务调用过程中,系统通过服务号到系统服务分配表中查找对应的中断服务过程的地址,到系统服务参数表(System Service Parameter Table,SSPT)中得到调用的参数,然后执行中断服务过程。通过替换系统服务分配表中某些服务号对应的中断服务过程的地址,就可实现对指定API 函数的挂接20。(2) 修改中断描述符表(Interruption Descriptor Table,IDT)所谓中断,是一个过程,即CPU在正常执行程序的过程中,遇到外部内部的紧急事件需要处理,暂时中断(中止)当前程序的执行,而转去为事件服务,待服务完毕,再返回到暂停处(断点)继续执行原来的程序。为事件服务的程序称为中断服务程序或中断处理程序。每个中断用一个0-255 的数字标识,Intel 称这个数字为向量。中断描述符表是一个有256 个入口的线性表,每个IDT的入口是个8字节的中断门描述符指向相应的中断处理过程。当中断发生时,CPU 会根据中断向量和中断描述符表中的值,转移到相应的中断处理程序。IDT钩挂的原理是:首先保存出特定的中断向量的ISR,然后直接修改该中断向量的ISR为自定义的函数,每当这个中断向量对应的中断产生时,就会调用自定义的函数。由于我们自定义的函数里面执行完我们的功能后再跳转到原ISR处执行。(3) SYSENTER指令钩挂由于之前的int2e系统调用机制,涉及到的Interrupt/ExceptionHandler的调用都是通过call/trap/task这一类的gate来实现的,这种方式会进行栈切换,并且系统栈的地址等信息由TSS提供,可能会引起多次内存访问(来获取这些切换信息),系统开销较大。SYSENTER/SYSEXIT这对指令汇编指令作为快速系统调用机制的一部分是在PentiumII处理器及以上处理器中提供的。SYSENTER指令钩挂的原理是:首先Ntdll 加载相应的请求服务号到EAX 寄存器中,同时EDX 寄存器存贮当前的栈指针ESP,然后Ntdll发出SYSENTER 指令,该指令转移控制权到寄存器IA32_SYSENTER_EIP 存贮的地址中21,通过修改这个地址,可实现相应的挂接。(4) 修改IRP (I/O Request Packet) 函数表Windows驱动程序由一组例程组成,这些例程在处理I/O请求的不同阶段时被调用。其中分发例程(dispatch routines)负责处理不同种类的IRP,实现打开、关闭、读、写 等主要功能。修改驱动程序的函数表,将要Hook的分发例程的入口地址替换为新的IRP处理函数,在其中的Rootkit恶意代码负责截取相应IRP进行额外处理,经过信息过滤之后再调用原来的IRP处理函数。示意的IRP挂接如图2-3所示:图 23 IRP挂接(5) 分层驱动HookWindows的驱动程序模型采用分层栈式结构。对设备的访问请求从驱动栈顶开始,处理后再传递到下一层驱动。这就方便了系统的扩展,当需要新功能时,只要编写新的驱动程序,并指定其在驱动栈中的位置即可,无须修改原有系统。而完成例程(completion routines)在下层驱动处理完IRP返回时被调用,把Rootkit代码设置为完成例程,可以在不修改驱动原有函数功能的情况下修改 IRP的返回结果。 直接内核对象操作技术(Direct Kernel Object Modify,DKOM)Windows系统经常要创建、打开和操作各种各样的内核对象,比如存取符号对象、事件对象、文件对象、设备对象、驱动对象、文件映射对象、I/O 完成端口对象、管道对象、进程对象等。每个内核对象只是内核分配的一个内存块,并且只能由该内核访问,应用程序由于特权级别的限制无法在内存中找到内核对象的数据结构,也就不能直接修改它们的内容。操作系统提供的很多具有Ring0特权级别的原始服务API (Native API)都是通过查询相应内核对象,从而返回相应结果的。DKOM的实质就是直接修改Native API 访问的内核对象,影响Native API 的返回结果实现某些隐藏功能。典型的使用DKOM技术的Rootkit是用来隐藏进程7。Windows系统枚举进程使用的是活动进程列表PsActive ProcessList,它是一个双向链表,每个结点对应一个进程的 EPROCESS数据结构,所有结点通过EPROCESS结构中的 ActivePr0cessLinks双向指针链在一起。要隐藏某个进程,只需修改对应 EPROCESS的ActiveProcessLinks,将其从链表中摘除即可。由于系统执行线程调度使用的是线程链表而不进程链表,因此这样的修改不会影响进程运行。2.4.2 Bootkit启动劫持技术 Windows启动流程Windows启动主要分为:BIOS、MBR、系统引导程序Ntldr、内核初始化。如图2-4所示:图 24 Windows启动流程1. BIOS启动在CPU上电之后,若由硬盘启动,则BIOS将硬盘的主引导记录(位于0柱面、0磁道、1扇区)读入物理地址0:7C00处,然后将控制权交给主引导代码。2. MBR启动MBR(Master Boot Record )主引导记录包含两部分的内容,前446字节为启动代码及数据,而从446(0x1BE)开始则是分区表,分区表由四个分区项组成,每个分区项数据为16字节,记录了启动时需要的分区参数。在CPU上电之后,若由硬盘启动,则BIOS将硬盘的主引导记录(位于0柱面、0磁道、1扇区)读入物理地址0:7C00处,然后将控制权交给主引导代码。主引导代码的任务包括:(1) 扫描分区表,找到一个激活可引导分区(bootable partition);(2) 找到激活分区的起始扇区(Boot sector);(3) 将激活分区的引导扇区装载到物理内存7C00处;(4) 将控制权交给引导扇区代码;3. OBR(OS Boot Record,系统引导记录)启动OBR找到Ntldr,把Ntldr读入物理地址2000:0000,Ntldr进32位,加载内核;4. Ntldr启动Ntldr是由两部分构成,一部分是被称作Su Module的16位汇编代码,另一部分则是名为Osloader的PE文件。Su module位于Ntldr的头部,Osloader紧随其后。OBR将Ntldr加载到物理地址2000:0000开始的地方,然后跳转到这个地址,将控制权交给Ntldr进行引导,而这个地址也就是Su的入口。Su的主要功能是为Osloader准备内存环境,包括GDT、IDT、打开保护模式(未分页)和将Osloader按编译时的虚拟地址移动Osloader等等。在MP(多处理器)版本的Ntldr中,Su还负责检测Osloader的完整性,如果它检测到Ntldr被修改,就会中止启动。至于Osloader,它的作用可以简单归纳为为内核准备执行环境,然后根据Boot.ini的设置将Windows内核、Hal.dll和其它Boot Driver加载进内存。Osloader最终会调用Osloader!(SystemEntry)(BlLoaderBlock)也即Ntoskrnl!KiSystemStartup真正启动内核。5. 内核启动Ntoskrnl和Hal模块作为内核会被加载驻留内存直到操作系统关闭。 Bootkit 劫持方式1. BIOS Hook当计算机开机时,根据硬件特性就由CPU从主板的BIOS芯片内取得程序代码,用BIOS内部的程序代码获得控制权。从CPU内外部的检测设置、激活DRAM以及针对芯片组与各种外围设备做初始化设置之后,最后驱动软盘或硬盘,直到把操作系统加载成功,BIOS的开机引导工作就此告一段落,转向从事幕后的支持、协调工作,并帮助操作系统或应用程序,来处理外围设备沟通的各种操作。典型的如eeyebootroot,IceLord等。2. Ntldr 劫持Ntldr是Windows NT系列内核的Osloader,当开机以后BIOS载入MBR,MBR载入OBR,然后OBR载入Ntldr,并将执行权转交给Ntldr,最后再来启动内核。理论上讲Ntldr是最接近内核的,而且对Ntldr做Hook,可以避免针对各种外设的编码工作,提高通用性。3. SMM (System Management Mode)劫持SMM是Intel在386SL之后引入x86体系结构的一种CPU的执行模式,是IA32架构具备的四种运行模式之一(其他三种模式分别为实模式、V86模式和保护模式)。为了实现SMM,Intel在其CPU上新增了一个引脚SMI# Pin,当这个引脚上为高电平的时候,CPU会进入该模式。在SMM模式下一切被都屏蔽,包括所有的中断。SMM模式下的执行的程序被称作SMM处理程序,所有的SMM处理程序只能在称作系统管理内存(System Management RAM,SMRAM)的空间内运行。可以通过设置SMBASE的寄存器来设置SMRAM的空间。SMM处理程序只能由系统固件实现。SMM下可以执行一切特权指令,并且使得一切内存保护均失效。从某种意义上说,SMM是对系统进行监控的终极方法。SMM漏洞利用的致命之处在于它能将自身隐藏在SMM空间中,SMM权限高于任何其他运行模式,操作系统根本不知道系统何时进入SMM模式,也无法感知SMM模式曾经执行过, 不受任何操作系统控制、关闭或禁用。实际应用中唯一能确认SMM空间中运行代码的方法只有物理性的分离计算机固件。由于SMI优先于任何系统调用,任何操作系统都无法控制或读取SMM,使得SMM RootKit有超强的隐匿性。典型的如SMMPS/2Keyboardsniffer。4. 内核劫持内核属于PE文件,所有针对PE文件镜像的修改技术都可以属于内核劫持。典型的包括IAT Hook,EAT Hook,inline Hook等。2.5 本章小结由于R/Bootkit之所以较传统恶意软件更为隐蔽、底层,难以预防和检测,是在入侵感染技术上有所突破,为此本章研究了探索当前主流B/Rootkit的危害原理、分类方式、以及深入分析了其技术要点实现,从而为在R/Bootkit和Anti-R/Bootkit的技术对抗中占据优势提供技术上的支持。第 3 章 行为语义抽取和形式化描述
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年玉溪市中心血站招聘真题
- 鲁教版-八年级上册1-4单元-知识点及短语
- 情商考试题及答案
- 麻醉考试题及答案
- 中级育婴师模拟试题(附答案)
- 患者跌倒坠床报告与伤情认定制度培训试题及答案
- 高血压健康知识试题(含参考答案)
- 传染病防治及突发公共卫生事件应对知识考试题(附答案)
- 2025年房地产销售跨界合作与资源整合服务购销合同
- 2025女方权益优先离婚赡养协议范本
- 港口和码头基本知识培训课件
- 美容外科安全应急预案范文(3篇)
- 水利工程拦水坝建设方案实例
- 新学期+心动力+课件-2025-2026学年高二上学期开学第一课主题班会
- 6G多维度切片QoS保障-洞察及研究
- 老年人能力评估师考试题能力模拟题及答案
- 2025-2026学年外研版(三起)(2024)小学英语四年级上册教学计划及进度表
- 2025年安徽国控集团所属企业招聘7人笔试备考题库及答案解析
- 1.1认识社会生活(课件)- 2025-2026学年统编版道德与法治八年级上册
- 英语词汇学教程-全套课件-
- 儿童气管插管医学课件
评论
0/150
提交评论