
Windows分析およびリサーチツールキット
⚠️ このプロジェクトの一部はAI支援によるvibe codingで作成されているため、バグが含まれている可能性があります。 カーネルドライバ(KWinSys)は、研究目的のテストVMでのみインストールしてください。

| コンポーネント | 役割 |
|---|---|
| NtWarden | GUIアプリ(ImGui + DirectX 11) |
| WinSys | プロセス、サービス、ネットワーク列挙用の静的ライブラリ |
| KWinSys |
プロセスのコンテキストメニューからアクセスできる、プロセス単位のセキュリティ分析。
要件: Visual Studio 2022、Windows SDK 10.0.26100.0+、WDK(KWinSys用)
NtWarden.sln
├── NtWarden/ # GUI app
├── WinSys/ # Core library (static lib)
├── KWinSys/ # Kernel driver
└── WinSysServer/ # Remote server
NtWarden.slnを開くx64/Release/に生成されるKWinSysにはテスト署名または有効な署名が必要です。
# Enable test signing (reboot required)
bcdedit /set testsigning on
# On VMs you may also need
bcdedit /set nointegritychecks on
NtWardenは管理者として実行してください。カーネルモードタブに切り替えると、ドライバがまだ読み込まれていない場合に自動的にインストールおよび起動されます。Driverメニューから手動で管理することもできます。
WinSysServerはターゲットマシン(通常はVM)上で実行され、TCP経由でシステムデータを提供します。NtWardenからはRemote > Connectで接続します。
| ファイル | パス | 用途 |
|---|---|---|
WinSysServer.exe | x64/Release/WinSysServer.exe | 常に |
KWinSys.sys | x64/Release/KWinSys/KWinSys.sys | カーネル機能のみ |
ユーザーモード機能(プロセス、サービス、ネットワーク)はドライバなしで動作します。カーネルタブにはターゲット上でKWinSysの読み込みが必要です。
# Auto-install driver + start server (run elevated)
WinSysServer.exe --install # default port 50002
WinSysServer.exe --install --port 9000 # custom port
# Or install the driver yourself first
sc create KWinSys type= kernel binPath= "C:\path\to\KWinSys.sys"
sc start KWinSys
WinSysServer.exe [--port <port>] # default: 50002
TCP上のカスタムバイナリプロトコル。12バイトのヘッダー(MessageType、DataSize、Status)。認証なし - 隔離されたラボ/VM環境でのみ使用してください。
MIT - LICENSEを参照してください。
| コールバック、SSDT、カーネルモジュールなど用のカーネルドライバ |
| WinSysServer | リモート検査用のヘッドレスTCPサーバ |
| タブ | 説明 |
|---|
| Processes | ツリービュー、ハンドル、スレッド、メモリ領域、モジュールを含むプロセス一覧 |
| Performance | CPU、RAM、GPU、ネットワーク使用量のリアルタイムグラフ - 他のタスクの上にオーバーレイ表示可能 |
| Services | 状態、開始タイプ、バイナリパスを含むサービス列挙 |
| Network > Connections | 所有プロセスとリモートエンドポイントを含むTCP/UDP接続 |
| Network > Root Certificates | サブジェクト、発行者、拇印を含む信頼されたルートCAストア |
| Network > NDIS | ドライバ、MAC、速度、メディアタイプを含むネットワークアダプタ情報 |
| ETW | アクティブなトレースセッションと登録済みプロバイダー |
| IPC | RPCエンドポイントと名前付きパイプ |
| Object Manager | カーネルオブジェクト名前空間の閲覧 - ディレクトリ、シンボリックリンク、デバイス |
| Registry | キー/値の列挙が可能なレジストリブラウザ |
| Symbols | ユーザーモードのシンボル読み込み状況 |
| Logger | カーネルドライバのデバッグログとユーザーモードGUIログを一箇所で取得 |
| タブ | 説明 |
|---|
| Process Objects | EPROCESSの列挙、相互参照による隠しプロセスの検出 |
| Modules | ベースアドレス、サイズ、パスを含む読み込み済みカーネルドライバ(LolDriversチェック付き) |
| Callbacks | カーネルコールバック(プロセス/スレッド/イメージ/レジストリ/オブジェクト/電源)+ 整合性チェック |
| SSDT | 所有者とフック検出を含むSSDTエントリ |
| Symbols | カーネルシンボルの解決とPDBの読み込み |
| Kernel Pool | 大きなプール割り当て、プールタグ統計 |
| Memory R/W | アドレスを指定したカーネルメモリの読み書き |
| Timers | CPUごとの割り込みおよびDPCカウンター |
| Filter | 高度(altitude)とインスタンス情報を含むミニフィルタードライバ |
| Descriptor Tables | GDT/IDTエントリ |
| IRP Dispatch | 任意のドライバのIRPディスパッチテーブル - ハンドラアドレス、所有者モジュール |
| WFP | WFPコールアウトドライバとフィルター |
| DSE Status | ドライバ署名強制(DSE)の状態 |
| CI Policy | コード整合性(CI)ポリシーと強制レベル |
| Kernel Integrity | カーネルの.textをディスク上のイメージと照合 |
| Hypervisor Hooks | タイミング分析によるEPTフックの検出 |
| セクション | チェック内容 |
|---|
| Unbacked Memory | ファイルにバックされていないプライベート実行可能領域(シェルコードの指標) |
| Hollowing | PEBのImageBaseとPEヘッダーのImageBaseの不一致 |
| Module Stomping | メモリ内の.textセクションとディスク上のオリジナルの比較 |
| Direct Syscalls | ntdll外で検出されたsyscall(0F 05)命令 |
| Syscall Stubs | ntdllスタブの整合性 - メモリ上のバイト列とクリーンなディスクコピーの比較 |
| User Hooks | ntdll、kernel32などに仕掛けられたインラインフック(JMP/CALLパッチ)(分析対象バイトの逆アセンブルにはcapstoneが必要) |
| Tokens | 昇格、整合性レベル、偽装、疑わしい特権 |
| Debug Objects | プロセス上のデバッグオブジェクトとデバッグポート |
| Hypervisor | CPUIDベンダーチェック + RDTSC/CPUIDタイミングの異常 |
| Job Objects | ジョブのメンバーシップ、制限、UI制限 |
| CFG Status | CFG/XFGの強制状態と軽減策フラグ |