要查询一个域名下的所有二级域名(即子域名,例如 sub.example.com 中的 sub),通常需要借助多种技术手段进行综合探测。由于不存在官方公开的完整列表,专业做法是结合被动信息收集与主动枚举两种方式。以下为业内最常用的方法及工具。

1. 使用被动信息收集(Passive Reconnaissance)
被动方式不直接访问目标服务器,而是从公开数据源提取子域名信息,隐蔽且高效。
1.1 证书透明度日志(Certificate Transparency Logs)
所有公开的SSL/TLS证书都会被记录在CT日志中,其中包含证书中的Subject Alternative Names (SANs),这些SANs经常包含子域名。常用查询工具:
· crt.sh:在浏览器中访问 https://crt.sh/?q=example.com 即可获取所有已签发证书中的子域名列表。
· CertSpotter:提供API和命令行工具,支持实时监控。
1.2 搜索引擎与DNS数据库
利用Google、Bing等搜索引擎的site:example.com语法可发现部分子域名,但结果不完整。更专业的数据源包括:
· SecurityTrails:提供历史DNS数据和反向DNS查询,可通过API枚举子域名。
· Shodan:互联网设备搜索引擎,按域名hostname:example.com过滤可发现暴露的子域名服务。
· VirusTotal:其“Domain”详情页常列出关联子域名(来自被动DNS解析)。
1.3 第三方DNS服务商
如RapidDNS、DNSDumpster等在线工具,输入主域名即可返回从多个来源聚合的子域名列表。
2. 使用主动枚举(Active Enumeration)
主动方式直接向DNS服务器发送查询,可发现更多从未公开的子域名,但可能触发安全告警,并需注意合法性。
2.1 字典爆破(Brute-Force)
使用常见子域名列表(如subdomain.txt,包含www、mail、api、admin等常用词)逐个尝试解析。常用工具:
· Sublist3r:结合被动收集与字典爆破,适合快速扫描。
· dnsrecon:支持多种枚举模式,包括字典爆破、SRV记录查询、区域传输尝试等。
· gobuster dns:Go语言编写,速度快,配合自定义字典。
2.2 区域传输(Zone Transfer)尝试
如果目标DNS服务器配置错误开放了AXFR请求,可直接获取完整DNS区域文件,包含所有子域名。使用命令:
dig axfr @ns1.example.com example.com(需先获取目标NS地址)。成功率极低,但值得尝试。
2.3 爬虫与Web指纹
使用爬虫工具(如CSRF、Katana)爬取目标网站页面中的链接、JavaScript文件、CSS中的URL,常能发现未标注的子域名(如图片CDN、测试子站)。
3. 自动化集成工具(推荐专业方案)
现代安全研究人员通常使用以下集成工具,一次性完成被动+主动收集:
· Amass(OWASP项目):支持80+数据源,包括CT日志、搜索引擎、DNS服务商、证书透明度、反向DNS等,并可结合爆破。命令示例:amass enum -d example.com。
· Subfinder:专注于被动收集,速度快,适合作为管道的一部分。
· Findomain:基于Rust,利用多个API(如SecurityTrails、VirusTotal)和证书透明度查询。
4. 注意事项与局限性
· 合法性:对不属于自己或未经授权的域名进行主动枚举可能违反当地法律法规或服务条款,务必先获得书面授权。
· 完整性无法保证:没有任何方法能发现百分之百的子域名,特别是内网域名、私有DNS或未公开的测试子域。
· 动态DNS与CDN:部分子域名使用泛解析(wildcard)或CDN(如Cloudflare)会隐藏真实IP,但仍可被解析出域名。
· 结果去重:不同工具返回结果可能重复,建议使用sort -u或工具内置去重功能。
5. 总结操作流程
对于技术专业人员,推荐流程为:
1. 使用Subfinder或Amass从被动源收集初始列表。
2. 将结果导入httpx或httprobe进行存活HTTP/HTTPS探测。
3. 对存活子域名再使用gobuster进行深度字典爆破。
4. 结合crt.sh和SecurityTrails手动交叉验证。
通过以上步骤,可最大程度获取目标域名下的二级域名及更深层级子域名。

查看详情

查看详情