精准查询域名所有子域名及关联信息,核心是组合使用证书透明度日志、DNS枚举、搜索引擎与在线测绘工具,并交叉验证结果,从而构建完整资产画像。
在安全审计、资产梳理或竞品分析时,常常需要知道某个主域名下挂了哪些子域名,以及这些子域名对应的IP、端口、证书甚至技术栈,单靠搜索引擎或者爆破,往往只能看到冰山一角,下面这套流程,是我在实际操作中打磨过的,能帮你把隐藏的子域名“揪”出来,并且把关联信息串成一张网。
为什么常规手段查不全子域名?先搞懂DNS和证书的关系
子域名本质上是在DNS区域里的一条记录,但很多子域名并不在公共DNS里公开枚举,因为管理员可能只在内网解析,或者使用了泛解析,这时候,证书透明度(Certificate Transparency,简称CT)就是最可靠的突破口。
行业共识认为,每一张公开的SSL证书都会被记录到CT日志中,而证书的“Subject Alternative Name”(SAN)字段往往包含多个子域名,这意味着,你不需要去猜某个子域名是否存在,只需要查询这个主域名下所有已签发的证书,就能拿到一份高准召率的子域名清单。
额外提一个细节:泛解析域名会让爆破工具失效,因为任意不存在的名字都会解析到同一个IP,这时需要通过响应内容的差异、或者证书的匹配度来过滤。
用证书透明度日志拿到“官方”子域名清单
CT日志查询是目前最主流、覆盖最全的子域名收集方法,远胜于传统的字典爆破。
常用CT查询平台及操作路径
– crt.sh:输入`%.example.com`,能直接看到该域名下所有证书的SAN字段,结果里会包括历史证书,所以能看到曾经的子域名。
– Censys:使用`parsed.names: example.com`语法,能检索证书中的域名,并且返回关联的IP和服务信息。
– Google Transparency Report:界面简单,但数据量比crt.sh少,适合快速验证单个域名。
实际查询时,建议将crt.sh的结果导出为CSV,然后用Excel或脚本去重,因为同一个子域名可能出现在多张证书里,直接看列表会有大量重复。
本地命令行查询的方式
如果你希望自动化,可以用Python脚本请求`https://crt.sh/?q=%.example.com&output=json`,结果会以JSON格式返回,直接提取`name_value`字段,按行拆分,过滤掉通配符行(如`.example.com`),剩下的就是有效子域名列表。
这段实操代码不需要复杂环境,只需一个requests库,拉取结果后,再配合下面的IP反查步骤。
结合DNS枚举与主动探测,查漏补缺
CT数据再全,也无法覆盖那些没有申请证书的内部子域名,为了“所有”这个目标,必须加入主动枚举手段。
通过DNS字典爆破找出未出现在证书里的记录
使用`dnsx`或`massdns`,配合一份高质量的子域名词典(比如包含常见的前缀:dev、staging、api、admin、old、test等),命令示例:
dnsx -d example.com -w subdomains.txt -a -resp
要点在于:结果要去重并过滤泛解析IP,如果泛解析开启,你可以先解析一个不存在的名字(比如zzzzz.example.com),拿到基准IP,然后在爆破结果里删掉解析到该IP的条目。
利用网络空间测绘工具反查关联资产
这一步很关键,很多子域名并没有在DNS里公开解析,但它的IP却托管着Web服务,工具如FOFA、Quake、ZoomEye,都支持反查域名绑定情况。
以FOFA为例,输入domain="example.com",不仅能列出所有关联子域名,还能看到IP归属、开放端口、Web组件指纹、证书信息,这些数据能帮你判断哪些子域名是测试环境、哪些是生产环境。
实操顺序建议:先用CT拿全量域名,再用DNS爆破补漏,最后用测绘工具把域名和IP绑定关系梳理出来。
关联信息挖掘:IP、端口、证书与历史痕迹
拿到子域名清单只是第一步,真正有价值的“关联信息”是这些域名背后的服务器、服务以及归属关系。
解析IP并识别CDN与真实源站
对每个子域名做A记录解析,可以使用`dig`或在线工具,如果解析出来的IP是CDN厂商的(比如Cloudflare、Akamai),那么这个子域名的真实源站可能被隐藏,此时要借助证书中的“Issuer”字段、历史DNS记录(用SecurityTrails或被动DNS数据库)来寻找源站IP。
业内专家指出,大部分安全事件都源于CDN背后的真实IP泄露,你可以在子域名对应的IP上设置防火墙规则,仅允许CDN的IP访问源站端口,这样即使查到了也访问不了。
端口与服务指纹收集
对筛选出的真实IP进行端口扫描,推荐使用Nmap或Masscan,扫描时重点识别Web服务中间件、版本号、开放数据库端口,某个子域名`old.example.com`开放了8080且返回`Apache/2.4.49`,这意味着可能存在路径遍历漏洞,需要重点标注。
扫描建议分两步:先Masscan扫全端口(速度快),再用Nmap对开放端口做版本检测。
证书历史追溯域名归属
证书里除了域名,还包含组织名、邮箱、签发CA,如果两个子域名使用了同一张证书,那么极有可能属于同一个业务系统,通过查询Censys里的证书哈希,你还能找到同一张证书下的其他子域名,这些信息反过来又补全了子域名列表。
基于关联信息构建子域名资产画像
将以上数据汇总后,推荐用表格形式整理,这样能一眼看清每条关联信息。
| 子域名 | 解析IP | 归属(CDN/云/自建) | 开放端口 | 证书组织 | 技术栈 | 风险标注 |
|---|---|---|---|---|---|---|
| www.example.com | 21.58.1 | Cloudflare | 80/443 | Example Inc | Nginx/1.18 | 低 |
| dev.example.com | 33.22.10 | 海外自建 | 22/8080 | Example Inc | Node.js | 高,管理后台 |
| api.example.com | 0.2.8 | 简米云 | 443 | Example Inc | Tomcat/9 | 中 |
优先级排序原则
– 带`dev`、`test`、`staging`字段的子域名通常防护较弱,优先检查。
– 使用非标准端口(如8443、8081)的域名可能存在内部服务。
– 多个子域名解析到同一个IP,说明该IP托管了多种业务,风险集中。
关联信息里还有一个常被忽略的点:子域名的IP和主域名是否在同一C段,有时候主站用了高防,但同一C段的其他子域名IP没防护,绕过方式就很明显了。
用自动化脚本提升查询效率
如果只是查一两个域名,手动操作没问题,但要查完整资产,推荐你使用开源工具如Amass、subfinder、AssetFinder,它们已经把CT、DNS、被动数据源整合到了一起。
常见组合命令流程:
subfinder -d example.com -all -o subs.txtamass enum -d example.com -brute -w wordlist.txthttpx -l subs.txt -title -tech-detect -status-code
这三步分别解决了:被动收集、爆破补充、存活探测,最后用httpx的输出保存为CSV,直接作为漏洞扫描的输入。
这些工具在Kali Linux里都有,Windows下也能通过Go编译安装。自动化工具的核心价值在于数据源的数量,而非字典大小,多配置几个被动数据源的API密钥(如Censys、Shodan、Virustotal),会明显提高查询覆盖率。
查询子域名时常见的三个误区
不少人在实际排查时容易陷入误区,导致结果不准或者遗漏。
只看DNS记录,不查证书
有些子域名从未被公开的DNS服务器解析过,但证书确确实实存在,你想收集“所有”子域名,就不能跳过CT日志这一环节。
忽略子域名接管风险
子域名本来解析到某个IP,后来该服务被下线,DNS记录却还在,这时如果域名托管方(如GitHub Pages、AWS S3)允许别人注册这个残留的CNAME目标,攻击者就能完全控制这个子域名,查询关联信息时,务必检查每个子域名的CNAME记录,针对指向第三方服务域名的主机名生成接管风险列表。
拿泛解析结果当有效资产
国内很多企业使用泛解析,随便输入一个不存在的子域名都能返回IP,导致爆破结果被污染,你需要在查询流程中单独过滤这些无效点,否则后续扫描会白白浪费资源。
针对不同查询场景的差异化组合
– 安全审计场景:重点放在“历史子域名”上,因为已下线的子域名可能还指向旧IP,存在敏感信息泄露,此时需结合Passive DNS历史数据。
– 资产梳理场景:关注子域名对应的部门归属和技术栈,方便后续按业务线运维。
– 竞品分析场景:查询对方子域名时,往往需要知道其使用的云服务商和第三方组件,以此推断其成本和技术规模,这种情况下可多留意证书里的组织名称和备案信息。
不管哪种场景,都要把CT日志作为第一数据源,再补充DNS和测绘数据,很多人在百度搜索“子域名查询工具”得到的结果非常有限,那是因为这些在线工具只覆盖了CT和部分DNS数据,不够全面,想进一步深挖,建议自己搭建一套持续监控的流程,定时跑一次上面提到的命令,将结果与上次做比对,就能发现新上线的子域名和黄子域名。
关于精准查询的延伸问题解答
如何查询某个IP下绑定的所有子域名?
通过反查工具如dnsreverse或使用FOFA的ip="1.2.3.4"语法,可以查到相同IP上的所有域名及子域名,这属于被动DNS反查的数据来源,覆盖度依赖数据库大小,如果IP是CDN的,反查结果往往不是真实子域名。
子域名查询多久更新一次数据才准确?
证书日志数据一般实时更新,但公共平台如crt.sh有时会滞后数小时,DNS枚举和测绘数据则受制于扫描频率,通常每周更新一次较合理,如果你在做安全监控,建议每天比对一次CT新增证书。
为什么搜索引擎搜不到某些子域名?
搜索引擎只收录能被爬虫抓取到的页面,很多子域名设有robots协议限制、需要登录或根本无Web服务,自然无法通过百度等渠道找到,而证书日志和DNS数据不依赖爬虫,覆盖范围更广。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/731238.html




