日志样式

windows RootKit检测技术的发展和研究

—、Windows RootKit概述
2005年 10月,RootKit Revealer的作者 Mark Russinovich发现Sony公司使用RootKit以保护其电子出版 物不受盗版侵权D Mark在他的Blog上指出Sony公司不仅 在消费者毫不知情的情况下(既没有明确告知消费者,也 没有在软件的服务条款中提及)向消费者的电脑中安装了 —个RootKit,而且知情的攻击者还可以利用这个 RootKit隐藏自己的工具。随后,RootKit引起了人们广泛 关注。
Rootkit是黑客在入侵目标系统后,开辟后门和隐藏 行为的技术或者是工具。当攻击者通过某种方式进入被 入侵的系统并安装上RootKit就可以欺骗目标计算机的操 作系统,从而达到隐藏所有修改并拥有操作系统控制 权。Windows RootKit的核心技术就是隐藏技术,隐藏的
内容包括文件、目录、进程、注册表项、网络端口、设 备驱动器、网卡模式等。
RootKit最早出现于Unix系统中,随着计算机技术的 发展,现在多种操作系统平台中都出现了RootKit。其中 Windows系统上的RootKit技术,尤其受到广泛重视, RootKit也分为几种:
(-)早期RootKit
工作原理是把系统中的一些程序替换成恶意的版 本,当这些替换的程序运行时,就会自动隐藏特定的对 象。如称为RootKit之父的Cabanas病毒„
(二 1用户模式RootKit
这种RootKit是安装在系统当前用户的安全上下文环 境,替换、挂钩(hook!或者修改某些操作系统调用和 DLL中的函数。
(三)内核模式RootKit
现在的Windows RootKit所使用的技术也从用户模 式向内核模式发展,内核模式RootKit不仅能拦截底层的 API调用,而且还会操作内核数据结构。
二、Windows RootKit的检测技术
Windows RootKit检测技术总是伴随着Rootkit技术 的发展而发展的,检测技术的发展也迫使Windows RootKit技术不断更新。近几年来,Windows RootKit的 作者为避免其编写的RootKit被检测出来,也在不断寻找 新的破坏操作系统及其内核的方法,如挂钩技术、 DKOM技术等。
(-)挂钩技术(hook )的检测
挂钩技术就是替换正常的程序为RootKit自身的程 序,在其中过滤由系统返回的信息,分为用户空间挂钩 和内核挂钩。用户级API Hook常见的方式有:修改程序 导入地址表(Import Address Table, IAT );修改函数 输出表(Export Address Table, EAT);内核级API hook常见的方式有:修改系统服务描述SSDT ( System Service Dispatch Table );修改中断 IDT ( Interrupt Descriptor Table );驱动IRP句柄劫持;修改函数跳 转。
早期的RootKit会篡改某一内核代码区或覆盖某一已 知的数据区来安装挂钩,这些已知的数据区包括服务描 述表SSDT,程序导入地址表IAT,中断描述符表IDT。当 前的检测工具如 VICE, System Virginity Verifier和 IceSword能进行所有代码区和已知数据区的完整性检 测,能较好地检测这些早期的挂钩技术。
为躲避检测,近几年挂钩技术目标转向未知数据区 的操作,尤其是在内核数据结构中改写函数指针。 HookFinder, K-Tracer, PoKeR系统采用事后分析的方 法,来研究钩子放在数据区的哪个区域。有大量的内核 对象和函数指针存在于内存中,事后分析方法有一定的 缺陷,SBCFI, Gibraltar, HookSafe和SFPD系统采用主 动分析方法,强调检测操作系统并研究这些函数指针在 什么地方,如何被钩子使用的,从而制定新的hook检测 策略。
(二)直接内核操作技术(DKOM )的检测
DKOM ( Direct Kernel Object Manager)是不使 用Windows API直接操作内核数据结构的进程。 Rootkit经常会修改内核数据结构来达到隐藏的目的。 DKOM技术最早用于FU RootKit,其后FUTo进一步扩展
了FU的DKOM功能。例如,FU Rootkit把某个进程的 EPROCESS从windows内核维护_个当前运行进程的双 向链表ActiveProcessLinks中摘除,该进程则被隐藏。
当前一些著名的检测工具如GMER, RootKit Unhooker能有效的检测这些已知的基于DKOM的 Windows RootKit,如FU RootKit, FUTo。但是这些工 具不能对未知的基于DKOM的RootKit检测。
Rootkit的写作者们正热衷于未知的基于DKOM的 RootKit探索,当前一些Rootkit的研究者也从检测手段、 检测模型、原型系统设计等方面进行了探讨。如在检测 手段上利用各个内核链表结构中的一些进程EPROCESS 结构差异对多种方法获得的进程EPROCESS交叉对比; 如对目录、设别、驱动及PsLoadedModuleList的入口地 址数据结构的分析进而提出的原型系统设计方案等。
(三 > 其它Windows RootKit技术的检测
除了以上主流Windows RootKit技术外,还有:基 于内存补丁的RootKit技术、虚拟机RootKit技术、内存映 射技术、DLL插入技术等.目前一些检测工具能有效地 进行检测。
三、Windows RootKit检测方法
由于Windows RootKit的检测较为复杂,目前对检 测Windows RootKit还没有形成标准化的方法,检测手段 也多样化,现有产品中用到的检测方法主要有如下几 种:
(—)特征检测法
该检测方法通过在内核内存中搜索含有特征码的内 存块来检测Windows RootKit,但它通常只能检测出已知 特征码的Windows RootKito这种方法目前被杀毒软件广 泛使用。
(二)行为检测法
也称启发式检测,这是一种通过发现非常规系统行 为寻找Windows RootKit痕迹的检测方法。这种方法的主 要缺陷在于通常会使挂钩系统频繁调用的处理函数,对 操作系统性能有较大影响。比较有名的检测工具如: PatchFinder, VICE等。
(三 > 差异分析检测法
通过比较可信任的原始数据与由API调用返回受污 染的内容,然后比较两者之间的结果差异。如 Russinovich使用 RootKit Revealer工具发现Sony DRM Rootkit。
(四)完整性校验的检测
RootKit未安装之前,建立一个原始的基线指纹,以 这个可信任的指纹列为准,通过重新计算和比较后继安 装文件的消息摘要来达到识别RootKit。该检测方法对于 简单的Rootkit有效,对于复杂的rootkit无能为力。比较 著名的检测工具如:Tripwire, System Virginity Verifer, IceSword等。
(五)交叉视图(Cross-View )检测
通过比较不同途径所枚举到的系统信息,根据其中 的差异发现Windows RootKit的痕迹。比较有名的检测工 具如:MS Strider GhostBuster, Klister, Blacklight 等。