Hacker

「Mockingjay」と名付けられた新しいプロセスインジェクション技術により、攻撃者がEDR(エンドポイント検出および応答)やその他のセキュリティ製品をバイパスし、侵害されたシステム上で悪意のあるコードを密かに実行することが可能になる可能性がある。

サイバーセキュリティ企業Security Joesの研究者がこの手法を発見しました。この手法は、RWX (読み取り、書き込み、実行) セクションを持つ正規の DLL を利用して、EDR フックを回避し、リモート プロセスにコードを挿入します。

プロセス インジェクションは、オペレーティング システムによって信頼されている別の実行中のプロセスのアドレス空間で任意のコードを実行する方法です。そのため、攻撃者は検出されずに悪意のあるコードを実行できます。

プロセス インジェクション技術の例には、DLL インジェクション、PE (ポータブル実行可能ファイル) インジェクション、リフレクティブ DLL インジェクション、スレッド実行ハイジャック、プロセス ハローイング、マッピング インジェクション、APC (非同期プロシージャ コール) インジェクションなどが含まれます。

これらすべての手法において、攻撃者は Windows API やさまざまなシステム コールを使用し、プロセス/スレッドを作成し、プロセス メモリに書き込む必要があります。したがって、上記に関連する特定のアクションを監視するセキュリティ ツールは、不審なインシデントを検出し、必要に応じて介入することができます。

Security Joes 氏は、Mockingjay が他のアプローチより際立っているのは、一般的に悪用される Windows API 呼び出しを使用せず、特別なアクセス許可を設定せず、メモリ割り当てを実行せず、スレッドを起動することさえないため、多くの検出の可能性を排除できるからだと述べています。

モッキングジェイの考案

研究者の最初の目標は、デフォルトの RWX セクションを持つ脆弱な DLL を見つけ、セキュリティ ソフトウェアに危険信号を引き起こす可能性のある追加のアクセス許可の取得などの追加の手順を実行せずに、その内容を変更して悪意のあるコードをロードできるようにすることでした。

Security Joes のアナリストは、適切な DLL を探していたところ、Visual Studio 2022 コミュニティ内で、サイズが 16 KB のデフォルトの RWX セクションを持つ DLL msys-2.0.dll を発見しました。

「この既存の RWX セクションを活用することで、それが提供する固有のメモリ保護を活用し、すでに EDR によってフックされている可能性のある機能を効果的にバイパスすることができます」とレポートには書かれています。

「このアプローチは、ユーザーランドフックによって課せられる制限を回避するだけでなく、インジェクション技術のための堅牢で信頼性の高い環境を確立します。」

次に、チームは 2 つの注入方法を開発しました。1 つは自己注入、もう 1 つはリモート プロセス インジェクションです。

最初のケースでは、カスタム アプリケーション (「nightmare.exe」) は、2 つの Windows API 呼び出しを使用して脆弱な DLL をメモリ領域に直接ロードし、メモリ割り当てやアクセス許可の設定を実行せずに RWX セクションへの直接アクセスを許可します。

RWX セクションへの悪意のあるコードの書き込み
RWX セクションへの悪意のあるコードの書き込み(セキュリティ ジョー)

次に、クリーンなシステム モジュールである NTDLL.DLL が、システムコール番号を抽出するために悪用されます。この番号は、「Hell’s Gate EDR アンフック」技術を使用して EDR フックをバイパスするために使用され、挿入されたシェルコードが検出されずに実行されるようにします。

API の使用をバイパスできるようにシステム コール スタブを作成するコード
API の使用をバイパスできるようにシステム コール スタブを作成するコード
(セキュリティジョーズ)

2 番目の方法では、msys-2.0.dll の TWX セクションを悪用して、リモート プロセス、特に「ssh.exe」プロセスにペイロードを挿入します。

カスタム アプリケーションは ssh.exe を子プロセスとして起動し、ターゲット プロセスへのハンドルを開き、脆弱な DLL の RWX メモリ領域に悪意のあるコードを挿入します。

新しいプロセスを起動するコード
新しいプロセスを起動するコード(Security Joes)

最後に、挿入されたシェルコードは「MyLibrary.dll」DLL ファイルをロードし、攻撃例として攻撃者のマシンを使用したリバース シェルを確立します。

侵害されたシステム上でリバース シェルを確立する
侵害されたシステム上でリモート シェルを確立する(セキュリティ ジョーズ)

テストの結果、このリモート インジェクション攻撃は、ターゲット プロセス内での新しいスレッドの作成、メモリの割り当て、アクセス許可の設定を必要とせず、EDR ソリューションをうまく回避できることが示されました。

Mockingjay で提案されている両方のメソッドは、「LoadLibraryW」、「CreateProcessW」、「GetModuleInformation」などの Windows API を使用して、構成が間違っている DLL をロードし、DLL の RWX セクションのアドレスを見つけます。

ただし、EDR は通常、従来のプロセス インジェクション攻撃でよく呼び出される「WriteProcessMemory」、「NtWriteVirtualMemory」、「CreateRemoteThread」、「NtCreateThreadEx」などの API を監視します。したがって、モッキングジェイが警報を発する可能性は低くなります。

Joes Security による「Mockingjay」の開発は、組織が現在の EDR ソリューションだけに依存するのではなく、総合的なセキュリティ アプローチを採用する必要がある理由のもう 1 つの兆候です。