SnowSword 隐藏驱动检测实测:摘链驱动的识别
1. 引言
上一篇文章介绍了 SnowSword 的隐藏驱动检测思路:同时观察模块列表、对象目录和内存中的 PE 特征,避免只依赖单一数据源。
这次准备了一个测试驱动 TestHideDriver1.sys,尝试验证 SnowSword 能否在测试过程中标记出异常驱动。目前同时保留了 SnowSword 检测结果和 OpenArk 的枚举对比截图,本文只记录截图中能够确认的现象。
2. 检测思路
SnowSword 的驱动检测可以简单理解为三个视角:
| 视角 | 观察内容 |
|---|---|
| 模块列表 | 驱动名称、映像基址、映像大小和路径 |
| 对象目录 | \\Driver、\\FileSystem 中的驱动对象 |
| 内存特征 | 内存中是否存在带有 PE 特征的可执行映像 |
正常情况下,这些信息应该能够相互对应。如果某个驱动只在一个视角中出现,或者它的基址、大小和路径与其他信息对不上,就应该进入人工复核流程。
本次实验的重点是观察 SnowSword 对测试驱动的标记结果,而不是证明 SnowSword 的全能性。
3. 实验过程
实验过程中使用自写 DriverLoader 加载测试驱动,并通过 DebugView 观察驱动输出。测试驱动加载后,在 SnowSword 的“内核模块”页面查看当前模块列表。
从截图可以看到,列表中出现了:
- 驱动名称:
TestHideDriver1.sys; - 映像基址:
0xFFFFF80267140000; - 映像大小:
0x1000; - 路径位于用户桌面测试目录;
- 该行以红色显示,与周围普通模块的显示效果不同。
4. SnowSword 检测结果

图中同时保留了测试过程中的几个窗口:
- SnowSword:右侧显示内核模块列表,
TestHideDriver1.sys被红色标记; - DriverLoader:中间窗口用于加载测试驱动;
- DebugView:左侧可以看到测试驱动输出的
Driver is alive!等调试信息。
从现象上看,测试驱动已经成功加载并运行,SnowSword 也将它与普通内核模块区分显示。这说明当前检测模块至少能够获取到该测试驱动的模块信息,并根据自身规则给出异常标记。
5. 与 OpenArk 的枚举结果对比

| 工具 | 截图中的结果 |
|---|---|
| SnowSword | 可以看到 TestHideDriver1.sys,并以红色标记;同时显示其基址、大小和桌面测试路径 |
| OpenArk | 当前驱动列表中未看到 TestHideDriver1.sys,只能看到 SnowSword.sys 和 OpenArkDrv64.sys 等模块 |
6. 结果分析
TestHideDriver1.sys已经进入 SnowSword 的内核模块检测结果;- SnowSword 能显示它的基址、大小和路径;
- SnowSword 对该测试驱动进行了红色高亮,说明它满足当前隐藏驱动的标记条件;
- OpenArk 的当前驱动列表中未显示该测试驱动,形成了与 SnowSword 的枚举差异;
- DriverLoader 和 DebugView 的窗口可以作为驱动加载和运行状态的辅助证据。
7. 为什么不能只看一个列表
驱动检测和进程隐藏检测一样,不能把单一枚举结果当成绝对事实。
如果只看模块列表,攻击者可以尝试摘除模块链表记录;如果只看对象目录,也可能遇到未注册对象或结构变化;如果只扫 PE 特征,又可能把残留映像、缓存或版本差异误判为异常。
更可靠的判断方式是把多个结果关联起来:
1 | 驱动名称 / 基址 / 大小 |
8. 当前局限
本次实验仍然比较初步,主要局限包括:
- 目前只有两张截图,没有干净系统和多次重复测试数据;
- 尚未记录完整的扫描范围、耗时、CPU 占用和 IOCTL 次数;
- 尚未对
\\Driver、\\FileSystem和内存 PE 扫描结果进行逐项对照; - 尚未验证非分页池、清除 PE 头以及跨 Windows 版本等场景;
- 红色高亮的具体触发规则还需要结合 SnowSword 源码进一步说明。
9. 后续计划
后续补充实验时,准备保留以下信息:
- 测试前后的模块列表对比;
- 测试驱动是否仍能在对象目录中找到;
- 内存扫描命中的地址和模块归属结果;
- SnowSword 的原始调试日志;
- 不同 Windows 版本下的重复测试结果。
这样可以把“截图中看到驱动被标红”进一步扩展为完整的证据链,减少单一结果带来的误判。
总结
本次实验中,TestHideDriver1.sys 成功加载并运行,SnowSword 在内核模块列表中对它进行了红色标记,而 OpenArk 的当前驱动列表中没有显示该项。这个结果说明 SnowSword 与 OpenArk 对该测试状态的枚举结果存在差异,也说明多视角交叉检测能够发现单一工具不一定展示的对象,但这只是一次功能验证,而不是完整的隐藏驱动检测实验。
对于 ARK 工具来说,发现异常只是第一步。只有把模块列表、对象目录、内存特征和运行时行为结合起来,并经过独立工具复核,才能逐步提高检测结果的可信度。
参考
- Windows Internals, 7th Edition
- Microsoft Learn:
IMAGE_NT_HEADERS、MmCopyMemory - 本系列前篇:
日报_隐藏驱动检测_改进版、日报_内存暴力搜索DRIVER_OBJECT_改进版 - SnowSword 项目地址:https://gitee.com/le-ziyi/SnowSword
相关项目与联系
项目SnowSword —— Windows 10/11 x64 内核分析与 Anti-Rootkit 工具,源码与发布包在 Gitee。
技术合作Windows 内核 / 驱动开发 / 逆向分析 / 兼容性开发,范围与边界见 技术合作。
联系2160752730@qq.com · QQ 2160752730 · 微信 lst_3258110
