☰
第4章_阶段3_主动探测
2026/10/6 12:39:17 网站建设 项目流程

第4章 阶段3:主动探测

本篇定位:子域名挖掘流程的第三阶段。被动发现用公开数据覆盖了 60-80% 的子域,但剩下 20-40% 的盲区——内部子域、未收录子域、新上线子域、非标准命名的子域——被动方法覆盖不到。主动探测就是向目标的 DNS 服务器发查询,"敲门"发现这些子域。

阅读建议:如果你做过 DNS 爆破,可以跳到 4.3 排列扫描看变体生成方法。如果是新手,按顺序读——4.1 到 4.3 风险递增、方法递进,前面的概念是后面的基础。


4.0 方法论框架

主动探测在全局流程里的位置:

阶段2:被动发现(子域名列表,60-80% 覆盖) ──→ 【阶段3:主动探测】 ──→ 阶段4:进阶发现 │ ├── DNS 字典爆破 ├── DNS 域传送(AXFR) └── DNS 排列扫描

什么是主动探测

主动探测(Active Probing),指的是直接向目标的 DNS 服务器发送查询请求,根据响应判断子域名是否存在。整个过程中,你的 IP 会出现在目标 DNS 服务器的查询日志里——目标知道有人在查。

为什么在被动后面

原因说明
被动有盲区内部子域、未收录、新上线——被动方法覆盖不到
风险后置被动零风险先跑,主动有风险后跑
互补被动覆盖大头,主动补盲区——两者结合覆盖率最高

主动探测的本质

主动探测是在三个维度之间做权衡:

维度含义矛盾
覆盖率能发现多少子域覆盖率高 → 字典大、查询多
速度多快跑完速度快 → 并发高 → 触发限速
隐蔽性目标发现你的概率隐蔽性高 → 并发低、限速严 → 速度慢

关键认知:主动探测没有"既要又要"——高覆盖率意味着大量查询,大量查询意味着高并发,高并发意味着容易被发现。你能做的是在三个维度之间找到适合当前目标的平衡点。

三个方法概览

主动探测

DNS 字典爆破

字典选择

查询方式

并发与限速

多级爆破

DNS 域传送

识别权威 DNS

发送 AXFR

解析 Zone 文件

DNS 排列扫描

提取词根

生成变体

查询验证

主动探测的风险

主动探测和被动发现的根本区别:主动探测接触目标。

风险类型说明
被检测目标 DNS 服务器记录你的 IP 和查询模式
被封禁高并发查询触发限速,IP 被临时或永久封禁
被限速查询被降速处理,返回空结果(假阴性)
法律风险未授权的主动探测可能触犯法律

风险管理在 4.4 节单独讲,踩坑案例在第8章。


4.1 DNS 字典爆破

前置知识

暴力枚举(Brute Force)

暴力枚举是一种穷举策略——不依赖猜测或线索,把所有可能的候选值逐个尝试。在子域名挖掘里,暴力枚举的具体形式是"字典爆破":把字典里的每个前缀拼到根域名上,逐个查 DNS,看哪个存在。

DNS 查询基础回顾

基础知识02讲过 DNS 解析流程——你输入dev.example.com,DNS 服务器返回这个域名是否存在、对应的 IP 是什么。主动探测就是利用这个机制——你主动构造大量子域名查询,从 DNS 服务器的响应里判断哪些子域存在。

DNS 响应码语义

每次 DNS 查询,服务器会返回一个响应码(RCODE),告诉你查询结果的状态。和子域名挖掘相关的有三个:

响应码名称含义判断
NOERROR无错误域名存在,有解析记录子域可能存在
NXDOMAIN域名不存在域名在 DNS 里没有记录子域不存在
SERVFAIL服务器失败DNS 服务器处理出错或被限速不确定,要重试

关键认知:NOERROR 不等于"子域一定存在"。通配符 DNS(基础知识04讲过)会让所有子域都返回 NOERROR——即使你查的子域根本不存在。判断通配符是阶段5 DNS 清洗的工作,这里只管"查询→收响应码"。

ANY 查询

基础知识04讲过 DNS 记录类型(A、CNAME、MX 等)。常规查询是"查一种记录"(如只查 A 记录)。ANY 查询是"查所有记录"——一次请求拿到 A、CNAME、MX、TXT 等所有记录。理论上 ANY 查询效率高,但实际上很多 DNS 服务器对 ANY 查询做了限制或返回不全。

是什么

用字典里的前缀拼到根域名上(如dev+example.com=dev.example.com),逐个向 DNS 服务器查询,根据响应码判断子域是否存在。

为什么

字典爆破能覆盖被动方法的盲区:

被动盲区字典爆破怎么补
内部子域字典里有internal、dev、test等常见内部命名
未收录子域不依赖搜索引擎收录,直接查 DNS
新上线子域主动探测是实时的,不等收录
非标准命名部分能通过定制字典覆盖(剩下的靠排列扫描)

怎么做

第一步:字典选择

回顾阶段1(第2章)准备的字典。字典爆破的命中率取决于字典质量:

字典类型特点命中率
通用高频字典常见子域名词汇中等——大家都用,目标也都知道
通用全量字典收录了大量词汇低——大量无效查询
定制字典基于目标业务特征定制高——目标特有命名

第二步:查询方式

查询方式查什么特点
A 记录查询域名→IPv4 地址最常用,响应快
AAAA 记录查询域名→IPv6 地址补充 IPv6 子域
CNAME 记录查询域名→别名暴露 CDN、第三方服务
ANY 查询所有记录理论上一次拿全,实际常被限

第三步:并发与限速

回顾阶段1准备的环境配置参数。字典爆破是批量查询,并发和限速直接决定能不能跑完:

参数作用参考值
并发数同时发多少个查询50-200
QPS每秒查询数10-50
超时单次查询等待时间3-5 秒
重试超时后重试次数2-3 次
Jitter查询间随机延迟50-200ms

第四步:多级爆破

层级示例字典策略
二级子域dev.example.com通用字典 + 定制字典
三级子域api.dev.example.com基于已发现的dev.example.com,用小字典爆破
四级子域v2.api.dev.example.com通常不爆破,靠网页爬取

技巧

技巧做法价值
分层爆破先跑二级子域,拿结果后再跑三级避免对不存在的二级子域跑三级(浪费查询)
高频词优先字典按词频排序,高频词先跑前面就能拿到大部分命中,后面是长尾
自适应并发遇到超时增多时自动降并发防止被限速后继续打导致封禁
重试策略NXDOMAIN 不重试,SERVFAIL 重试NXDOMAIN 是确定答案,SERVFAIL 是不确定

注意事项

事项说明
通配符 DNS 干扰通配符 DNS 会让所有子域返回 NOERROR——爆破前要先检测通配符
DNS 限速/封禁高并发查询会被 DNS 服务器限速或封禁 IP
假阴性被限速后返回空结果,你以为没这个子域,其实是被限了
字典过时旧字典收录了已不常见的词汇,浪费时间

4.2 DNS 域传送(AXFR)

前置知识

Zone 文件

基础知识04讲过 Zone(区域)的概念——Zone 是 DNS 服务器管辖的一段域名空间。Zone 文件(Zone File)是记录这个 Zone 里所有 DNS 数据的文本文件。一个 Zone 文件长这样:

$ORIGIN example.com. ; 这个 Zone 管理的域名 $TTL 3600 ; 默认缓存时间(秒) ; SOA 记录:Zone 的元信息 @ IN SOA ns1.example.com. admin.example.com. ( 2026100401 ; 序列号 3600 ; 刷新时间 1800 ; 重试时间 604800 ; 过期时间 86400 ; 最小 TTL ) ; NS 记录:这个 Zone 的权威服务器 @ IN NS ns1.example.com. @ IN NS ns2.example.com. ; A 记录:域名→IPv4 @ IN A 1.2.3.4 www IN A 1.2.3.4 api IN A 1.2.3.5 dev IN A 10.0.0.5 ; CNAME 记录:别名 blog IN CNAME example.github.io.

Zone 文件里的每一行就是一条 DNS 记录。如果一个 Zone 里有 200 个子域,Zone 文件就有 200 条记录——拿到 Zone 文件等于拿到全量子域名列表。

关键认知:Zone 文件是 DNS 服务器的"内部账本"。正常情况下,外部用户只能一条一条查记录(你查www.example.com的 A 记录,服务器返回 IP)。AXFR 是一种特殊机制,让你一次性拿到整个"账本"。

AXFR(区域传送,Zone Transfer)

AXFR 是 DNS 协议的一个功能——允许从 DNS 服务器向主 DNS 服务器请求整个 Zone 文件的完整副本。它的设计初衷是主从同步:主 DNS 服务器(Master)更新了记录后,从 DNS 服务器(Slave)通过 AXFR 拉取最新 Zone 文件,保持数据一致。

为什么会有 AXFR

一个 Zone 通常有多台权威 DNS 服务器(如ns1.example.com和ns2.example.com)——一台主、多台从,做冗余。主服务器改了记录后,从服务器要知道改了什么。AXFR 就是"从服务器向主服务器拉取整个 Zone 文件"的机制。

AXFR 的安全风险

AXFR 的设计年代(1980 年代 DNS 早期)没有考虑安全——任何客户端都可以向 DNS 服务器发 AXFR 请求,拿到整个 Zone 文件。这意味着任何人都能一次性拿到目标的所有子域名列表。现代 DNS 服务器通常会配置 ACL(Access Control List,访问控制列表),只允许从服务器发 AXFR,拒绝其他客户端。但如果管理员配置错误(忘了限制或限制过宽),AXFR 就能成功——这就是它的挖掘价值。

是什么

向目标的权威 DNS 服务器发送 AXFR 请求,尝试一次性获取整个 Zone 文件——包含这个 Zone 里所有子域名的完整列表。

为什么

AXFR 是主动探测里"性价比最高"的方法——一次请求就能拿到全量子域名列表,不用跑字典爆破。但它有前提:目标 DNS 服务器必须配置错误(允许任意客户端传送 Zone)。

怎么做

第一步:识别权威 DNS 服务器

先查目标的 NS 记录,找到权威 DNS 服务器:

步骤做法说明
查 NS 记录dig NS example.com返回目标的权威 DNS 服务器列表
记录服务器如ns1.example.com、ns2.example.com这些是 AXFR 要请求的目标

第二步:发送 AXFR 请求

向权威 DNS 服务器的 TCP 53 端口发送 AXFR 请求。AXFR 用 TCP 而不是 UDP——因为 Zone 文件可能很大,UDP 的 512 字节限制装不下,必须用 TCP。

第三步:解析返回的 Zone 文件

如果 AXFR 成功,服务器返回整个 Zone 文件。从 Zone 文件里提取所有记录的 owner 名称(如www、api、dev),拼上根域名就是子域名列表。

技巧

技巧做法价值
多权威服务器都试NS 记录可能返回多个,每个都试 AXFR不同服务器配置可能不同,有的禁用了有的没禁用
TCP 53 端口AXFR 必须用 TCP 53UDP 53 装不下 Zone 文件
工具辅助用dig AXFR @ns1.example.com example.com手动构造 AXFR 请求复杂
查所有 Zone如果目标有多个 Zone(如example.com和internal.example.com)每个 Zone 都试 AXFR

注意事项

事项说明
大部分服务器已禁用现代 DNS 服务器基本都配置了 ACL,拒绝外部 AXFR
只对配置错误有效AXFR 成功意味着管理员忘了限制——是配置错误
不是常规方法AXFR 成功率低,不能作为主力方法,只能试一下碰运气
成功后数据可能过时Zone 文件是当前快照,不是实时的——子域可能已变更

4.3 DNS 排列扫描

前置知识

子域命名规律

开发者给子域名命名时,通常基于一定的规律——用缩写、加数字版本、加环境后缀、合并多个词。比如目标已有api.example.com,可能还有apiv1、apiv2、api-dev、api-staging、internal-api、api-internal。这些变体不在通用字典里,但如果从已发现子域里提取词根,就能生成这些变体。

排列组合生成(Permutation)

排列组合生成是指——基于已有的词根,通过插字符、换顺序、加数字、合并等操作,生成新的候选子域名。和字典爆破的区别:字典爆破用的是"固定词汇表"(通用字典 + 定制字典),排列扫描用的是"从已发现子域提取的词根"做组合生成。

是什么

基于已发现的子域名,提取词根,通过排列组合生成变体(如api→apiv1、api-dev、internal-api),再对变体做 DNS 查询验证。

为什么

字典爆破用的是通用词和定制词,但目标可能有自己的命名习惯——用dev还是develop,用staging还是stage还是stg,用api还是apiv1还是apiv123。这些命名习惯,只有从已发现的子域里才能看出规律。

方法候选词来源覆盖什么
字典爆破通用字典 + 定制字典常见命名
排列扫描已发现子域提取的词根目标特有命名变体

怎么做

第一步:提取词根

从被动发现和字典爆破已发现的子域里提取词根:

已发现子域提取的词根
api.example.comapi
api-dev.example.comapi、dev
apiv2.example.comapi、v2
internal-api.example.cominternal、api

第二步:生成变体

用排列组合规则生成新候选:

规则做法示例
加版本号词根 + 数字api→api1、api2、api3
加环境后缀词根 + 环境词api→api-dev、api-staging、api-test
加前缀环境词 + 词根api→internal-api、dev-api
合并词根词根 + 词根api+dev→apidev、devapi
插字符词根中间插字符api→a-pi、ap-i

第三步:查询验证

对生成的变体做 DNS 查询,判断哪些存在。

技巧

技巧做法价值
工具辅助用 altdns / dnsgen / gotator 等工具自动生成变体手动生成不现实,变体数量是指数级
多轮迭代把第一轮排列扫描发现的新子域作为输入,再跑一轮新子域可能又有新的词根
词根质量只从确信存在的子域里提取词根假阳性子域的词根会生成更多假阳性
限制变体数量控制生成规则数量和词根数量变体数量爆炸 → 查询量爆炸 → 被限速

注意事项

事项说明
变体数量爆炸几十个词根的排列组合可能生成几万到几十万个变体
命中率取决于词根质量词根太少或太泛 → 变体大多不存在
仍受通配符干扰和字典爆破一样,通配符 DNS 会让所有变体返回 NOERROR
查询量大排列扫描的查询量比字典爆破更大,限速风险更高

4.4 主动探测的风险管理

风险类型

风险触发条件后果
被检测任何主动查询都会被目标 DNS 服务器记录目标知道有人在侦察
被封禁高并发、大量查询、固定模式IP 被临时或永久封禁
被限速超过 DNS 服务器 QPS 限制查询被降速,返回空结果(假阴性)
法律风险未授权的主动探测可能触犯相关法律

控制原则

原则做法说明
先低并发试水开始用低并发跑小字典,观察响应摸清目标的限速阈值
监控成功率实时统计查询成功率,低于 90% 自动降速早期发现限速
遇阻降速遇到超时增多、SERVFAIL 增多,立即降并发防止从限速升级到封禁
合规授权只在授权范围内做主动探测法律风险控制

三个方法的风险等级

方法风险等级原因
DNS 字典爆破高查询量大、模式明显(顺序查询容易被识别)
DNS 域传送(AXFR)低一次请求,查询量极小
DNS 排列扫描高变体数量大,查询量比字典爆破还大

关键认知:AXFR 风险最低(一次请求),但成功率也最低(大部分服务器已禁用)。字典爆破和排列扫描风险高,但覆盖率高。主动探测的风险管理,本质是"在覆盖率和隐蔽性之间找平衡"。

与第8章的区分

本章只讲风险类型和控制原则。具体的踩坑案例——通配符假阳性、DNS 静默丢包、IP 封禁、管道数据丢失——在第8章踩坑实录里讲。


4.5 阶段输出

输出1:新增子域名列表

字段说明示例
子域名新发现的子域名internal-api.example.com
发现方法从哪个方法发现的字典爆破 / AXFR / 排列扫描
DNS 响应码查询时的响应码NOERROR
发现时间什么时候发现的2026-10-04
备注补充信息AXFR 成功 / 排列扫描第二轮

输出2:与被动发现合并后的总列表

字段说明
子域名所有发现的子域名
发现阶段被动 / 主动
发现方法具体方法(CT、搜索引擎、字典爆破等)
是否多源多个方法都发现了吗
来源数几个方法发现了它

输出3:覆盖率统计

阶段发现数量新增贡献总覆盖率
被动发现200—80%
主动探测-字典爆破3010%92%
主动探测-AXFR00%92%
主动探测-排列扫描156%98%
合计24518%98%

4.6 与其他阶段的衔接

输出流向

新增子域名列表 ──→ 阶段4:进阶发现(作为递归和排列扫描的种子) 合并总列表 ──→ 阶段5:DNS 清洗(做 DNS 验证和通配符过滤)

主动探测补了什么盲区

被动盲区主动探测补的补的效果
内部子域字典爆破的internal、dev、test部分覆盖
未收录子域字典爆破不依赖收录全覆盖
新上线子域主动探测是实时的全覆盖
非标准命名排列扫描基于已发现子域生成变体部分覆盖

递归时回到主动

进阶发现阶段(阶段4)发现新的根域名或新子域时,要回到这里重跑主动:

重新做的为什么
重跑字典爆破新根域名用新字典爆破
重跑排列扫描新发现子域提供新词根,生成新变体
调整并发参数新根域名的 DNS 服务器可能不同,限速阈值不同

关键认知:主动探测是"挖得深"的关键。被动发现覆盖广但浅——它找到的是"目标愿意公开的"子域。主动探测深入一层——它找到的是"目标没意识到暴露的"子域。但主动探测有成本——时间成本、风险成本。每次递归都要权衡"再跑一轮主动值不值"。


下一篇:第5章——进阶发现,以已发现的子域为跳板,递归扩大发现范围。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询