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, 主机安全, 域名侦查, 子域名枚举, 实时处理, 无后门, 系统安全, 逆向工具