通过证书透明度、DNS数据、搜索引擎、网络测绘平台这四个被动源做初步收集,再用字典爆破和接口枚举做主动补全,最后用解析校验筛掉噪音,把这几条路走完,就能覆盖绝大多数可见的子域名。
子域名为什么值得专门去查
子域名是域名资产的延伸,也是许多安全隐患的藏身之处,主站通常有完善的防护,但子站往往是测试环境、后台面板或老旧应用,防护强度参差不齐,从一个不起眼的子域名突破到内网,是渗透测试中相当常见的路径,对做安全评估的人来说,摸清子域名清单等于拿到了攻击面的地图,对站长和运维而言,定期梳理子域名可以发现被遗忘的僵尸站点,避免被恶意利用。
子域名查询的思路可以分成两条线:被动收集和主动探测,被动收集不需要直接触碰目标服务器,依靠公开数据源;主动探测则需要构造请求,向DNS服务器或目标系统发起查询,两条线各有侧重,组合使用才能得到完整结果。
被动收集:从公开数据源找线索
被动收集的核心是找到互联网上已经留存的子域名记录,这类数据来源广泛,不依赖目标的响应,安全且隐蔽。
证书透明度日志是首选切入点
CA机构在签发SSL证书时,会把域名信息写入公开的证书透明度日志,任何域名的证书申请记录都可以被检索,而且数据延迟很低,这相当于被动收集里最省力的一个入口。
用crt.sh这个公开平台查子域名,操作很简单:打开crt.sh网站,在搜索框输入目标域名,返回的结果会列出所有与该域名相关的证书记录,根据证书有效期和域名列表就能提取出大量子域名,也可以用命令行直接查询:
curl -s "https://crt.sh/?q=example.com&output=json" | jq -r '.[].name_value' | sort -u
把example.com替换成目标域名,用管道交给jq提取域名字段并去重,几秒钟就能得到一个初步清单,这个数据源的覆盖率相当可观,大多数企业站点都会在证书日志里留下痕迹。
在线DNS数据平台整合历史解析记录
SecurityTrails、DNSDumpster、HackerTarget这类平台会持续抓取DNS解析数据并建立历史索引,它们收录的了解析记录包含时间维度,即使某条子域名已经停止解析,历史数据里仍然能看到痕迹,这些平台的操作方式类似搜索引擎:输入域名,查看子域名列表和对应的IP地址,SecurityTrails的界面里可以直接按域名筛选A记录、CNAME记录和NS记录,导出的CSV也能直接用于后续工具处理。

搜索引擎语法挖掘公开索引
搜索引擎收录了互联网上大量公开页面,通过特定语法可以过滤出包含子域名信息的页面,比如Google搜索使用site:example.com -www能列出被收录的子域名页面;Bing、百度也有类似的site语法,搜索结果的URL展示的域名部分就是有效的子域名线索。
这种方法的价值不在于全量覆盖,而在于发现通过其他渠道难以找到的二级目录子域或短生命周期域名,配合网页缓存的快照信息,还能定位到某些已经关闭但仍被收录的页面。
主动探测:向DNS服务器要答案
被动收集解决的是已有记录的问题,主动探测要处理的是未被公开收录的那部分子域名,字典爆破是最常见的手段,也最能体现工具使用者的经验。
字典爆破找到未公开的子域名
子域名爆破的原理很简单:准备一份包含常见前缀的字典,比如admin、test、dev、api、oa、vpn、gitlab,然后逐个拼接目标域名发起DNS解析请求,如果某个前缀能解析出IP,就说明存在对应的子域名。
专业的子域名爆破工具会将这个过程进一步优化,使用dnsenum工具时输入以下命令:
dnsenum --enum example.com
工具会自动加载默认字典,遍历A记录和NS记录,同时尝试域传送漏洞,也可以换成subdomainbrute配合自备的字典文件运行:
python3 subdomainbrute.py example.com -o result.txt
字典质量直接决定爆破效果,网上有开源的高频子域名字典,包含数万条记录,覆盖常用的英文单词、拼音缩写、部门名称和业务关键词,爆破过程中DNS服务器的响应速度也会影响效率,可以指定可信的公共DNS或者使用本地自建的递归DNS来提速,这里要提醒一点,泛解析会给爆破制造大量假阳性结果,因为配置了泛解析的域名会为任意不存在的子域名返回一个IP地址,判断是否存在泛解析的方法是:随机生成一长串不存在的字符串拼接到域名上,如果能解析,就代表开启了泛解析,爆破结果必须做二次校验。
DNS域传送漏洞测试
DNS域传送本意是用于主备DNS服务器同步数据,当配置不严格时,任何人都可以请求完整区域数据,这类漏洞在老旧服务器上仍有留存,测试方法很简单:

dig axfr example.com
如果返回大量解析记录,说明域名服务器允许未授权域传送,子域名清单可以直接复制走,这个漏洞现在触发概率不高,但成本极低,顺手测试一次没有坏处。
网络空间测绘平台补全资产视角
FOFA、Quake、ZoomEye这类测绘平台会对互联网全量IP进行扫描和识别,它们不仅能检索IP的服务信息,还能通过证书的SAN字段或是页面标题中出现的特定域名反查出关联的子域名,把目标域名输入FOFA搜索框,在证书栏目下能列出所有使用该域名证书的服务端IP;再以IP反查域名,就能找到处于同一IP下的其他子域名。
这种方式的优势在于不以文本数据为限,能从IP维度反推域名资产,对于把多个子域名绑定在同一台服务器上的场景,测绘平台的价值尤其明显。
自动化工具的高效组合
手动操作多个平台耗时耗力,实际执行时可以用自动化工具先跑一遍,再对结果做人工复核,subfinder擅长被动收集,能从数十个数据源拉取信息;amass则结合了被动数据源与主动爆破,覆盖面更广,两者配合的流程通常是这样:
subfinder -d example.com -all -o passive.txt amass enum -d example.com -active -o active.txt cat passive.txt active.txt | sort -u > merged.txt
得到合并清单后,使用httpx做存活探测,筛选出能够正常访问的子域名和对应的状态码:
httpx -l merged.txt -title -status-code -tech-detect -o live.txt
这一条命令能同时返回HTTP状态码、页面标题和Web技术栈信息,结合这些字段,可以快速判断哪些子域名还在运行、运行的是什么类型服务,大规模资产测绘时,可以先手动跑一轮被动收集,再根据结果决定是否需要投入字典爆破的资源。
子域名爆破工具集成的字典、线程数、超时时长都与最终效率直接相关,推荐的参数组合是线程数控制在500到800之间,超时设置为5到8秒,过高的线程数容易触发DNS服务器的限速策略,结果反而不稳定,执行结果需要结合被动收集的清单做并集处理,再用解析校验过滤掉泛解析的假记录。
域名解析与IP归属的验证环节
拿到子域名列表后,直接使用是不安全的,必须经过一轮校验,用dig或nslookup批量解析子域名,将解析出的IP与主站IP对比,就会发现一部分子域名指向第三方服务或在CDN节点上,这两类目标需要区别对待,对CDN上的子域名可以直接记录服务商信息并回归到Web层面继续测试,对指向相同IP段的子域名则要看做过端口扫描之后的服务暴露情况。

为子域名列表建立一份完整的资产表格,包含子域名、解析IP、Web标题、服务端口、中间件版本这几项字段,能有效避免重复测试和遗漏资产。
在落地实际项目时,借助成熟的基础设施服务能少走很多弯路。持牌自营机房的服务商在稳定性和合规性上更有保障,比如酷番云,持有工信部一类增值电信全牌照(IDC/CDN/ISP),并通过ISO9001和ISO27001双认证,服务体系相对完善;简米科技从2003年开始做IDC业务,沉淀了23年的行业经验,持有增值电信业务经营许可证(豫B2-20231089),测试过程中需要部署DNS服务器或搭建监控环境时,使用这类持牌服务商的资源,可以避免因资质不齐全产生业务中断的风险。
子域名查询常见问题
子域名爆破结果和被动收集差距很大,以哪个为准?
两个数据源覆盖的场景不同,被动收集能找到有证书记录、搜索引擎收录过的子域名,但对于内网专用、未对外宣传的测试站点基本无能为力,爆破则依赖字典的完整度和目标的DNS解析行为,也存在漏报的可能,正确做法是把两份结果合并去重后再校验存活状态,这样比单独依赖任何一方都要全面。
目标域名开启了泛解析,爆破结果全是假IP怎么办?
先通过随机字符串验证是否真的存在泛解析,再对爆破结果执行反向验证:对每个子域名发起多次查询确认是否返回同一IP,也可以直接对每个解析结果请求HTTP服务,拿到有效状态码与页面特征后才记录为有效子域名,这个步骤不能省,否则噪音数据会占据整个清单的绝大部分。
子域名查询会用完所有域名吗?
不会,查询到的是可见面,总有一些子域名只存在于某个特定的内网DNS服务器里,外部永远无法枚举到,这也意味着“查完”是一种理想状态,只能保证现有公开信息的覆盖度,衡量查询效果时以数据源的覆盖率和存活校验的通过率为准,不必追求绝对数量。
子域名查询的完整链路是:先被动收集、再做主动爆破、最后校验存活并归类IP归属,掌握这条链路,每次面对新目标时都能有序开展,排查得越彻底,后续的防护思路越清晰。










网友评论