Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
PhantomCtx — アクティベーションコンテキストハイジャック回避ツール | Kitploit
ツール/GitHubGitHub/r3xmax/phantomctx
特権昇格エクスプロイトポストエクスプロイトレッドチーミングペイロード開発バイナリエクスプロイト
GitHubr3xmax/phantomctx

PhantomCtx

アクティベーションコンテキストハイジャック回避ツール

リポジトリを見る
3065293ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

PhantomCtx

PhantomCtxは、アクティベーションコンテキストハイジャックを自動化し、署名済み実行ファイル(例:Microsoft、Adobe、Mozilla)の大部分に任意のDLLをロードすることを目的としたツールです。

このローダーは、従来のDLLハイジャック & サイドローディングに対する現代的代替手段として提示されています。従来のアプローチとは異なり、脆弱なバイナリは必要ありません。この手法は、ターゲット実行ファイルがその**インポートアドレステーブル(IAT)**を通じてDLLを解決する限り、または最悪の場合は絶対パスなしのLoadLibraryを介してDLLを解決する限り実行可能です。```c C:\PhantomCtx\x64>.\PhantomCtx.exe

            +----------------------------------+
            |         PhantomCtx v1.0          |
            +----------------------------------+

Usage: PhantomCtx.exe -m [MODE] [OPTIONS]

Modes: -m recon Displays information about the Activation Context DLL redirections of a running process or one to be spawned.

    -m spawn        Perform Activation Context Hijacking using an on-disk executable
                    (preferably a signed binary for OPSEC purposes).

    -m runtime      Perform Activation Context Hijacking on an already running process.
詳しい内部動作や、強力なEDRを回避する方法については、[私のテクニカルブログ](https://rexmax.dev/posts/phantomctx-new-approach-to-activation-context-hijacking-for-edr-evasion/)の記事をご覧ください。

# 目次

- [内部メカニズム](#internal-mechanism)
  - [EDR回避に特化したアクティベーションコンテキストハイジャックの新しい手法](#a-new-method-for-activation-context-hijacking-focused-on-edr-evasion)
- [コンパイル方法](#how-to-compile)
- [使い方: モジュールベースのワークフロー](#usage-module-based-workflow)
  - [偵察](#recon)
  - [生成(推奨)](#spawn-recommended)
  - [実行時](#runtime)
- [例: アクティベーションコンテキストハイジャック + mpnotify.exe のDLLプロキシ化](#example-activation-context-hijacking--dll-proxying-mpnotifyexe)
- [免責事項](#disclaimer)
- [参考文献](#references)

# 内部メカニズム

`PhantomCtx` は、ほとんどのプロセスに存在する**正当な**Windows機能である**アクティベーションコンテキスト**を悪用します。Microsoft によると:

>[_アクティベーションコンテキスト_](https://learn.microsoft.com/en-us/windows/win32/sbscs/a-sbscs-gly) は、システムがアプリケーションの**特定のDLLバージョン**、COMオブジェクトインスタンス、またはカスタムウィンドウバージョンへの読み込みをリダイレクトするために使用できる情報を含むメモリ内のデータ構造です。

Windows ローダーがDLLを解決する際(`LoadLibrary` またはインポートテーブル経由)、次の定義された解決順序に従います:

1. DLL リダイレクション
2. API セット
3. **SxS マニフェストリダイレクション**
4. ロード済みモジュールリスト
5. 既知のDLL
6. プロセスパッケージ依存関係グラフ
7–12. ディスク上の標準ファイル検索順序

`PhantomCtx` は手順3: **SxS マニフェストリダイレクション**を標的にします。アクティベーションコンテキストは、実行可能ファイルに関連付けられた[Side-by-Side](https://en.wikipedia.org/wiki/Side-by-side_assembly)(`.manifest`)ファイルから派生し、通常はPEバイナリに埋め込まれています。内部的には、アクティベーションコンテキストには複数のセクションをインデックス化する**目次(ToC)**が含まれており、**DLLリダイレクションセクション**もその一つです。ローダーは通常、`PEB.ActivationContextData` を介してアクティベーションコンテキストにアクセスします。

[Kurosh Dabbagh Escalante](https://github.com/Kudaes) 氏の研究により、`CreateActCtxW` を使用して悪意のあるアクティベーションコンテキストを構築し、ターゲットプロセスの`RW`メモリに書き込み、`PEB.ActivationContextData` を上書きして細工した構造体を指すようにすることで、アクティベーションコンテキストをアクティブ化できることが示されました。

ハイジャックされると、ローダーは悪意のあるアクティベーションコンテキスト内で定義されたDLLリダイレクションを解決し、**ライブラリの解決先**を攻撃者が制御するパスにリダイレクトします。

彼の研究の一環として開発されたローダー `Eclipse` は、[公式リポジトリ](https://github.com/Kudaes/Eclipse)にあります。

## EDR回避に特化したアクティベーションコンテキストハイジャックの新しい手法

複数のテストの結果、`Eclipse` は以下のポイントでElasticなどの強力なEDRに検出されました:

- `Potential Suspended Process Code Injection`: 中断されたプロセスの作成後に `NtWriteVirtualMemory` を使用してACブロブをリモートプロセスにコピーする。
- `Remote Process Memory Write by Low Reputation Module`: コールスタックに `CreateProcess` がなく、かつ低評価モジュールによる `NtWriteVirtualMemory`(`PEB.ActivationContextData` の上書きに必要)。
- `Remote Memory Write to Trusted Target Process`: コールスタックに `CreateProcess` がない `WriteProcessMemory`。システムまたはユーザーがインストールしたバイナリに制限される。

`PhantomCtx` に実装する代替アプローチを1日研究した結果、**元のアクティベーションコンテキストのメモリ領域は、プロセス作成時にマッピングされたセクションビューである**ことを発見しました。このセクションビューを `NtUnmapViewOfSection` でアンマップし、代わりに悪意のあるアクティベーションコンテキストによってバッキングされた新しい読み取り専用セクションビューを作成し、元の領域と**まったく同じメモリアドレス**にマッピングすることが可能です。

その結果、ローダーが `PEB.ActivationContextData` ポインタを上書きする必要が**もはやなくなり**ます。これにより、`NtAllocateVirtualMemory` や `NtWriteVirtualMemory` を使用する必要がなくなり、リモートプロセスメモリ書き込みやインジェクションに関連するすべてのEDR監視ルールをバイパスできます。

さらに、検出を困難にするために、`PhantomCtx` は `CreateActCtxW` を使用しません。これにより、攻撃中に `.manifest` ファイルを処理する必要がなくなります。選択したモードに応じて、有効なDLLリダイレクションセクションを含む別のリモートプロセスから `NtReadVirtualMemory` を使用してアクティベーションコンテキストを**盗み**、DLLリダイレクションエントリをローカルで再構築し、パッチを適用してから元のものを置き換えることができます。

# コンパイル方法

ツールをコンパイルするには、Visual Studio または互換性のあるコンパイラを使用することをお勧めします。

VS を使用する場合は、`x64 Native Tools Command Prompt for VS` を開き、プロジェクトのルートディレクトリに移動して `compile.bat` でコンパイルします:```
C:\PhantomCtx>.\compile.bat
[INFO] Created output directory: x64
[INFO] Compiling PhantomCtx...
main.c
utils.c
recon.c
actctx.c
c_runtime.c
dynamic_resolution.c
process_utils.c
spawn.c
runtime.c
Generating Code...
[SUCCESSFUL] Build successful: x64\PhantomCtx.exe

使用方法: モジュールベースのワークフロー

このツールはモジュール式アーキテクチャで設計されており、開発を簡素化しつつ、オペレーターに明確なステップベースのワークフローを提供します。

各モジュールは、エクスプロイトワークフロー内で特定の役割を果たします。

ツールの機能を最大限に活用するために、各モジュールの目的を確認してください!!!

攻撃は、生成されるプロセス(推奨)または既に実行中のプロセスのいずれかに対して実行できます。このツールは両方のシナリオに対応するよう設計されています。```c C:\PhantomCtx\x64>.\PhantomCtx.exe

            +----------------------------------+
            |         PhantomCtx v1.0          |
            +----------------------------------+

Usage: PhantomCtx.exe -m [MODE] [OPTIONS]

Modes: -m recon Displays information about the Activation Context DLL redirections of a running process or one to be spawned.

    -m spawn        Perform Activation Context Hijacking using an on-disk executable
                    (preferably a signed binary for OPSEC purposes).

    -m runtime      Perform Activation Context Hijacking on an already running process.
## Recon

`recon`モードは、対象プログラムまたは実行中のプロセスのアクティベーションコンテキストを解析することに焦点を当てています。これは最初に実行すべきモジュールであり、エクスプロイトワークフロー内で使用するエクスプロイトサブモジュールを決定します。```c
C:\PhantomCtx\x64>.\PhantomCtx.exe -m recon -h

                +----------------------------------+
                |         PhantomCtx v1.0          |
                +----------------------------------+

  Usage:
        PhantomCtx.exe -m recon -s [SUBMODE] -p [PROCESS_NAME|PATH]

  Submodes:
        -s spawn        Spawn a process in suspended mode to retrieve its
                        Activation Context DLL redirection information.

        -s runtime      Attach to a currently running process to retrieve its
                        Activation Context DLL redirection information.

  Examples:
        PhantomCtx.exe -m recon -s spawn   -p C:\path\to\target.exe
        PhantomCtx.exe -m recon -s runtime -p target.exe

例として、署名されたMicrosoftバイナリ mpnotify.exe を使用します。最初のステップは、それにDLLリダイレクトセクションを持つ有効なアクティベーションコンテキストが含まれているかどうかを判断することです。

含まれていない場合、ツールは spawn または runtime モードの steal-context サブモジュールを推奨します。このサブモジュールは、有効なリダイレクトセクションを含む別のプロセスからアクティベーションコンテキストを取得します。```c C:\PhantomCtx\x64>.\PhantomCtx.exe -m recon -s spawn -p "C:\Windows\System32\mpnotify.exe" [SUCCESS] Suspended process created... [SUCCESS] Activation Context Data Blob copied to local heap buffer @00000294CEA79CD0 (916 bytes)

+-[ ACTIVATION CONTEXT DATA ] | Magic : 0x78746341 (Actx) | HeaderSize : 0x20 (32 bytes) | FormatVersion : 1 | TotalSize : 0x394 (916 bytes) | Flags : 0x00000000 | +--[ TOC ] 6 entries | [00] Id=1 Format=1 Offset=0x00D4 Length=0x0218 | [01] Id=4 Format=2 Offset=0x02EC Length=0x0028 | [02] Id=5 Format=2 Offset=0x0314 Length=0x0028 | [03] Id=6 Format=2 Offset=0x033C Length=0x0028 | [04] Id=9 Format=2 Offset=0x0364 Length=0x0028 | [05] Id=11 Format=1 Offset=0x038C Length=0x0008 | +--[ DLL REDIRECTION ] not present in this blob | +--[ HINT ] Use 'steal-context' to steal the Activation Context from a running process that has one. Example: -m spawn|runtime -s steal-context -p -d --dll-path --steal-from

対象のプログラムまたはプロセスのアクティベーションコンテキストに有効なDLLリダイレクトセクションが含まれている場合、最も効率的なアプローチは、`spawn`または`runtime`のエクスプロイテーションモード内の`add-entry`または`patch-entry`サブモジュールを使用することです。

## Spawn(推奨)
ツールをダウンロード