3.3 伟大的Rootkit军备竞赛:一个怀旧的笔记
21世纪初是Rootkit的黄金时代:防御软件显然在军备竞赛中败下阵来,它们只能对新的Rootkit中发现的技巧做出反应,但不能阻止它们。这是因为在那个时候,Rootkit分析师唯一可用的工具是操作系统的任何单个实例上的内核调试器。
尽管有限,但内核调试器(称为NuMega SoftIce调试器)有能力冻结并可靠地检查操作系统状态—即使对当前的工具来说,这也是一个挑战。在Windows XP Service Pack 2之前,SoftIce是内核调试器的黄金标准。热键组合允许分析人员完全冻结内核,下拉到本地调试器控制台(见图3-3),并在完全冻结的操作系统内存中搜索Rootkit是否存在—这是内核Rootkit无法改变的一个视图。
图3-3 SoftIce本地调试器控制台
认识到SoftIce所带来的威胁,Rootkit的作者迅速开发了检测其在系统上存在的方法,但这些技巧并没有让分析人员停留太久。有了SoftIce,防御者就有了一种攻击者无法破坏的信任根源,从而扭转了局面。许多使用SoftIce调试器功能开始其职业生涯的分析师哀叹,他们失去了将整个操作系统的状态定格为框架,并放入显示整个内存状态基本事实的调试器控制台的能力。
一旦检测到Rootkit,分析人员就可以结合使用静态和动态分析来定位Rootkit代码中的相关位置,消除Rootkit对SoftIce的任何检查,然后逐步通过Rootkit代码来获得其操作的详细信息。
后来,微软收购SoftIce的生产商,部分目的是增强自己的内核调试器WinDbg。今天,WinDbg仍然是分析运行中的Windows内核异常的有效工具。它甚至可以远程执行,除非是对调试器本身进行恶意干扰。但是,SoftIce的独立于操作系统的监控控制台功能消失了。
失去控制台并不一定会对攻击者有利。虽然Rootkit理论上不仅可以干扰防御软件,还可以干扰远程调试器,但这种干扰很可能非常明显,足以触发检测。对于隐形的、有针对性的攻击Rootkit来说,太显眼会导致任务失败。一些被发现的高端恶意软件确实包含检测远程调试器的功能,但这些检查过于明显,很容易被分析人员忽略。
只有当微软开始增加Rootkit开发的复杂性时,攻击者的优势才真正开始减弱(具体的防御措施我们将在本书后面讨论)。目前HIPS使用端点检测和响应(EDR)方法(其重点是收集尽可能多的关于一个系统的信息)上传信息到一个中央服务器,然后使用异常检测算法,包括那些旨在捕获不太可能由系统已知的人类用户发起的操作,从而表明攻击威胁的操作。显然需要收集和使用这类信息来检测潜在的Rootkit,这表明在一个操作系统内核映像中区分良性和恶意组件是多么困难。