Sambhav-2706/Subdomain-Enumeration-Tool

GitHub: Sambhav-2706/Subdomain-Enumeration-Tool

一款 Python 子域名枚举工具,整合多个被动数据源、字典暴力破解、DNS 解析与可选的 Web 探测,帮助安全测试人员快速发现和验证目标域的子域资产。

Stars: 0 | Forks: 0

# SubEnum ## 功能 - **被动发现** — 同时查询 5 个公共来源: - crt.sh - CertSpotter - HackerTarget - AlienVault (OTX) - Anubis - **智能暴力破解** — 内置包含 23 个常见子域名的字典(例如 `www`、`api`、`dev`、`admin`、`mail`、`vpn`、`staging`) - **DNS 解析** — 具有可配置线程数的多线程 A 记录解析 - **Web 探测** *(可选)* — 检查 HTTP/HTTPS 的状态码和页面标题 - **丰富的 CLI 输出** — 通过 [Rich](https://github.com/Textualize/rich) 实现美观的表格、进度条和颜色标记的结果 - **JSON 导出** — 将结果保存为结构化的 JSON 文件 ## 安装 ### 前置条件 - Python 3.8+ - `pip` ### 依赖项 ``` pip install requests dnspython pyfiglet rich ``` 或者一次性安装所有依赖: ``` pip install -r requirements.txt ``` ## 用法 ### 基础扫描 ``` python subenum.py -d example.com ``` ### 包含 Web 探测的完整扫描 ``` python subenum.py -d example.com --probe ``` ### 将结果保存为 JSON ``` python subenum.py -d example.com --probe -o results.json ``` ### 调整线程数 ``` python subenum.py -d example.com -t 20 ``` ## 命令行选项 | 标志 | 描述 | 默认值 | |------|-------------|---------| | `-d`, `--domain` | 要枚举的目标域名 | *(必填)* | | `-t`, `--threads` | 并发线程数 | `40` | | `-o`, `--output` | 输出文件路径(JSON 格式) | `None` | | `--probe` | 启用 HTTP/HTTPS 探测以获取状态码和标题 | `False` | ## 示例输出 ``` ____ __ ______ / __ )____ / /___ ________/__ /_______ __ / __ / __ \/ / __ \/ ___/ _ \/ / ___/ / / / / /_/ / /_/ / / /_/ / / / __/ / /__/ /_/ / /_____/\____/_/\____/_/ \___/_/\___/\__, / /____/ Subdomain Enumeration Tool | Target: example.com ✔ Found 15 subdomains from CrtSh ✔ Found 8 subdomains from CertSpotter ✘ HackerTarget (No Data/Timeout) ✔ Found 3 subdomains from AlienVault ✔ Found 22 subdomains from Anubis [*] Resolving 42 discovered subdomains... [*] Web Probing 18 live subdomains... ┌──────────────────────────┬─────────────────────┬──────┬────────────────────┐ │ SUBDOMAIN │ IP ADDRESS(ES) │ CODE │ PAGE TITLE │ ├──────────────────────────┼─────────────────────┼──────┼────────────────────┤ │ api.example.com │ 93.184.216.34 │ 200 │ API Documentation │ │ blog.example.com │ 93.184.216.35 │ 200 │ Example Blog │ │ dev.example.com │ 93.184.216.36 │ 403 │ N/A │ │ mail.example.com │ 93.184.216.37 │ ??? │ N/A │ │ www.example.com │ 93.184.216.34 │ 200 │ Welcome to Example │ └──────────────────────────┴─────────────────────┴──────┴────────────────────┘ COMPLETED! Found 18 live subdomains. INFO: Results saved to results.json ``` ## 架构 ``` Scanner (Manager) │ ├── auto_brute_force() → Smart wordlist scan + DNS resolution ├── Passive Sources → CrtSh, CertSpotter, HackerTarget, AlienVault, Anubis ├── DNS Resolution → Multi-threaded A-record lookup └── Web Probing (optional) → HTTP/HTTPS status + title extraction ``` ### 类层次结构 | 类 | 角色 | |-------|------| | `Source` (ABC) | 所有被动数据源的抽象基类 | | `CrtSh` | 查询证书透明度日志 | | `CertSpotter` | 查询 CertSpotter API 获取 DNS 名称 | | `HackerTarget` | 查询 HackerTarget 主机搜索 API | | `AlienVault` | 查询 AlienVault OTX 被动 DNS | | `Anubis` | 查询 JLDC Anubis 子域名数据库 | | `Scanner` | 协调枚举、解析和探测 | ## 默认字典 内置的“智能扫描”字典包含: ``` www, mail, gmail, classroom, drive, docs, api, dev, test, stage, staging, blog, shop, admin, vpn, m, remote, server, support, cloud, app, secure, beta ``` ## 输出格式 (JSON) 使用 `-o` 时,结果保存为: ``` { "api.example.com": { "ips": ["93.184.216.34"], "status": 200, "title": "API Documentation" }, "dev.example.com": { "ips": ["93.184.216.36"], "status": 403, "title": "N/A" } } ``` ## 注意事项 - **SSL 警告:** 在对使用未验证证书的 HTTPS 进行探测时,会抑制 `urllib3` 警告。 - **速率限制:** Web 探测使用配置线程数的一半,以避免触发 WAF。 - **超时:** DNS 解析使用 1 秒超时;HTTP(S) 探测使用 3 秒超时。 - **错误处理:** 所有网络请求都包装在 try/except 块中,以确保即使某个源失败,扫描也能继续。 ## 许可证 MIT 许可证 — 可自由使用、修改和分发。 ## 免责声明 本工具仅供**授权的安全测试和研究使用**。在扫描您不拥有的任何域名之前,请务必确保已获得明确的许可。
标签:DNS解析, GitHub, Python, 子域名枚举, 实时处理, 开源项目, 无后门, 系统安全, 逆向工具