Rootkit的检测与取证分析

上传人:z****2 文档编号:159525707 上传时间:2022-10-09 格式:DOCX 页数:10 大小:77.50KB
收藏 版权申诉 举报 下载
Rootkit的检测与取证分析_第1页
第1页 / 共10页
Rootkit的检测与取证分析_第2页
第2页 / 共10页
Rootkit的检测与取证分析_第3页
第3页 / 共10页
资源描述:

《Rootkit的检测与取证分析》由会员分享,可在线阅读,更多相关《Rootkit的检测与取证分析(10页珍藏版)》请在装配图网上搜索。

1、Rootkit 的检测与取证分析靳慧云1,王钢2(1浙江警察学院,浙江杭州310053;2铁道警官高等专科学校,河南郑州 450053)摘要:Rootkit是目前难以检测、清除、防范和破坏性强的恶意程序。通过分 析Rootkit的内核机制,给出检测Rootkit的基本方法,以应用于Rootkit防 范和取证分析。关键词:Rootkit; Rootkit检测;Rootkit取证分析TP393.08 : A1 Rootkit的概念Rootkit是一种能够以管理员身份访问计算机或计算机网络的程序。攻击者通 过利用已知的漏洞或口令破解而获得用户级访问,或利用其他手段,将Rootkit安装到被攻击的计算

2、机上。Rootkit安装以后,它将准许攻击者掩饰其 入侵行为,并获得对计算机的Root级或特权级的访问,在可能的情况下还可以 获得对网络上其它计算机的访问。2典型Rootkit的特点典型的Rootkit实现隐藏(如隐藏文件、进程、线程、端口、注册表、其他进 程等)、后门等远程控制的功能,它利用多种技术来操纵操作系统,其结果就 是用户无法利用普通的杀毒软件来检测和清除。典型的Rootkit具有以下特 点:1)隐藏文件或目录;2)隐藏运行的进程;3)隐藏TCP或UDP连接;4)程序执 行重定向;5)增加非授权用户权限;6来自Www.lw5U.com)改变一个运行进 程的UID/GID; 7)非授权

3、地、特权程序远程执行守护进程。联合使用程序执行重新定向和文件隐藏,入侵者能提供各种后门程序执行。由 于执行重定向是在内核级别进行的,文件检测工具不会发现程序文件被修改, 因此配置检测工具的路径环境中也不会发现任何异常。3 Rootkit潜在的威胁和攻击策略一般来说,Rootkit自身并不是恶意软件,它是恶意软件用来隐藏自己的一种 手段。Rootkit是攻击者用来潜藏自己的踪迹和保留Root访问权限的工具,但 经设计的Rootkit可能包括间谍软件和其它的程序,如监视网络通信和用户击 键的程序,也可以在系统中构建一个后门便于攻击者使用,还可以修改日志文 件,攻击网络上的其它计算机,或者改变现有的

4、系统工具以用逃避检测。Rootkit已被大多数的防毒软件归类为具危害性的恶意代码。通常,攻击者通过远程攻击获得Root访问权限,或者首先采用密码猜测或者破 译密码的方式获得系统的访问权限,进入系统后,再通过某些安全漏洞获得系 统的Root权限。攻击者会在侵入的主机中安装Rootkit.并经常通过R。otkit 的后门来检查系统能不能有其他的用户登录,如果只有攻击者登录,攻击者就 开始着手清理日志中的有关信息。攻击者通过Rootkit的嗅探器获得其他系统 的用户和密码之后,就会利用这些信息进行攻击。同时,用户无法在资源管理器中利用普通的文件查看程序来查找间谍文件,也 不能通过任务管理器或其它的多

5、数进程查看器来查看。同样地,在系统的启动 文件夹内或其它的启动位置中都无法找到其它。攻击者日益热衷于用Rootkit 隐藏间谍软件或病毒等,目的是避免被查杀,使用户们更容易遭受攻击,而一般的反间谍软件或反病毒扫描程序无法检测这种代码。专业Rootkit检测工具,也只能针对性地检测出少部分Rootkit程序。4 Rootkit的类型4.1 固化 Rootkits 和 BIOS Rootkits固化程序是储存于只读内存ROM中的程序,固化Roolkit(FirmwareRootkits)通常很小,使用系统硬件和BIOS创建顽固的恶意软件镜像。这种 Rootkit可以成为固化软件很隐蔽地隐藏起来,因

6、为人们通常并不检查固化代 码的完整性。如硬件的BIOS、处理器、打印机、图像卡等设备,运行固化代码 来执行特定的功能。固化Rootkit不是像通常修改用户级或核心层的软件。因 此,在这一层完整性检查是非常少有的。BIOS Rootkits将制定的代码植入到BIOS中,能够刷新BIOS,在BIOS初始化 的末尾获得运行的机会。重启对BIOS Rootkits没有任何作用、在硬盘上无法 探测到BIOS Rootkits,即使重新格式化硬盘或重新安装操作系统也不会对它 有任何影响。现有的安全软件将大部分的扫描时间用在了对硬盘的扫描上。4.2 内核级 Rootkits内核级Rootkits(Kerne

7、lland Rootkits)是通过修改内核、增加额外的代码、 直接修改系统调用表、系统调用跳转(Syscall Jump),并能够替换一个操作系 统的部分功能,包括内核和相关的设备驱动程序。现在的操作系统大多没有强 化内核和驱动程序的不同特性。这样,许多内核模式的Rootkit是作为设备驱 动程序而开发的,或者作为可加载模块,如Linux中的可加载模块或Windows 中的设备驱动程序,这类Rootkit极其危险,因为它可获得不受限制的安全访 问权。如果代码中有任何一点错误,那么内核级别的任何代码操作都将对整个 系统的稳定性产生深远的影响。内核级Rootkits -般特点:无进程;无端口、难

8、发现、难查杀、生存能力强。 与用户级Rootkit相比,内核级Rootkit的破坏性更大,而且它能够逃避任何 应用层的检测,使得预防和检测的难度更大。内核级的Rootkits极其危险,其原因在于它与操作系统处于同一级别,如此一 来,它就可以修改或破坏由其它软件所发出的任何请求。这种情况下,受感染 内核级的Rootkist的系统自身信任度降低,在对其进行检测时,要使用另外一 个可信任的系统及其安装的检测软件,并将受感染的系统加载为一个数据源进 行检测。4.3 用户态 Rootkits用户态 Rootkits(Userland Rootkits)是运行在 Ring3 级的 Rootkit,由于 R

9、ing3级就是用户应用级的程序,而且信任级别低,每一个程序运行,操作系 统给这一层的最小权限。用户态Rootkit使用各种方法隐藏进程、文件,注入 模块、修改注册表等。由于Rootkit技术变得越来越先进,其检测变得同样困 难。4.4 应用级 Rootkits应用级Rootkits可以通过具有特洛伊木马特征的伪装代码来替换普通的应用程 序的二进制代码,也可以使用Hook、补丁、注入代码或其它方式来修改现有应 用程序的行为。4.5 代码库 Rootkits代码库Rootkits可以用隐藏攻击者信息的方法进行补丁、Hook、替换系统调 用。从理论上讲,这种Rootkit可以通过检查代码库(在Win

10、dows平台中就是 DLL)的改变而发现其踪迹。实际上,很难检测一些应用程序和补丁包一起发行 的多种程序库中的Rootkit。4.6 虚拟化 Rootkits 与 Hypervisor Rootkits虚拟化Rootkit( Virtual Rootkits)是利用虚拟机技术的虚拟机Rootkit (是 模仿软件虚拟机形式的Rootkit)。这种Rootkit通过修改计算机的启动顺序 而发生作用,其目的是加载自己而不是原始的操作系统。一旦加载到内存,虚 拟化Rootkits就会将原始的操作系统加载为一个虚拟机,这就使得Rootkit能 够截获客户操作系统所发出的所有硬件请求。Hyperviso

11、r Rootkits是一种基于硬件或固化的Rootkit。它具有管理员权限的 管理程序,可以在支持硬件协助虚拟化和未安装虚拟化软件的系统上安装基于 Hypervisor的Rootkit。然后,这个基于Hypervisor的Rootkit将可以在比操 作系统本身更高的权限级别上运行。基于Hypervisor的Rootkit对攻击者的特 点是:合法内核模式代码降低了检测出攻击者Hypervisor模式代码的能力。它 是在硬件上运行的虚拟的环境,由于攻击者强行在真正的内核插入虚拟机,在 硬件上运行,因此,这常被误认为是内核Rootkits。在攻击者执行内核模式代码之前,Hypervisor Roof

12、kits不会运行。当一个系 统被Hypervisor Rootkits感染时,在该系统的Kernellan来自WwW.lw5u.c0md没有任何迹象,这是与Hypervisor Rootkits而不是真正的硬 件交互。因此,几乎是不可能从Kernelland、Userland和应用层检测到。在 Rootkit和Anti-Rootkit的对抗中,取决于对该Hypervisor层的检测和预 防,以及在哪一层安装了 Rootkit。谁先去接近硬件就是赢者。这意味着如果 用户运行基于Userland或Kernelland的Anti-Rootkit工具,无法检测到 HypervisorRoo tkits

13、,因为前者不是运行在真实的硬件上,但高于真正的硬件 虚拟机。5 Rootkits 检测许多取证工具不能发现Rootkit隐藏的信息,Rootkit的设计者绞尽脑汁利用 很多办法隐藏进程、隐藏文件、端口或句柄、注册表的项、键值等信息。1)系统调用表和内存保护、实现内核级钩子的方法,是Rootkit实现拦截、控 制、监视其他程序并过滤有关数据、并且达到隐藏Rootkit本身及其它程序的 目的技术方法。通过多种方法组合成了 Rootkit,如进程注入、分层驱动过滤 等。如果Rootkit在内核中修改了进程表,通过ZwQuerySystemlnformation函数、 CSRSS. EXE进程列举进程

14、表,可以检测出Rootkit的存在。检测Root kit可以绕过API提供的数据,直接从内核领域里读取进程列表,因 为所有进程在这里都不可能把自己隐藏起来。也就是说,内核始终拥有最真实 的进程列表和超级权限,只要能读取这个原始的进程列表,再和进程API枚举 的进程列表对比,便能发现Rootkit进程,由于这类工具也“越权”了,因而 对Rootkit进行查杀也就不再是难事,而Rootkit进程一旦被清除,它隐藏自 身的措施也就不复存在,内核就能把它显示出来了。进而查找Rootkit秘密植 入的恶意软件。 由于进程要生存在内存中,总是可以在内存中检测Rootkit。针对物理内存或特定进程的当前状态

15、创建完整内存映像,通过访问物理内存以进行分析,比如枚举所有进程及其句柄表。通过物理内存进行进程捕获进程,可以绕过进程中用来保护自己而使用的反调试例程;在未附加进程的情况下读取进程的虚拟内 存,受保护的进程对于被“捕获”将无可奈何;绕过调试寄存器( DR)Roo tki t;捕获加密前后进程中的通讯字符串;克服大部分的加壳程序,因为捕 获的进程都是处于未脱壳状态;在未接触磁盘的情况下获取被注入的DLL文 件。2)另一种基于内存的检测方法是在操作系统或进程中查找钩子。钩子存在于导人地址表(IAT)、系统服务调度表(SSDT)、中断描述表(IDT)、驱动程序的I/O请求报文处理程序(IRP)、内联函

16、数。需要分别设计程序查找钩子。Rootkit设计者常用的隐藏技术有:删除进程双项链上的进程对象(由于 Native API枚举进程是通过进程活动链表实现的)、修改系统调用表(SST)、 端口隐藏、隐藏文件。通过分析内容可以提取嫌疑信息,只要对系统产生影响,就有进程或线程,它们总是有启动的入口,Rootkit也不例外。3)可以通过读取Windows dispatcher scheduler所用的另一个链表来列出进 程。也就是说可以直接通过读取KiWai tInLis tHead和KiWa it Ou tLis tHead来列 举进程,这样就突破了修改双向链表隐藏进程的方法。不过这种检测方法不久

17、就被突破了,这就是替换内核的进程链表。可以使用HOOK SwapContext方法来检测隐藏进程,只要被处理器调度的线程就能被检测到。在Windows 2K/NT/XP系统中,处理器的调度对象是线程,在非SMP的Os中,某时间段内当前CPU处理的进程只可能有一个。每个进程分配特定的CPU时间片来达到执行目的,而系统的CPU时钟中断确定了每个进程分配 的时间片。也就是当系统CPU时钟中断触发时,产生的进程调度请求。处理器 时钟中断发生的时候会调用KiDispatchlnterrupt()比较当前进程分配的时间 片,如用完后会调用KiQuantumEnd()根据各线程优先级等信息用特定的调度算 法

18、选择新的线程(ETHREAD),然后将其返回值ETHREAD结构作为参数,来 调用SwapContext()设置ETHREAD和EPROCESS中的各项参数,并替换KPCR中 的相应结构完成线程切换,调度到另一个进程(EPROCESS)的线程(ETHREAD )继 续执行。SwapContex函数,将当前运行线程的上下文与重新执行线程的上下文的线程进 行交换,EDI寄存器中的值是下一个要交换进入的线程的指针,ESI寄存器中的 值是要交换出去的当前线程指针。将SwapContex函数的前导替换为指向Det our函数的5字节无条件跳转指令。De tour函数应该验证要交换进入的线程 (由EDI寄

19、存器指示)的KTHREAD指向一个正确链接到EPROCESS块。通过这种 方法可以检测到利用直接内核对象操作的技术隐藏的进程,利用SwapContex函 数也可以检测到通过Hook的方法隐藏的进程。可以说CPU的线程切换离不开SwapContext函数,当然,Rootkit所执行的线 程都会通过SwapContext函数来切换使之被CPU处理。而在这之后有人就提出 自己替换线程的调度就可以躲过这种检测。这种检测方法会占用很大的资源, 毕竟CPU的线程切换非常频繁。4)Rootkit如果通过修改系统调用来实现隐藏目的,那么肯定会与正常的系统 有所不同,当系统调用的路径发生变化的时候,我们通过之间

20、的对比分析,就 可以检测到 Rootkit 的存在。当然,这样做也是有缺点的。每次系统调用发生 时都要做检查,那么就像上面 HOOKSwapContext 一样。都会消耗系统的很多资 源。其二,实现起来有难度。还有就是反病毒的方法,就像对付病毒一样。不 过这样的方法很被动,而且未公开的 Rootkit 比较多,所以并不是非常有效。5)检测虚拟化Roockit的方法之一是观察翻译后援存储器(TLB)的变化,翻译后 援存储器是 CPU 的一个缓存。当退出一个虚拟机的时候,这个 HypervisorRootkit就在TLB中留下了它円现的踪迹。因此,检测一个HypervisorRootkit的方法就是引它退出,然后读取TLB中的数据,寻找其中的变化。因 为它必须要模仿许多不同的组件,它肯定要在某个地方留下踪迹。(责编杨晨) 作者简介:靳慧云(1958-),女,教授,主要研究方向:网络安全监管;王钢 (1958-),男,教授,主要研究方向:计算机犯罪侦查。-全文完-

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!