InfraGuard 是一个命令与控制(C2)重定向代理和管理器,可保护你的红队基础设施免受威胁归因。
红队基础设施跟踪器和C2重定向器——RedWarden的现代替代品。
InfraGuard 位于互联网和您的 C2 团队服务器之间,根据您的可塑 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 钩子、每插件配置、事件过滤(仅限已阻止、最低分数、域名包含/排除).env 文件;${VAR} 语法在所有配置值和键中有效查看 Wiki 页面 了解安装方法
infraguard --version 显示版本
infraguard --help 显示帮助
infraguard run -c config.yaml 启动反向代理
infraguard run -c config.yaml --port 8443 覆盖监听端口
infraguard run -c config.yaml --host 0.0.0.0 覆盖绑定地址
infraguard dashboard -c config.yaml 启动 Web 仪表盘
infraguard dashboard -c config.yaml --port 9090 覆盖仪表盘端口
infraguard tui 启动带有登录屏幕的 TUI
infraguard tui --url http://host:8080 --token TOK 自动连接到仪表盘
infraguard tui -c config.yaml 从配置读取 URL/令牌
infraguard command-post -c command-post.yaml 启动多实例仪表盘
infraguard command-post --instance name:url:token 通过 CLI 添加实例(可重复)
infraguard profile parse <file> 解析并显示 C2 配置文件
infraguard profile parse <file> --format json 输出为 JSON
infraguard profile parse <file> --type brute_ratel 强制指定配置文件类型
infraguard profile convert <file> -o out.json 将配置文件转换为 JSON
# 支持的 --type 值:auto, cobalt_strike, mythic, brute_ratel, sliver, havoc, nighthawk, poshc2
# 自动检测:.profile = CS,.toml = Havoc,.yaml = PoshC2,.json = 根据键自动检测
infraguard ingest <files...> 摄入 .htaccess/robots.txt 规则
infraguard ingest <files...> --format blocklist 输出为 IP 黑名单
infraguard ingest <files...> --format json 输出为 JSON
infraguard ingest <files...> -o banned_ips.txt 将黑名单写入文件
infraguard generate nginx -c config.yaml 生成 Nginx 配置
infraguard generate caddy -c config.yaml 生成 Caddyfile
infraguard generate apache -c config.yaml 生成 Apache VirtualHost
infraguard init -o config.yaml 生成启动配置
infraguard validate -c config.yaml 验证配置文件
generate 命令接受额外的标志用于操作员自定义:
当跨不同 VPS 或云提供商运行多个 InfraGuard 实例时,指挥哨所将来自所有节点的统计、请求和实时事件聚合到单个仪表盘中。
┌─────────────────────────────┐
│ 指挥哨所仪表盘 │
│ 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
这将启动两个服务:
# 在 .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 必须解析到此主机的公网 IPINFRAGUARD_DOMAIN_EMAIL 必须是有效的电子邮件地址# 下载所有三个 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 访问它
然后在配置中配置内容路由,将 payload 路径代理到 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 包初始化
__main__.py python -m infraguard 入口
main.py Click CLI
config/ YAML 配置加载、.env 支持、Pydantic 验证
core/ ASGI 代理引擎(应用、代理、路由器、TLS、丢弃动作、内容分发)
profiles/ C2 配置文件解析器(Cobalt Strike、Mythic、Brute Ratel、Sliver、Havoc、Nighthawk、PoshC2)
pipeline/ 请求验证过滤器(JA3、IP、机器人、头部、DNS、地理、配置文件、重放、枚举、沙箱)
intel/ IP 情报(黑名单、GeoIP、rDNS、源、规则摄入)
tracking/ SQLite 持久化(请求日志、统计、节点注册表)
plugins/ 插件系统(协议、加载器、内置)
ui/
api/ REST API + WebSocket(Starlette)
web/ SPA 仪表盘(HTML/JS/CSS)
tui/ 终端 UI(Textual)带登录屏幕
command_post/ 多实例聚合仪表盘
listeners/ 协议监听器(HTTP、DNS、MQTT、WebSocket)
backends/ 配置生成器(Nginx、Caddy、Apache)
models/ 共享类型和事件模型
如果您想为项目做贡献,请创建一个以版本号命名的新分支,并在拉取请求中指定相同的版本号。例如:分支=v1.2.3 | [v1.2.3] 添加了某某功能。
BSD 2-Clause 许可证。详情请参阅 LICENSE。
版权(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)、跨域分析人员检测 |
| Payload 分发 | 无 | PwnDrop、Mythic 文件存储、文件系统、带条件交付的 HTTP 代理 |
| Payload 保护 | 无 | 一次性令牌、每路由速率限制、交付防护(环境键控) |
| 钓鱼保护 | 无 | 活动令牌验证(静态列表或 HMAC 签名) |
| 操作员 UI | 无 | Web 仪表盘 + 终端 UI + 多实例指挥哨所 |
| 配置生成 | 无 | Nginx、Caddy、Apache,支持全面自定义 |
| 规则摄入 | 无 | .htaccess + robots.txt 解析器 |
| 威胁情报源 | 无 | 从 5 个公共源自动更新 |
| 插件系统 | 基本的 4 方法接口 | 事件驱动,带 on_event 钩子 + 每插件配置 |
| SIEM 集成 | 无 | Elasticsearch、Wazuh、Syslog(CEF/JSON) |
| Webhook 警报 | 无 | Discord、Slack、通用 webhook(烧毁警报通过同一插件路由) |
| 白名单情报 | 无 | 启动时自动用 ASN/组织/国家丰富 CIDR |
| 反重放 | SQLite 哈希 | 持久化 SQLite 带内存 L1 缓存,重启后存活 |
| 丢弃动作 | redirect、reset、proxy | redirect、reset、proxy、tarpit |
| TLS 管理 | 仅手动 | 自动自签名 + Let's Encrypt 集成 |
| 边缘部署 | 无 | Cloudflare Worker + AWS Lambda 边缘代理,支持域名前置 |
| 部署 | 手动 | Docker Compose 带健康检查 |
| 日志记录 | 自定义彩色输出 | 结构化 JSON(structlog) |
| 异步 | Tornado 回调 | 原生 async/await(ASGI + uvicorn) |