Nidhogg 是一个多功能 Rootkit,用于展示内核空间中可以执行的各种操作。Nidhogg 的目标是提供一个一体化且易于使用的 Rootkit,具有多种对操作有用的功能。此外,它还可以轻松与你的 C2 框架集成。
Nidhogg 可在任何版本的 x64 Windows 10 和 Windows 11 上运行。
此仓库包含一个内核驱动程序以及一个用于与之通信的 C++ 程序。
如果你想了解更多信息,请查看 Wiki 获得详细说明。
[!IMPORTANT]
所有功能均已完全测试至 Windows 11 25H2。 如果遇到问题,请先检查是否已有未关闭的 issue,然后再提出新 issue。
[!WARNING]
进行反射加载时,某些功能默认会被禁用,并且隐藏模块的自动优雅卸载以及回调的解除挂钩也将无法正常工作。 用户有责任确保在进程终止时手动卸载任何隐藏模块,并在目标驱动程序卸载时解除任何回调挂钩。否则可能导致系统不稳定或崩溃。
自 v0.3 版本起,Nidhogg 可通过 kdmapper 进行反射加载,但由于如果驱动程序注册了回调,PatchGuard 将自动触发,因此 Nidhogg 不会注册任何回调。这意味着,如果你以反射方式加载驱动程序,以下功能默认将被禁用:
自 v2.0 版本起,Nidhogg 新增了一项名为“Nidhogg 目标文件 (NOF)”的能力,用于内核模式 COFF 执行。这意味着你可以编写自己的内核模式代码并将其编译为 COFF 文件,该文件可以访问:
此功能不兼容基于虚拟化的安全性 (VBS),因为它违反了 HVCI 和 kCFG。
自 v1.0 版本起,Nidhogg 可以执行 NidhoggScripts —— 一个允许连续执行多条命令的工具,从而为 Nidhogg 创建操作手册。有关如何编写脚本,请查看 Wiki。
由于维护困难且该功能并不流行,它已在 v2.0 版本中被弃用,并将在下一个主要版本中移除。它将被另一项能力“Nidhogg 目标文件 (NOF)”所取代,用于内核模式 COFF 执行,该能力将能够访问 Nidhogg 的 API。
自 v1.0 版本起,Nidhogg 还可以将 NidhoggScripts 作为初始操作执行。也就是说,如果它在项目根目录(与 Python 文件相同的目录)中发现 out.ndhg 文件,它将在每次驱动程序运行时执行该文件。
由于维护困难且该功能并不流行,它已在 v2.0 版本中被弃用,并将在下一个主要版本中移除。它将被另一项能力“Nidhogg 目标文件 (NOF)”所取代,用于内核模式 COFF 执行,该能力将能够访问 Nidhogg 的 API。
[!CAUTION]
以下功能已知会触发 PatchGuard,你可以自行承担风险使用它们。
要查看可用命令,你可以运行 NidhoggClient.exe 或查看 Wiki 获取关于每个命令的使用方法、参数及工作原理的详细信息。
NidhoggClient.exe
# 简单用法:隐藏一个进程
NidhoggClient.exe process hide 3110
要编译客户端,你需要安装 Visual Studio 2022,然后像其他 Visual Studio 项目一样构建该项目。
要编译该项目,你需要以下工具:
克隆仓库并构建项目:
git clone https://github.com/Idov31/Nidhogg.git --recurse-submodules
要在测试环境中进行测试,请以管理员身份运行以下命令:
bcdedit /set testsigning on
重启后,创建服务并运行驱动程序:
sc create nidhogg type= kernel binPath= C:\Path\To\Driver\Nidhogg.sys
sc start nidhogg
要在测试环境中调试驱动程序,请以管理员身份运行以下命令并重启计算机:
bcdedit /debug on
重启后,你可以在诸如 DebugView 等工具中查看调试消息。
非常感谢以下为该项目做出贡献的人: