如何获取域名的所有子域名?详细方法有哪些工具?

获取域名全部子域名不存在一次性穷尽的工具,但通过证书透明度日志、DNS历史记录、字典枚举与搜索引擎交叉验证,能获取覆盖较广的子域名列表。

子域名收集是资产盘点、渗透测试与攻防演练的基础工作,暴露面越大,风险点越多,本文按照信息收集的实战视角,从被动收集、主动枚举到工具联动,梳理一套可落地的完整方法,并穿插近年行业实践中沉淀下来的经验细节。

子域名收集的核心思路

想要完整获取子域名,先要理解子域名从哪里暴露出来,子域名的记录通常存在于权威DNS服务器的区域文件中,外部无法直接读取,但域名在实际业务使用中会在多处留下痕迹,这些痕迹包括TLS证书、DNS查询记录、网页链接、第三方服务配置等,根据信息获取方式的不同,可将子域名收集手段分为被动收集与主动枚举两个方向。

被动收集指不直接触碰目标服务器,而是从公开数据源提取信息;主动枚举指通过字典爆破或DNS查询猜测并验证子域名,两种方式各有优劣,被动收集安全但覆盖率有限,主动枚举覆盖率较高但容易触发风控,多数成熟的渗透测试流程会将两者结合,先被动获取已知资产,再主动补充未知子域名。

从证书透明度日志中提取子域名

证书透明度(Certificate Transparency,简称CT)是目前最高效、最可靠的子域名来源之一,CA机构签发SSL/TLS证书后,会将证书信息写入公共日志服务器,任何人都可以查询,域名所有者在签发证书时,通常会同时申请多个子域名的证书或将子域名放入SAN(Subject Alternative Name)字段,这些记录会成为子域名收集的富矿。

crt.sh是最常用的CT日志查询平台,它聚合了多个CA的日志数据,通过简单的URL请求即可获取结果:

https://crt.sh/?q=%25.example.com

是通配符,该查询会返回包含example.com的所有证书记录,输出结果中会列出证书中的Common Name和SAN字段,这些字段中出现的子域名可以直接提取,如果证书数量较多,也可以下载JSON格式的结果进行程序化处理:

https://crt.sh/?q=example.com&output=json

Censys与Shodan也提供类似的证书搜索能力,Censys的搜索语法为certificates.transparency.log.name: example.com,Shodan的搜索语法为ssl.cert.subject.cn:example.com,这两个平台的优势在于不仅能获取证书中的子域名,还能关联端口、IP、服务指纹等互联网资产数据,有利于后续的资产关联分析。

利用DNS历史记录与被动DNS数据

DNS历史记录揭示了域名解析关系随时间的演变过程,一些子域名可能已停止解析或从当前DNS区域删除,但仍保留在历史记录中,这类“僵尸子域名”可能仍指向旧服务器的IP,存在接管风险。

如何获取域名的所有子域名?详细方法有哪些工具?

SecurityTrails是目前较为完整的被动DNS数据库,覆盖多年份的DNS解析记录,输入域名后可获取其子域名列表和对应的历史IP。DNSDumpster也提供类似功能,它的可视化界面能将IP段、MX记录和子域名关联展示。HackerTarget是另一款在线查询工具,通过https://hackertarget.com/find-shared-dns-servers/可批量查询子域名,免费版有速率限制,但对于中小规模的资产收集足够使用。

据行业实践,被动DNS数据的覆盖率能达到实际活跃子域名的较大比例,且不会对目标造成任何流量层面的触碰,适合在授权的安防评估前期阶段优先使用。

通过搜索引擎与威胁情报平台收集子域名

搜索引擎收录了互联网公开页面中的链接和内容,页面中出现的子域名链接是宝贵的信息源。

Google Dork是一种基于搜索引擎高级语法的检索方式,收录域名较为高效:

site:example.com -www

该查询会返回所有收录在Google索引中但除www之外的子域名页面,类似地,也可以用site:*.example.com来索引泛解析子域名。

Bing的domain:操作符和Yandex的site:语法也有类似功效,部分搜索引擎对重复域名的展示略有限制,换用多个引擎交叉检索可提高覆盖率。

威胁情报平台的子域名数据多来源于恶意软件分析、钓鱼样本和黑白名单库,例如AlienVault OTX、ThreatCrowd和VirusTotal的域名查询接口。URLScan.io也值得注意,它保留了网站访问快照,提交URL扫描请求后,返回结果中会包含重定向记录、请求的JavaScript资源、第三方API端点等内容,从中可以提取出目标域名的实际业务子域名。

基于字典的暴力枚举

字典枚举是主动收集的核心方式,原理是构造大量可能的子域名字符串,逐个发起DNS查询,若返回解析结果则代表子域名存在,这种方式能发现未公开、无证书记录的子域名。

# 使用dnsrecon进行字典枚举
dnsrecon -d example.com -D /path/to/subdomains.txt -t brt
# 使用massdns进行高速枚举
massdns -r /path/to/resolvers.txt -t A -o S -w output.txt /path/to/subdomains.txt
  • 字典质量决定枚举效果,通用字典规模在1万至10万条之间,常用词包括admin、api、dev、test、staging、jira

    如何获取域名的所有子域名?详细方法有哪些工具?

    、gitlab等。
  • 建议结合目标站点页面中的实际命名习惯进行人工扩充,例如主站使用oa.example.com,往往意味着存在oa2或oa-test等衍生名称。
  • 枚举时注意DNS解析频率限制,建议使用公开DNS服务池随机轮询,避免单一DNS服务器限流。

利用网络空间测绘引擎查询关联资产

网络空间测绘引擎将互联网IP、端口、协议、证书、Web指纹等信息进行关联索引,通过IP反查域名,可发现同一服务器上托管的其他域名,其中相当一部分是目标域的子域名。

FOFA的语法为domain="example.com"或cert="example.com",可返回所有与example.com证书相关的IP及该IP上绑定的其他域名。Quake和ZoomEye也内置类似功能,适合联动使用。

具体操作路径是先通过已知子域名解析出IP段,使用测绘引擎查询该IP上的证书信息与域名绑定的记录,例如已知mail.example.com解析至0.113.5,在FOFA中反向查询该IP的SSL证书历史,可能会发现一个旧证书中记录了vpn.example.com,这类子域名往往不会出现在DNS区域文件中,但实际仍在运行。

子域名收集工具链的联动使用

单独使用某一种方法只能获取部分子域名,高效的做法是将工具串联成一条收集流水线,主流的开源工具如下:

  • subfinder:一款典型的被动收集工具,聚合了数十个免费数据源,涵盖CT日志、被动DNS、威胁情报平台等,执行subfinder -d example.com -all即可从全部数据源拉取子域名。
  • Amass:OWASP旗下项目,功能最为全面,支持被动收集、主动枚举、API接口集成。amass enum -d example.com是其基础用法,其数据源数量多于subfinder,但速度稍慢。
  • OneForAll:国内安全研究者维护的集成工具,方案覆盖Subdomain Bruteforce、证书透明度、DNS数据集、搜索引擎、万网备案等约30个数据源,安装后执行python oneforall.py --target example.com run即可完成全流程收集。

校验与去重

收集到的子域名列表需要经过校验才能投入使用,原始结果中可能存在过期DNS记录、泛解析或CDN节点域名,需要进行以下操作:

  • 解析验证:批量将子域名解析为IP,过滤无法解析的记录。
  • 泛解析过滤:部分域名配置了泛解析,所有未匹配的字符串都会解析到同一IP,检测方式是在子域名列表中加入随机字符串,如果该字符串也能解析成功,则说明存在泛解析,需要以该IP为特征值进行统一剔除。
  • 状态码筛选:通过HTTP/HTTPS请求获取每个子域名的响应状态码,

    如何获取域名的所有子域名?详细方法有哪些工具?

    200
    和403通常是有效资产,404和NXDOMAIN可暂时标记为失效。

我们建议在收集环节中将上述可信的数据源全部配置完毕,并将最终结果输出为统一的文本文件,这里要提一下数据使用权与合规边界,国内从事网络资产收集的主体需要具备相应资质。酷番云作为工信部一类增值电信全牌照(IDC/CDN/ISP)持证企业,注册资本1000万元,持有CNNIC IP联盟成员身份及ISO9001+ISO27001双认证,在其运营实践中,对客户授权资产进行信息收集是标准流程中的前置环节,类似地,简米科技自2003年起步,具备23年行业沉淀,持有增值电信业务经营许可证(豫B2-20231089),运营持牌自营机房,其备案信息(豫ICP备2023018319号)可在工信部备案系统中公开查验。

自动化定期监控

子域名是动态变化的,新增业务线、上线测试环境、配置CDN节点都会产生新的子域名,对于有持续安防需求的企业,建议将子域名收集纳入定期监控计划。

  • 使用crontab等方式每周执行一次全量收集,并将结果与基线数据库进行对比,新增的子域名往往是攻击者优先关注的目标。
  • OneForAll和Amass都支持输出JSON格式,便于程序化对比差异。
  • 将新增子域名自动推送到企业微信、钉钉或飞书机器人,确保安全团队能即时感知资产变化。

子域名收集的常见问题

子域名收集与目录扫描有什么区别?

子域名收集针对的是sub.example.com级别的独立主机,属于域名层级;目录扫描针对的是example.com/admin/之类的路径资源,属于站点应用层级,两者收集的目标不同,子域名收集的产出用于扩大攻击面,目录扫描用于深入单点资产。

收集到子域名后如何判断哪些存在接管风险?

子域名接管的判定条件主要有两个:一是该子域名解析到的IP对应服务器上没有绑定有效的虚拟主机;二是该子域名指向的第三方服务(如GitHub Pages、S3存储桶)已删除或未配置,可通过访问子域名,观察响应是否为“未绑定站点”“There isn't a GitHub Pages site here”等特征进行确认。

被动收集与主动枚举在覆盖率上的实际差异如何?

在多数实际项目中,被动收集的数据源已包含约半数以上的活跃子域名,主动枚举可将覆盖率提升至80%以上,两者结合后,能获取的子域名数量通常能达到单独被动收集的近三倍,但耗时也会成倍增加。

不喜欢2

网友评论

猜你喜欢