
InfraGuard v0.4.3
InfraGuard 是一个命令与控制(C2)重定向代理和管理器,可保护你的红队基础设施免受威胁归因。
红队基础设施追踪器与 C2 重定向器——RedWarden 的现代替代方案。
InfraGuard 位于互联网与你的 C2 teamserver 之间,根据你的可塑 C2 配置文件验证每一个入站请求,并阻止任何不符合规范的请求。扫描器、机器人以及蓝队探测会被重定向到诱饵站点,而合法的 beacon 流量则通过并到达你的 teamserver。

架构

功能特性
代理与监听器
- 多域名代理——同时代理多个域名,每个域名拥有独立的 C2 配置文件、上游和规则
- 多协议监听器——HTTP/HTTPS、HTTP/3 (QUIC)、WebSocket、gRPC、DNS、MQTT 和 TCP 隧道监听器同时运行,共享 IP 情报和事件追踪
- 熔断器——按上游的故障保护,具有关闭/打开/半开状态;当后端不可达时,回退到该域名的丢弃动作
- 协议故障转移——按优先级排序的监听器协议之间自动故障转移和故障恢复
C2 配置文件支持
- C2 配置文件验证——解析并强制执行 Cobalt Strike、Mythic、Brute Ratel C4、Sliver、Havoc、Nighthawk 和 PoshC2 配置文件作为重定向器规则
- 热插拔配置文件——在运行时从仪表板切换域名的活动 C2 配置文件,无需重启代理
- 配置文件生成向导——通过引导式表单为所有 8 种支持的类型从头生成新的 C2 配置文件,或导入并上传现有配置文件,自动进行类型检测和验证
- AI 辅助配置文件生成——可选的 Ollama 集成在仪表板中提供聊天面板,用于配置文件创建帮助和 OPSEC 建议
过滤管道
- 基于评分的过滤管道——10 个过滤器各自贡献 0.0--1.0 的评分;可配置的阈值决定阻止/允许。过滤器:JA3、IP、bot、header、DNS、geo、profile、replay、enumeration、sandbox。
- JA3 TLS 指纹过滤——在 TLS 握手层阻止 Masscan、ZGrab2、Shodan、curl、Python requests 和 Nmap,在任何 HTTP 数据交换之前;通过反向代理头或自定义 asyncio 协议工作;可选的允许列表模式强制 beacon JA3
- 沙箱和无头浏览器检测——跨 HTTP 信号累积评分:HeadlessChrome UA、缺少 Accept-Language、没有 sec-ch-ua 的 Chrome、Safe Links 和 msnbot 扫描器 UA、非浏览器 Accept 排序
- 路径枚举检测——在滑动窗口中按 IP 追踪唯一 URI;在 dirbuster/ffuf/gobuster 映射 URI 空间之前阻止它们
- DNS 子域名枚举检测——按客户端 IP 追踪 NXDOMAIN 响应;在阈值突破时自动阻止源 IP
- 反机器人 / 反爬取——40+ 已知扫描器/机器人 User-Agent 模式,头部异常检测
- 重放保护——按内容哈希拒绝重复请求;哈希持久化到 SQLite,因此保护在重启后仍然有效
- 丢弃动作——重定向、TCP 重置、代理到诱饵站点或 tarpit(慢速滴流响应以浪费扫描器时间)
情报
- IP 情报——内置 19 个安全厂商范围(Shodan、Censys、Rapid7 等)的 CIDR 阻止列表、GeoIP 过滤、反向 DNS 关键词匹配
- 威胁情报源——从公共来源(abuse.ch、Emerging Threats、Spamhaus DROP、Binary Defense)自动更新阻止列表,具有可配置的刷新间隔和磁盘缓存
- 动态 IP 阻止——阻止白名单范围之外的 IP;在 N 个有效 C2 请求后自动将 IP 加入白名单
- 白名单增强——白名单 CIDR 在启动时通过 GeoIP 数据库自动增强 ASN、组织、国家和大陆数据
- 暴露检测——通过 crt.sh 监控证书透明度日志,通过 URLhaus/OpenPhish/Google Safe Browsing 进行域名声誉自我监控,以及当单个 IP 访问多个操作员域名时进行跨域名分析师检测
- 暴露置信度评分——来自 6 个加权信号的连续 0--100 评分:JA3 多样性、流量峰值、新 ASN、CT 日志暴露、声誉命中以及失败认证尝试。包括推荐动作:监控、轮换或立即暴露。
- 金丝雀令牌注入——追踪像素、蜜罐链接和蜜罐表单自动注入到诱饵页面,以检测蓝队调查
- 被动 DNS 监控——轮询 CIRCL PDNS 以获取你的域名的外部解析;检测新记录、NXDOMAIN 峰值和首次出现的暴露
载荷投递
- 内容投递路由——通过 PwnDrop、Mythic 文件存储、本地文件系统或 HTTP 代理后端在特定路径提供载荷、诱饵和静态文件;可选的条件投递,向目标提供真实内容,向扫描器提供诱饵
- Mythic 文件暂存——
mythic_file后端在干净的 URL 上代理 Mythic 的/direct/download/{uuid};固定 UUID 或代理模式;访问控制由 InfraGuard 的过滤栈提供 - 一次性载荷令牌——当 beacon 被动态加入白名单时自动发放令牌;原子单次使用 SQLite 强制执行防止分析师或沙箱重放 URL;可配置的 TTL 和最大使用次数
- 按路由速率限制——内容路由上的滑动窗口按 IP 下载速率限制器;超过限制时提供配置的扫描器诱饵或 429
- 投递守卫——内容路由的环境键控:要求 beacon IP、UA 允许列表、必需的头部值、禁止的头部;检查失败时提供域名丢弃动作,而不是原始 403
- 钓鱼活动令牌——通过嵌入电子邮件链接中的按活动令牌来门控钓鱼页面;静态令牌列表或 HMAC 签名的自验证令牌,具有可配置的 TTL
弹性
- 基础设施轮换——一键蓝绿 Terraform 轮换,跨 5 个云提供商,具有预检、回滚和 age 加密状态
- 轮换调度——自动化轮换策略:固定间隔、暴露触发、请求计数阈值和交错滚动
- 自动轮换看门狗——按间隔轮询暴露评分和证书到期;当暴露阈值触发或证书剩余不足 N 天时自动轮换,或回退到仅告警模式并设置成本上限
- 熔断器——按上游的故障追踪,具有 HEALTHY / PROBING / TRIPPED 状态和可配置的恢复超时,在仪表板的 Upstreams 小部件中实时显示
- 域名前置——通过 SNI/Host 头拆分进行基于 CDN 的 C2 路由,具有 CDN 头部剥离和 SSRF 保护
- 死人开关——操作员心跳 TTL,如果操作员未能签到则自动停止 C2 转发
- 紫队镜像——将允许的事件即发即忘地复制到蓝队收集器以进行交战评分
- 共享状态后端 (Redis)——可选的跨节点重放缓存、动态白名单、beacon 会话包和丢弃速率限制,使水平扩展的副本看到相同的状态
- 边缘代理——Cloudflare Worker 和 AWS Lambda 用于通过 CDN 基础设施进行域名前置、边缘国家阻止和主机重写
仪表板与操作员工具
- Web 仪表板——实时 SPA,具有登录页面、实时请求流、域名统计、顶级被阻止 IP、WebSocket 事件流以及内联阻止/白名单/解除阻止操作
- 诱饵页面管理——直接从仪表板列出、预览和编辑诱饵 HTML 页面;按域名的 Canary Overview(像素 / 隐藏链接 / 隐藏表单切换)以及 Canary Hits 面板,显示每个拉取了诱饵资产的扫描器或沙箱
- 具有专用回调端点的诱饵令牌——注入的追踪像素、隐藏链接和隐藏表单各自在
/_ig/px|hp|hf?c=<token>上触发canary_hit事件;命中记录到追踪数据库,filter_result=canary_hit,并实时流式传输到 Decoys 页面和任何订阅的告警插件 - Plugins 标签页——列出已加载的插件,具有运行时
enable / disable切换(无需重启)以及 Plugin Marketplace,可一键添加 29 个内置插件中的任何一个;每次变更都持久化到config.yaml并作为提交落入配置历史仓库 - Command Post——多实例聚合仪表板,将来自多个 InfraGuard 节点的统计、请求和实时事件合并到单一视图中,具有 Fleet Map(MapLibre),在地理定位的经纬度上绘制每个代理以及每个被阻止的源 IP,以及用于跨实例操作的扇出插件切换
- 终端 UI——基于 Textual 的 TUI,具有登录屏幕、实时 API 轮询、颜色编码的请求日志
- 交战报告——自包含的 HTML、JSON 或 CSV 报告,具有按域名的细分、过滤器有效性和操作员审计追踪
- Prometheus 指标——
/metrics端点暴露请求计数器、上游延迟直方图、熔断器状态、源新鲜度、活动连接以及 Helm HPA 据以扩展的infraguard_active_beacons仪表 - OpenTelemetry——可选的 OTLP 追踪 + 指标导出器;可观测性 compose 配置文件启动 OTEL 收集器以及 Prometheus + 自动配置的 Grafana 概览仪表板
- Kubernetes Helm chart——代理、仪表板、Redis StatefulSet、ServiceMonitor 以及基于活动 beacon 仪表的 HPA;位于
deploy/helm/infraguard/
集成与插件
- SIEM 集成——Elasticsearch、Wazuh 和 Syslog (CEF/JSON) 的内置插件,具有批量转发
- Webhook 告警——Discord(嵌入)、Slack(Block Kit)、通用 webhook、PagerDuty(Events API v2,去重键控)和 Telegram(双向运维聊天:从手机执行
/status、/sessions、/kill、/ack)的内置插件 - 检测插件——对请求体运行 YARA 规则、GreyNoise Community 查询、ML 机器人分类器(对 JA4 + UA + 时序进行逻辑回归)、响应金丝雀(canarytokens.org)、p0f v3 指纹识别、JA4/JA4H 增强、GeoIP 增强
- 响应操纵器——HTML 重写器、载荷水印、签名剥离器、JS 挑战、缓存模仿、慢速 tarpit、影子阻止(向扫描器返回 200,使它们永远不会适应)
- Phishing.club 集成——HMAC 签名的 webhook 接收器,摄取钓鱼事件并自动将点击的目标 IP 加入白名单
- 插件系统——事件驱动架构,具有
on_event钩子、按插件配置和事件过滤;每个插件都可以从仪表板的 Plugins 标签页切换或加载,无需重启,并且更改会持久化回config.yaml并带有配置历史审计提交
配置与部署
- 配置加密——age(整文件)和 SOPS(按值)加密,支持
.env文件 - 配置验证——CLI 差异工具和 20+ 安全、运维和 TLS 验证检查
- API 密钥管理——创建、撤销和轮换 API 密钥,具有按密钥的速率限制、使用追踪和配额
- 后端配置生成——生成 Nginx、Caddy 或 Apache 配置,具有 TLS、IP 过滤、头部检查、别名和自定义头部
- 规则摄取——从现有的
.htaccess和robots.txt文件导入 IP 阻止列表和 User-Agent 模式 - Docker 部署——Dockerfile + docker-compose,具有可选的 Let's Encrypt、GeoIP 下载器、PwnDrop 载荷服务器和 Ollama AI 助手
- GeoIP 支持——所有三个 GeoLite2 数据库(City、ASN、Country),具有 Docker 自动下载
- 自签名 TLS 回退——当配置的路径不存在时自动生成证书
- 环境变量支持——
.env文件自动加载;${VAR}语法适用于所有配置值和键 - 可配置的健康端点——更改健康检查路径以避免指纹识别
- 结构化日志——通过 structlog 的 JSON 格式结构化日志
- 追踪与持久化——SQLite 使用 WAL 模式进行请求日志记录、统计、节点注册表、重放哈希和载荷令牌
安装指南
查看 Wiki 页面 了解安装
CLI 参考```
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