
Intel VT-xとCPUごとのEPTフックを使用してNt/Ex/Mmルーチンをインターセプトし、リクエストポリシーを適用して、ライブのカーネルテレメトリをストリーミングするWindows x64リサーチハイパーバイザー。
C と x64 アセンブリによる Intel VT-x 仮想化、EPT フッキング、対話型カーネルテレメトリ。
Velum は稼働中の Windows カーネルを VMX 非ルートモードで実行し、研究者がネイティブ呼び出しを観察し、カーネルアクティビティを検査し、リクエストポリシーを適用するための対話的な手段を提供します。EPT フックはハードウェア上で元の命令をリプレイし、ゲストヘルパーがメタデータを取得し、遅延ワーカーが読み取り可能なイベントをコンソールまたは DebugView に配信します。
ファイル操作を入力引数からポリシー決定まで追跡したり、許可されたリクエストと拒否されたリクエストを比較したり、ハイパーバイザーを再起動せずにプロセッサの識別情報やタイミング設定を調べたりするために使用できます。実装には CPU ごとの起動とシャットダウン、CET 状態の転送、イベントの再注入、変換キャッシュの管理が含まれます。
はじめに | 使用ガイド | 技術解説 | ランタイムキャプチャ | MIT ライセンス
| 領域 | できること |
|---|---|
| EPT フック | 元の命令のリプレイと MTF による復元を伴うエクスポートエントリフックの有効化と無効化 |
| ネイティブ呼び出しテレメトリ | 呼び出し元 ID、パス、プロセスメタデータ、デコードされた入力引数の検査 |
| リクエストポリシー | 呼び出し元、パス、入力フィールドの条件を使用した一致する Nt リクエストの拒否 |
| アクセス権の削減 | NtCreateFile、NtOpenFile、NtCreateSection、NtOpenProcess、NtDuplicateObject に対する明示的な要求権限の削除 |
| カーネル観察 | プールの割り当て/解放、メモリマッピング、コピー入力の追跡、モジュール/タグのサマリーの検査 |
| ログ記録 | ライブコンソールまたは DebugView 出力の選択と、ターゲットごとのフィルターの設定 |
| CPUID | 識別ルールの適用と照会、およびデフォルトへの復元 |
| TSC | 期限の変換を伴う固定の符号付きオフセットの適用とゼロへのリセット |
| ライフサイクル | 参加する各 CPU の確認と、シャットダウンフローによる Windows のネイティブ実行への復帰 |
ターゲットカタログには 12 個の Nt ルーチンと 12 個の Ex/Mm ルーチンが含まれます。コンソールは稼働中のカーネル上で利用可能なエクスポートと共有エントリアドレスを解決します。各ターゲットのフィールドとサポートされるアクションについてはターゲットインデックスを参照してください。
ランタイムは明示的な状態の所有権と小さな VM-exit パスを中心に最適化されています。約 1,000 行の x64 アセンブリ層がレジスタの保存、VMX 遷移、CET 状態の転送、ネイティブリターンを処理します。CPU ごとの構造体と事前割り当てされた EPT リザーブにより、exit パスから割り当て処理を排除しています。イベントのフォーマットは遅延された PASSIVE レベルのワーカーで実行されます。リリースビルドはコンパイラ最適化を使用し、選択的なインターセプトにより通常の操作を不必要にトラップすることを避けています。
ルートハンドラーは VMCS と EPT の遷移を管理します。対象となるゲストヘルパーは Windows コンテキストで引数を取得し、ポリシーを評価します。フォーマットは後でドレインワーカーで実行されます。許可された呼び出しは一時的な EPT マッピングの下で元のエントリ命令を実行し、MTF が制御を戻してシャドウを復元します。拒否された呼び出しは実際のゲストリターンを使用するため、通常のスタックと CET シャドウスタックが一緒に進みます。
詳細な説明については、Velum: VMX 遷移をまたいで Windows の実行を保持するをお読みください。この記事では、VMX の起動、VMCS 制御、EPT フック、CET、NMI/イベント処理、テレメトリ、シャットダウンをソースコードに沿って解説します。Windows 10 での調査による WinDbg の証拠が含まれ、ExFreePool/ExFreePoolWithTag のエイリアス修正についても説明しています。より短いエンジニアリングノートでは、それらの決定事項を要約しています。
以下のキャプチャは、20 個の論理プロセッサを搭載した Intel i7-12700F 上の物理 Windows 11 ビルド 26300.9711 セッションから取得したものです。このセッションには 20/20 の CPU 診断チェック、スコープ付きファイル書き込み拒否、アクセス削減、プロセッサ構成、および検証済みのシャットダウンが含まれています。完全なギャラリーとアニメーション | セッションの詳細とハッシュ。
フックの有効化、ポリシーの設定、CPU 状態の検査、ランタイムの管理を 1 つのコンソールから行えます。

呼び出し元、パス、入力フィールドを含む、制御された 6 バイトの NtWriteFile リクエスト。

要求されたアクセス 0x12019F は、マスク 0x6 を除去した後 0x120199 になります。オープンは成功し、プローブによって結果のハンドルが書き込みできないことが確認されます。このラベル付き合成画像は、モニター出力とアプリケーションの結果を対にして示しています。



Windows x64 用 v0.1.0 をダウンロード (ZIP) | リリースノートと SHA-256 チェックサム
ZIP には velum.sys と velum-console.exe が含まれています。ドライバをロードする前に以下のセットアップガイドに従うか、ソースからビルドしてください:
C++ x64 ツール、および対応する Windows SDK と WDK を備えた Visual Studio 2022 または 2026 をインストールしてください。build.bat はインストール済みのツールを検出します。VS_PATH、WDK_ROOT、WDK_VER により明示的に選択できます。キットの互換性とローカルで検証済みの構成については、ビルド要件を参照してください。
build.bat check
build.bat
デフォルトの最適化 Release ビルドでは x64/Release/velum.sys と
x64/Release/velum-console.exe が生成され、PE デバッグディレクトリや PDB 出力は含まれません。
build.bat diagnostic は、別個の診断用バイナリとシンボルを生成するための明示的なオプトインです。
ランタイムテレメトリは Release でも引き続き利用可能です。生成された出力は Git の管理外に保たれます。
セットアップガイドでは、一時的な F7 ロード、インストール、 Intel VT-x/EPT の要件、ゲストの Hyper-V/VBS 設定、およびテスト済みの VMware 構成について説明しています。 準備したドライバをロードした後、管理者として対応するコンソールを実行します:
velum-console.exe
velum-console.exe status
velum-console.exe remove
1つのフックと制御されたワークロードから始めてください。シャットダウンとサービス削除のフローには remove を使用してください。コンソールを閉じてもランタイムはインストールされたままになります。
Windows 10 22H2 および Windows 11 26H2 でテスト済みで、全フック動作およびVMware上での起動/シャットダウンを含みます。物理Windows 11のキャプチャセッションは 20/20 のCPUごとの診断 に合格し、ファイル書き込みの拒否、アクセス削減、CPUIDの適用/リセット、TSC設定、および検証済みのネイティブリターンを示しています。
開発リグレッション結果には 8,272件のホストチェック と 1,936件のモックVM-exitイベントチェック が含まれます。技術解説では、テストワークロード、結果、構成の詳細について説明しています。
hypervisor/ Kernel C, assembly and per-CPU runtime
user-mode/ Interactive control console
shared/ Protocols, field schemas and policy helpers
readmes/ Setup, usage guides and technical articles
assets/ Runtime screenshots, animations and capture metadata
build.bat Source-build entry point
LICENSE MIT License
レポートについては、SECURITY.mdを参照してください。参考資料: Intel SDM、 Windows ドライバーのドキュメント、 および PHNT ネイティブ定義。