Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
illusion-rs — Rusty Hypervisor - RustによるWindows UEFI Blue Pill Type-1ハイパーバイザー(コードネーム: Illusion) | Kitploit
ツール/GitHubGitHub/memn0ps/illusion-rs
防御ツールメモリフォレンジック永続化メカニズムリバースエンジニアリングセキュリティ仮想化マルウェア分析ハードウェアセキュリティバイナリ解析論文と研究レッドチーミングArchived
GitHub
413604ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
memn0ps/illusion-rs

illusion-rs

Rusty Hypervisor - RustによるWindows UEFI Blue Pill Type-1ハイパーバイザー(コードネーム: Illusion)

リポジトリを見るウェブサイト

Windows UEFI Blue Pill Type-1ハイパーバイザ in Rust (コードネーム: Illusion)

License Issues Forks Stars

ブログ: https://memn0ps.github.io/hypervisors-for-memory-introspection-and-reverse-engineering/

軽量でメモリセーフ、そして驚異的に高速なRustベースのIntel VT-x向けフックを備えたtype-1リサーチハイパーバイザであり、仮想化のコアコンセプトの研究に焦点を当てています。

注: Illusionハイパーバイザ (Windows UEFI Blue Pill Type-1ハイパーバイザ in Rust) はより安定しており、より多くの機能をサポートし、全体的により優れた設計となっています。Matrixハイパーバイザ (Windows Kernel Blue Pill Type-2ハイパーバイザ in Rust) はより古い実験的なバージョンであり、本番環境での使用を意図したものではありません。両プロジェクトは、人々がRustでのハイパーバイザ開発を始める手助けをするテンプレートとして機能します。

説明

ページング: x64仮想アドレスから物理アドレスへの変換

この図は、従来のページングシステムにおけるx64仮想アドレスから物理アドレスへの変換の仕組みを示しています。x64アーキテクチャでは、この変換には4つのレベルのページテーブルが関与します: PML4、PDPT、PDT、およびPT (Page Map Level 4、Page Directory Pointer Table、Page Directory Table、およびPage Table) です。各レベルは仮想アドレスの9ビットを使用して次のレベルをインデックスし、最終的にRAM内の特定の物理アドレスを指します。このプロセスはオペレーティングシステムとメモリ管理ユニット (MMU) によって管理され、ソフトウェアが使用する仮想アドレスをハードウェアが使用する物理アドレスに変換します。

x64 Virtual Address Translation
図1: x64仮想アドレス変換 (Full Credits: Guided Hacking)

Extended Page Tables (EPT): 第2レベルアドレス変換 (SLAT)

Extended Page Tables (EPT) は、Intel VT-xやAMD-VのNested Page Tables (NPT) などのハードウェア支援仮想化技術の機能です。EPTは第2レベルアドレス変換 (SLAT) を実装し、特に仮想化環境向けに設計されています。従来のページングがゲストOS内で仮想アドレスを物理アドレスに変換するのに対し、EPTはゲストOSが使用するゲスト物理アドレスをハイパーバイザが使用するホスト物理アドレスに変換する追加のレイヤーを加えます。この第2の変換レイヤーはハイパーバイザによって管理され、ゲストオペレーティングシステムが自身のページテーブルを独立して管理できるようにします。SLATはメモリ操作中のVM exitの必要性を最小限に抑えることでパフォーマンスを向上させ、オーバーヘッドを削減し仮想化効率を高めます。

以下の図は、Rustで書かれたWindows UEFI Blue Pill Type-1ハイパーバイザ (コードネーム: Illusion) に隠しEPTフックを実装する方法を示しています。

EPT Hooks
図2: Extended Page Tables (EPT) フック (Illusion)

機能

PatchGuard互換機能

  • ✅ System Service Descriptor Table (SSDT) を介した隠しシステムコール (Syscall) フック。
  • ✅ 隠しカーネルインラインフック。
  • ✅ 隠しModel Specific Registers (MSR) フック。

プロセッサ固有の機能

  • ✅ Extended Page Tables (EPT)。
  • ✅ Memory Type Range Registers (MTRRs)。
  • ❌ Intel Processor Trace (PT)。

Microsoft Hyper-V互換機能

  • ❌ Virtualization Based Security (VBS) 有効下でのMicrosoft Hyper-V (Type-2) のネストされたハイパーバイザとしての実行サポート。
  • ❌ Virtualization Based Security (VBS) 有効下でのMicrosoft Hyper-V (Type-1) 上のプライマリハイパーバイザとしての実行サポート。

VM Exit処理

  • ✅ VM Exit処理: ExceptionOrNmi (#GP, #PF, #BP, #UD) (0)、InitSignal (3)、StartupIpi (4)、Cpuid (10)、Getsec (11)、Hlt (12)、Invd (13)、Vmcall (18)、Vmclear (19)、Vmlaunch (20)、Vmptrld (21)、Vmptrst (22)、Vmresume (24)、Vmxon (27)、Vmxoff (26)、ControlRegisterAccesses (28)、Rdmsr (31)、Wrmsr (32)、MonitorTrapFlag (37)、Rdtsc (49)、EptViolation (48)、EptMisconfiguration (50)、Invept (53)、Invvpid (55)、Xsetbv (55)。

ハイパーバイザ検出

  • ✅ EPTを使用してゲストからハイパーバイザメモリを隠蔽 (ホストメモリを指すゲストメモリを0xFFで埋められたダミーページにリダイレクト)。
  • ✅ カスタムページテーブルベースのハイパーバイザ検出バイパス (CR3の破壊を含む、ゲストからの分離とセキュリティを提供)。
  • ✅ カスタムGDTおよびIDTベースのハイパーバイザ検出バイパス (ゲストからの分離とセキュリティを保証)。
  • ✅ CPUIDベースのハイパーバイザ検出バイパス (Feature InformationおよびHypervisor VendorのHypervisorPresentを解除しベンダーIDシグネチャを削除)。
  • ✅ MSRベースのハイパーバイザ検出バイパス (無効、未サポート、予約済みのHyper-V MSR vmexitに対して#GPを注入)。
  • ✅ CRベースのハイパーバイザ検出バイパス (CR0とCR4をシャドウしてハイパーバイザ固有のビットを隠蔽)。
  • ✅ XSETBVベースのハイパーバイザ検出バイパス (無効または未サポートのXSETBV vmexitに対して#GPを注入)。
  • ✅ VMCALLベースのハイパーバイザ検出バイパス (無効または未サポートのVMCALL vmexitに対して#GPを注入)。
  • ✅ ExceptionOrNMIベースのハイパーバイザ検出バイパス (特定の例外vmexitに対して#GP、#PF、#BP、#UDを注入)。
  • ✅ 無条件vmexit (無条件vmexitに対して#UDを注入するが、VmxonについてはVMXEを含まない場合は#UDを注入し、それ以外の場合はVMXEを含む場合#GPを注入)。
  • ❌ EPTベースのハイパーバイザ検出バイパス (書き込みチェック、タイミングチェック、スレッドチェック)。
  • ❌ RDTSCベースのハイパーバイザ検出バイパス。
  • ✅ UEFIメモリマップ/テーブルからハイパーバイザメモリを削除 (ハイパーバイザが占有するメモリ領域を特定し、それらの領域をUNUSABLEとしてマークするようUEFIメモリマップを変更)。

分離とセキュリティ

  • ✅ ハイパーバイザのセキュリティと分離を強化するためのGlobal Descriptor Table (GDT)、Interrupt Descriptor Table (IDT)、およびページテーブルのカスタム実装。

対応ハードウェア

  • ✅ VT-xおよびExtended Page Tables (EPT) をサポートするIntelプロセッサ。
  • ❌ AMD-V (SVM) およびNested Page Tables (NPT) をサポートするAMDプロセッサ。

対応プラットフォーム

  • ✅ Windows 10 - Windows 11、x64のみ。

インストール

  • こちらからRustをインストールします。
  • cargo-makeをインストール: cargo install cargo-make。

プロジェクトのビルド

  • デバッグ: cargo make build-debug。
  • リリース: cargo make build-release。

プロジェクトの実行

  • デバッグ: cargo make run-debug。
  • リリース: cargo make run-release。

デバッグ

  • シリアルポートログ: シリアルポートロガーを使用してハイパーバイザからのログをキャプチャします。

デバッグモードの有効化

  • テストモード: bcdedit.exe /set testsigning onでテスト署名を有効化します。
  • Windowsデバッグ: このMicrosoftガイドの手順に従ってください。
bcdedit.exe /bootdebug {bootmgr} on
bcdedit.exe /bootdebug on
bcdedit.exe /debug on

Windbg によるネットワークデバッグ

  • セットアップ: bcdedit.exe /dbgsettings net hostip:w.x.y.z port:n。

使用方法

UEFI ブルーピルハイパーバイザーは、以下の条件で動作します:

  • Secure Boot が無効: 脆弱性は不要です(このプロジェクトでサポートされています)。
  • Virtualization-Based Security (VBS) が無効: 互換性を確保します。
  • 既知の UEFI 脆弱性の悪用: 古いまたはサポートされていないファームウェアを使用し、Bring Your Own Vulnerable Binary (BYOVB) 手法を含めて Secure Boot をバイパスします。
  • 未指定の UEFI 脆弱性の悪用: ゼロデイ脆弱性を使用して Secure Boot を無効化します。

設定に関する注意

この UEFI ハイパーバイザーをセットアップする際は、システムの論理プロセッサ/コア/スレッド数に応じてファイルを設定することが重要です。global_const.rs 内の該当するコードを編集してください。

グローバルヒープアロケータはすべてのプロセッサ/コア/スレッドで共有され、事前に割り当てられたメモリプールです。スタックサイズはプロセッサ/コア/スレッドごとに割り当てられます。この設計により、特に事前に割り当てられたバッファを必要とするフックの設定などのタスクにおいて、メモリ割り当ての追跡が容易になります。このファイルの設定を調整することで、最適なパフォーマンスとリソース管理を維持しながら、すべてのプロセッサに対応する十分なメモリが割り当てられることを保証できます。

使用方法 1: VMware Workstation 上の UEFI シェルを介して UEFI ブルーピルハイパーバイザーを実行する(サポート対象)

  1. 起動用の仮想 USB ドライブを作成する

    管理者として以下の PowerShell スクリプトを実行し、USB ドライブに新しいパーティションを作成して FAT32 でフォーマットします。このスクリプトは既存のパーティションを 512 MB 縮小し、USB ドライブに「Hypervisor」というラベルの新しいパーティションを作成します。環境に応じてドライブレターを変更してください。あるいは、物理 USB ドライブを使用することもできます。

    # Define the size to shrink in MB
    $sizeToShrinkMB = 512
    
    # Define the drive letter of the existing partition to shrink
    $existingDriveLetter = "C"
    
    # Define the drive letter and label for the new partition
    $newDriveLetter = "D"
    $newFileSystemLabel = "Hypervisor"
    
    # Shrink the existing partition
    $volume = Get-Volume -DriveLetter $existingDriveLetter
    $partition = $volume | Get-Partition
    Resize-Partition -DriveLetter $partition.DriveLetter -Size ($partition.Size - ($sizeToShrinkMB * 1MB))
    
    # Create a new partition in the unallocated space
    $disk = Get-Disk -Number $partition.DiskNumber
    $newPartition = New-Partition -DiskNumber $disk.Number -UseMaximumSize -DriveLetter $newDriveLetter
    
    # Format the new partition
    Format-Volume -DriveLetter $newDriveLetter -FileSystem FAT32 -NewFileSystemLabel $newFileSystemLabel
    
    Write-Output "Partition created and formatted successfully."
    
  2. VMware Workstation のセットアップ

ツールをダウンロード