目录导航
Nidhogg简介
Nidhogg 是红队的多功能 Rootkit。Nidhogg 的目标是提供一个一体化且易于使用的 Rootkit,具有多种对红队参与有用的功能,可以通过单个头文件与您的 C2 框架集成,使用简单,您可以查看示例这里。
Nidhogg 可在任何版本的 x64 Windows 10 和 Windows 11 上运行。
该存储库包含一个带有 C++ 标头的内核驱动程序,用于与其通信。
目前的特点
- 进程隐藏和取消隐藏
- 进程提权
- 进程保护(防杀、防转储)
- 绕过pe-sieve
- 线程隐藏
- 线程保护(防杀)
- 文件保护(防删除、防覆盖)
- 文件隐藏
- 注册表项和值保护(防删除和覆盖)
- 隐藏注册表项和值
- 查询当前受保护的进程、线程、文件、注册表项和值
- 任意内核读/写
- 功能补丁
- 内置 AMSI 绕过
- 内置ETW补丁
- 流程签名(PP/PPL)修改
- 可以反射加载
- Shellcode注入
- APC
- Nt创建线程Ex
- DLL注入
- APC
- Nt创建线程Ex
- 查询内核回调
- Ob回调
- 进程和线程创建例程
- 图像加载例程
- 注册表回调
- 删除和恢复内核回调
- ETWTI 篡改
反射负载
从 v0.3 版本开始,Nidhogg 可以通过kdmapper反射加载,但由于如果驱动程序注册回调, PatchGuard会自动触发,因此 Nidhogg 不会注册任何回调。这意味着,如果您以反射方式加载驱动程序,这些功能将默认被禁用:
- 进程保护
- Thread 保护
- 注册表操作
PatchGuard 触发功能
这些是我所知道的会触发PatchGuard 的功能,您仍然可以使用它们,风险自负。
- 进程隐藏
- 文件保护

基本用法
它的用法非常简单,只需包含标题即可开始!
#include "Nidhogg.hpp"
int main() {
HANDLE hNidhogg = CreateFile(DRIVER_NAME, GENERIC_WRITE | GENERIC_READ, 0, nullptr, OPEN_EXISTING, 0, nullptr);
// ...
DWORD result = Nidhogg::ProcessUtils::NidhoggProcessProtect(pids);
// ...
}
设置
构建客户端
要编译客户端,您需要安装CMake和Visual Studio 2022,然后运行:
cd <NIDHOGG PROJECT DIRECTORY>\Example
mkdir build
cd build
cmake ..
cmake --build .
构建驱动程序
要编译该项目,您将需要以下工具:
克隆存储库并构建驱动程序。
驱动测试
要在测试环境中测试它,请使用提升的 cmd 运行这些命令:
bcdedit /set testsigning on
重新启动后,创建服务并运行驱动程序:
sc create nidhogg type= kernel binPath= C:\Path\To\Driver\Nidhogg.sys
sc start nidhogg
调试
要在测试环境中调试驱动程序,请使用提升的 cmd 运行以下命令并重新启动计算机:
bcdedit /debug on
重启后,您可以在DebugView等工具中看到调试消息。
下载地址
转载请注明出处及链接