第6章_阶段5_DNS解析与数据清洗

发布时间:2026/10/6 12:39:32
第6章_阶段5_DNS解析与数据清洗 第6章 阶段5DNS 解析与数据清洗本篇定位子域名挖掘流程的第五阶段。前四步——被动、主动、进阶——收集了一批原始子域名列表。这个列表里有假阳性、重复、过时数据。清洗阶段把这些原始数据变成可信的子域名 IP 列表给下一步 HTTP 探测用。阅读建议如果你做过批量 DNS 解析可以跳到 6.2 通配符检测看过滤方法。如果是新手按顺序读——6.1 到 6.4 是清洗的四道工序缺一不可。6.0 方法论框架清洗阶段在全局流程里的位置阶段4进阶发现新增子域名 ──→ 【阶段5DNS 清洗】 ──→ 阶段6HTTP 探测与价值评估 │ ├── 多 DNS 轮询解析避免单一来源偏差 ├── 通配符检测与过滤去除假阳性 ├── CNAME 链跟踪识别架构和风险 └── 输入输出校验防止丢包什么是清洗清洗Data Cleaning指的是把前四步收集的原始子域名列表做验证和过滤变成可信的子域名 IP 列表。清洗不做新发现——它只验证已有数据。为什么在 HTTP 前面原因说明假阳性浪费配额通配符 DNS 制造的假子域做 HTTP 探测全返回 404——浪费请求过时数据浪费时间已下线的子域做 HTTP 探测会超时——浪费时间重复数据冗余同一子域从多个方法发现不做去重会重复探测不可达数据干扰有些子域解析到内网 IP 或失效 IP——HTTP 探测打不通原始数据的四类问题问题类型来源后果假阳性通配符 DNS、搜索引擎误收录不存在的子域被误判为存在重复多个方法发现同一子域重复处理浪费时间过时历史数据、CT Logs 旧证书子域已下线解析到旧 IP 或 NXDOMAIN不可达内网 IP、失效 IPHTTP 探测打不通四个环节概览DNS 清洗多 DNS 轮询解析配置多个公共 DNS轮询查询结果对比超时降级通配符检测与过滤随机子域探测通配符判断假阳性过滤例外保留CNAME 链跟踪查 CNAME 记录追踪链条识别终点类型标注接管风险输入输出校验输入计数输出计数差异比对异常处理关键认知清洗不是发现新子域是把已有数据变可信。这一步的价值是省成本——过滤掉假阳性和过时数据让下一步 HTTP 探测只处理真正存活的子域。跳过清洗直接做 HTTP 探测会浪费大量请求配额在不存在或已下线的子域上。6.1 多 DNS 轮询解析前置知识DNS 缓存机制回顾基础知识02讲过 DNS 解析流程——查询从递归 DNS 服务器出发逐级查询。这里补充缓存对批量查询的影响DNS 服务器会把查询结果缓存一段时间TTL。缓存对单次查询是好事——下次查同一个域名直接返回缓存。但对批量查询是坏事——如果第一次查dev.example.com返回了 NXDOMAIN因为那时网络抖动这个 NXDOMAIN 会被缓存——后面再查还是 NXDOMAIN即使域名已经恢复。公共 DNS 的差异基础知识02讲过本地 DNS 和公共 DNS。这里补充不同公共 DNS 的解析结果可能不同。原因缓存状态不同A 服务器刚缓存了旧结果B 服务器没有、EDNS 子网支持不同部分公共 DNS 会根据用户地理位置返回不同 IP、权威 DNS 负载均衡权威 DNS 服务器本身有多个不同公共 DNS 可能查到不同的权威服务器。所以只查一个公共 DNS可能拿到偏差结果。UDP vs TCP 回顾基础知识02讲过 DNS 用 UDP 53 端口查询。这里补充批量查询时的场景UDP 包有 512 字节限制——CNAME 链长或响应记录多时UDP 装不下DNS 服务器会截断响应并设置 TCTruncation标志位。客户端看到 TC 标志后要用 TCP 53 重新查一次拿完整结果。批量解析时大量 CNAME 链会导致 UDP 频繁截断——如果只查 UDP会漏掉被截断的结果。是什么用多个公共 DNS 服务器轮询解析子域名列表避免单一 DNS 服务器的缓存偏差、限速和单点故障。为什么问题单一 DNS 的问题多 DNS 轮询解决缓存偏差单一 DNS 缓存了旧结果多个 DNS 缓存状态不同交叉验证限速单一 DNS 限速阈值低分散到多个 DNS单个不被限单点故障单一 DNS 服务故障多 DNS 容错地理偏差单一 DNS 的地理视角固定多 DNS不同厂商视角交叉怎么做第一步配置多个公共 DNSDNS 服务器IP特点Cloudflare1.1.1.1速度快、支持 EDNSGoogle8.8.8.8全球覆盖、稳定Quad99.9.9.9安全过滤恶意域名阿里 DNS223.5.5.5国内目标解析准腾讯 DNS119.29.29.29国内目标解析准第二步轮询查询对每个子域名轮询用不同 DNS 服务器查询查询次序DNS 服务器子域名第 1 次1.1.1.1api.example.com第 2 次8.8.8.8dev.example.com第 3 次9.9.9.9staging.example.com第 4 次223.5.5.5admin.example.com第三步结果对比对同一子域名如果多个 DNS 返回不同结果标注并重查情况处理多 DNS 都返回同一 IP可信保留多 DNS 返回不同 IP负载均衡或 CDN 调度全部保留部分 DNS 返回 NXDOMAIN可能是缓存偏差换 DNS 重查全部 DNS 返回 NXDOMAIN确认不存在丢弃第四步超时降级UDP 查询超时后切 TCP 重新查情况处理UDP 超时切 TCP 重查TCP 也超时标注异常稍后重试返回 TC 标志切 TCP 拿完整结果技巧技巧做法价值DNS 服务器选择国外目标用 CloudflareGoogle国内目标加阿里腾讯地理视角更全权重分配速度快的 DNS 权重高慢的权重低提高整体速度异常监控实时统计每个 DNS 的成功率和延迟发现哪个 DNS 被限速EDNS 支持优先用支持 EDNS 的 DNS拿到更准确的解析结果注意事项事项说明公共 DNS 也有缓存TTL 内会返回缓存结果不是实时EDNS 支持部分公共 DNS 不支持 EDNS地理解析不准国内 DNS 解析国内域名更准国内目标用阿里/腾讯 DNS结果更全不查目标权威 DNS查权威 DNS 直接接触目标有风险6.2 通配符检测与过滤前置知识通配符 DNS 回顾基础知识04讲过通配符 DNSWildcard DNS——在 DNS 配置里加一条*.example.com的记录让所有未明确配置的子域都解析到同一个 IP。这意味着你查randomstring123.example.com即使这个子域从未配置也会返回 IP——返回 NOERROR 而不是 NXDOMAIN。随机子域验证概念检测通配符的方法构造一个不可能存在的随机子域名如xqzwkpvn123.example.com——这串随机字符不可能被管理员配置过查它的 DNS。如果这个随机子域也解析成功说明目标启用了通配符 DNS——字典爆破返回的所有 NOERROR 结果都是假阳性。关键认知通配符 DNS 是主动探测最大的干扰因素。如果没有通配符NOERROR 子域存在NXDOMAIN 子域不存在判断很简单。有了通配符NOERROR 不代表子域真实存在——所有子域都返回 NOERROR。检测通配符是主动探测后必须做的第一件事。是什么检测目标是否启用了通配符 DNS过滤掉因通配符产生的假阳性子域。为什么通配符 DNS 让所有子域返回 NOERROR——字典爆破和排列扫描的结果全是假阳性。如果不过滤HTTP 探测阶段会对着一批不存在的子域发请求全返回 404 或超时——浪费请求配额和时间。怎么做第一步随机子域探测构造多个不可能存在的随机子域名查 DNS随机子域查询xqzwkpvn123.example.com查 A 记录randomtest456789.example.com查 A 记录aaaa9999test.example.com查 A 记录第二步判断通配符结果判断随机子域返回 NXDOMAIN没有通配符NOERROR 子域真实存在随机子域返回 NOERROR IP启用了通配符所有 NOERROR 都可能是假阳性部分随机子域返回 IP可能有部分通配符如只对某些路径通配第三步过滤策略确认启用通配符后过滤掉命中通配符 IP 的子域子域解析 IP通配符 IP处理api.example.com1.2.3.41.2.3.4丢弃命中通配符dev.example.com1.2.3.41.2.3.4丢弃命中通配符www.example.com5.6.7.81.2.3.4保留IP 不同mail.example.com9.10.11.121.2.3.4保留IP 不同第四步例外保留不是所有命中通配符 IP 的子域都是假阳性——有些子域碰巧和通配符 IP 一样但是真实存在的管理员手动配置了dev.example.com → 1.2.3.4通配符也指向1.2.3.4。要保留的例外例外类型怎么识别CT Logs 里有证书的申请了证书 管理员配置过 真实子域搜索引擎收录的被收录 有真实页面多 DNS 返回不同 IP不同 DNS 返回不同 IP 有明确配置技巧技巧做法价值多随机子域交叉用 3-5 个随机子域都试避免单个随机子域碰巧有记录通配符 IP 记录记下通配符返回的 IP过滤时对比——命中通配符 IP 的丢弃部分过滤只过滤命中通配符 IP 的不删除全部 NOERROR避免误删真实子域分级保留多源子域优先保留单源子域可过滤多源子域更可信注意事项事项说明通配符真实子域共存通配符覆盖所有子域但管理员可能给某些子域单独配了记录通配符只覆盖一层*.example.com不覆盖api.dev.example.com两层过滤过度只因命中通配符 IP 就删除可能漏掉真实子域——要用例外保留通配符 IP 可能多个通配符可能指向多个 IP负载均衡——要全部记录6.3 CNAME 链跟踪前置知识CNAME 记录回顾基础知识04讲过 CNAMECanonical Name规范名称记录——把一个域名别名指向另一个域名。如blog.example.com的 CNAME 指向example.github.io访问blog.example.com实际访问的是example.github.io。CNAME 链概念CNAME 链是指一个子域的 CNAME 指向另一个域名那个域名可能又指向下一个——形成链条blog.example.com→example.github.io→github.map.fastly.net→151.101.1.1。链条的终点是 A 记录IP 地址。CNAME 与第三方服务当 CNAME 指向第三方平台如github.io、herokuapp.com、s3.amazonaws.com意味着这个子域托管在第三方平台上。如果目标在第三方平台上的资源被删除如 GitHub Pages 项目删除但 DNS 的 CNAME 记录还在——这个子域就指向了一个不存在的第三方资源。这种悬挂 DNSDangling DNS可能被攻击者接管——在第三方平台上重新注册这个资源就能控制这个子域。关键认知CNAME 链不只暴露服务架构还暴露接管风险。指向已失效第三方资源的 CNAME 是高危信号——意味着这个子域可能被接管。识别和标注这种风险是 CNAME 链跟踪的重要价值。是什么追踪子域名的 CNAME 链识别 CDN、第三方服务、接管风险。为什么价值说明识别 CDNCNAME 指向 CDN 域名如*.cloudfront.net→ 这个 IP 是 CDN 的不是目标的识别第三方托管CNAME 指向第三方平台如github.io→ 子域托管在第三方识别接管风险CNAME 指向已失效的第三方资源 → 可能被接管发现关联域名CNAME 链的中间节点可能是新根域名进阶发现用怎么做第一步查 CNAME 记录对每个子域名查 CNAME 记录子域CNAME 指向类型blog.example.comexample.github.io第三方托管cdn.example.comd123.cloudfront.netCDNapi.example.com无 CNAME直接 A 记录自有服务器old.example.comdeleted.herokuapp.com悬挂 DNS第二步追踪链条顺着 CNAME 链一直追到终点A 记录blog.example.com → example.github.ioCNAME → github.map.fastly.netCNAME → 151.101.1.1A 记录终点第三步识别终点类型终点类型识别方式处理自有 IPIP 归属目标 ASN保留做 HTTP 探测CDN IPIP 归属 CDN ASNCloudflare、Akamai标注 CDNHTTP 探测时注意第三方平台CNAME 指向第三方域名标注托管平台已失效CNAME 终点不存在NXDOMAIN标注悬挂 DNS 接管风险第四步标注接管风险指向已失效第三方资源的 CNAME标注接管风险子域CNAME 指向终点状态风险old.example.comdeleted.herokuapp.comNXDOMAIN可接管——第三方平台允许重新注册这里只讲识别和标注风险不展开接管利用方法——利用步骤留到后续漏洞章节。技巧技巧做法价值多级 CNAME 追踪顺着链条追到 A 记录不只看第一跳CNAME 链可能有多级只看第一跳会漏第三方平台识别表维护常见第三方平台域名列表快速判断是否第三方托管失效 CNAME 标注终点返回 NXDOMAIN 的单独标注接管风险高要重点处理关联域名提取从 CNAME 链中间节点提取新根域名喂给进阶发现做递归注意事项事项说明CNAME 链可能循环A→B→A 的循环——要检测并中止CNAME 到 A 记录的最终解析CNAME 链终点才是真实 IP中间节点不是部分 DNS 不返回完整链有些 DNS 服务器只返回第一跳要换 DNS 重查第三方平台可接管的判断不是所有失效 CNAME 都能接管——只有允许重新注册的平台才行6.4 输入输出校验前置知识管道数据丢失概念批量处理数据时数据从输入端经过处理流程流向输出端这个中间通道叫管道Pipeline。管道可能丢数据——比如 DNS 解析时输入了 1000 个子域但因为网络超时、DNS 服务器限速、程序异常输出端只收到 950 个结果。50 个子域在管道里丢了。如果不做校验你以为处理完了 1000 个实际只处理了 950 个——50 个子域漏掉了。关键认知丢包是批量处理的常见问题不是 bug——网络超时、DNS 限速、并发冲突都会导致丢包。校验的价值是发现丢了多少、补回来多少。第8章踩坑录里有管道数据丢失的实战案例。是什么校验从输入原始子域名列表到输出清洗后子域名列表的数据完整性发现和修复丢包。为什么批量解析时管道可能丢数据——输入 1000 个子域输出 950 个50 个在管道里丢了。如果不校验这 50 个会被当作不存在——实际是超时丢的不是真不存在。假阴性。怎么做第一步输入计数记录项说明原始子域总数进入清洗的子域数量按来源分类被动发现多少 / 主动探测多少 / 进阶发现多少按方法分类CT 多少 / 搜索引擎多少 / 字典爆破多少第二步输出计数记录项说明解析成功数返回 NOERROR IP 的解析失败数返回 NXDOMAIN 的超时数查询超时的异常数SERVFAIL、CNAME 循环等第三步差异比对差异类型原因处理输入 - 输出 NXDOMAIN 数正常丢弃——子域确实不存在不处理输入 - 输出 NXDOMAIN 数异常丢失——超时或丢包重跑丢失的超时数占比高DNS 限速或网络问题降速重跑第四步异常处理异常类型处理超时的换 DNS 服务器重查切 TCPCNAME 循环的标注异常不丢弃返回 SERVFAIL 的换 DNS 重查丢失的输入有、输出没有重跑确认是丢弃还是不存在技巧技巧做法价值分批处理每批 500-1000 个每批做完校验及时发现丢包不等到最后每批校验输入数 - 输出数 预期丢弃数数值不对 有异常丢失异常日志记录每个异常子域和异常类型事后排查和重跑丢包率监控统计丢包率超过 5% 自动降速早期发现 DNS 限速注意事项事项说明正常丢弃 vs 异常丢失NXDOMAIN 是正常丢弃超时是异常丢失——要区分丢包率监控丢包率突然升高 可能被限速了重跑策略超时的换 DNS 重跑不要用同一 DNS 重跑全量校验最终要全局校验不能只校验单批6.5 阶段输出输出1可信子域名列表字段说明示例子域名清洗后的可信子域名api.example.comA 记录 IP解析到的 IP1.2.3.4CNAME 链完整 CNAME 链api.example.com → internal-lb.example.com → 1.2.3.4终点类型自有/CDN/第三方/悬挂自有通配符状态是否命中通配符否发现来源从哪些方法发现的CT, 字典爆破清洗状态是否通过清洗通过输出2IP 地址列表字段说明示例IP解析到的 IP1.2.3.4归属 ASNIP 所属 ASNAS37963归属组织ASN 归属组织阿里巴巴是否 CDN是 CDN IP 还是目标自有否关联子域哪些子域解析到这个 IPapi.example.com,www.example.com输出3通配符状态表字段说明示例根域名哪个根域启用了通配符example.com通配符 IP通配符指向的 IP1.2.3.4检测方法怎么检测到的随机子域验证过滤策略怎么过滤的命中通配符 IP 的丢弃过滤数量过滤了多少假阳性120输出4异常记录字段说明示例子域名异常的子域名old.example.com异常类型什么异常悬挂 DNS / CNAME 循环 / 超时异常详情具体情况CNAME 指向已失效的 herokuapp.com处理状态怎么处理的标注接管风险保留重跑结果重跑后的结果仍然失效6.6 与其他阶段的衔接输出流向可信子域名列表 ──→ 阶段6HTTP 探测对存活的做探测 IP 地址列表 ──→ 阶段6HTTP 探测IP 归属判断 CDN 通配符状态表 ──→ 归档后续复扫参考 异常记录 ──→ 阶段8踩坑录接管风险单独处理清洗过的数据为什么要做 HTTP 探测清洗解决的是DNS 层面是否存活——解析成功 域名在 DNS 里有记录。但 DNS 存在不等于有价值DNS 状态HTTP 探测可能的结果解析成功 自有 IP可能是正常服务200也可能是空站404解析成功 CDN IP可能是 CDN 缓存200也可能是 CDN 回源失败502解析成功 悬挂 DNSHTTP 探测返回错误页或 404CNAME 指向第三方可能是正常第三方页面也可能第三方已删除清洗没解决的问题DNS 存在不等于有价值。一个子域名 DNS 解析成功但 HTTP 探测可能返回 404、403、502——这些状态码的挖掘意义留给阶段6 HTTP 探测判断。递归时要重新清洗进阶发现阶段阶段4发现新子域时要回到这里重新清洗重新做的为什么重跑多 DNS 解析新子域要验证 DNS 是否存活重跑通配符检测新根域名可能有自己的通配符配置重跑 CNAME 链跟踪新子域的 CNAME 链可能指向新第三方服务重跑输入输出校验新一批数据要校验完整性关键认知清洗是流程里最容易被忽视的阶段——它不发现新东西只做验证和过滤。但跳过清洗直接做 HTTP 探测会浪费大量请求配额在假阳性、过时、不可达的子域上。清洗的价值是省成本和保质量。下一篇第7章——HTTP 探测与价值评估判断哪些子域存活且有价值。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询