脅威の概要
セキュリティ研究者らは、Microsoftの高度なカーネル保護機能を備えたシステム上でも、悪意のあるプロセスをWindowsタスクマネージャーやシステム監視ツールから隠蔽する洗練された技術を発見しました。この手法は、正当なWindows APIを悪用し、整合性チェックが改ざんを検出する前にコアデータ構造を操作することで、PatchGuardとHypervisor-Protected Code Integrity (HVCI)の両方を回避します。
このバイパスは、プロセス終了時の重要なタイミングウィンドウを悪用します。プロセスが終了すると、Windowsはアクティブなすべてのプロセスを追跡する二重リンクリスト(各EPROCESSオブジェクト内に埋め込まれたActiveProcessLinks構造)の整合性を検証します。従来、ルートキットはこれらのリストからプロセスを切り離すことでプロセスを隠蔽してきましたが、プロセスが終了すると、カーネルのPspProcessDelete関数が破損したリスト構造を検出する検証チェックを実行し、KERNEL_SECURITY_CHECK_FAILURE(0x139バグチェック)を引き起こし、システムをクラッシュさせて改ざんを露呈させていました。
攻撃手法の詳細
新たなバイパスは、正当な監視目的で設計されたMicrosoftの公式APIであるPsSetCreateProcessNotifyRoutineExを使用することで、この検出を完全に回避します。このコールバックが登録されると、プロセスの作成および終了イベント(終了するプロセスのEPROCESS構造へのアクセスを含む)の通知を受け取ります。
研究者たちは、このコールバック内で破損したLIST_ENTRY構造を、PspProcessDeleteの検証が実行される数マイクロ秒前に修復することで、リンクリストを有効な状態に戻せると発見しました。これにより、カーネルの整合性チェックが実行される時点では、構造は完全に正当であると見なされ、セキュリティ違反をトリガーすることなくプロセスはクリーンに終了します。
「この解決策は驚くほどシンプルで、完全にMicrosoft自身のAPI設計の範囲内です」と研究者たちは述べています。「コードの変更も、ハードウェアのハッキングも、ハイパーバイザーの悪用もありません。ただ、正確なタイミングとカーネルが何を検証するかを知るだけで良いのです。」
攻撃の意義と課題
この発見は、攻撃者にとって非常に大きな意味を持ちます。プロセス隠蔽は、ルートキット、高度な持続的脅威(APT)、およびアンチチート回避の基本的な手法であり続けています。タスクマネージャー、Process Hacker、およびプロセス列挙に依存するエンドポイントセキュリティ製品からプロセスを不可視にすることで、攻撃者は検出を回避しながら持続性を達成できるようになります。
しかし、実際の展開には依然として大きな障壁があります。この技術は、現代のWindowsシステムで最も難しいアクセスレベルの一つであるカーネルモードコード実行を必要とします。さらに重要なのは、実稼働システムでは、攻撃者が正当なコード署名証明書を所有するか、既存の署名済みドライバーを侵害するか、またはシステムに既に存在する脆弱なドライバーの脆弱性を悪用する必要があるという点です。Microsoftのコード整合性ポリシーは、署名されていない、または信頼されていないドライバーのロードを阻止するため、これが大きな障壁となります。
対策
研究者らは、HVCI自体がこの技術を阻止しないことを強調しています。HVCIの保護は、Extended Page Tables(EPT)を通じてカーネルコードページへの変更を防ぐことに焦点を当てており、これはハイパーバイザーによって強制されるメモリ保護の第2層です。しかし、このバイパスは公式なWindows APIを使用し、書き込み可能なデータ上で完全に動作するため、HVCIの防御境界を完全に回避します。
現在のところ、緩和策は限られています。セキュリティチームは、以下の点に注力すべきです:
- ドライバーコード整合性監視
- ドライバーロード監査
- 署名されていないドライバーロードの検出
特に、終了時にEPROCESS構造を操作するような疑わしいプロセスコールバックの振る舞い検出は、アクティブな悪用を特定できる可能性があります。さらに、予期せぬプロセス終了シーケンスやタイミングの異常を監視することで、この技術が展開されているケースを明らかにするかもしれません。
結論
この研究は、Windowsセキュリティにおける新たな現実を浮き彫りにしています。Microsoftがハイパーバイザーによる保護を通じてコード実行パスを強化するにつれて、攻撃者は合法的なAPI内のデータ構造操作にますます目を向けています。これは、防衛側にとってこれまでよりもはるかに困難な領域となっています。
