
Intel x64向けWindowsハイパーバイザー: BYOVDを含むカーネルレベルの攻撃を軽減するために設計された、VMwareおよびHyper-Vと互換性のあるWindows用防御型ホストハイパーバイザー。
NovaHypervisor は、防御目的の x64 Intel ホストベースのハイパーバイザです。このプロジェクトの目標は、カーネルベースの攻撃 (Bring Your Own Vulnerable Driver (BYOVD) やその他の手段による) から防御製品 (アンチウイルス/エンドポイント保護) やカーネルメモリ構造を保護し、カーネルメモリへの不正アクセスを防止することです。
NovaHypervisor は C++ とアセンブリで書かれており、Windows 10 以降で動作するように設計されています。使用方法の詳細については、セットアップ のセクションを参照してください。
[!IMPORTANT]
ハイパーバイザは、Windows 11 25H2 および複数の Windows 10 バージョンでテスト済みです。 問題が発生した場合は、既存の Issue がないことを確認した上で、新しい Issue を開いてください。
NovaHypervisor は、以下のハイパーバイザ上で動作可能です:
✅ - サポート済み、テスト済み
⌛ - 作業中
❌ - サポート対象外、サポート予定なし
| ハイパーバイザ | サポート状況 |
|---|---|
| VMware | ✅ |
| Hyper-V | ✅ |
| Hyper-V with VBS | ⌛ |
| VirtualBox | ❌ |
| QEMU | ❌ |
| KVM | ❌ |
NovaHypervisor を使用するには、カーネルサービスを作成して起動する必要があります:
sc create NovaHypervisor type= kernel binPath= "C:\Path\To\NovaHypervisor.sys"
sc start NovaHypervisor
次に、NovaClient アプリケーションを使用して、保護するアドレスを追加および削除できます:
REM 保護するアドレスを追加
NovaClient.exe protect 0x12345678 <r|w|x> <execution hook>
REM 保護を解除するアドレス
NovaClient.exe unprotect 0x12345678
protect:メモリアドレスへのアクセスを保護します。保護の種類を指定できます:
r:読み取り保護w:書き込み保護x:実行保護
指定する保護は、そのアドレスが持つ保護です。例えば、実行権限を削除したい場合は "rw" を指定します。unprotect:メモリアドレスから保護を解除します。
[!NOTE] インラインフックと EPT フックによる実行フックはサポートされておらず、悪用を防ぐためにこのプロジェクトではサポートされる予定はありません。
プロジェクトをコンパイルするためのセットアップには、以下が必要です:
ハイパーバイザを実行するには、Windows 10 以降がインストールされたマシンが必要です。また、以下が必要です:
NovaHypervisor は、HIGH_LEVEL IRQL および VMX ルートパスで動作可能な小さな COM ロガーを使用して、第 2 シリアルポート (COM2、I/O ポート 0x2F8) にログを出力します。固定の NovaHypervisor プレフィックス付きで、デバッグ、情報、エラーレコードを出力します。
bcdedit /dbgsettings serial debugport:2 baudrate:115200
ホスト側のシリアルパイプまたは VM の構成された COM2 エンドポイントから、115200 8N1 で出力をキャプチャします。例えば、PuTTY では VM 用に構成されたシリアルトランスポートに接続し、ドライバの実行中にログ行を確認できます。connect-vm.ps1 スクリプトを使用して VM の COM2 ポートに接続し、ログをコンソールに表示することもできます。
テスト環境でテストおよびデバッグするには、管理者権限のコマンドプロンプトで次のコマンドを実行し、マシンを再起動します:
bcdedit /set testsigning on
bcdedit /debug on
bcdedit /dbgsettings net hostip:<HOSTIP> port:55000 key:1.2.3.4
ここで <HOSTIP> はホストマシンの IP アドレスです。