JeanRA88/reconductor
GitHub: JeanRA88/reconductor
reconductor 是一个零依赖的渗透测试侦察编排工具,将扫描结果转化为映射 MITRE ATT&CK 的优先级行动计划,解决「发现开放端口后下一步该做什么」的问题。
Stars: 0 | Forks: 0
# reconductor
[](https://github.com/JeanRA88/reconductor/actions/workflows/ci.yml)
[](https://www.python.org/)
[](LICENSE)
[](pyproject.toml)
[](https://github.com/astral-sh/ruff)
大多数侦察工具仅停留在“这里是一些开放的端口”。reconductor 更进一
步——这一步在实际的测试任务中才是真正至关重要的:**鉴于这些开放的内容,
我接下来应该做什么,为什么这样做,以及我正在应用哪种技术?** 它将渗透
测试方法论编码为数据,并将扫描结果转化为一个已区分优先级的、
**映射到 MITRE ATT&CK** 的行动计划。
它仅基于 **Python 标准库运行——零运行时依赖**——
因此无论是否安装了 nmap,只要克隆下来即可立即使用。
## 演示

*这是一个没有副作用的 `--dry-run` 预览,随后是一次真实的扫描,它对 Web
服务进行了指纹识别,并推荐了**针对 WordPress 的**后续步骤——这些步骤是
根据它实际发现的内容选择的,而不仅仅是端口号。*
## 为什么会有这个项目
我在准备并通过 **OSCP** 考试之后开发了 reconductor。侦察中最难的部分并不
是运行扫描——而是一种纪律性,即每次都要对*每个*服务进行*正确的*枚举,
且永远不要遗漏那些枯燥但决定性的步骤。这款工具就是这种纪律的书面化且
可执行的体现:
- **nmap 是可选的。** 当 `PATH` 中存在 nmap 时,使用它的服务检测功能;如果没
有,则回退到内置的基于 `asyncio` 的 TCP-connect 扫描器。
- **一个基于证据进行推理的推荐引擎。** 20 多种服务 →
已区分优先级的后续步骤,每一步都附有理由和 ATT&CK 技术 ID(SMB →
`T1135`,Kerberos → AS-REP / Kerberoasting,暴露的 Docker API → `T1610`,等等)。
它不仅停留在端口号上:一个被确认的 **WordPress** 站点会给出
`wpscan` 的建议,而一个精确的 `OpenSSH 8.2p1` banner 则会触发有针对性的
漏洞利用搜索——HTTP/TLS 的信息丰富化直接为推荐内容提供依据。
- **文档化的 ATT&CK 映射理念。** 枚举步骤映射到
Reconnaissance/Discovery 技术;而利用可利用条件的步骤则映射到攻击者会使用的技术——这是一个深思熟虑的模型,而
不是为了好看的标签(详见 [`knowledge.py`](reconductor/knowledge.py))。
- **可以直接交付的报告。** JSON 用于工具集成,Markdown 用于记录笔记,以及
一个自包含的 HTML 报告,你可以在任何地方打开或作为附件发送。
- **默认安全。** 需要明确的 `--authorize` 标志和范围内的目标授权;
`--dry-run` 模式可在不发送任何数据包的情况下预览计划;它
*推荐*侵入性操作,但从不实际执行它们。
## 安装
```
# 从源码安装(在正式发布前推荐此方式)
git clone https://github.com/JeanRA88/reconductor
cd reconductor
pip install .
# 或者无需安装直接运行 — 仅依赖 stdlib,开箱即用
python -m reconductor --help
```
需要 Python 3.10+。`nmap` 是可选的,但建议安装以获得更丰富的服务检测效果。
## 用法
```
# 预览计划 — 不发送任何数据,无需 authorization
reconductor scan 10.10.10.0/24 --dry-run
# 运行您已获授权的扫描,生成 Markdown + HTML 报告
reconductor scan 10.10.10.5 --authorize -f markdown,html
# 范围护栏:仅会触及 --scope 内的地址
reconductor scan 10.10.10.5 10.10.10.6 --scope 10.10.10.0/24 --authorize
# 没有 nmap?强制使用 builtin scanner 并自选端口
reconductor scan 192.168.45.0/24 --builtin -p 22,80,443,445,3389 --authorize
# 列出内置在知识库中的 ATT&CK 技术
reconductor techniques
```
### 关键标志
| 标志 | 用途 |
|------|---------|
| `--authorize` | 声明你已获得授权测试范围内的每个目标(真实扫描必选)。 |
| `--dry-run` | 打印行动计划并退出,不执行扫描。 |
| `--scope CIDR/host` | 允许列表;可重复使用。默认为目标地址。 |
| `-p, --ports` | 端口规范,例如 `22,80,8000-8100`。默认为精选的常用端口集。 |
| `--builtin` | 即使已安装 nmap,也强制使用零依赖的内置扫描器。 |
| `-f, --format` | `json`、`markdown`、`html`(可重复使用)。 |
| `--no-http` / `--no-tls` | 跳过服务信息丰富化。 |
## 输出示例
控制台摘要:
```
[*] scanning 1 target(s) on 51 ports via nmap
[*] 1 host(s) responded
[+] generated 9 recommendations
=== 10.10.10.5 (dc01.corp.local) — 3 open port(s) ===
22/tcp ssh OpenSSH 8.2p1
80/tcp http Apache httpd 2.4.41
445/tcp microsoft-ds
next steps:
[CRIT] Enumerate SMB shares, users and OS over null/guest session
[HIGH] Fingerprint the web stack and read the obvious files
[HIGH] Content-discover directories and files
[MED ] Enumerate SSH auth methods and host key
```
已渲染的 HTML 报告已提交至
[`examples/sample-report.html`](examples/sample-report.html)(以及
[`examples/sample-report.md`](examples/sample-report.md)),因此你可以无需
运行任何程序即可查看输出。
## 工作原理
一个小巧、解耦的 pipeline —— 扫描器填充共享数据模型,报告生成器
读取该模型,而推荐引擎位于两者之间。有关完整的图表,请参阅
[docs/architecture.md](docs/architecture.md)。
```
targets → [scope + authorize] → [scan] → [enrich http/tls] → [recommend] → [report]
```
该方法论以声明式 `ServiceProfile` / `RecTemplate` 记录的形式存在于
[`reconductor/knowledge.py`](reconductor/knowledge.py) 中,因此添加一种技术
只需进行数据编辑——并且单元测试会确保每个引用的 ATT&CK ID 都具有
对应的名称。
## 开发
```
pip install -e ".[dev]"
ruff check . # lint
mypy reconductor # type-check
pytest # tests
```
CI 会在 Python 3.10–3.13 环境下运行这三项检查。欢迎提交贡献——尤其欢迎新
的服务配置文件;详情请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。
## 负责任的使用
reconductor 仅用于**授权的**测试和教育。扫描你不拥有或没有获得书面测试
许可的系统可能是违法的。在使用之前请阅读
[DISCLAIMER.md](DISCLAIMER.md)。你需要对保持在授权范围内负责任。
## 许可证
MIT —— 详见 [LICENSE](LICENSE)。
标签:Cloudflare, MITRE ATT&CK, Python, XXE攻击, 安全规则引擎, 插件系统, 数据统计, 无后门, 模拟器, 端口扫描, 计算机取证, 逆向工具