
Windowsカーネルドライバーユーティリティ。脆弱な署名済みドライバーを悪用(BYOVD)してDSEをバイパスし、未署名ドライバーをロードし、保護されたプロセスをハイジャックし、プロセスメモリをダンプします。
このツールの目的は、大規模なセットアップやローカルデバッガを必要とせずに、Windowsカーネル/コンポーネントを簡単に調査する方法を提供することです。 機能:
例:
Windows 11 24H2での実行*
Windows 10 20H2での実行*
Windows 8.1でのコンパイルと実行*
完全にパッチ適用されたWindows 7 SP1での実行(プリコンパイル版)*
Windows 10 19H2での実行(プリコンパイル版、SecureBoot有効)*
標準のカーネルローダーを関与させず、既にロードされているモジュールをシェルコードで上書きするという特殊なロード方法のため、いくつかの制限があります:
つまり、DriverEntryで指定されたパラメータは有効ではないため使用できません。また、任意のドライバをロードできるわけではなく、特別に設計されたもののみ、あるいはシェルコードルーチンを変更する必要があります。
x64にはSEHコードがありません。代わりに、PEヘッダ内のポインタで記述されたtry/except/finally領域のテーブルがあります。例外が発生した場合、BSODになる可能性があります。
マップされたコードは自身をアンロードできません; ただし、マップされたコードによって割り当てられたすべてのリソースを解放することはできます。 DRIVER_OBJECT->DriverUnloadはNULLに設定する必要があります。
プロジェクトが別のモジュール依存関係を必要とする場合、このローダー部分を書き直す必要があります。
特殊なロード方法のため、マップされたドライバはPsLoadedModulesList内に存在しません。つまり、そのようなコードによって登録されたコールバックは、そのハンドラがこのリスト外のメモリに配置されることになります。PatchGuardがこれを検出し、システムをクラッシュさせる可能性があります。
一般に、カーネル内でやってはいけないことを知りたい場合は、https://github.com/hfiref0x/KDU/tree/master/Source/Examples/BadRkDemo を参照してください。禁止事項の例がいくつか含まれています。
このツールは、MmUnloadedDriversやPiDDBCacheTableのWindows内部構造を変更しません(今後も変更しません)。その理由は:
自己責任で使用してください。一部の怠惰なAVはこのツールをhacktool/マルウェアとしてフラグを立てるかもしれません。
すべてのメタデータを含む完全なリストはこちら:
今後、さらにプロバイダが追加される可能性があります。
正規のソフトウェアに含まれる既知の脆弱な(または設計上のワームホール)ドライバを使用して、読み書きプリミティブで任意のカーネルメモリにアクセスします。
コマンドに応じて、KDUはTDL/DSEFixとして動作するか、カーネルモードのプロセスオブジェクト(EPROCESS)を変更します。
-mapモードでは、KDUは利用可能なほとんどのプロバイダに対して、デフォルトでSysInternals Process Explorerのサードパーティ署名済みドライバを使用し、そのIRP_MJ_DEVICE_CONTROLルーチン内に小さなローダーシェルコードを配置してハイジャックします。
KDUはシェルコードを使用して入力ドライバをマップし、そのDriverEntryを実行します。KDUにはいくつかのシェルコードバリアントが埋め込まれています。シェルコードV1、V2、V3はサードパーティの被害者ドライバ(Process Explorerなど)と共に使用されます。
KDUは完全なソースコード付きで提供されます。 ソースからビルドするには、Microsoft Visual Studio 2019以降が必要です。ドライバビルドには、Microsoft Windows Driver Kit 10以上が必要です。
完全な動作バイナリには、kdu.exe(メイン実行ファイル)とdrv64.dll(ドライバデータベース)が含まれます。これらは同じディレクトリに配置し、kdu.exeに対してR/Wアクセスを有効にする必要があります。すべてのバイナリはシステムゾーンからブロック解除する必要があります。
GenAsIo2Unlockは、AsIO2ドライバを扱うために必要な「ロック解除」リソースを生成するための特別なユーティリティです。このユーティリティの完全なソースはSource\Utils\GenAsIo2Unlockに含まれています。
KDUをサードパーティソフトウェアやOSで使用中にバグや非互換性が発生した場合は、お気軽にissueを登録してください。ただし、この非互換性があなた自身の行動に起因する場合、そのような報告は無視されます。
アンチチート、アンチマルウェアの非互換性は無視されます。それはあなた自身の責任です。
このプログラムを使用すると、BSODでコンピュータがクラッシュする可能性があります。コンパイル済みバイナリとソースコードは、役立つことを願ってAS-ISで提供されますが、いかなる種類の保証もありません。KDUは完全にバグだらけの脆弱なドライバに依存しているため、仮想マシン上でのみ使用することを強く推奨します。
https://github.com/hfiref0x/KDU/tree/master/CHANGELOG.txt