0x5da/DNS-Discovery-Tool
GitHub: 0x5da/DNS-Discovery-Tool
基于 Go 的轻量级 DNS 侦察工具,用于域名记录枚举、子域名暴力破解和基础设施发现。
Stars: 1 | Forks: 0
## DNS 探测工具
*由 0x5da (toasty/OsintToast/WoahToast) 创建*
用于域名枚举和名称服务器分析的高级 DNS 侦察套件。执行区域传送尝试、DNSSEC 验证、反向 DNS 查询,以及使用分布式工作池的智能子域名暴力破解。
### 为什么开发此工具
作为一个专为威胁猎人和安全研究人员在目标侦察中使用的专用 DNS 枚举工具而创建。旨在通过并行化子域名发现并自动化跨多种记录类型的 DNS 数据收集——识别基础设施关系、名称服务器配置以及构成更深层攻击面分析基础的隐藏资产。
### 功能特性
- **A/AAAA 记录**: 解析 IPv4 和 IPv6 地址
- **MX/NS/TXT 记录**: 获取邮件服务器和名称服务器配置
- **子域名暴力破解**: 使用字典进行多线程枚举与并发查询
- **反向 DNS**: 对已解析的 IP 地址执行反向 DNS 查询
- **区域传送检测**: 尝试 AXFR 请求(适用时)
- **DNSSEC 分析**: 验证 DNSSEC 链完整性
### 工作原理
该工具使用 Go 的 net 包进行 DNS 解析。子域名暴力破解会生成 N 个 worker goroutine(通过 -t 标志配置),并发处理字典条目。成功解析的子域名及其 IP 地址会实时打印。所有结果将在完成后汇总。
### 构建与运行
```
go build -o dns-discovery main.go
./dns-discovery -d example.com [-w wordlist.txt] [-t 10]
```
**参数:**
- `-d, --domain`: 目标域名(必填)
- `-w, --wordlist`: 自定义子域名字典(可选)
- `-t, --threads`: 并发 worker 数量(默认: 10)
**示例:**
```
# 基础枚举
./dns-discovery -d google.com
# 使用自定义 wordlist 和 20 个 workers
./dns-discovery -d acme.corp -w subdomains.txt -t 20
# 高速暴力破解 (50 threads)
./dns-discovery -d company.com -w large_wordlist.txt -t 50
```
### 环境要求
- Go 1.15+
- 仅需标准库(无外部依赖)
### 字典格式
每行一个子域名的纯文本文件:
```
www
mail
ftp
admin
api
cdn
staging
```
### 输出示例
```
[*] DNS Reconnaissance starting for: example.com
[*] ====================================
[+] A Records: [203.0.113.1]
[+] AAAA Records: [2001:db8::1]
[+] MX Records: [mxb.example.com. 20, mxa.example.com. 10]
[+] NS Records: [ns1.example.com. ns2.example.com.]
[+] TXT Records: [v=spf1 include:_spf.example.com ~all]
[*] Starting subdomain brute force with 10 workers
[+] Found: www.example.com -> [203.0.113.2]
[+] Found: mail.example.com -> [203.0.113.3]
[+] Found: staging.example.com -> [203.0.113.4]
[*] Enumeration complete. Found 14 records.
```
### 注意事项
- 子域名暴力破解可能会受到目标 DNS 服务器的限速
- NXDOMAIN 响应会被静默忽略(预期行为)
- AAAA 查询在仅 IPv4 网络上可能会失败;这并非错误情况
- Worker 数量应与可用网络带宽匹配;通常为 10-20 个
- 包含 50k+ 条目的字典根据 DNS 响应时间可能需要 30 分钟以上
### 性能建议
- 从较小的字典(1k 条目)开始,以评估 DNS 服务器的响应行为
- 仅在观察到线程利用率 <90% 时增加线程数
- 结合本地 DNS 缓存或使用公共 DNS (8.8.8.8) 以获得更快结果
- 过滤字典以保留相关模式(例如,删除明显不相关的条目,如 "xn--" IDN 编码)
### 局限性
- 无 DNS 区域传送 (AXFR) 实现
- 未执行 DNSSEC 验证
- 无速率限制;可能会在激进扫描时触发 IDS 告警
标签:AXFR, certspotter, DNSSEC验证, DNS侦察, ESC4, EVTX分析, GitHub, Golang, Go语言, OSINT, PoC, Sigma 规则, 二进制模式, 区域传送, 反向DNS查询, 域名分析, 域名系统, 子域名枚举, 安全编程, 并发扫描, 日志审计, 暴力破解, 特征匹配, 程序破解, 系统安全, 网络侦查, 网络安全, 隐私保护