子域名发现
子域名发现
yangc子域名发现
子域名发现是红队评估和渗透测试中信息搜集阶段的核心环节。目标组织往往存在大量未在主站显露的资产(如测试环境、后台接口、VPN 等),子域名发现能帮助攻击者有效扩大攻击面,挖掘潜在漏洞。
被动搜集
被动搜集不直接与目标服务器交互,而是利用第三方数据源、搜索引擎或证书透明度日志获取信息,隐蔽性高。
1. Subfinder
ProjectDiscovery 出品,速度极快,是目前最主流的工具之一。
1 | # 安装 |
2. Amass
OWASP 项目,功能极其强大,整合了 ASN、图形遍历等多种技术,适合深度侦察。
1 | # 安装 |
3. Layer (子域名挖掘机)
国内著名的图形化/命令行工具,内置了大量针对国内的接口和字典,适合中文环境。
1 | # 下载运行 (Windows) |
4. OneForAll
国人开发的一款功能强大的集大成工具,集成了数十种子域名收集模块。
1 | # 安装 |
5. Chaos
ProjectDiscovery 的公开数据集,适合快速发现已被记录的子域名。
1 | # 安装 |
主动爆破
当被动搜集无法满足需求时,使用字典对 DNS 服务器进行查询。注意:主动爆破会产生大量流量,容易被安全设备感知。
1. Puredns
专为子域名爆破设计的工具,去重和解析速度极快,推荐用于处理大规模字典。
1 | # 安装 |
2. Ksubdomain
无状态子域名爆破工具,支持并发数极高(10万级),适合内网大段扫描或极速爆破。
1 | # 运行 |
3. Dnsx
虽然主要用于 DNS 解析验证,但也可用于简单的爆破。
1 | # 安装 |
证书透明度 (CT Logs)
通过查询 HTTPS 证书的透明度日志,可以发现目标颁发过证书的子域名,准确性极高。
在线工具
- Crt.sh: https://crt.sh/ (最常用,数据全)
- Google Transparency Report: https://transparencyreport.google.com/https/certificates
命令行查询
1 | # 使用 curl 查询 crt.sh |
变形与排列
基于已知的子域名,通过添加前缀、后缀或替换字符来猜测其他可能的资产。
1. Altdns
1 | # 生成变形字典 |
2. Gotator (Go编写,推荐)
1 | go install -v github.com/Josue87/gotator@latest |
存活探测与指纹识别
收集到大量子域名后,必须进行存活验证,剔除无效域名。
HTTPx
ProjectDiscovery 旗下的 HTTP 探测神器,支持多种探针。
1 | # 安装 |
综合实战工作流
建议将多个工具串联起来,形成自动化 Pipeline。以下是一个典型的 Bash 工作流:
1 | # 定义目标 |
常见子域名字典
除了通用的 www, api 等,针对不同资产的特定字典:
基础类:
1 | www, mail, ftp, admin, login, test, dev, staging, beta, prod, dashboard |
技术类:
1 | nginx, apache, tomcat, jenkins, gitlab, grafana, kibana, elasticsearch, k8s, kubernetes |
地理位置/环境类:
1 | bj, sh, gz, sz, us, hk, internal, external, vpn, db, mongo, redis, mysql |
安全相关:
1 | security, sso, auth, key, secret, cert, ca, firewall, waf |
技巧与最佳实践
防泛解析
- 目标可能配置了通配符 DNS 记录 (
*.example.com),导致爆破结果全是 IP。 - 解决方法:在进行爆破前,使用
dnsx或puredns先验证一个随机生成的子域名,如果返回了 IP,说明存在泛解析。在后续处理中需要过滤掉与泛解析 IP 相同的结果。
- 目标可能配置了通配符 DNS 记录 (
关注非标端口
- 许多资产隐藏在 8080, 8443, 9000, 8081 等非标准端口,不要仅扫描 80/443。
历史域名
- 很多子域名虽然 DNS 解析失效了,但 IP 上的服务可能还开着。使用
httpx的-probe-all-ips功能或者结合 IP 端口扫描来发现“幽灵”资产。
- 很多子域名虽然 DNS 解析失效了,但 IP 上的服务可能还开着。使用
API 资产
- 重点留意
api,graphql,v1,v2,gateway,internal-api等关键字。
- 重点留意
防御建议
- 最小化原则:定期清理不再使用的 DNS 记录,避免资产泄露。
- 限制传输:避免使用通配符证书,如果必须使用,请确保证书透明度日志的监控。
- 访问控制:内部子域名不应直接暴露在公网,必须配置 VPN 或 IP 白名单访问。
- 监控告警:部署监控服务(如 ProjectDiscovery 的
notify),当发现新注册的证书或新的子域名解析时及时触发告警。