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


mythic_file バックエンドが Mythic の /direct/download/{uuid} をクリーンな URL でプロキシ。固定 UUID またはプロキシモード。アクセス制御は InfraGuard のフィルタースタックが提供/metrics エンドポイントでリクエストカウンター、アップストリームレイテンシーヒストグラム、サーキットブレーカー状態、フィード鮮度、アクティブ接続を公開on_event フック、プラグインごとの設定、イベントフィルタリングを備えたイベント駆動アーキテクチャ.env ファイルサポート付き.htaccess および robots.txt ファイルから IP ブロックリストと User-Agent パターンをインポート.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 Parse and display a C2 profile infraguard profile parse --format json Output as JSON infraguard profile parse --type brute_ratel Force profile type infraguard profile convert -o out.json Convert profile to JSON
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` コマンドは、オペレーターのカスタマイズ用に追加フラグを受け付けます:
| フラグ | 説明 |
|---|---|
| `--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` | カスタムレスポンスヘッダーを追加します(繰り返し指定可能) |
## コマンドポスト(マルチインスタンスダッシュボード)
異なるVPSやクラウドプロバイダー上で複数のInfraGuardインスタンスを実行する場合、コマンドポストは全ノードからの統計情報、リクエスト、ライブイベントを単一のダッシュボードに集約します。```
┌─────────────────────────────┐
│ Command Post Dashboard │
│ http://localhost:9090 │
└──────────┬──────────────────┘
│ parallel fetch
┌─────┼──────┬──────────┐
▼ ▼ ▼ ▼
IG-1 IG-2 IG-3 ... IG-N

infraguard command-post -c config/command-post.yaml
infraguard command-post
--instance "prod:https://ig1.example.com:8080:TOKEN1"
--instance "staging:https://ig2.example.com:8080:TOKEN2"
--port 9090
docker compose --profile command-post up -d command-post
### 設定
`config/command-post.yaml` を作成します:```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
docker compose up -d
これにより2つのサービスが起動します:
- **proxy** -- ポート443および80のリダイレクタ
- **dashboard** -- ポート8080のWeb UI
### Let's Encrypt を使用する```bash
# Set in .env:
# INFRAGUARD_LETSENCRYPT=true
# INFRAGUARD_DOMAIN=cdn.example.com
# [email protected]
# Obtain the initial certificate
docker compose --profile letsencrypt up certbot
# Start the proxy (will use the LE cert)
docker compose up -d proxy dashboard
# Start auto-renewal (checks every 12 hours)
docker compose --profile letsencrypt up -d certbot-renew
Requirements for Let's Encrypt:
INFRAGUARD_DOMAIN がこのホストのパブリック IP に解決されることINFRAGUARD_DOMAIN_EMAIL が有効なメールアドレスであることdocker compose --profile geoip up geoip-update
docker compose up -d proxy dashboard
### PwnDrop を使用(ペイロード配信)```bash
# Start PwnDrop alongside the proxy
docker compose --profile pwndrop up -d pwndrop
# Access PwnDrop admin UI at https://localhost:8443
# InfraGuard reaches it internally at http://pwndrop:80
次に、設定内のコンテンツルートを構成して、ペイロードのパスをPwnDropにプロキシします。```yaml domains: cdn.example.com: content_routes: - path: "/downloads/*" backend: type: "pwndrop" target: "http://pwndrop:80" auth_token: "${PWNDROP_TOKEN}"
### Ollama を使用する場合(AI 支援のプロファイル生成)```bash
# Start the Ollama service
docker compose --profile ollama up -d ollama
# Pull the default model (~5 GB)
docker compose --profile ollama exec ollama ollama pull qwen3:8b
# The dashboard's AI chat panel will connect automatically
ダッシュボードの環境変数 INFRAGUARD_OLLAMA_URL は docker-compose.yml で事前設定されています。Ollama が実行されている場合、AI アシスタントのトグルがダッシュボードのデコイおよびプロファイルページに表示されます。
docker compose up -d --scale proxy-node=3
Uncomment the `proxy-node` service in `docker-compose.yml` to enable.
### Volumes
| Volume | Purpose |
|---|---|
| `./config` | Configuration files (mounted read-only) |
| `./examples` | C2 profiles (mounted read-only) |
| `./rules` | Ingested blocklists and rule source files (mounted read-only) |
| `./data` | SQLite database and generated profiles (persisted) |
| `certs` | TLS certificates (shared between proxy and certbot) |
| `geoip` | GeoLite2 databases (populated by `geoip-update` service) |
| `pwndrop-data` | PwnDrop uploaded files and database |
| `ollama-data` | Ollama model weights and configuration |
## Architecture```
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 and generators (8 types)
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
| Endpoint | Method | Description |
|---|
/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 | 全インスタンスの多重化されたライブイベント |
| 機能 | RedWarden | InfraGuard |
|---|
| アーキテクチャ | 単一の約99KBファイル | モジュラーパッケージ |
| プロファイル解析 | 正規表現ステートマシン | 完全なブロック/トランスフォーム対応の構造化パーサー |
| C2サポート | Cobalt Strikeのみ | Cobalt Strike, Mythic, Brute Ratel C4, Sliver, Havoc, Nighthawk, PoshC2 |
| プロファイル管理 | 手動ファイル編集 | 生成、インポート、ホットスワップ、AI支援を備えたダッシュボードウィザード |
| プロトコル | 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ログ監視、ドメイン評判、クロスドメインアナリスト検出、信頼度スコアリング |
| インフラストラクチャの復元力 | なし | サーキットブレーカー、プロトコルフェールオーバー、デッドマンスイッチ、インフラストラクチャローテーション |
| ペイロード配信 | なし | PwnDrop、Mythicファイルストア、ファイルシステム、条件付き配信のHTTPプロキシ |
| ペイロード保護 | なし | ワンタイムトークン、ルートごとのレート制限、配信ガード |
| フィッシング保護 | なし | キャンペーントークン検証(静的リストまたはHMAC署名) |
| オペレーターUI | なし | Webダッシュボード + ターミナルUI + マルチインスタンスコマンドポスト |
| 可観測性 | なし | Prometheusメトリクス、エンゲージメントレポート、構造化ロギング |
| 設定生成 | なし | 完全カスタマイズ可能なNginx、Caddy、Apache |
| ルール取り込み | なし | .htaccess + robots.txtパーサー |
| 脅威インテルフィード | なし | 5つの公開ソースから自動更新 |
| プラグインシステム | 基本的な4メソッドインターフェース | on_eventフックとプラグインごとの設定を備えたイベント駆動 |
| SIEM統合 | なし | Elasticsearch, Wazuh, Syslog (CEF/JSON) |
| Webhookアラート | なし | Discord、Slack、汎用Webhook |
| ホワイトリストインテリジェンス | なし | 起動時にASN/組織/国でCIDRを自動エンリッチ |
| リプレイ防止 | SQLiteハッシュ | インメモリL1キャッシュを備えた永続SQLite、再起動後も保持 |
| ドロップアクション | redirect, reset, proxy | redirect, reset, proxy, tarpit |
| TLS管理 | 手動のみ | 自動自己署名 + Let's Encrypt統合 |
| エッジデプロイメント | なし | ドメインフロンティング対応のCloudflare Worker + AWS Lambdaエッジプロキシ |
| 設定セキュリティ | なし | ageおよびSOPS暗号化、検証チェック、APIキー管理 |
| デプロイメント | 手動 | ヘルスチェック付きDocker Compose |
| 非同期 | Tornadoコールバック | ネイティブasync/await(ASGI + uvicorn) |