raghubirrajmahato15/HackDev-SubEnum
GitHub: raghubirrajmahato15/HackDev-SubEnum
结合 crt.sh 证书透明度被动查询与主动 DNS 暴力破解的双引擎子域名枚举工具,面向授权安全测试场景。
Stars: 0 | Forks: 0
# HackDev-SubEnum
这是一款子域名枚举工具,结合了被动的 crt.sh 证书透明度查询与主动的 DNS 暴力破解。它是 **HackDev** 开源网络安全工具包的一部分。
HackDev-SubEnum 通过两种互补的方式发现目标域名的子域名:它通过查询 [crt.sh](https://crt.sh) 的证书透明度日志 JSON API,来获取曾出现在 TLS 证书上的任何子域名(被动模式);同时,它通过针对目标域名的 DNS 暴力破解常见子域名前缀字典,并通过 A 记录查询来解析每个候选项(主动模式)。这两种模式的结果会被合并、去重,并使用多线程解析器将其解析为当前的 IP 地址,最后以清晰的表格或结构化的 JSON 格式呈现。
## 功能
- **被动枚举**:通过 crt.sh 证书透明度日志进行——不会向目标发送主动流量
- **主动 DNS 暴力破解**:使用内置的包含约 190 个常见子域名前缀的字典,或使用您自己的自定义字典文件
- **并发 DNS 解析**:使用 `ThreadPoolExecutor`,可通过 `--threads` 控制并发大小
- **为每个发现的子域名进行 IP 解析**,并清楚标记无法解析的主机
- **对合并后的结果进行去重和字母顺序排序**
- **文本和 JSON 输出格式**,适用于人工阅读和流水线处理
- **速率限制**(`--rate`)用于控制 DNS 查询的速度
- **优雅降级**——如果 crt.sh 无法访问、受到速率限制或返回格式错误的数据,该工具会记录警告并以仅主动模式的结果继续运行,而不会直接失败
- **模式控制**:通过 `--passive-only` 和 `--active-only` 标志控制
## 安装说明
```
git clone https://github.com/raghubirrajmahato15/HackDev-SubEnum.git
cd HackDev-SubEnum
pip install -r requirements.txt
```
需要 Python 3.10+。如果未安装 `requests`,主动 DNS 暴力破解仍然有效——仅被动 crt.sh 查询会被跳过(并记录一条警告日志)。
## 使用说明
同时运行被动和主动枚举(默认):
```
python subenum.py example.com
```
仅被动模式,将 JSON 输出写入文件:
```
python subenum.py example.com --passive-only --format json -o results.json
```
仅主动模式,使用自定义字典进行暴力破解,50 个线程,并开启详细日志记录:
```
python subenum.py example.com --active-only --wordlist my_wordlist.txt --threads 50 -v
```
带有 DNS 解析速率限制和请求超时控制的完整扫描:
```
python subenum.py example.com --rate 20 --timeout 15 --format json
```
JSON 查找结果示例:
```
{
"subdomain": "api.example.com",
"ips": ["93.184.216.34"],
"resolved": true,
"source": "passive"
}
```
## CLI 参数参考
| 参数 | 描述 | 默认值 |
|---|---|---|
| `domain` | 要枚举的目标域名(位置参数,必填) | - |
| `-o`, `--output FILE` | 将结果写入 `FILE` 而不是标准输出 | stdout |
| `--format {text,json}` | 输出格式 | `text` |
| `-v`, `--verbose` | 启用详细(调试)日志记录 | off |
| `--threads N` | 用于 DNS 解析的并发线程数 | `20` |
| `--timeout N` | crt.sh HTTP 请求的超时时间(秒) | `10` |
| `--rate N` | 每秒最大 DNS 解析次数,`0` = 不限制 | `0` |
| `--wordlist PATH` | 自定义子域名字典文件的路径(每行一个前缀) | 内置列表 |
| `--passive-only` | 仅执行被动 crt.sh 查询 | off |
| `--active-only` | 仅执行主动 DNS 暴力破解 | off |
| `--version` | 显示程序版本并退出 | - |
| `-h`, `--help` | 显示帮助并退出 | - |
## 法律声明
本工具仅供**授权的安全测试**使用——适用于您拥有的系统,或您已获得明确书面测试许可的系统。对您不拥有或未获授权测试的域名运行子域名枚举或 DNS 暴力破解,可能会违反您所在司法管辖区的计算机滥用法律、服务条款或其他法规。HackDev-SubEnum 的作者和贡献者对滥用本工具的行为不承担任何责任。
标签:GitHub, Python, 子域名枚举, 无后门, 系统安全, 逆向工具