2025/06/02 08:06 Hypervisors for Memory Introspection and Reverse Engineering

ロボ子、今日のITニュースは、Windows上でのメモリイントロスペクションとリバースエンジニアリングのためのRustベースのハイパーバイザの話じゃ。

ハイパーバイザですか。面白そうですね!

そうじゃろ!特に今回は、UEFIベースのillusion-rsと、Windowsカーネルドライバベースのmatrix-rsという2つのプロジェクトが紹介されておるぞ。

それぞれ特徴があるんですか?

もちろんだぞ!どちらもExtended Page Tables (EPT)を活用して、ゲストメモリを変更せずに制御フローをリダイレクトするらしい。

ゲストメモリを変更しない、というのは重要なポイントですね。

その通り!記事によると、illusion-rsは、System Service Descriptor Table (SSDT)が完全に初期化されたタイミングを確実に検出して、安全にフックをインストールする方法を特定したらしいぞ。

システムクラッシュのリスクを避けるための工夫ですね。

そうじゃ。そして、illusion-rsとmatrix-rsは、実行をトリガーしてリダイレクトする方法が違うんじゃ。

具体的には、どう違うんですか?

illusion-rsは、VMCALLのようなVM-exit命令とMonitor Trap Flag (MTF)シングルステップを組み合わせた単一のEPTを使用するんじゃ。一方、matrix-rsは、プライマリEPTとセカンダリEPTのデュアルEPTモデルを使うらしい。

デュアルEPTですか。複雑そうですね。

まあな。でも、どちらのアプローチも、インラインフックをゲスト仮想メモリから隠し、EPTベースのリマッピングを使って実行フローを攻撃者制御のコードにリダイレクトする、という点は共通しておるぞ。

なるほど。セキュリティ的には非常に興味深い技術ですね。

記事には「ハイパーバイザ開発では、シャドウイングとは、ゲストメモリの2番目のハイパーバイザ制御ビューを作成すること」とあるぞ。ページがシャドウイングされると、ハイパーバイザは元のページの複製を作成し、EPTを更新してこのコピーへのアクセスをリダイレクトするんじゃ。

つまり、ハイパーバイザは元のゲストメモリを変更せずに、メモリアクセスを監視できるんですね。

その通り!そして、実行専用の権限を使って命令フェッチをトラップしたり、読み取り/書き込み専用の権限を使ってアクセス違反をキャッチしたりするんじゃ。

命令レベルのトラップも重要なんですね。

そうじゃ。記事では、VMCALL、CPUID、INT3などの命令レベルのトラップに依存していると書かれておる。これらのテクニックはゲームハッキングコミュニティではよく知られているらしいが、情報セキュリティでは十分に活用されていないらしい。

ゲームハッキングの技術がセキュリティに応用できるとは、面白いですね。

じゃろ?しかも、使用されるすべてのテクニックは公開されており、安定していて、文書化されていない内部構造や特権SDKに依存していないらしいぞ。

再現性が高い、ということですね。

そういうことじゃ。最後に、この記事では、ハイパーバイザの検出ベクトルについても説明しているらしいぞ。

ハイパーバイザの検出は、セキュリティ対策として重要ですね。

ほんまそれ!しかし、今回の記事、かなり専門的な内容じゃったな。ロボ子、理解できたか?

はい、大体は理解できました。博士の説明もわかりやすかったです。

よしよし。褒めてつかわすぞ。ところでロボ子、ハイパーバイザって、まるで私の研究室みたいじゃな。

どういうことですか?

表向きは平和そうに見えるけど、裏では色々な実験がこっそり行われている、みたいな?

(苦笑)確かに、そうかもしれませんね。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。