New Mockingjay process injection technique evades EDR detection
2023/06/27 BleepingComputer — Mockingjay と名付けられた、新しいプロセス・インジェクションの手法により、脅威たちは EDR (Endpoint Detection and Response) などのセキュリティ製品による検知を回避し、侵害したシステム上で悪意のコードを密かに実行できるという。この手法を発見したのは、サイバー・セキュリティ企業 Security Joes の研究者たちである、具体的に言うと、RWX (Read/Write/Execute) セクションを持つ正規の DLL を利用して、EDR のフックを回避し、リモート・プロセスにコードを注入するものとなる。
プロセス・インジェクションとは、オペレーティング・システムから信頼を得ている実行プロセスのアドレス空間で、任意のコードを実行する手法であり、それを達成した脅威アクターは検知されることなく、悪意のコードを実行できる。

プロセス・インジェクションの例としては、DLL injection/PE (portable executable) Injection/ Reflective DLL Injection/ Thread Execution Hijacking/Process Hollowing/Mapping Injection/APC (asynchronous procedure call) Injection などがある。
これら全ての手法において、攻撃者は Windows の API などの各種システム・コールを使用し、プロセス/スレッドを作成し、プロセスのメモリ書き込みを行う必要がある。したがって、上記に関連する特定のアクションを監視するセキュリティ・ツールであれは、疑わしいインシデントを検出し、必要に応じて介入することが可能となる。
Security Joes が指摘する、Mockingjay の際立っている点は、一般的に悪用されることの多い、Windows API コールの使用/特別なパーミッションの設定・メモリ割り当ての実行/スレッドの起動などを行わないことだ。つまり、それらを制限することで、検出の機会を排除しているという。
Mockingjay を考案する
研究者たちの最初の目標は、デフォルトで RWX セクションを持つ、脆弱な DLL を見つけることだった。Security Joes のアナリストは、適切な DLL を探している最中に、Visual Studio 2022 Community に含まれる “msys-2.0.dll” という DLL を発見した。
彼らは、「この既存の RWX セクションを活用することで、固有のメモリ保護を利用することが可能となり、すでに EDR にフックされている可能性のある関数を、効果的にバイパスできる。このアプローチは、userland フックによる制限を回避するだけではなく、我々のインジェクション技術にとって、堅牢で信頼性の高い環境を確立することになる」と述べている。
続いて、彼らは2つのインジェクション手法を開発した。1つはセルフ・インジェクションであり、もう1つはリモート・プロセス・インジェクションである。
最初のケースは、カスタム・アプリケーション “nightmare.exe” が、2つのWindows API コールを使って脆弱な DLL をメモリ空間に直接ロードし、メモリ割り当てや、パーミッションの設定は行わずに、RWX セクションへの直接アクセスを許可するものだ。
続いて、クリーンなシステム・モジュールである “NTDLL.DLL” を悪用してシステムコール番号を抽出し、”Hell’s Gate EDR unhook” テクニックを用いて EDR フックを回避し、注入されたシェルコードを検出されることなく実行させる。
この2つ目の方法は、”msys-2.0.dll” の TWX セクションを悪用して、リモートプロセスにペイロードを注入するものだが、”ssh.exe” プロセスが最適だという。
このカスタム・アプリケーションは、子プロセスとして “ssh.exe” を起動し、ターゲット・プロセスへのハンドルを開き、脆弱な DLL の RWX メモリ空間に悪意のコードを注入する。
最後に、注入されたシェルコードにより、”MyLibrary.dll” DLL ファイルをロードし、攻撃者のマシンの攻撃例としてリバースシェルを確立する。

テストによると、このリモート・インジェクション攻撃の制約により、ターゲット・プロセス内での新しいスレッドの作成/メモリを割り当て/パーミッションの設定などが行われないため、EDR ソリューションを上手く回避できたという。
Mockingjayで提案された、この2つの方法は、LoadLibraryW/CreateProcessW/GetModuleInformation などの Windows API を使用して、誤って設定された DLL をロードし、DLL の RWX セクションのアドレスを見つけだすというものだ。
しかし、一般的な EDR は、WriteProcessMemory/NtWriteVirtualMemory/CreateRemoteThread/NtCreateThreadEx などの API を監視している。それらは、従来のプロセス・インジェクション攻撃で呼び出されることが多いが、Mockingjay がアラームを発する可能性が低いとされる。
Joes Security による Mockingjay の開発は、組織が現行の EDR ソリューションだけに頼るのではなく、総合的なセキュリティ・アプローチを採用しなければならない理由を示す、もう1つの証拠となるである。
このブログで EDR を検索すると、それぞれのマルウェアの EDR 回避の手法などが見えてきます。それの中でも、2023/04/21 の「AuKill マルウェア:悪意のドライバーで EDR を無力化してから攻撃を開始」は力技系であり、今回の Mockingjay は忍系なのかもしれません。ただし、このところ、DLL サイドローディングの採用が主流になっているように思えます。ただし、そこへ至る手口は多様であるため、守る側もたいへんです。




You must be logged in to post a comment.