导语:GitHub 用户 Idov31 开源了一款名为 Nidhogg 的 Windows x64 内核 Rootkit,覆盖进程、线程、文件、注册表、内存、网络与回调等 25+ 项能力,并提供一个可通过单一头文件接入 C2 的客户端,是当前同类开源项目中功能较为完整的一个。
项目地址:https://github.com/Idov31/Nidhogg
项目背景与命名
Nidhogg 这个名字取自北欧神话中啃食世界树根系的那条黑龙,作者 Ido V. 自 2022 年起在 GitHub 上持续维护该项目,目前已迭代到 v2.0 版本,目标是打造一个”all-in-one、易上手、稳定可靠”的内核 Rootkit 演示框架,用于安全研究和授权渗透测试场景。

项目使用 C++ 编写,由两部分组成:一个 WDM 内核驱动(负责在内核态实现各种隐藏与保护能力),以及一个用户态客户端(通过 DeviceIoControl 与驱动通信)。结构比较干净,便于读者把注意力放在每个功能的具体实现上。
核心能力一览
按作者 Wiki 的分类,Nidhogg 的功能被划分为九大模块:进程、线程、文件、注册表、内存、网络、回调、ETW-TI(Event Tracing for Windows Threat Intelligence)以及 Nidhogg Object File(NOF),汇总起来超过 25 项。
进程与线程方面,覆盖了进程隐藏/取消隐藏、进程提权、进程保护(抗终止、抗转储)、绕过 pe-sieve 检测、线程隐藏以及线程保护等。文件与注册表模块提供文件保护(抗删除、抗覆盖)、文件隐藏、注册表键值保护与隐藏,并支持查询当前受保护的对象列表。内存模块封装了常见的读写操作,便于客户端在内核态直接操纵目标进程地址空间。

网络、回调与 ETW-TI 模块更贴近对抗检测的思路:网络部分支持端口隐藏等基础能力,回调模块用于枚举和移除系统已注册的内核回调,ETW-TI 模块则可以补丁化 ETW 的威胁情报提供者,从而降低被端点检测产品采集到敏感事件的概率。NOF 模块是该项目比较有特色的一环——通过自定义对象格式,把多个内核操作组合成一个文件下发到驱动执行,类似把”操作脚本”打包下发。
架构与使用方式
Nidhogg 依赖典型的 Windows 驱动 + 用户态客户端组合:客户端 NidhoggClient.exe 接受命令行参数(例如 NidhoggClient.exe process hide 3110 即可隐藏 PID 为 3110 的进程),在内部拼装 IOCTL 请求发送给已加载的内核驱动;驱动在内核态完成实际操作后把结果返回给客户端。

对渗透测试人员而言,Nidhogg 一个比较实用的特性是它把客户端封装为一个单一 C++ 头文件,开发者可以直接在自己的 C2 框架或加载器中 include 该头文件并调用对应函数,相当于把整个 Rootkit 客户端当成一个库来使用,不需要单独维护命令行工具的发布链路。编译方面,作者建议使用 Visual Studio 2022 编译客户端,驱动则需要配套的 WDK 以及测试签名环境,加载前通常还需要开启测试模式并重启。
适用场景与边界
需要明确的是,Nidhogg 是一个面向安全研究与授权渗透测试的演示项目,作者在 README 中强调它仅用于合法的研究和授权评估场景,不应在未授权的系统上使用。从防御侧看,这个项目反而具有正向价值:它的代码几乎覆盖了主流 EDR/AV 在 Windows 上需要识别的典型 Rootkit 行为模式,安全团队可以基于这些源码反向完善自己的检测规则,尤其是针对回调移除、ETW-TI 补丁、进程/线程隐藏这一类高隐蔽性行为。
在版本兼容方面,作者声明 Nidhogg 兼容所有 Windows 10 与 Windows 11 版本(Intel x64),并未对 ARM64 设备做官方支持;不同 Windows 小版本之间的内核结构变化也可能导致部分功能需要相应调整,社区在 Issues 区里有过相关讨论。对想研究 Windows 内核 Rootkit 技术、或希望给自家 EDR 增加一组高质量测试样本的从业者来说,这是一个值得花时间阅读的开源项目。
版权声明:本文由华盟网原创发布,保留所有权利。配图由华盟网授权使用。














暂无评论内容