利用内存取证检测高级恶意软件
1. 常见钩子检测技术概述
在恶意软件检测领域,检测标准的钩子技术相对较为直接。攻击者常用的钩子技术包括SSDT(系统服务描述符表)钩子、IDT(中断描述符表)钩子、内联内核钩子以及IRP(I/O请求包)函数钩子等。然而,这些技术也存在容易被检测的缺点,例如64位Windows系统的内核补丁保护机制(PatchGuard)会防止对SSDT和IDT等表的修改。
2. 检测IDT钩子
IDT存储了中断服务例程(ISR)的地址,这些函数用于处理中断和处理器异常。攻击者可能会钩取IDT中的条目,将控制重定向到恶意代码。可以使用Volatility的idt插件来显示IDT条目。
例如,Uroburos(Turla)根kit钩取了位于0xc3索引处的中断处理程序。在干净的系统上,0xC3处的中断处理程序指向ntoskrnl.exe内存中的一个地址。以下是干净系统和被钩取系统的IDT条目示例:
干净系统的IDT条目:
$ python vol.py -f win7.vmem --profile=Win7SP1x86 idt Volatility Foundation Volatility Framework 2.6 CPU Index Selector Value Module Section ------ ------ ---------- ---------- -------