assishmoncs/recon-suite
GitHub: assishmoncs/recon-suite
一款模块化的 Python 命令行域名侦察工具,提供被动子域名枚举、并发 DNS 暴力破解与自动化 HTML 报告生成。
Stars: 0 | Forks: 0
# 自动化侦察工具 (v1 -- MVP)
一款简洁、模块化的 Python 3 命令行工具,用于基础的域名侦察。
这是 **版本 1**:一个最小化、可用的 MVP,专注于被动子域名枚举、DNS 暴力破解和 HTML 报告生成。更高级的功能(Shodan、theHarvester、Wappalyzer、PDF 报告)在此版本中被有意排除,并计划在后续版本中推出。
## 功能
- **输入验证** -- 在执行任何操作之前,检查目标看起来是否像一个真实的域名。
- **被动子域名枚举** -- 使用 [Sublist3r](https://github.com/aboul3la/Sublist3r) 库在*进程内* (`import sublist3r`) 运行,而不是通过 shell 命令。如果未安装 Sublist3r 或其查找失败,该工具会自动回退到对 crt.sh Certificate Transparency 日志的轻量级被动查找,以确保您仍能获得结果。发现来源("Sublist3r" 或 "crt.sh")将在终端和 HTML 报告中注明。
- **并发 DNS 暴力破解** -- 从 `wordlists/subdomains.txt` 读取候选前缀,构建 `.` 候选项,并使用 `concurrent.futures.ThreadPoolExecutor` **并发**解析它们(可通过 `--workers` 配置)。解析使用 `dnspython`(如果不可用则回退到 `socket`)。仅保留实际解析成功的主机;自动去除重复项。检测 DNS 记录类型(A / CNAME)并将其包含在结果中。
- **实时进度条** -- `tqdm` 在 DNS 暴力破解查找期间显示动态进度条(如果未安装 `tqdm`,则会优雅降级)。
- **健壮的错误处理** -- 针对网络错误 (`requests.RequestException`)、编码问题 (`UnicodeDecodeError`) 和 I/O 错误 (`OSError`) 提供特定的异常处理程序,并附带丰富的错误信息和优雅的回退机制。
- **可移植的文件路径** -- 默认的字典和报告路径使用 `pathlib` 相对于脚本位置进行解析,因此无论工作目录如何,该工具都能正常工作。
- **HTML 报告** -- 生成简洁、带有样式的 `reports/.html` 报告(仅包含 CSS,无 JavaScript),总结所有发现,包括用于被动结果的 **Source** 列和用于暴力破解条目的 **Record Type** 列。
- **彩色终端输出** -- 通过 `colorama` 实现,在每个阶段都有清晰的进度消息。
## 项目结构
```
recon-suite/
│
├── main.py # CLI entry point / orchestration
├── requirements.txt
├── README.md
├── .gitignore
├── reports/ # Generated HTML reports land here
├── wordlists/
│ └── subdomains.txt # DNS brute-force wordlist
└── modules/
├── __init__.py
├── subdomains.py # Passive enumeration (Sublist3r + crt.sh fallback)
├── dns_bruteforce.py # Concurrent active DNS brute force
├── report.py # HTML report generation
└── utils.py # Domain validation + colored output helpers
```
## 安装说明
要求 **Python 3.11+**。
```
git clone
cd recon-suite
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt
```
## 用法
```
python main.py example.com
```
可选参数:
```
python main.py example.com --wordlist wordlists/subdomains.txt --threads 40 --workers 20
```
| 参数 | 描述 | 默认值 |
|---------------|------------------------------------------------------|------------------------------|
| `domain` | 目标域名(位置参数,必填) | -- |
| `--wordlist` | DNS 暴力破解字典的路径 | `wordlists/subdomains.txt` |
| `--threads` | Sublist3r 内部使用的线程数 | `40` |
| `--workers` | DNS 暴力破解查找的并发工作数 | `20` |
### 示例输出
```
==================================================
Automated Recon Tool -- v1 (MVP)
==================================================
Target: example.com
[*] Running passive enumeration...
[*] Querying passive OSINT sources via Sublist3r (40 threads, this can take 10-60s)...
[+] Found 15 subdomains (via Sublist3r).
[*] Running DNS brute force...
[*] Loaded 7 candidate prefixes from 'wordlists/subdomains.txt'.
[*] Resolving with 20 concurrent workers...
DNS brute-force: 100%|##########| 7/7 [00:02<00:00, 3.41host/s]
[+] Found 4 additional hosts.
[*] Generating report...
[+] Done!
[*] Report:
reports/example.com.html
```
在任何浏览器中打开生成的文件:
```
reports/example.com.html
```
## 工作原理
1. **`main.py`** 验证域名(`modules/utils.validate_domain`)并协调以下三个阶段,全程打印彩色的进度消息。异常处理会捕获特定的错误类型(网络、I/O、编码),以提供更清晰的诊断信息。
2. **`modules/subdomains.py`** 直接作为 Python 函数调用 `sublist3r.main()`(无 subprocess),同时禁用了其自带的暴力破解模块,因为本工具有专属的暴力破解阶段。如果无法导入 Sublist3r 或引发错误,它会回退到使用 `requests` 进行基于 crt.sh 的查找。返回结果和来源标签。
3. **`modules/dns_bruteforce.py`** 加载 `wordlists/subdomains.txt`,为每个条目构建 `.`,并使用带有 `dnspython`(或回退到 `socket`)的 `ThreadPoolExecutor` **并发**解析它们。仅保留解析成功的主机。每个结果都包含 DNS 记录类型(A 或 CNAME)。`tqdm` 进度条显示实时进度。非 UTF-8 编码的字典将被优雅处理,并显示丰富的错误消息。
4. **`modules/report.py`** 将所有内容渲染为一个包含内嵌 CSS(暗色主题、摘要统计卡片和两个结果表格)的独立 HTML 文件,并将其写入 `reports/.html`。被动表格包含 Source 列,暴力破解表格包含 Record Type 列。
## 关于 Sublist3r 的说明
Sublist3r 作为常规的 PyPI 包安装:
```
pip install sublist3r
```
这提供了一个 `sublist3r.main(...)` 函数,本工具直接导入并调用它 —— 参见 `modules/subdomains.py`。由于 Sublist3r 会通过网络查询大量公共搜索引擎和 OSINT 服务,结果(和运行时间)将根据您的网络环境以及这些服务当前的可用性/速率限制而有所不同。内置的 crt.sh 回退机制确保即使 Sublist3r 本身无法运行,工具仍能生成结果。
## v1 未包含的内容(计划于后续版本推出)
以下内容被有意排除在此 MVP 的**范围之外**,并将在未来的版本中添加:
- Shodan 集成
- theHarvester 集成
- Wappalyzer / 技术指纹识别
- PDF 报告生成
## 许可证
仅用于教育和授权的安全测试目的。
标签:DNS爆破, ESC4, GitHub, OSINT, Python, 主机安全, 域名侦查, 子域名枚举, 实时处理, 无后门, 系统安全, 逆向工具