cognis-digital/reconforge

GitHub: cognis-digital/reconforge

一款以范围网关为核心安全设计的红队侦察与攻击面映射工具,在授权评估中被动优先地枚举目标资产并导出标准化报告。

Stars: 0 | Forks: 0

# reconforge **一款在 _授权_ 的安全评估中进行范围限制的红队侦察与攻击面映射工具包。** reconforge 用于在授权的渗透测试或漏洞赏金(bug-bounty)项目中,映射目标的外部攻击面——包括域名、主机、IP、 服务、证书、技术以及它们之间的关联—— 。它属于与 OWASP Amass 和 recon-ng 等工具相同的 类别,但有一个不可妥协的核心设计决策 并被视为该工具的重中之重: 这就是区分授权评估与擅自触碰无权操作系统的方式。除非签署的授权范围允许,否则 reconforge 绝不会对目标进行枚举、解析、扫描或 指纹识别。 reconforge **仅依赖标准库**(没有第三方运行时依赖),并且可以**完全离线运行** 处理内置的测试数据,因此整个工具包——包括测试 和演示——都可以在物理隔离(air-gapped)的环境中运行。只有当目标在授权范围内 *且* 您传入 `--online` 参数时,在线模块才会触碰真实目标。 经测量,从克隆到复现:**45 个测试通过**,**6 个可运行的演示** (全部以状态码 0 退出),零第三方运行时依赖。 ## ⚠️ 仅限授权使用 reconforge 是一款用于**防御目的**的**进攻性安全**工具:在对手之前发现 您(或您的客户)的攻击面。**仅限**在书面授权的评估范围下,将其用于您**明确获得授权**测试的 系统。 - 它**仅用于侦察和枚举** —— 不包含漏洞利用、不进行漏洞 攻击、不进行凭证攻击、不进行拒绝服务或泛洪攻击,也不包含任何 破坏性操作。 - 它是**被动优先**的。主动探测(端口发现、TLS 检索、HTTP 指纹识别)**仅在**范围设置中包含 `active_allowed: true`,且 **仅**针对范围内的目标运行。 - 它默认**有速率限制且温和**,绝不执行无差别的 全网扫描。 对您不拥有或未获准测试的系统进行未经授权的扫描可能是 非法的。您需对在授权范围内的操作负责。请参阅 [docs/SECURITY.md](docs/SECURITY.md) 和 [DISCLAIMER.md](DISCLAIMER.md)。 ## 范围网关(Scope gate) 一个评估活动由一个小巧的 JSON **scope** 文件描述,该文件明确声明了 您可以触碰的具体内容: ``` { "engagement": "ACME Corp external attack-surface assessment 2026-Q3", "authorization_ref": "SOW-2026-0142; signed authorization on file with ACME CISO", "domains": ["acme-corp.example"], "ip_ranges": ["203.0.113.0/24"], "exclude_domains": ["legacy.acme-corp.example"], "active_allowed": true, "not_before": "2026-07-01T00:00:00Z", "not_after": "2026-09-30T23:59:59Z" } ``` 每个模块在执行操作前都会查询范围授权。该网关是**故障关闭(fail-closed)**的:只有当目标明确在范围内、处于评估时间窗内、未被排除,且(对于主动探测而言)受 `active_allowed` 覆盖时,才会被触碰。每项 决定都带有一个稳定的 `RF_*` 原因代码(`RF_IN_SCOPE`、`RF_OUT_OF_SCOPE`、 `RF_EXCLUDED`、`RF_EXPIRED`、`RF_ACTIVE_NOT_AUTHORIZED` 等)。 该范围文件可以使用授权方持有的密钥进行 **HMAC 签名**。一旦 签名,范围就无法被悄悄扩大——在签名后添加域名 会破坏验证,并且 `reconforge run --require-signed` 将拒绝执行。 ## 安装 ``` # 从 clone 运行 — 无 runtime dependencies pip install . # 或在不安装的情况下运行 python -m reconforge --help ``` 跨平台辅助脚本:[`install.sh`](install.sh) (Linux/macOS), [`install.ps1`](install.ps1) (Windows), [`Makefile`](Makefile) 以及 [`Dockerfile`](Dockerfile)。 ## 用法 ``` # 1. 验证 scope 并查看其授权的内容 reconforge scope examples/engagement.example.json # 2.(可选)对 scope 进行签名以防其被扩大,然后验证 reconforge sign --scope examples/engagement.example.json --key "$RF_KEY" --out signed.json reconforge verify --scope signed.json --key "$RF_KEY" # 3. 离线运行所有已授权的 phases 以对抗 bundled fixtures reconforge run --scope examples/engagement.example.json --format html --out report.html # 4. 运行以对抗真实的 in-scope targets(需要 network + in-scope + active_allowed) reconforge run --scope signed.json --require-signed --key "$RF_KEY" --online --format json --out surface.json # individual modules reconforge passive --scope examples/engagement.example.json reconforge dns --scope examples/engagement.example.json reconforge subdomains --scope examples/engagement.example.json reconforge ports --scope examples/engagement.example.json reconforge tls --scope examples/engagement.example.json reconforge fingerprint --scope examples/engagement.example.json # 将已保存的 surface 重新渲染为另一种格式 reconforge report --input surface.json --format sarif --out surface.sarif.json ``` 默认情况下,每个命令都会**离线**针对 `fixtures/` 运行。添加 `--online` 以 访问真实目标——且只有范围内的目标会被触碰。 ## 模块 | 模块 | 类型 | 功能 | | --- | --- | --- | | `passive` | 被动 | 证书透明度(Certificate-transparency)+ 公共 WHOIS/RDAP OSINT;将范围内的名称整合到攻击面中 | | `subdomains` | 被动 | 从被动来源 + 小型礼貌标签列表进行子域名枚举 | | `dns` | 被动 | DNS 解析和记录分析 (A/AAAA/CNAME/MX/NS/TXT/SOA) | | `ports` | **主动** | 在保守的知名端口集上进行端口/服务发现,具有速率限制 | | `tls` | **主动** | TLS 证书检索;颁发者/有效期/SAN 分析 | | `fingerprint` | **主动** | 基于 headers + body 标记的 HTTP 技术指纹识别(每个 endpoint 发送一次请求) | 主动模块**仅**探测范围内的目标,且**仅**在 `active_allowed: true` 时运行。 ## 输出格式与标准 reconforge 将所有内容规范化为统一的资产/观察模式(参见 [docs/SCHEMA.md](docs/SCHEMA.md)) 并导出为: - **JSON** —— 完整的攻击面图谱(资产、观察结果、边)。 - **CSV** —— 用于分类/电子表格的平面观察视图。 - **STIX 2.1** —— 包含 `domain-name` / `ipv4-addr` / `ipv6-addr` / `observed-data` 对象的集合,用于威胁情报平台。 - **SARIF 2.1.0** —— 用于 GitHub 代码扫描和 CI 仪表盘。 - **HTML** —— 独立的攻击面报告(无外部依赖资源,可离线 打开)。 ## 攻击面图谱 资产及其关系形成了一个操作员可以进行分析的图谱: ``` domain:acme-corp.example --hosts--> subdomain:www.acme-corp.example subdomain:www... --resolves_to-> ip:203.0.113.10 ip:203.0.113.10 --serves--> service:203.0.113.10:443 subdomain:www... --presents--> certificate: web_endpoint:www... --runs--> technology:WordPress ``` ## 开发 ``` python -m pytest # 45 tests, runs offline python demos/run_all.py # 6 demos, all exit 0 ``` 请参阅 [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) 了解设计,并参阅 [docs/SECURITY.md](docs/SECURITY.md) 了解授权使用的交战规则。 ## 许可证 [Cognis Open Collaboration License (COCL)](LICENSE)。在许可证条款下允许非商业及 授权的安全测试使用。
标签:GitHub, 安全合规, 实时处理, 密码管理, 攻击面挖掘, 网络代理, 请求拦截, 资产测绘, 逆向工具