
InfraGuard は、Command & Control リダイレクション プロキシおよびマネージャーであり、あなたの Red Team インフラストラクチャを脅威の帰属から保護します。
Red team インフラストラクチャトラッカー兼 C2 リダイレクタ -- RedWarden の現代的代替品。
InfraGuard はインターネットと C2 チームサーバーの間に位置し、すべてのインバウンドリクエストを malleable C2 プロファイルに対して検証し、適合しないものをブロックします。スキャナー、ボット、ブルーチームのプローブは偽のサイトにリダイレクトされ、正当なビーコントラフィックはチームサーバーに通過します。


ssl_fingerprint、HAProxy ネイティブ JA3)またはカスタム asyncio プロトコルで動作;オプションの許可リストモードでビーコン JA3 を強制.htaccess および robots.txt ファイルから IP ブロックリストと User-Agent パターンをインポートmythic_file バックエンドが Mythic の /direct/download/{uuid} をクリーンな URL でプロキシ;固定 UUID(URL エイリアシング)またはプロキシモード(パスから UUID を取得);アクセス制御は InfraGuard のフィルタースタック全体によって提供on_event フックによるイベント駆動アーキテクチャ、プラグインごとの設定、イベントフィルタリング(only_blocked、min_score、ドメイン include/exclude).env ファイルを自動ロード;すべての設定値とキーで ${VAR} 構文が使用可能インストールについてはWiki ページを参照してください
infraguard --version Show version
infraguard --help Show help
infraguard run -c config.yaml Start the reverse proxy
infraguard run -c config.yaml --port 8443 Override listen port
infraguard run -c config.yaml --host 0.0.0.0 Override bind address
infraguard dashboard -c config.yaml Start the web dashboard
infraguard dashboard -c config.yaml --port 9090 Override dashboard port
infraguard tui Launch TUI with login screen
infraguard tui --url http://host:8080 --token TOK Auto-connect to dashboard
infraguard tui -c config.yaml Read URL/token from config
infraguard command-post -c command-post.yaml Start multi-instance dashboard
infraguard command-post --instance name:url:token Add instance via CLI (repeatable)
infraguard profile parse <file> Parse and display a C2 profile
infraguard profile parse <file> --format json Output as JSON
infraguard profile parse <file> --type brute_ratel Force profile type
infraguard profile convert <file> -o out.json Convert profile to JSON
# Supported --type values: auto, cobalt_strike, mythic, brute_ratel, sliver, havoc, nighthawk, poshc2
# Auto-detection: .profile = CS, .toml = Havoc, .yaml = PoshC2, .json = auto-detect by keys
infraguard ingest <files...> Ingest .htaccess/robots.txt rules
infraguard ingest <files...> --format blocklist Output as IP blocklist
infraguard ingest <files...> --format json Output as JSON
infraguard ingest <files...> -o banned_ips.txt Write blocklist to file
infraguard generate nginx -c config.yaml Generate Nginx config
infraguard generate caddy -c config.yaml Generate Caddyfile
infraguard generate apache -c config.yaml Generate Apache VirtualHost
infraguard init -o config.yaml Generate starter config
infraguard validate -c config.yaml Validate config file
generate コマンドは、オペレーターのカスタマイズのために追加のフラグを受け付けます:
複数の InfraGuard インスタンスを異なる VPS やクラウドプロバイダーで実行する場合、コマンドポストはすべてのノードからの統計、リクエスト、ライブイベントを単一のダッシュボードに集約します。
┌─────────────────────────────┐
│ コマンドポストダッシュボード │
│ http://localhost:9090 │
└──────────┬──────────────────┘
│ 並列フェッチ
┌─────┼──────┬──────────┐
▼ ▼ ▼ ▼
IG-1 IG-2 IG-3 ... IG-N

# 設定ファイル経由
infraguard command-post -c config/command-post.yaml
# CLI引数経由
infraguard command-post \
--instance "prod:https://ig1.example.com:8080:TOKEN1" \
--instance "staging:https://ig2.example.com:8080:TOKEN2" \
--port 9090
# Docker経由
docker compose --profile command-post up -d command-post
config/command-post.yaml を作成:
instances:
- name: "prod-cs"
url: "https://ig1.example.com:8080"
token: "${IG_PROD_TOKEN}"
- name: "prod-mythic"
url: "https://ig2.example.com:8080"
token: "${IG_MYTHIC_TOKEN}"
- name: "staging"
url: "https://ig3.example.com:8080"
token: "${IG_STAGING_TOKEN}"
port: 9090
# auth_token: "${COMMAND_POST_TOKEN}"
cp .env.example .env
# .env をドメイン、チームサーバー、トークンで編集
docker compose up -d
これにより2つのサービスが起動します:
# .env で設定:
# INFRAGUARD_LETSENCRYPT=true
# INFRAGUARD_DOMAIN=cdn.example.com
# [email protected]
# 初期証明書を取得
docker compose --profile letsencrypt up certbot
# プロキシを起動(LE証明書を使用)
docker compose up -d proxy dashboard
# 自動更新を開始(12時間ごとにチェック)
docker compose --profile letsencrypt up -d certbot-renew
Let's Encrypt の要件:
INFRAGUARD_DOMAIN がこのホストのパブリックIPに解決されることINFRAGUARD_DOMAIN_EMAIL が有効なメールアドレスであること# 3種類すべての GeoLite2 データベース(City、ASN、Country)をダウンロード
docker compose --profile geoip up geoip-update
# その後通常通り起動 - データベースは /app/geoip/ にマウント
docker compose up -d proxy dashboard
# PwnDrop をプロキシと一緒に起動
docker compose --profile pwndrop up -d pwndrop
# PwnDrop 管理UIに https://localhost:8443 でアクセス
# InfraGuard は内部で http://pwndrop:80 にアクセス
次に、設定でコンテンツルートを構成し、ペイロードパスを PwnDrop にプロキシします:
domains:
cdn.example.com:
content_routes:
- path: "/downloads/*"
backend:
type: "pwndrop"
target: "http://pwndrop:80"
auth_token: "${PWNDROP_TOKEN}"
# 複数のリダイレクタノードを実行
docker compose up -d --scale proxy-node=3
docker-compose.yml の proxy-node サービスをコメント解除して有効にします。
infraguard/
__init__.py Package init
__main__.py python -m infraguard entry
main.py Click CLI
config/ YAML config loading, .env support, Pydantic validation
core/ ASGI proxy engine (app, proxy, router, TLS, drop actions, content delivery)
profiles/ C2 profile parsers (Cobalt Strike, Mythic, Brute Ratel, Sliver, Havoc, Nighthawk, PoshC2)
pipeline/ Request validation filters (JA3, IP, bot, header, DNS, geo, profile, replay, enumeration, sandbox)
intel/ IP intelligence (blocklists, GeoIP, rDNS, feeds, rule ingestion)
tracking/ SQLite persistence (request logging, stats, node registry)
plugins/ Plugin system (protocol, loader, builtins)
ui/
api/ REST API + WebSocket (Starlette)
web/ SPA dashboard (HTML/JS/CSS)
tui/ Terminal UI (Textual) with login screen
command_post/ Multi-instance aggregation dashboard
listeners/ Protocol listeners (HTTP, DNS, MQTT, WebSocket)
backends/ Config generators (Nginx, Caddy, Apache)
models/ Shared types and event models
プロジェクトに貢献したい場合は、バージョン名で新しいブランチを作成し、プルリクエストで同じバージョン名を指定してください。例: branch=v1.2.3 | [v1.2.3] Added blah item.
BSD 2-Clause License。詳細は LICENSE を参照してください。
Copyright (c) 2026, Whispergate
| フラグ | 説明 |
|---|
--listen-port PORT | リッスンポートを上書き(デフォルト:設定から) |
--ssl-cert PATH | SSL証明書のパスを上書き |
--ssl-key PATH | SSL秘密鍵のパスを上書き |
--redirect-url URL | ブロックされたリクエストのリダイレクトURLを上書き |
--default-action redirect|404 | マッチしないリクエストのアクション |
--no-ip-filter | IP許可/拒否ブロックを除外 |
--no-header-check | ヘッダー検証ルールを除外 |
--alias DOMAIN:ALIAS | サーバー名エイリアスを追加(繰り返し可) |
--header NAME:VALUE | カスタムレスポンスヘッダーを追加(繰り返し可) |
| エンドポイント | メソッド | 説明 |
|---|
/api/instances | GET | 全インスタンスをヘルスステータスとともに一覧表示 |
/api/stats | GET | 全インスタンスからの統合統計 |
/api/requests | GET | 全インスタンスからのインターリーブリクエストログ |
/api/intel/whitelist | POST | 全インスタンスでIPを許可リストに追加 |
/api/intel/blocklist | POST | 全インスタンスでIPをブロックリストに追加 |
/api/intel/blocklist | DELETE | 全インスタンスでIPのブロックを解除 |
/ws/events | WS | 全インスタンスからの多重化ライブイベント |
| ボリューム | 目的 |
|---|
./config | 設定ファイル(読み取り専用でマウント) |
./examples | C2プロファイル(読み取り専用でマウント) |
./rules | 取り込まれたブロックリストとルールソースファイル(読み取り専用でマウント) |
./data | SQLiteデータベース(永続化) |
certs | TLS証明書(プロキシとcertbotで共有) |
geoip | GeoLite2データベース(geoip-updateサービスによって生成) |
pwndrop-data | PwnDropアップロードファイルとデータベース |
| 機能 | RedWarden | InfraGuard |
|---|
| アーキテクチャ | 単一 ~99KB ファイル | モジュラーパッケージ |
| プロファイル解析 | 正規表現ステートマシン | フルブロック/トランスフォーム対応の構造化パーサー |
| C2 サポート | Cobalt Strike のみ | Cobalt Strike、Mythic、Brute Ratel C4、Sliver、Havoc、Nighthawk、PoshC2 |
| プロトコル | HTTP のみ | HTTP、DNS、MQTT、WebSocket |
| フィルターモデル | 二分合格/不合格 | スコアベース(0.0~1.0 しきい値)、10フィルターチェーン |
| TLS フィンガープリンティング | なし | JA3 ブロッキング(Masscan、ZGrab2、Shodan、curl、Python requests、Nmap) |
| サンドボックス検出 | なし | ヘッドレスブラウザ / Safe Links / サンドボックス UA およびヘッダースコアリング |
| 列挙検出 | なし | パス列挙 + DNS NXDOMAIN 追跡、自動ブロック |
| バーン検出 | なし | CT ログ監視、ドメインレピュテーション(URLhaus/OpenPhish/GSB)、クロスドメインアナリスト検出 |
| ペイロード配信 | なし | PwnDrop、Mythic ファイルストア、ファイルシステム、条件付き配信対応 HTTP プロキシ |
| ペイロード保護 | なし | ワンタイムトークン、ルートごとのレート制限、配信ガード(環境キーイング) |
| フィッシング保護 | なし | キャンペーントークン検証(静的リストまたは HMAC 署名) |
| オペレーター UI | なし | Web ダッシュボード + ターミナル UI + マルチインスタンスコマンドポスト |
| 設定生成 | なし | 完全カスタマイズ可能な Nginx、Caddy、Apache |
| ルール取り込み | なし | .htaccess + robots.txt パーサー |
| 脅威インテルフィード | なし | 5 つの公開ソースからの自動更新 |
| プラグインシステム | 基本の4メソッドインターフェース | on_event フック + プラグインごとの設定によるイベント駆動 |
| SIEM 統合 | なし | Elasticsearch、Wazuh、Syslog(CEF/JSON) |
| Webhook アラート | なし | Discord、Slack、汎用 webhook(バーンアラートは同じプラグイン経由) |
| 許可リストインテリジェンス | なし | 起動時に CIDR を ASN/組織/国で自動拡充 |
| アンチリプレイ | SQLite ハッシュ | メモリ内 L1 キャッシュ付き永続 SQLite、再起動後も生存 |
| ドロップアクション | redirect、reset、proxy | redirect、reset、proxy、tarpit |
| TLS 管理 | 手動のみ | 自動自己署名 + Let's Encrypt 統合 |
| エッジデプロイ | なし | ドメインフロンティング用 Cloudflare Worker + AWS Lambda エッジプロキシ |
| デプロイ | 手動 | ヘルスチェック付き Docker Compose |
| ロギング | カスタム色付き出力 | 構造化 JSON(structlog) |
| 非同期 | Tornado コールバック | ネイティブ async/await(ASGI + uvicorn) |