JeanRA88/reconductor

GitHub: JeanRA88/reconductor

reconductor 是一个零依赖的渗透测试侦察编排工具,将扫描结果转化为映射 MITRE ATT&CK 的优先级行动计划,解决「发现开放端口后下一步该做什么」的问题。

Stars: 0 | Forks: 0

# reconductor [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/da88af427e062917.svg)](https://github.com/JeanRA88/reconductor/actions/workflows/ci.yml) [![Python](https://img.shields.io/badge/python-3.10%2B-blue)](https://www.python.org/) [![License: MIT](https://img.shields.io/badge/license-MIT-green)](LICENSE) [![Dependencies](https://img.shields.io/badge/runtime%20deps-0-brightgreen)](pyproject.toml) [![Code style: ruff](https://img.shields.io/badge/lint-ruff-261230)](https://github.com/astral-sh/ruff) 大多数侦察工具仅停留在“这里是一些开放的端口”。reconductor 更进一 步——这一步在实际的测试任务中才是真正至关重要的:**鉴于这些开放的内容, 我接下来应该做什么,为什么这样做,以及我正在应用哪种技术?** 它将渗透 测试方法论编码为数据,并将扫描结果转化为一个已区分优先级的、 **映射到 MITRE ATT&CK** 的行动计划。 它仅基于 **Python 标准库运行——零运行时依赖**—— 因此无论是否安装了 nmap,只要克隆下来即可立即使用。 ## 演示 ![reconductor 演示](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/f352a00271062918.svg) *这是一个没有副作用的 `--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攻击, 安全规则引擎, 插件系统, 数据统计, 无后门, 模拟器, 端口扫描, 计算机取证, 逆向工具