细说APT之Rootkit自我保护
字数 2096 2025-08-24 10:10:13

Rootkit自我保护技术详解

一、Rootkit概述

Rootkit是一种高权限、底层的恶意软件技术,常被APT黑客组织用于对抗杀毒软件和实现自我保护。Rootkit通过操纵操作系统内核或驱动来实现其功能,具有极强的隐蔽性和持久性。

二、Ramsay框架分析

1. 初始化配置

Ramsay框架的Rootkit组件初始化过程如下:

  1. 主类HideDriver为纯虚类
  2. 初始化关键组件:
    • sub_1AFE4: 初始化Resource读写锁
    • sub_1B000: 初始化Mutex互斥体
    • sub_1B054: 获取KeServiceDescriptorTable基地址
    • sub_1B064: 获取KeServiceDescriptorTable.ServiceTableBase
    • sub_1B076: 再次获取KeServiceDescriptorTable基地址
    • sub_1B086: 再次获取KeServiceDescriptorTable.ServiceTableBase
    • sub_1B01C: HideDriver::FileHider
    • sub_1B038: HideDriver::ProcessHider

2. SSDT Hook技术

SSDT(系统服务描述符表)是连接ring3 Win32 API和ring0内核API的关键表,包含:

  • 地址索引的基地址
  • 服务函数个数

Ramsay通过Hook SSDT中的关键函数实现自我保护:

  1. 文件保护

    • Hook NtQueryDirectoryFile函数
    • 根据文件类型(不同结构体)进行分发处理
    • 过滤FileBothDir类型
    • 对命中pFileInfo->FileName的文件,通过修改FILE_BOTH_DIR_INFORMATION.NextEntryOffset实现覆盖或摘链
  2. 进程保护

    • Hook ZwQuerySystemInformation函数
    • 解析SYSTEM_PROCESS_INFORMATION结构体
    • 对目标PID进行过滤,命中后对结构体篡改或摘链实现进程隐藏

三、Hellsing组织技术分析

1. 文件保护技术

  1. 针对文件系统驱动:

    • FileSystem\FastFat
    • FileSystem\Ntfs
  2. 技术实现:

    • 利用ObReferenceObjectByName获取NTFS驱动对象
    • 替换派遣函数IRP_MJ_CREATE指针函数
    • 通过_IO_STACK_LOCATION._FILE_OBJECT.FileName判断保护文件
    • 将文件路径进行任意替换,指向其他字符串

2. 进程保护技术

  1. 控制码2352220

    • 执行_EPROCESS.ActiveProcessLink摘链操作
    • 隐藏指定进程
  2. 控制码23511128

    • 用户层传递需要保护的文件数组
    • 进行赋值操作

四、Rootkit检测与防御

1. SSDT Hook检测

  1. 保存系统当前SSDT地址:
    • 发送至用户层或直接在内核层比较
    • 将本地文件映射到内存,重定向地址
    • 与当前系统函数地址对比,标记差异为SSDT Hook
    • 替换原始函数地址完成恢复

2. FSD Hook检测

  1. 通过IDA分析ntfs.sys派遣函数机器码
  2. 加载Ntfs,拷贝对象派遣函数
  3. 映射本体文件,以AddressOfEntryPoint+ImageBase为枚举机器码入口点
  4. 枚举机器码保存派遣函数地址
  5. 与当前内存加载派遣函数地址比较(需重定位)
  6. 不匹配则标记为FSD Hook,替换原始派遣函数

3. 进程断链检测

  1. 系统空间扫描:

    • Windows 32bit系统空间:0x80000000-0xFFFFFFFF
    • 从0x80000000开始,判断地址有效性
    • 逐一解析ObjectType是否为进程类型
    • 递增4KB枚举系统空间(适用于其他内核对象隐藏检测)
  2. 枚举PspCidTable

    • 包含系统中全部进程线程对象
    • 索引对应PID和TID
    • (注意:如果该链也被断开则无效)

4. 文件隐藏检测

  1. 读取NTFS流:

    • 解析MFT(主文件表)
    • 获取完整文件列表检测隐藏文件
  2. 底层检测:

    • 挂钩disk.sys(比文件系统驱动更底层)
    • 实现低层文件检测

五、总结

Rootkit技术随着安全研究的发展逐渐被揭开神秘面纱,虽然在64位系统中部分技术不再适用,但通过盗取数字签名安装驱动木马的现象仍然存在。内核安全检测和防御技术是保障系统安全的核心手段。

关键IOC(入侵指标):

  • 3DE2A22BABB69E480DB11C3C15197586
  • 07858D5562766D8239A7C961FEEA087C

六、技术演进趋势

  1. 从SSDT Hook向更底层的驱动Hook发展
  2. 从简单的函数替换到复杂的路径重定向
  3. 检测技术从表层扫描向底层分析发展
  4. 对抗重点转向数字签名滥用和驱动白利用

七、防御建议

  1. 实施驱动签名验证
  2. 监控关键系统调用和驱动行为
  3. 定期进行内核完整性检查
  4. 部署多层次的安全防护方案
  5. 保持系统和安全软件更新
Rootkit自我保护技术详解 一、Rootkit概述 Rootkit是一种高权限、底层的恶意软件技术,常被APT黑客组织用于对抗杀毒软件和实现自我保护。Rootkit通过操纵操作系统内核或驱动来实现其功能,具有极强的隐蔽性和持久性。 二、Ramsay框架分析 1. 初始化配置 Ramsay框架的Rootkit组件初始化过程如下: 主类 HideDriver 为纯虚类 初始化关键组件: sub_1AFE4 : 初始化Resource读写锁 sub_1B000 : 初始化Mutex互斥体 sub_1B054 : 获取KeServiceDescriptorTable基地址 sub_1B064 : 获取KeServiceDescriptorTable.ServiceTableBase sub_1B076 : 再次获取KeServiceDescriptorTable基地址 sub_1B086 : 再次获取KeServiceDescriptorTable.ServiceTableBase sub_1B01C : HideDriver::FileHider sub_1B038 : HideDriver::ProcessHider 2. SSDT Hook技术 SSDT(系统服务描述符表)是连接ring3 Win32 API和ring0内核API的关键表,包含: 地址索引的基地址 服务函数个数 Ramsay通过Hook SSDT中的关键函数实现自我保护: 文件保护 : Hook NtQueryDirectoryFile 函数 根据文件类型(不同结构体)进行分发处理 过滤 FileBothDir 类型 对命中 pFileInfo->FileName 的文件,通过修改 FILE_BOTH_DIR_INFORMATION.NextEntryOffset 实现覆盖或摘链 进程保护 : Hook ZwQuerySystemInformation 函数 解析 SYSTEM_PROCESS_INFORMATION 结构体 对目标PID进行过滤,命中后对结构体篡改或摘链实现进程隐藏 三、Hellsing组织技术分析 1. 文件保护技术 针对文件系统驱动: FileSystem\FastFat FileSystem\Ntfs 技术实现: 利用 ObReferenceObjectByName 获取NTFS驱动对象 替换派遣函数 IRP_MJ_CREATE 指针函数 通过 _IO_STACK_LOCATION._FILE_OBJECT.FileName 判断保护文件 将文件路径进行任意替换,指向其他字符串 2. 进程保护技术 控制码 2352220 : 执行 _EPROCESS.ActiveProcessLink 摘链操作 隐藏指定进程 控制码 23511128 : 用户层传递需要保护的文件数组 进行赋值操作 四、Rootkit检测与防御 1. SSDT Hook检测 保存系统当前SSDT地址: 发送至用户层或直接在内核层比较 将本地文件映射到内存,重定向地址 与当前系统函数地址对比,标记差异为SSDT Hook 替换原始函数地址完成恢复 2. FSD Hook检测 通过IDA分析ntfs.sys派遣函数机器码 加载Ntfs,拷贝对象派遣函数 映射本体文件,以 AddressOfEntryPoint+ImageBase 为枚举机器码入口点 枚举机器码保存派遣函数地址 与当前内存加载派遣函数地址比较(需重定位) 不匹配则标记为FSD Hook,替换原始派遣函数 3. 进程断链检测 系统空间扫描: Windows 32bit系统空间:0x80000000-0xFFFFFFFF 从0x80000000开始,判断地址有效性 逐一解析ObjectType是否为进程类型 递增4KB枚举系统空间(适用于其他内核对象隐藏检测) 枚举 PspCidTable : 包含系统中全部进程线程对象 索引对应PID和TID (注意:如果该链也被断开则无效) 4. 文件隐藏检测 读取NTFS流: 解析MFT(主文件表) 获取完整文件列表检测隐藏文件 底层检测: 挂钩disk.sys(比文件系统驱动更底层) 实现低层文件检测 五、总结 Rootkit技术随着安全研究的发展逐渐被揭开神秘面纱,虽然在64位系统中部分技术不再适用,但通过盗取数字签名安装驱动木马的现象仍然存在。内核安全检测和防御技术是保障系统安全的核心手段。 关键IOC(入侵指标): 3DE2A22BABB69E480DB11C3C15197586 07858D5562766D8239A7C961FEEA087C 六、技术演进趋势 从SSDT Hook向更底层的驱动Hook发展 从简单的函数替换到复杂的路径重定向 检测技术从表层扫描向底层分析发展 对抗重点转向数字签名滥用和驱动白利用 七、防御建议 实施驱动签名验证 监控关键系统调用和驱动行为 定期进行内核完整性检查 部署多层次的安全防护方案 保持系统和安全软件更新