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, 安全合规, 实时处理, 密码管理, 攻击面挖掘, 网络代理, 请求拦截, 资产测绘, 逆向工具