
Nidhogg は、カーネル空間で実行できるさまざまな操作を紹介する多機能ルートキットです。Nidhogg の目標は、操作に役立つ多機能で使いやすいオールインワンのルートキットを提供することです。さらに、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 はカーネルモード COFF 実行のための新機能「Nidhogg オブジェクトファイル(NOF)」を備えています。これにより、独自のカーネルモードコードを作成し、COFF ファイルにコンパイルすることで、以下の機能にアクセスできます。
この機能は仮想化ベースのセキュリティ(VBS)と互換性がありません。HVCI と kCFG の両方に違反するためです。
バージョン v1.0 以降、Nidhogg は NidhoggScript を実行できます。これは複数のコマンドを連続して実行できるツールで、Nidhogg のプレイブックを作成できます。作成方法については wiki をご覧ください。
メンテナンスが困難であり、あまり人気のない機能であるため、バージョン v2.0 で非推奨となり、次のメジャーリリースで削除される予定です。代わりに、カーネルモード COFF 実行のための別の機能「Nidhogg オブジェクトファイル(NOF)」に置き換えられます。これは Nidhogg の API にアクセスできます。
バージョン v1.0 以降、Nidhogg は NidhoggScript を初期操作としても実行できます。つまり、プロジェクトディレクトリのルート(Python ファイルと同じディレクトリ)に out.ndhg ファイルが存在する場合、ドライバが実行されるたびにそのファイルが実行されます。
メンテナンスが困難であり、あまり人気のない機能であるため、バージョン v2.0 で非推奨となり、次のメジャーリリースで削除される予定です。代わりに、カーネルモード COFF 実行のための別の機能「Nidhogg オブジェクトファイル(NOF)」に置き換えられます。これは 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 などのツールでデバッグメッセージを確認できます。
このプロジェクトに貢献してくださった皆様に感謝します。