想查询一个网站的所有子域名,核心方法是组合利用证书透明度日志、DNS枚举、搜索引擎和在线安全平台这几类免费渠道,没有一种单一工具能保证100%完整,但交叉验证后覆盖绝大多数公开子域名是可行的。
为什么需要查询子域名以及能查到什么
在开始列举方法前,先明确查询子域名的实际价值,无论是做网络安全评估、资产梳理还是竞品研究,子域名就像是主站延伸出的无数扇侧门,很多时候主站防护严密,但某个测试环境的子域名却暴露了敏感信息。
一次完整的子域名收集会涉及三类数据:
- 解析到公网IP的活跃子域名
- 已停止解析但曾公开过的历史子域名
- 仅在内部DNS服务器存在的内网子域名(普通外部查询无法发现,不在本次讨论范围)
行业共识认为,综合使用多种免费数据源能把发现的子域名数量提升数倍,单一工具通常只能发现实际存在量的30%-50%。
免费子域名查询方法的核心思路
所有免费查询方法的本质,都是基于公开数据和主动探测的组合,具体来说分为三类:
- 被动收集:不直接触碰目标服务器,而是从第三方日志、证书库、搜索引擎缓存中提取域名记录
- 主动爆破:构造常见前缀(如admin、test、api、dev等)并尝试DNS解析,验证是否存在
- 交叉关联:通过IP反查、ASN关联等方式,找到可能遗漏的子域名
被动收集最安全不触发告警,主动爆破覆盖更全面但速度慢且容易被发现,实际操作中建议先被动后主动。
最有效的免费子域名查询方法实操
证书透明度日志查询
证书透明度是近年来最可靠的子域名发现渠道,当网站申请SSL/TLS证书时,域名会被强制记录到公开日志中,这意味着过去签发的每一张证书上的所有域名,都相当于被公开记录在案。
业内专家指出,这项机制已经成为子域名枚举的首选数据源,因为无需发送任何请求到目标服务器。
具体操作方式如下:
- 访问crt.sh网站,在搜索框输入
%.example.com格式,其中example.com替换为目标域名 - 使用命令行查询:
curl "https://crt.sh/?q=%25.example.com&output=json"然后借助jq等工具整理输出结果 - 通过Censys的免费搜索接口,用
names: example.com语法查询证书中的子域名
以crt.sh为例,输入域名后返回的结果列表里能看到证书ID、申请日期、匹配的域名列表,点击日志详情还能看到完整的SAN(Subject Alternative Name)字段,里面往往藏着不对外宣传的内部子域名。
这类方法的优势在于:数据直接来自CA机构的公开日志,覆盖面广且无法被目标网站屏蔽,历史记录可以追溯到多年以前。
在线子域名收集平台综合交叉
有几个免费在线平台聚合了丰富的子域名数据库,用它们可以快速获取较全面的结果。
推荐以下平台配合使用:
- SecurityTrails(安全足迹):提供子域名历史解析记录,免费账户可查询有限次数
- AlienVault OTX:威胁情报平台,搜索域名可以关联出相关的子域名记录
- Riddler.io:聚合了证书日志、DNS历史、端口扫描结果等多种数据源
- VirusTotal:查询域名关联信息,通过其Passive DNS机制获取已解析过的子域名
具体操作路径是:打开SecurityTrails首页,在搜索框输入要查询的域名,结果页会按字母顺序列出全部已知子域名并标记解析IP地址,OTX则需要点击进入Domain别名查询页面,输入域名后查看信任圈关联节点。
表格对比一下主流在线平台的核心差异:
| 平台 | 数据规模 | 历史记录 | 免费限制 |
|---|---|---|---|
| SecurityTrails | 较大 | 支持 | 每月有限次查询 |
| AlienVault OTX | 中等 | 中等 | 基本无限制 |
| Riddler.io | 中等 | 支持 | 部分功能收费 |
| VirusTotal | 较大 | 支持 | 有速率限制 |
使用漏扫和子域名枚举工具
如果需要批量处理或者追求更深入的结果,推荐使用开源命令行工具,这些工具将被动查询和主动爆破合二为一,效率远高于手动操作。
个人最常用的免费工具组合:
- Sublist3r:Python编写的老牌子域名枚举工具,聚合了多个搜索引擎和在线API的数据源
- Amass:OWASP维护的官方资产收集工具,被动模式已覆盖数十个数源,深度模式还结合了DNS挖掘和证书日志解析
- dnsrecon:自带DNS记录枚举、区域传送测试、SRV记录查询等多种功能
- MassDNS:高速DNS解析器,配合一个常见子域名词典可以进行大规模爆破
以安装和基本使用为例,在Kali Linux中这些工具已经预装,如果是普通系统需要使用pip或apt安装。
用Amass进行被动收集的命令示例:
amass enum -passive -d example.com
系统会自动从各个公开数据源拉取与target.com相关的域名,最终输出一个域名列表,如果要查看每个子域名对应的解析IP,可以追加 -ip 参数。
用Sublist3r进行基础枚举的命令为:
python sublist3r.py -d example.com -p 80,443
值得注意的是,主动爆破需要准备一份合适的字典,推荐使用SecLists项目中的subdomains-top1million-5000.txt,这一列表包含了最常见的子域名前缀,覆盖a、api、auth、beta、cdn、dev、mail、staging、test等高频词汇。
查询子域名时常见的差异化场景应用
同一服务器托管多个域名的情况
如果你发现一个子域名解析到某个IP,可以反向操作把这个IP输到在线反查工具中,找出其他绑定在同一服务器上的域名,这往往能发现意料之外的资产线索,这种IP反查方式在安全圈叫“旁站查询”,具体可通过ip138或dnslytics等免费工具实现。
针对某个业务系统精确收集子域名
比如目标是一个电商平台的订单系统,那么在爆破阶段除了通用字典外,还应该手工加入“order”“cart”“payment”“checkout”“wms”“erp”等行业词汇,能大幅提高命中率,这部分字典建议自己去目标站点的JS文件中挖掘,按页面上下文组织词汇。
子域名查询工具在渗透测试中的地图作用
在做授权测试时,查询子域名的目的在于绘制攻击面,已经查询到的所有子域名最好先用httpx工具批量探测存活状态和Web指纹,再进行内容抓取,探测速度可以提升很快,得到的信息也更准确。
免费子域名查询方法的选择和组合建议
没有任何一个免费方法能完整覆盖所有子域名,不同工具各有侧重,只有组合使用效果才会明显。
推荐一个相对高效的流程:
- 先用crt.sh和OTX做初步摸底
- 再跑一次Amass被动模式进行交叉验证
- 根据行业特点手动补充字典,用MassDNS进行爆破
- 通过SecurityTrails复查历史记录,防止遗漏已过期但仍有价值的域名
- 最后对所有收集结果用host命令批量验证解析状态,删除无效记录
整个流程走下来,一个中小型网站的活跃子域名覆盖率通常能到较理想的水平。
关于子域名查询的常见疑问解答
使用在线子域名查询工具是否会被目标网站察觉?
被动采集方式不会对目标服务器产生直接请求,因此不会被察觉,但主动爆破会向目标DNS服务器发送大量解析请求,有被日志记录甚至触发防护策略的可能性,安全人员做授权测试时务必控制速率,避免影响正常业务运行。
哪些免费子域名回收工具体验较好?
目前最成熟的免费组合是Sublist3r加crt.sh网站,几乎无需配置就能获得不错的结果,对于深度需求则首推Amass,功能全面且社区活跃,网上可检索到大量使用教程和扩展脚本。
免费方法能否完全替代商业子域名查询产品?
商业产品在数据实时性、全球节点覆盖和API并发能力上更有保障,但免费方法聚合起来获得的数据已经可以满足大多数普通安全测试和资产梳理需求,对数据时效性要求较高的业务用户,可能需要酌情购买专业商业产品的订阅服务,判断依据很简单,如果查询频率每月不超过几十次且对结果实时性要求不高,免费方案基本够用。
结合以上方法,你现在就能着手对自己管理的域名做一次全面的子域名梳理,清理掉无人维护的僵尸子域名,能显著降低被攻击的风险面。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/629434.html





