セキュリティ研究者は、Microsoft の最先端のカーネル保護が有効なシステムであっても、攻撃者が Windows タスク マネージャーやシステム監視ツールから悪意のあるプロセスを隠せる高度な手法を特定しました。
このバイパスは、正規の Windows API を利用して、整合性チェックが改ざんを検知する前に中核データ構造を操作し、PatchGuard と Hypervisor-Protected Code Integrity(HVCI)の両方を回避します。
この手法は、プロセス終了時の重要なタイミング ウィンドウを悪用します。プロセスが終了すると、Windows は、すべてのアクティブなプロセスを追跡する二重連結リストの整合性を検証します。これは、各 EPROCESS オブジェクト内に埋め込まれた ActiveProcessLinks と呼ばれる構造です。
従来、ルートキットはこれらのリストからプロセスをアンリンクすることでプロセスを隠してきました。しかし、プロセスが終了すると、カーネルの PspProcessDelete 関数が検証チェックを実行し、破損したリスト構造を検出して KERNEL_SECURITY_CHECK_FAILURE(0x139 bugcheck)を引き起こし、システムを即座にクラッシュさせて改ざんの試みを露呈させます。
新しいバイパスは、PsSetCreateProcessNotifyRoutineEx を使用することで、この検知を完全に回避します。これは正当な監視目的のために設計された、文書化済みの Microsoft API です。
登録すると、このコールバックはプロセスの作成および終了イベントの通知を受け取り、終了するプロセスの EPROCESS 構造へのアクセスも含まれます。
研究者は、発見したところによると、このコールバック内で破損した LIST_ENTRY 構造を修復することで、PspProcessDelete の検証が実行される数マイクロ秒前に連結リストを有効な状態へ復元できるといいます。
カーネル パッチ保護の概要
カーネルの整合性チェックが実行される時点では、構造体は完全に正当なものに見えるため、セキュリティ違反を引き起こすことなくプロセスは正常に終了できます。
たとえマルウェアがカーネルを侵害して VTL0 で完全な Ring-0 アクセスを得たとしても、LsaIso から資格情報をダンプすることはできません。なぜなら、それらの資格情報は物理的に VTL1 の隔離されたメモリ空間に存在するからです。
研究者は次のように述べています。「解決策は驚くほどシンプルで、Microsoft 独自の API 設計の範囲内に完全に収まっています。コードの改変も、ハードウェアのハッキングも、ハイパーバイザーの悪用も不要で、必要なのは正確なタイミングと、カーネルが何を検証するかの知識だけです。」
このことは脅威アクターにとって重大な意味を持ちます。プロセス隠蔽は、ルートキット、APT(高度持続的脅威)、およびアンチチート回避における中核的な手法であり続けています。
タスク マネージャー、Process Hacker、セキュリティ監視ツールからプロセスを不可視にすることで、攻撃者はプロセス列挙に依存するエンドポイント セキュリティ製品による検知を回避しつつ永続化を実現できます。
ただし、実運用での展開には大きな障壁が残ります。この手法にはカーネル モードでのコード実行が必要であり、これは現代の Windows システムにおいて従来から最も獲得が難しいアクセス レベルの一つです。
さらに重要なのは、本番システムでは、攻撃者が正規のコード署名証明書を保有するか、既存の署名済みドライバーを侵害するか、あるいはシステムに既に存在する脆弱なドライバーの脆弱性を悪用する必要がある点です。
Microsoft のコード整合性ポリシーは、未署名または信頼されていないドライバーの読み込みを防止するため、大きな関門となります。
緩和策
研究者は、HVCI 自体はこの手法を防げないことを強調しています。HVCI の保護は、Extended Page Tables(EPT)を通じてカーネルのコード ページへの変更を防ぐことに重点を置いており、これはハイパーバイザーによって強制される第 2 層のメモリ保護です。
このバイパスは、文書化された Windows API を用いて書き込み可能なデータのみを操作するため、HVCI の防御境界を完全に回避します。
緩和戦略は依然として限定的です。セキュリティ チームは、ドライバーのコード整合性監視、ドライバー読み込みの監査、未署名ドライバーの読み込み検知に注力すべきです。
特に終了時に EPROCESS 構造を操作するような不審なプロセス コールバックの振る舞い検知により、進行中の悪用を特定できる可能性があります。
加えて、予期しないプロセス終了シーケンスやタイミングの異常を監視することで、この手法が展開されている事例を明らかにできるかもしれません。
この研究は、Windows セキュリティにおける拡大する現実を浮き彫りにしています。Microsoft がハイパーバイザーに支えられた保護によってコード実行経路を強化するにつれ、攻撃者は正規 API 内でのデータ構造操作へとますます向かっており、これは防御がはるかに難しい攻撃面です。
翻訳元: https://gbhackers.com/kernel-patch-protection/