(1)最佳方法是用一个完全干净的系统来检测当前系统。
(2)用另外一个原来完全相同的系统与当前系统进行对比,找出其差异。
(3) 通过虚拟机嵌套的方法,在虚拟机里面再产生一个虚拟机,如果rootkit不支持嵌套的虚拟机模拟,就无法规避这种检测。还可以通过计时的方法,有一些指令的执行是通过虚拟出来的,所占用的CPU周期肯定会比真实的时间要长,可以通过这种方法来进行检测。当然还可以通过所谓的TLB勒谱,通过物理内存扫描,还有利用DMA进行攻击。
(4) 还有一种方法是通过Chipset,北桥里面嵌入的一个微控制器来进行检测,其中AMT代码实际上并不是执行在CPU中,而是执行在北桥里,相当于在一个嵌入式控制器里。这种代码本身可以操纵微控制器的DMA功能,能够读写主存里任意的内存地址,包括系统管理模式内存。通过这种方法,可以在物理内存中来检测到rootkit。
传统检测基于hypervisor的rootkit的方法并不完美,下面我们介绍利用可信执行技术检测基于hypervisor的rootkit。
三、利用可信赖执行技术检测基于hypervisor的rootkit
当hypervisor运行时,恶意软件隐藏于rootkit之中有两种截然不同的攻击方式,一种是在一个真实的虚拟机中嵌入一个虚拟机,一种是修改运行的虚拟机监控软件以植入恶意代码。为预防恶意虚拟机软件被加载而检查虚拟机的完整性是确保虚拟机成为可信平台的第一步,利用虚拟化、可信计算可确保一个特定的可信hypervisor被加载。可信计算组织(TCG)介绍的测试方法并不能完全满足虚拟化设备的要求。在运行着的操作系统上启动虚拟机是AMD和INTEL的安全扩展部分,它们提供了新的特征,也为攻击者安装恶意软件进入虚拟机提供了一个新的机会。硬件许多部分的改变是在所难免的,如芯片和CPU的改变在保护模式下进入内存和I/O组件。
1.可信赖执行技术(TXT)
可信赖执行技术的扩展是可信计算和虚拟化融合的结果,CPU和芯片支持的硬件虚拟化由可信平台模块扩展,以提供可信的封装存贮和报告平台认证。
可信赖执行技术平台通过动态测量根(DRTM)允许动态受保护虚拟内存系统创建,从而增强测量静态信任角色(SRTM)。并非从BIOS开始进行一系列测试,可信赖执行技术在平台启动后的任何时间里在一个能够测试的环境运行,这能够发生在系统运行的任何时间,因而能够将信任级别动态地融入硬件。程序的目的是在可测试启动环境(MLE)建立引导程序,从而为操作系统内核或者虚拟机软件运行提供可信的基础。更加广泛地讲,测试启动环境是一个利用Intel的安全模式扩展(SMX)的软件。
采用启动控制策略(LCPs),平台能决定是否受测试的启动环境满足一组特定标准,这些标准可能由平台的所有者定义,或者由平台提供者定义为默认状态。SINIT认证模块加载并且执行这个存储在平台上的策略,策略保存在可信平台模块的常驻内存中,在电源开启之后避免非授权的角色进入。Intel的可信赖执行技术扩展定义了两套不同策略,一个是默认策略或者平台提供的策略(PD),另一个是特定用户策略(PO)。 如果策略没有被定义,SINIT AC模块准许受测试启动环境的任何配置。如果两套策略都经过定义,它们将被结合在一起。
每种策略包含一组有效的测试启动环境方法(典型如SHA-1散列)和一组有效的平台配置方法。预先存储的受测试启动环境的方法与不确定的受测试启动环境的方法进行比较。另外,这个平台的配置值对照一个由策略定义的平台控制寄存器进行核查。平台控制寄存器(PCR)是包含在可信性平台模块(TPM)芯片当中的受到保护的特殊寄存器。因为平台控制寄存器的永久储存非常有限,所以策略仅包含一个累积计量。但是,这个计量同样可以成为外部计量储存列表的值。如果所有策略的要求全被满足,那么SINIT AC模块执行和启动这个受测试的启动环境。
策略执行模块对任何平台提供者来说功能很强大,能够使它们定义默认的策略。然而,这个平台的所有者能够决定是否执行这个策略。保留可信环境列表并且在硬件中执行其策略意味着对潜在恶意软件试图进入虚拟机难上加难,这个启动控制策略流程如图2所示。
2.检测方法与流程
(1)将测试启动环境的代码和一个特定的认证模块(SINIT AC模块)加载到受保护的内存区。SINIT AC模块为一个平台,为一个处理器指定模块用来测试和执行测试启动环境的策略,SINIT AC模块被平台商加密签名过并且被平台CPU认证过。
(责任编辑:adminadmin2008)