子域名基础04_DNS数据与记录

子域名挖掘前置基础 04:DNS 数据与记录

本篇定位 :前两篇讲了 DNS 怎么把域名翻译成 IP。本篇讲 DNS 里存了什么数据------记录类型、不同分级 DNS 服务器各存什么、树形结构与 Zone Delegation、通配符。这些是子域名挖掘最核心的基础知识,因为挖掘的本质就是在这些数据里找子域名。

阅读建议:本篇内容偏概念,但每个概念都直接关联挖掘方法。读的时候多想"这条知识在挖掘里能怎么用"。


一、DNS 记录类型:每种记录的情报价值

DNS 服务器存的数据,叫记录。不同类型的记录有不同的用途,对子域名挖掘也有不同的情报价值。不要去背每种记录的定义,而要从"这条记录能告诉我什么"的角度理解。

1.1 主要记录类型一览

记录类型 全称 作用 情报价值
A Address 域名 → IPv4 地址 指向哪个 IP,判断是否走 CDN/云
AAAA IPv6 Address 域名 → IPv6 地址 同 A,但是 IPv6
CNAME Canonical Name 域名 → 另一个域名的别名 情报之王------暴露第三方服务依赖、潜在接管
NS Name Server 域名 → 管理它的权威 NS 揭示管理边界、子域是否独立 Zone
MX Mail Exchange 域名 → 邮件服务器 暴露邮件基础设施
TXT Text 任意文本 SPF 的 IP 段、Google/MS 验证、DMARC
SOA Start of Authority 区域权威起点 管理员邮箱、序列号(推断更新频率)
SRV Service Record 服务定位 暴露 SIP、XMPP、LDAP 等内部服务
PTR Pointer IP → 域名(反向解析) 从 IP 反查域名
CAA Certification Authority Authorization 指定可签发证书的 CA 暴露证书签发策略

1.2 各记录的挖掘价值详解

A / AAAA 记录

A 记录是最常见的------域名指向 IP。从挖掘者视角,A 记录的价值不在"这个 IP 是多少",而在"这个 IP 是什么性质":

IP 性质 怎么判断 挖掘意义
CDN 节点 IP 归属查是 CDN 服务商 不能直接扫端口,要绕 CDN 找源站
云主机 IP 归属查是云厂商 可能是目标自建,可扫端口
真实服务器 IP 归属查是目标企业 高价值,直接扫端口
共享主机 一个 IP 上有多个域名 IP 反查能发现更多子域
CNAME 记录(情报之王)

CNAME(Canonical Name,别名记录)告诉解析器"这个域名其实是另一个域名的马甲"。CNAME 暴露的信息量最大:

CNAME 指向 推断出的架构 挖掘意义
*.cloudfront.net 用了 CloudFront CDN 走 CDN,要绕过
*.elb.amazonaws.com 后端是 AWS 负载均衡 云架构,可能云资产延伸
*.s3.amazonaws.com 对象存储 可能存在 Bucket 权限错配
*.github.io GitHub Pages 托管 可能存在子域名接管
*.vercel.app Vercel 托管 可能存在子域名接管
已弃用的 SaaS 域名 目标停止订阅但没删 DNS 子域名接管漏洞

关键认知:每条 CNAME 都是一条架构线索。子域名挖掘工具通常会把 CNAME 链完整记录下来,作为判断目标架构的关键依据。

NS 记录(管理边界)

NS 记录揭示"这个域名归谁管"。从挖掘者视角:

NS 情况 意义
子域 NS 和主域不同 由不同团队管理,安全配置可能有差异
子域 NS 指向外部服务商 用了第三方 DNS(如 CDN、云厂商)
多个 NS 不同 不同子域用不同 DNS,暗示组织结构

关键认知:如果一个子域的 NS 和主域不同,说明它由不同团队管理,安全配置可能有差异------这种"边界地带"往往是防护薄弱处。

MX 记录(邮件基础设施)

MX 记录指定谁负责处理发往该域名的邮件。从挖掘者视角,MX 可能指向不在主域名下的邮件服务器子域,比如 mail-guardian.example.net------一个你完全不知道的域名。

TXT 记录(服务使用)

TXT 记录里藏了大量"服务使用证明":

TXT 内容 暴露的信息
v=spf1 ip4:1.2.3.0/24 SPF 记录里的 IP 段,暴露发信服务器范围
google-site-verification=... 用了 Google 服务
MS=... 用了 Microsoft 服务
_dmarc DMARC 的 report URI 可能指向监控子域
SOA 记录(管理员信息)

SOA 里的邮箱地址和序列号能让你推断 DNS 更新频率------序列号跳跃式增长说明配置在频繁变动。

SRV 记录(内部服务)

SRV 记录里可能藏着 SIP、XMPP、LDAP 等内部服务的地址,这些子域往往是直接暴露内网服务的入口。

1.3 记录类型的 mindmap

#mermaid-svg-j4Xe3gkpS3mAQjft{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-j4Xe3gkpS3mAQjft .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-j4Xe3gkpS3mAQjft .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-j4Xe3gkpS3mAQjft .error-icon{fill:#552222;}#mermaid-svg-j4Xe3gkpS3mAQjft .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-j4Xe3gkpS3mAQjft .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-j4Xe3gkpS3mAQjft .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-j4Xe3gkpS3mAQjft .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-j4Xe3gkpS3mAQjft .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-j4Xe3gkpS3mAQjft .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-j4Xe3gkpS3mAQjft .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-j4Xe3gkpS3mAQjft .marker{fill:#333333;stroke:#333333;}#mermaid-svg-j4Xe3gkpS3mAQjft .marker.cross{stroke:#333333;}#mermaid-svg-j4Xe3gkpS3mAQjft svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-j4Xe3gkpS3mAQjft p{margin:0;}#mermaid-svg-j4Xe3gkpS3mAQjft .edge{stroke-width:3;}#mermaid-svg-j4Xe3gkpS3mAQjft .section--1 rect,#mermaid-svg-j4Xe3gkpS3mAQjft .section--1 path,#mermaid-svg-j4Xe3gkpS3mAQjft .section--1 circle,#mermaid-svg-j4Xe3gkpS3mAQjft .section--1 polygon,#mermaid-svg-j4Xe3gkpS3mAQjft .section--1 path{fill:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-j4Xe3gkpS3mAQjft .section--1 text{fill:#ffffff;}#mermaid-svg-j4Xe3gkpS3mAQjft .node-icon--1{font-size:40px;color:#ffffff;}#mermaid-svg-j4Xe3gkpS3mAQjft .section-edge--1{stroke:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-j4Xe3gkpS3mAQjft .edge-depth--1{stroke-width:17;}#mermaid-svg-j4Xe3gkpS3mAQjft .section--1 line{stroke:hsl(60, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-j4Xe3gkpS3mAQjft .disabled,#mermaid-svg-j4Xe3gkpS3mAQjft .disabled circle,#mermaid-svg-j4Xe3gkpS3mAQjft .disabled text{fill:lightgray;}#mermaid-svg-j4Xe3gkpS3mAQjft .disabled text{fill:#efefef;}#mermaid-svg-j4Xe3gkpS3mAQjft .section-0 rect,#mermaid-svg-j4Xe3gkpS3mAQjft .section-0 path,#mermaid-svg-j4Xe3gkpS3mAQjft .section-0 circle,#mermaid-svg-j4Xe3gkpS3mAQjft .section-0 polygon,#mermaid-svg-j4Xe3gkpS3mAQjft .section-0 path{fill:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-j4Xe3gkpS3mAQjft .section-0 text{fill:black;}#mermaid-svg-j4Xe3gkpS3mAQjft .node-icon-0{font-size:40px;color:black;}#mermaid-svg-j4Xe3gkpS3mAQjft .section-edge-0{stroke:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-j4Xe3gkpS3mAQjft .edge-depth-0{stroke-width:14;}#mermaid-svg-j4Xe3gkpS3mAQjft .section-0 line{stroke:hsl(240, 100%, 83.5294117647%);stroke-width:3;}#mermaid-svg-j4Xe3gkpS3mAQjft .disabled,#mermaid-svg-j4Xe3gkpS3mAQjft .disabled circle,#mermaid-svg-j4Xe3gkpS3mAQjft .disabled text{fill:lightgray;}#mermaid-svg-j4Xe3gkpS3mAQjft .disabled text{fill:#efefef;}#mermaid-svg-j4Xe3gkpS3mAQjft .section-1 rect,#mermaid-svg-j4Xe3gkpS3mAQjft .section-1 path,#mermaid-svg-j4Xe3gkpS3mAQjft .section-1 circle,#mermaid-svg-j4Xe3gkpS3mAQjft .section-1 polygon,#mermaid-svg-j4Xe3gkpS3mAQjft .section-1 path{fill:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-j4Xe3gkpS3mAQjft .section-1 text{fill:black;}#mermaid-svg-j4Xe3gkpS3mAQjft .node-icon-1{font-size:40px;color:black;}#mermaid-svg-j4Xe3gkpS3mAQjft .section-edge-1{stroke:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-j4Xe3gkpS3mAQjft .edge-depth-1{stroke-width:11;}#mermaid-svg-j4Xe3gkpS3mAQjft .section-1 line{stroke:hsl(260, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-j4Xe3gkpS3mAQjft .disabled,#mermaid-svg-j4Xe3gkpS3mAQjft .disabled circle,#mermaid-svg-j4Xe3gkpS3mAQjft .disabled text{fill:lightgray;}#mermaid-svg-j4Xe3gkpS3mAQjft .disabled text{fill:#efefef;}#mermaid-svg-j4Xe3gkpS3mAQjft .section-2 rect,#mermaid-svg-j4Xe3gkpS3mAQjft .section-2 path,#mermaid-svg-j4Xe3gkpS3mAQjft .section-2 circle,#mermaid-svg-j4Xe3gkpS3mAQjft .section-2 polygon,#mermaid-svg-j4Xe3gkpS3mAQjft .section-2 path{fill:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-j4Xe3gkpS3mAQjft .section-2 text{fill:#ffffff;}#mermaid-svg-j4Xe3gkpS3mAQjft .node-icon-2{font-size:40px;color:#ffffff;}#mermaid-svg-j4Xe3gkpS3mAQjft .section-edge-2{stroke:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-j4Xe3gkpS3mAQjft .edge-depth-2{stroke-width:8;}#mermaid-svg-j4Xe3gkpS3mAQjft .section-2 line{stroke:hsl(90, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-j4Xe3gkpS3mAQjft .disabled,#mermaid-svg-j4Xe3gkpS3mAQjft .disabled circle,#mermaid-svg-j4Xe3gkpS3mAQjft .disabled text{fill:lightgray;}#mermaid-svg-j4Xe3gkpS3mAQjft .disabled text{fill:#efefef;}#mermaid-svg-j4Xe3gkpS3mAQjft .section-3 rect,#mermaid-svg-j4Xe3gkpS3mAQjft .section-3 path,#mermaid-svg-j4Xe3gkpS3mAQjft .section-3 circle,#mermaid-svg-j4Xe3gkpS3mAQjft .section-3 polygon,#mermaid-svg-j4Xe3gkpS3mAQjft .section-3 path{fill:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-j4Xe3gkpS3mAQjft .section-3 text{fill:black;}#mermaid-svg-j4Xe3gkpS3mAQjft .node-icon-3{font-size:40px;color:black;}#mermaid-svg-j4Xe3gkpS3mAQjft .section-edge-3{stroke:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-j4Xe3gkpS3mAQjft .edge-depth-3{stroke-width:5;}#mermaid-svg-j4Xe3gkpS3mAQjft .section-3 line{stroke:hsl(120, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-j4Xe3gkpS3mAQjft .disabled,#mermaid-svg-j4Xe3gkpS3mAQjft .disabled circle,#mermaid-svg-j4Xe3gkpS3mAQjft .disabled text{fill:lightgray;}#mermaid-svg-j4Xe3gkpS3mAQjft .disabled text{fill:#efefef;}#mermaid-svg-j4Xe3gkpS3mAQjft .section-4 rect,#mermaid-svg-j4Xe3gkpS3mAQjft .section-4 path,#mermaid-svg-j4Xe3gkpS3mAQjft .section-4 circle,#mermaid-svg-j4Xe3gkpS3mAQjft .section-4 polygon,#mermaid-svg-j4Xe3gkpS3mAQjft .section-4 path{fill:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-j4Xe3gkpS3mAQjft .section-4 text{fill:black;}#mermaid-svg-j4Xe3gkpS3mAQjft .node-icon-4{font-size:40px;color:black;}#mermaid-svg-j4Xe3gkpS3mAQjft .section-edge-4{stroke:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-j4Xe3gkpS3mAQjft .edge-depth-4{stroke-width:2;}#mermaid-svg-j4Xe3gkpS3mAQjft .section-4 line{stroke:hsl(150, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-j4Xe3gkpS3mAQjft .disabled,#mermaid-svg-j4Xe3gkpS3mAQjft .disabled circle,#mermaid-svg-j4Xe3gkpS3mAQjft .disabled text{fill:lightgray;}#mermaid-svg-j4Xe3gkpS3mAQjft .disabled text{fill:#efefef;}#mermaid-svg-j4Xe3gkpS3mAQjft .section-5 rect,#mermaid-svg-j4Xe3gkpS3mAQjft .section-5 path,#mermaid-svg-j4Xe3gkpS3mAQjft .section-5 circle,#mermaid-svg-j4Xe3gkpS3mAQjft .section-5 polygon,#mermaid-svg-j4Xe3gkpS3mAQjft .section-5 path{fill:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-j4Xe3gkpS3mAQjft .section-5 text{fill:black;}#mermaid-svg-j4Xe3gkpS3mAQjft .node-icon-5{font-size:40px;color:black;}#mermaid-svg-j4Xe3gkpS3mAQjft .section-edge-5{stroke:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-j4Xe3gkpS3mAQjft .edge-depth-5{stroke-width:-1;}#mermaid-svg-j4Xe3gkpS3mAQjft .section-5 line{stroke:hsl(180, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-j4Xe3gkpS3mAQjft .disabled,#mermaid-svg-j4Xe3gkpS3mAQjft .disabled circle,#mermaid-svg-j4Xe3gkpS3mAQjft .disabled text{fill:lightgray;}#mermaid-svg-j4Xe3gkpS3mAQjft .disabled text{fill:#efefef;}#mermaid-svg-j4Xe3gkpS3mAQjft .section-6 rect,#mermaid-svg-j4Xe3gkpS3mAQjft .section-6 path,#mermaid-svg-j4Xe3gkpS3mAQjft .section-6 circle,#mermaid-svg-j4Xe3gkpS3mAQjft .section-6 polygon,#mermaid-svg-j4Xe3gkpS3mAQjft .section-6 path{fill:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-j4Xe3gkpS3mAQjft .section-6 text{fill:black;}#mermaid-svg-j4Xe3gkpS3mAQjft .node-icon-6{font-size:40px;color:black;}#mermaid-svg-j4Xe3gkpS3mAQjft .section-edge-6{stroke:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-j4Xe3gkpS3mAQjft .edge-depth-6{stroke-width:-4;}#mermaid-svg-j4Xe3gkpS3mAQjft .section-6 line{stroke:hsl(210, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-j4Xe3gkpS3mAQjft .disabled,#mermaid-svg-j4Xe3gkpS3mAQjft .disabled circle,#mermaid-svg-j4Xe3gkpS3mAQjft .disabled text{fill:lightgray;}#mermaid-svg-j4Xe3gkpS3mAQjft .disabled text{fill:#efefef;}#mermaid-svg-j4Xe3gkpS3mAQjft .section-7 rect,#mermaid-svg-j4Xe3gkpS3mAQjft .section-7 path,#mermaid-svg-j4Xe3gkpS3mAQjft .section-7 circle,#mermaid-svg-j4Xe3gkpS3mAQjft .section-7 polygon,#mermaid-svg-j4Xe3gkpS3mAQjft .section-7 path{fill:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-j4Xe3gkpS3mAQjft .section-7 text{fill:black;}#mermaid-svg-j4Xe3gkpS3mAQjft .node-icon-7{font-size:40px;color:black;}#mermaid-svg-j4Xe3gkpS3mAQjft .section-edge-7{stroke:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-j4Xe3gkpS3mAQjft .edge-depth-7{stroke-width:-7;}#mermaid-svg-j4Xe3gkpS3mAQjft .section-7 line{stroke:hsl(270, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-j4Xe3gkpS3mAQjft .disabled,#mermaid-svg-j4Xe3gkpS3mAQjft .disabled circle,#mermaid-svg-j4Xe3gkpS3mAQjft .disabled text{fill:lightgray;}#mermaid-svg-j4Xe3gkpS3mAQjft .disabled text{fill:#efefef;}#mermaid-svg-j4Xe3gkpS3mAQjft .section-8 rect,#mermaid-svg-j4Xe3gkpS3mAQjft .section-8 path,#mermaid-svg-j4Xe3gkpS3mAQjft .section-8 circle,#mermaid-svg-j4Xe3gkpS3mAQjft .section-8 polygon,#mermaid-svg-j4Xe3gkpS3mAQjft .section-8 path{fill:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-j4Xe3gkpS3mAQjft .section-8 text{fill:black;}#mermaid-svg-j4Xe3gkpS3mAQjft .node-icon-8{font-size:40px;color:black;}#mermaid-svg-j4Xe3gkpS3mAQjft .section-edge-8{stroke:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-j4Xe3gkpS3mAQjft .edge-depth-8{stroke-width:-10;}#mermaid-svg-j4Xe3gkpS3mAQjft .section-8 line{stroke:hsl(330, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-j4Xe3gkpS3mAQjft .disabled,#mermaid-svg-j4Xe3gkpS3mAQjft .disabled circle,#mermaid-svg-j4Xe3gkpS3mAQjft .disabled text{fill:lightgray;}#mermaid-svg-j4Xe3gkpS3mAQjft .disabled text{fill:#efefef;}#mermaid-svg-j4Xe3gkpS3mAQjft .section-9 rect,#mermaid-svg-j4Xe3gkpS3mAQjft .section-9 path,#mermaid-svg-j4Xe3gkpS3mAQjft .section-9 circle,#mermaid-svg-j4Xe3gkpS3mAQjft .section-9 polygon,#mermaid-svg-j4Xe3gkpS3mAQjft .section-9 path{fill:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-j4Xe3gkpS3mAQjft .section-9 text{fill:black;}#mermaid-svg-j4Xe3gkpS3mAQjft .node-icon-9{font-size:40px;color:black;}#mermaid-svg-j4Xe3gkpS3mAQjft .section-edge-9{stroke:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-j4Xe3gkpS3mAQjft .edge-depth-9{stroke-width:-13;}#mermaid-svg-j4Xe3gkpS3mAQjft .section-9 line{stroke:hsl(0, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-j4Xe3gkpS3mAQjft .disabled,#mermaid-svg-j4Xe3gkpS3mAQjft .disabled circle,#mermaid-svg-j4Xe3gkpS3mAQjft .disabled text{fill:lightgray;}#mermaid-svg-j4Xe3gkpS3mAQjft .disabled text{fill:#efefef;}#mermaid-svg-j4Xe3gkpS3mAQjft .section-10 rect,#mermaid-svg-j4Xe3gkpS3mAQjft .section-10 path,#mermaid-svg-j4Xe3gkpS3mAQjft .section-10 circle,#mermaid-svg-j4Xe3gkpS3mAQjft .section-10 polygon,#mermaid-svg-j4Xe3gkpS3mAQjft .section-10 path{fill:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-j4Xe3gkpS3mAQjft .section-10 text{fill:black;}#mermaid-svg-j4Xe3gkpS3mAQjft .node-icon-10{font-size:40px;color:black;}#mermaid-svg-j4Xe3gkpS3mAQjft .section-edge-10{stroke:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-j4Xe3gkpS3mAQjft .edge-depth-10{stroke-width:-16;}#mermaid-svg-j4Xe3gkpS3mAQjft .section-10 line{stroke:hsl(30, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-j4Xe3gkpS3mAQjft .disabled,#mermaid-svg-j4Xe3gkpS3mAQjft .disabled circle,#mermaid-svg-j4Xe3gkpS3mAQjft .disabled text{fill:lightgray;}#mermaid-svg-j4Xe3gkpS3mAQjft .disabled text{fill:#efefef;}#mermaid-svg-j4Xe3gkpS3mAQjft .section-root rect,#mermaid-svg-j4Xe3gkpS3mAQjft .section-root path,#mermaid-svg-j4Xe3gkpS3mAQjft .section-root circle,#mermaid-svg-j4Xe3gkpS3mAQjft .section-root polygon{fill:hsl(240, 100%, 46.2745098039%);}#mermaid-svg-j4Xe3gkpS3mAQjft .section-root text{fill:#ffffff;}#mermaid-svg-j4Xe3gkpS3mAQjft .section-root span{color:#ffffff;}#mermaid-svg-j4Xe3gkpS3mAQjft .section-2 span{color:#ffffff;}#mermaid-svg-j4Xe3gkpS3mAQjft .icon-container{height:100%;display:flex;justify-content:center;align-items:center;}#mermaid-svg-j4Xe3gkpS3mAQjft .edge{fill:none;}#mermaid-svg-j4Xe3gkpS3mAQjft .mindmap-node-label{dy:1em;alignment-baseline:middle;text-anchor:middle;dominant-baseline:middle;text-align:center;}#mermaid-svg-j4Xe3gkpS3mAQjft :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} DNS 记录类型
A / AAAA
::解析到哪个 IP
::判断是否走 CDN/云
CNAME
::别名指向
::暴露第三方服务依赖
::潜在子域名接管
NS
::管理边界
::子域是否独立 zone
MX
::邮件基础设施
::可能指向非主域的邮件服务器
TXT
::SPF 的 IP 段
::Google/MS 服务验证
::DMARC report URI
SOA
::管理员邮箱
::序列号推断更新频率
SRV
::SIP/XMPP/LDAP
::内部服务地址


二、不同分级 DNS 服务器的记录类型

上一节讲了"有哪些记录类型"。这一节讲"这些记录分别存在哪一级 DNS 服务器上"。理解这个,能帮你判断"去哪里查什么记录"。

2.1 各级 DNS 服务器存什么

服务器级别 存什么记录 例子
根服务器 所有 TLD 的 NS 指针 .com 归 a.gtld-servers.net 管
TLD 服务器 该 TLD 下所有二级域的 NS 指针 example.com 归 ns1.example.com 管
权威服务器 自己管辖的 Zone 内所有记录 example.com 的 A、CNAME、MX、TXT 等
递归解析器 缓存(不存权威数据,只暂存查过的) 你刚查过的 api.example.com → 1.2.3.4

2.2 关键认知:记录存在哪一级

关键认知 :记录存在权威服务器上。根和 TLD 不存 A、CNAME 这些"最终记录",只存"指路用的 NS 记录"。递归解析器存的是缓存,不是权威数据。

这就意味着:

  • 你想查 example.com 的 A 记录 → 要问 example.com 的权威 NS
  • 你想查 example.com 的 MX 记录 → 也要问 example.com 的权威 NS
  • 根和 TLD 都给不了你这些答案

2.3 各级 DNS 服务器的查询对应关系

#mermaid-svg-iEqUOjv1cWPC5U1j{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-iEqUOjv1cWPC5U1j .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-iEqUOjv1cWPC5U1j .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-iEqUOjv1cWPC5U1j .error-icon{fill:#552222;}#mermaid-svg-iEqUOjv1cWPC5U1j .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-iEqUOjv1cWPC5U1j .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-iEqUOjv1cWPC5U1j .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-iEqUOjv1cWPC5U1j .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-iEqUOjv1cWPC5U1j .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-iEqUOjv1cWPC5U1j .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-iEqUOjv1cWPC5U1j .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-iEqUOjv1cWPC5U1j .marker{fill:#333333;stroke:#333333;}#mermaid-svg-iEqUOjv1cWPC5U1j .marker.cross{stroke:#333333;}#mermaid-svg-iEqUOjv1cWPC5U1j svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-iEqUOjv1cWPC5U1j p{margin:0;}#mermaid-svg-iEqUOjv1cWPC5U1j .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-iEqUOjv1cWPC5U1j .cluster-label text{fill:#333;}#mermaid-svg-iEqUOjv1cWPC5U1j .cluster-label span{color:#333;}#mermaid-svg-iEqUOjv1cWPC5U1j .cluster-label span p{background-color:transparent;}#mermaid-svg-iEqUOjv1cWPC5U1j .label text,#mermaid-svg-iEqUOjv1cWPC5U1j span{fill:#333;color:#333;}#mermaid-svg-iEqUOjv1cWPC5U1j .node rect,#mermaid-svg-iEqUOjv1cWPC5U1j .node circle,#mermaid-svg-iEqUOjv1cWPC5U1j .node ellipse,#mermaid-svg-iEqUOjv1cWPC5U1j .node polygon,#mermaid-svg-iEqUOjv1cWPC5U1j .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-iEqUOjv1cWPC5U1j .rough-node .label text,#mermaid-svg-iEqUOjv1cWPC5U1j .node .label text,#mermaid-svg-iEqUOjv1cWPC5U1j .image-shape .label,#mermaid-svg-iEqUOjv1cWPC5U1j .icon-shape .label{text-anchor:middle;}#mermaid-svg-iEqUOjv1cWPC5U1j .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-iEqUOjv1cWPC5U1j .rough-node .label,#mermaid-svg-iEqUOjv1cWPC5U1j .node .label,#mermaid-svg-iEqUOjv1cWPC5U1j .image-shape .label,#mermaid-svg-iEqUOjv1cWPC5U1j .icon-shape .label{text-align:center;}#mermaid-svg-iEqUOjv1cWPC5U1j .node.clickable{cursor:pointer;}#mermaid-svg-iEqUOjv1cWPC5U1j .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-iEqUOjv1cWPC5U1j .arrowheadPath{fill:#333333;}#mermaid-svg-iEqUOjv1cWPC5U1j .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-iEqUOjv1cWPC5U1j .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-iEqUOjv1cWPC5U1j .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-iEqUOjv1cWPC5U1j .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-iEqUOjv1cWPC5U1j .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-iEqUOjv1cWPC5U1j .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-iEqUOjv1cWPC5U1j .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-iEqUOjv1cWPC5U1j .cluster text{fill:#333;}#mermaid-svg-iEqUOjv1cWPC5U1j .cluster span{color:#333;}#mermaid-svg-iEqUOjv1cWPC5U1j div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-iEqUOjv1cWPC5U1j .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-iEqUOjv1cWPC5U1j rect.text{fill:none;stroke-width:0;}#mermaid-svg-iEqUOjv1cWPC5U1j .icon-shape,#mermaid-svg-iEqUOjv1cWPC5U1j .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-iEqUOjv1cWPC5U1j .icon-shape p,#mermaid-svg-iEqUOjv1cWPC5U1j .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-iEqUOjv1cWPC5U1j .icon-shape .label rect,#mermaid-svg-iEqUOjv1cWPC5U1j .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-iEqUOjv1cWPC5U1j .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-iEqUOjv1cWPC5U1j .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-iEqUOjv1cWPC5U1j :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 存: 所有 TLD 的 NS

返回: .com TLD 的 NS
存: .com 下所有二级域的 NS

返回: example.com 的 NS
存: example.com 的所有记录

返回: api 的 A 记录
查询: api.example.com 的 A 记录
根服务器
.com TLD 服务器
example.com 权威 NS

2.4 对子域名挖掘的意义

想查什么 去哪查
目标域名的 NS 问 TLD(或递归解析器,它有缓存)
目标域名的 A/CNAME/MX/TXT 问目标域名的权威 NS
子域是否存在 问目标域名的权威 NS(直接查,绕过缓存)
目标域名有哪些子域 权威 NS 不直接给列表,要靠字典爆破、CT Logs 等

关键认知 :权威服务器不直接告诉你"我有哪些子域名"------DNS 协议没有"列表"功能。你必须用字典爆破、证书透明度日志、搜索引擎等手段去发现。这就是为什么子域名挖掘是一门"发现"的艺术,而不是"查询"的功夫。


三、DNS 树形结构与 Zone Delegation

DNS 本质上是一棵层级分明的树,根在顶部,越往下越具体。整棵树由"授权边界"切分成一个个 Zone(区域)。

3.1 DNS 的树形结构

DNS 的树不是"域名的树",而是"DNS 服务器 + Zone的树"------每一层服务器管一个 Zone,委派就是切分 Zone 的边界。

复制代码
┌─────────────────────────────────────────────┐
│  根 DNS 服务器(Root Servers)                  │
│  Zone: 根(存所有 TLD 的 NS 指针)              │
└──────────────────────┬──────────────────────┘
                       │
   ┌───────────────────┼───────────────────┐
   │                   │                   │
┌────────────┐    ┌────────────┐    ┌────────────┐
│ .com TLD   │    │ .cn TLD    │    │ .org TLD   │
│ 服务器      │    │ 服务器      │    │ 服务器      │
│ Zone: .com │    │ Zone: .cn │    │ Zone: .org │
└──────┬─────┘    └────────────┘    └────────────┘
       │
       │ 存: example.com 的 NS 指针
       ▼
┌─────────────────────────────────────────────┐
│  example.com 权威服务器(ns1.example.com)       │
│  Zone: example.com                            │
│  ├─ www  → A 记录    (未委派,在父 Zone 内)    │
│  ├─ blog → A 记录    (未委派,在父 Zone 内)    │
│  ├─ api  → A 记录    (未委派,在父 Zone 内)    │
│  └─ dev  → NS 记录   ★ 委派边界 ★              │
└──────────────────────┬──────────────────────┘
                       │ 委派:控制权移交给子域自己的 NS
                       ▼
┌─────────────────────────────────────────────┐
│  dev.example.com 权威服务器(ns1.devteam.net)    │
│  Zone: dev.example.com(独立 Zone)             │
│  ├─ git.dev  → A 记录                          │
│  └─ ci.dev   → A 记录                          │
└─────────────────────────────────────────────┘

如何读这张图 :每个方框是一台 DNS 服务器 + 它管辖的 Zone。箭头是"指路关系"------上层不存下层具体记录,只存 NS 指针。带 ★ 的是委派边界 :dev 从父 Zone 切离,成为独立 Zone,由自己的权威服务器管理。父域权威服务器对 dev 下面有什么一无所知,只负责说"去问 ns1.devteam.net"。

3.2 关键概念:Zone(区域)

Zone 是 DNS 管理权限的基本单位------一块连续的管理边界,由一组权威服务器负责,内容存放在一个**区域文件(Zone File)**里。

  • 一个 Zone 可以是一个域名及其所有子域名(未委派时)
  • 一旦某个子域名被委派 出去,它就从父 Zone 中"切离",成为独立的新 Zone

树是逻辑结构,Zone 是管理切片 。一棵树可以被切成任意多个 Zone,切分点就是委派边界。

3.3 Zone Delegation(区域委派)是什么

Zone Delegation = 父域把某个子域名的解析控制权,通过 NS 记录"移交"给另一组权威服务器。

委派完成后:

变化 说明
子域成为独立 Zone 由自己的权威服务器管理
父域权威不再存子域具体记录 只保留一条指向子域权威服务器的 NS 记录

3.4 委派的具体例子

假设 example.com 的 Zone 文件原本长这样:

复制代码
; example.com 的区域文件(委派前)
example.com.   IN   NS   ns1.example.com.
example.com.   IN   A    1.2.3.4
www            IN   A    1.2.3.4
api            IN   A    5.6.7.8
dev            IN   A    9.9.9.9

现在把 dev.example.com 委派给开发团队的 DNS 服务器:

复制代码
; example.com 的区域文件(委派后)
example.com.   IN   NS   ns1.example.com.
example.com.   IN   A    1.2.3.4
www            IN   A    1.2.3.4
api            IN   A    5.6.7.8

; ↓↓↓ 委派边界 ↓↓↓
dev.example.com.   IN   NS   ns1.devteam.net.    ; 子域的权威服务器

此时:

  • dev.example.com 成为一个独立 Zone ,由 ns1.devteam.net 管理
  • example.com 的权威服务器不再知道 dev.example.com 下有什么记录(如 git.dev.example.com)
  • 递归查询走到父域权威时,收到的是一条 NS 委托记录,要转向去问子域的权威服务器

3.5 委派对子域名挖掘的意义(核心)

意义 说明
制造"权威数据源切换" 委派后子域数据只在子域权威上,要分别查每一级权威
NS 记录是高价值枚举线索 一条 NS 记录 = 一个被委派的子域
Zone Transfer 受委派边界限制 AXFR 只能拿当前 Zone,委派出去的不在其中
决定枚举的递归深度 发现一个子域有 NS,要把它当新主域重新挖
可能隐藏"信息孤岛" 不同部门各自管理子域,常成为安全盲区

3.6 委派下的子域名枚举策略

复制代码
example.com
├── www.example.com            (父 Zone 内,一次性可枚举)
├── api.example.com            (父 Zone 内)
├── dev.example.com            (委派 Zone → 需问 ns1.devteam.net)
│   ├── git.dev.example.com    (子 Zone 内)
│   └── ci.dev.example.com     (子 Zone 内)
└── corp.example.com           (委派 Zone → 需问 ns.corp.net)
    └── vpn.corp.example.com   (子 Zone 内)

关键认知 :枚举工具必须跟随 NS 委派链递归深入,只问父域权威服务器会漏掉所有已委派子域下的内容。这就是为什么子域名挖掘工具要做"递归挖掘"------发现一个子域有 NS 记录,就把它当成新主域重新挖一遍。


四、DNS 记录的通配符

讲完委派,再讲一个子域名挖掘的"头号陷阱"------通配符 DNS。

4.1 什么是通配符 DNS

通配符 DNS(Wildcard DNS)是用 *.example.com 这条记录匹配所有未明确列出的子域名。

原理:当权威 NS 收到一个它没有明确记录的子域名查询时,如果存在 *.example.com 这条通配符记录,它会返回通配符记录的结果。换句话说,你拿任何随机字符串拼上去都能解析成功。

4.2 通配符的例子

假设 example.com 的区域文件里有:

复制代码
*.example.com.   IN   A   1.2.3.4

那么:

  • api.example.com(如果没明确记录)→ 解析到 1.2.3.4
  • random123abc.example.com(不存在)→ 也解析到 1.2.3.4
  • 任何东西.example.com → 都解析到 1.2.3.4

4.3 为什么这是头号陷阱

不只产生假阳性那么简单------它会"污染"你后续的所有分析环节:

污染环节 后果
字典爆破 跑出 50000 个子域名,全是假的
HTTP 探测 浪费大量时间探测不存在的服务
端口扫描 可能触发目标的入侵检测
资产清单 全是垃圾数据,掩盖真正有价值的发现

4.4 识别通配符的思路

关键认知 :识别通配符的思路是"用不存在的东西验证存在"------生成 5 个完全随机、不可能真实存在的子域名(如 xyzrandom123abc.example.com)去做查询,如果全部返回相同 A 记录,就是通配符。

但要注意"部分通配符":有些目标只在特定层级(如 *.api.example.com)或特定记录类型上做通配符,主域层面查不出来。所以识别要分层做。

4.5 处理策略

不能简单粗暴地丢弃所有通配符结果。原因在于:有些服务在 DNS 层走通配符(所有子域解析到同一 IP),但在 HTTP 层根据 Host 头做了区分(不同子域返回不同内容)。你需要结合 HTTP 响应内容做二次判断------只有"DNS 解析相同且 HTTP 内容也相同"的,才是真正的假阳性。

通配符识别的具体技巧留到后续"子域名搜集方法"章节展开。本篇只讲基础概念。


五、本篇小结

概念 一句话
记录类型 A、CNAME、NS、MX、TXT、SOA、SRV 等,各有情报价值
CNAME 情报之王,暴露第三方服务依赖
NS 揭示管理边界,是发现委派子域的直接证据
分级记录 根/TLD 存 NS 指针,权威服务器存具体记录
Zone Delegation 子域有独立权威服务器,要当成新主域重新挖
通配符 DNS *.example.com 匹配所有未明确列出的子域,是头号陷阱

有了这些概念,下一篇我们讲子域名背后的 Web 与网络层------CDN、负载均衡、网络架构图、HTTP/HTTPS 与 TLS。


附:本篇关键术语速查

术语 简明解释
A 记录 域名 → IPv4 地址
AAAA 记录 域名 → IPv6 地址
CNAME 记录 域名 → 另一个域名的别名
NS 记录 域名 → 管理它的权威 NS
MX 记录 域名 → 邮件服务器
TXT 记录 任意文本,常用于服务验证
SOA 记录 区域权威起点,含管理员邮箱和序列号
SRV 记录 服务定位记录,暴露内部服务
PTR 记录 IP → 域名(反向解析)
Zone DNS 的独立管理单元
Zone File 权威服务器存的区域文件
Zone Delegation 父域把子域解析控制权移交给另一组 NS
通配符 DNS 用 *.example.com 匹配所有未列出的子域
AXFR 区域传送,一次性拷贝整个 Zone 的记录
相关推荐
花青泽4 小时前
第2章_阶段1_准备
web安全
花青泽6 小时前
子域名基础05_Web与网络层
web安全
花青泽6 小时前
子域名挖掘全局流程
web安全
sogw-三叶草️9 小时前
HITCON CTF 2014 — stkof · Unsafe Unlink
网络·安全·web安全·pwn·堆·二进制安全·堆漏洞
Seraphina3620 小时前
SQLI-labs(一)黑盒全流程
sql·安全·web安全
花青泽1 天前
Web安全信息收集--总
安全·web安全
花青泽1 天前
子域名基础01_地址与域名基础
web安全
花青泽1 天前
子域名基础02_DNS解析流程_简单版
web安全
花青泽1 天前
子域名基础03_DNS解析流程_详细版
web安全