DLL サイドローディングをエミュレート:Eclipse でコンテキスト・ハイジャック

Activation Context Hijacking: “Eclipse” PoC Weaponizes Trusted Processes

2024/12/08 SecurityOnline — BlackArrow のレッド チーム・オペレーターである、Kurosh Dabbagh Escalante が発表したのは、Eclipse という名の PoC ツールである。この Eclipse は、Activation Contexts ハイジャックと呼ばれる手法をエミュレートするものであり、ターゲット・プロセス内での任意の DLL のロード/実行を達成する。Escalante は、このツールを “DLL サイドローディング + DLL プロキシのより柔軟な代替手段” と表現し、信頼されたプロセスに任意のコードを挿入するという点で、幅広い用途があると述べている。

この Activation Contexts とは、システムが DLL/COM オブジェクトなどの、システム。リソースのロードを管理するために使用する、メモリ内のデータ構造を意味する。つまり、アプリケーションによる、正しいバージョンのライブラリ/コンポーネントのロードを保証する上で、重要な役割を果たすものである。

Escalante の PoC ドキュメントでは、「Activation Contexts とは、システムがアプリケーションをリダイレクトし、特定の DLL バージョンをロードするために使用する情報を取り込んだ、メモリ内のデータ構造である」と、説明されている。

それぞれのプロセスには、プロセス作成時にバイナリのマニフェストを解析して初期化される、メインの Activation Contexts がある。このコンテキストを OS がメモリにマップし、それを使用して DLL のロード場所を決定する。また、それぞれのスレッドは、実行時にカスタム Activation Contexts を作成し、それをアクティブ化することも可能である。つまり、それにより、メインの Activation Contexts が一時的にオーバーライドされる。

メイン Activation Contexts (AC) が Process Environment Block (PEB) に格納され、カスタム AC が Thread Environment Block (TEB) で管理される。この階層により、攻撃者がコンテキストをハイジャックする機会が生まれる。Eclipse は、これらの構造の操作により、DLL のロード・パスをリダイレクトする。

このツールには2つの動作モードがある:

  • ハイジャックされた AC によるプロセス生成:Eclipse は、一時的に停止状態で新しいプロセスを生成し、PEB に保存されているメインの Activation Contexts をハイジャックする。それにより攻撃者は、プロセスをリダイレクトし、正当な DLL ではなく、自身の DLL をロードするための、悪意の Activation Contexts を設定できる。Escalante は、「この操作により、アプリケーションは、プロセスの実行が再開されたときに正当な DLL ではなく、自分の DLL をロードするように、リダイレクトされる」と述べている。
  • 実行中のプロセスのアクティブな Activation Contexts のハイジャック:このモードでは、Eclipse により、すでに実行中のプロセスをターゲットにする。メイン・スレッドにアクティブなカスタム Activation Contexts がある場合には、Eclipse は TEB 内の Activation Contexts タックをハイジャックする。また、アクティブなカスタム Activation Contexts が存在しない場合には、デフォルトで PEB からメイン Activation Contexts をハイジャックする。この2つのシナリオには関係なく、結果は同じとなる。つまり、ハイジャックされた Activation Contexts が参照されると、正当な DLL ではなく、悪意の DLL がロードされる。

DLL サイドローディングとプロキシの代替として設計された Eclipse だが、その使用例は、信頼できるプロセスへのコード・インジェクションだけに留まらない。DLL の読み込みパスを動的にリダイレクトする機能により、以下のことが可能になる。

  • 検出メカニズムの回避:信頼できるプロセス内で、悪意のあるコードを実行することで、信頼できないバイナリを監視するセキュリティ・ツールを、攻撃者は回避できる。
  • 標的型エクスプロイト:Eclipse による、インジェクション・プロセスの詳細な制御が可能になるため、特定のプロセスやシナリオに合わせた、攻撃アプローチを調整できる。
  • レッド チーム・トレーニング:サイバー・セキュリティの専門家が、Activation Contexts ベースの攻撃を理解し防御するための、強力なツールとして Eclipse は機能する。

Kurosh Dabbagh Escalante の GitHub リポジトリで、PoC コードと詳細なチュートリアルの入手が可能となっている。このリソースを活用することで、レッド チーム・メンバーや防御者たちは、Eclipse を容易に利用できる。Escalante は、「プロセスのメイン Activation Contexts のメモリ・アドレスは PEB から取得されるが、スレッドによってアクティブ化されるカスタム Activation Contexts は、TEB にある Activation Contexts スタックから取得される」と述べている。