新たなMoonwalk++の概念実証(PoC)は、メモリー内で暗号化された状態を維持しながらマルウェアがWindowsのコールスタックを偽装し、最新のEDR検出を回避できることを示している。
この研究は、企業の防御担当者がますます依存するスタックベースのテレメトリーに存在する盲点を浮き彫りにしている。
研究者は「公開されている検出ツールは、コールスタックの改ざんをまったく認識できない」と述べた
Moonwalk++が示すスタックベース検出の限界
Moonwalk++は、特定の脆弱性やCVEを悪用しない概念実証型の回避技法だ。
その代わりに、最新のエンドポイント検知・対応(EDR)ツールに組み込まれた前提、特にコードインジェクションやシェルコードの実行、侵害後の活動を特定するためにWindowsのコールスタック・テレメトリーに依存する前提を標的にする。
コールスタックの検証、モジュールの出所、スタックアンワインドのヒューリスティクスを防御の重要な要素としている組織は、同様の技法が実際のマルウェアに組み込まれた場合、影響を受ける可能性がある。
Elastic Securityの研究者らは公開したガイダンスで、CALL命令の検証、信頼できるモジュール解決の確認、メモリー特性の分析によって悪意あるコールスタックを検出する方法を示している。
Moonwalk++は、このアプローチに基づく保護を回避するよう明示的に設計された。これは、成熟した検出ロジック自体が攻撃者の標的になり得ることを示している。
技術的には、Moonwalk++は従来のスタック偽装研究を発展させ、複数の回避技法を一貫した単一の実行フローに組み合わせている。これにより、あらゆる段階で正規の実行に見える状態を維持する。
まず、Windowsバイナリー内に自然に存在する命令ガジェットを利用する。これらのバイナリーには、想定されたオフセットに有効なCALL命令がすでに含まれているため、偽造されたリターンアドレスが完全性チェックを通過できる。
次に、OneDrive.exeのような信頼されたプロセスにシェルコードを注入し、プロセス自身のイメージベースから偽装したスタックフレームを取得することで、モジュール解決チェックを回避する。これにより、痕跡は正規のものに見える。
最後に、Moonwalk++はカスタムROPチェーンを使ってメモリー内のペイロードを暗号化しながら、クリーンでアンワインド可能なコールスタックを維持する。
これらの技法を組み合わせることで、マルウェアは完全にメモリー内で実行・持続しながら、正常に見えるコールスタックを提示し、高度な検出テレメトリーの有効性を損なわせることができる。
Moonwalk++に対してコールスタック検出が機能しなかった理由
テストでは、Hunt-Sleeping-Beacons、Get-InjectedThreadEx、およびEclipseといった一般的な検出技法で、Moonwalk++の活動を検出できなかった。
これらのケースでは、Moonwalk++が生成したコールスタックが検証基準を完全に満たしていたため、ツールは意味のある侵害指標を報告しなかった。
より広範なメモリー難読化の痕跡に焦点を当てるツール、例えばhollows_hunterだけが異常を検出した。ただし、その検出もコールスタック分析そのものではなく、異常なメモリー保護などの間接的な指標によるものだった。
こうした失敗は、悪意ある実行はいずれ異常なものとして現れると想定する、スタックベース検出の根本的な弱点を露呈している。
Moonwalk++は、実行コンテキストを厳密に制御する攻撃者が、内部的な整合性を保ち、正しくアンワインドでき、完全に正規モジュールへ解決されるコールスタックを構築できることを示し、この前提に疑問を投げかけている。
スタックのあらゆる層が防御側の想定どおりに整合していると、高度なテレメトリーでさえ識別能力を失う。
これにより検出の課題は、「悪意がありそうな」実行の特定から、規模を拡大して確実に監視することがなお難しい、微妙な挙動やメモリーレベルのシグナルの認識へと移行する。
EDR回避に対する検出を強化する
以下の対策は、組織が検出能力を強化し、高度な回避技法によるリスクを低減するための実践的な方法を示す。
- コールスタック・テレメトリーを補助的なシグナルとして扱い メモリーの変化と相関させ、スレッドの活動、APIの使用状況、プロセスの系譜と照合する。
- 監視すべき動的コードをほとんど実行しない信頼されたプロセスの異常な挙動やインジェクション活動を監視する。
- 単一の技法に依存するのではなく、挙動、メモリー、実行コンテキストのシグナルを重ね合わせて検出を強化する。
- 攻撃者によるエミュレーションとレッドチーム演習によって検出ロジックをテスト・検証し、回避の盲点を特定する。
- 動的コードの実行、メモリー保護の変更、リターン指向プログラミングの挙動に対する管理を強化する。
これらの対策を組み合わせることで、単一の検出手法への依存を減らし、レジリエンスを高められる。
検出ロジックが標的になるとき
Moonwalk++は、攻撃者の手法がより広範に変化していることを反映している。マルウェアはもはや検出の回避だけを目的とせず、防御側が依存する根本的な前提やヒューリスティクスを悪用するよう意図的に設計されている。
テレメトリーそのものではなく、セキュリティツールがテレメトリーを解釈する方法を標的にすることで、Moonwalk++のような技法は、検出ロジックを主要な攻撃対象領域とみなす、攻撃者の思考の進化を浮き彫りにしている。
この変化は、多くの組織がゼロトラストへと移行している理由を改めて示している。





