子域名挖掘前置基础 01:地址与域名基础
本篇定位:这是子域名挖掘基础知识的第一篇。在讲 DNS 解析、记录类型、CDN 调度这些内容之前,先把最地基的东西讲清楚------URL 是什么、域名和 IP 是什么关系、域名分成几级。这些东西看似常识,但它们决定了后续所有挖掘方法的逻辑起点。
一、URL 结构:一个网址的零件拆解
用户在浏览器地址栏看到的那一串字符,叫 URL(Uniform Resource Locator,统一资源定位符)。多数人只关心它能不能打开,但 URL 的每一段都是信息收集的目标。
1.1 一个典型 URL 的结构
https://apiv123.example.com:8443/v2/user/profile?uid=10086&token=abc#detail
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ └─ 锚点
│ │ │ │ │ │ └─ 查询参数
│ │ │ │ │ └─ 路径
│ │ │ │ │
│ │ │ │ └─ 端口
│ │ │ └─ 顶级域
│ │ └─ 二级域
│ └─ 子域名
└─ 协议
1.2 每个零件的含义
| 组成 | 含义 | 示例 | 对子域名挖掘的意义 |
|---|---|---|---|
| 协议 | 通信规则 | https |
是否启用 TLS、证书信息 |
| 顶级域 | 域名的最高级别 | com |
判断目标所属机构/地区 |
| 二级域 | 注册的域名主体 | example |
目标根域名资产归属 |
| 子域名 | 二级域下的部分 | api |
子域名挖掘的核心目标 |
| 端口 | 服务入口 | 8443 |
非标准端口暴露额外服务 |
| 路径 | 服务器上的资源位置 | /v2/user/profile |
目录扫描、后台入口 |
| 查询参数 | 传给服务端的键值对 | uid=10086&token=abc |
参数名暗示漏洞类型 |
| 锚点 | 页面内位置 | #detail |
前端路由信息 |
1.3 URL 不是一行字符串,是一张资产地图
关键认知:URL 的每一段都对应一个挖掘维度。子域名挖掘之所以是信息收集的第一步,正是因为 URL 里那一段"子域名"字段,往往就指向一个独立的服务、独立的资产、独立的攻击入口。
很多新手把 URL 当成一行字符串去记忆,这是错的。从信息收集角度,URL 是一张"零件清单"------每个零件都能单独拆出来分析、单独挖出资产。
二、域名与 IP 的关系:为什么需要 DNS
互联网上设备之间通信,靠的是 IP 地址(IP Address,互联网协议地址,一串数字,如 1.2.3.4)。但人记不住 IP,人记的是域名(如 api.example.com)。这就产生了一个"翻译需求"------把人记的域名,翻译成机器用的 IP。
2.1 域名和 IP 的对应关系
| 关系类型 | 说明 | 例子 |
|---|---|---|
| 一对一 | 一个域名对应一个 IP | 小网站,一台服务器 |
| 一对多 | 一个域名对应多个 IP | 负载均衡、CDN 调度 |
| 多对一 | 多个域名对应一个 IP | 共享主机、虚拟主机 |
| 多对多 | 多个域名对应多个 IP | 大型 CDN、全球分布式服务 |
关键认知 :"一个子域名对应一个 IP"是错误假设。同一个域名在不同时间、不同地点可能解析到不同 IP。这就是为什么子域名挖掘里要记录"一个子域在不同时间点、不同地理位置解析到的所有 IP"。
2.2 为什么不能直接用 IP
既然 IP 是机器用的,为什么不直接用 IP?原因有三:
| 原因 | 说明 |
|---|---|
| 人记不住 | 1.2.3.4 比 api.example.com 难记得多 |
| IP 会变 | 服务器迁移、CDN 调度、负载均衡都会让 IP 变化,但域名不变 |
| 一个 IP 可承载多个服务 | 同一台服务器(一个 IP)可以托管多个网站,靠域名区分 |
第三点尤其重要------一个 IP 可以承载多个域名。这就是为什么"IP 反查"能发现新子域名:你拿一个 IP 去查所有指向它的域名,可能翻出同一台服务器上托管的、目标企业其他业务线的子域。
2.3 翻译这件事就是 DNS 干的活
DNS(Domain Name System,域名系统)就是干这个翻译活的。它的任务看起来简单------你给它一个域名,它给你一个 IP。但这个翻译过程经过了好几个节点,每个节点都可能影响你拿到什么样的结果。
后续几篇会详细讲 DNS 怎么翻译、有哪些节点、每个节点存什么数据。这里只需要记住一句话:DNS 是互联网的"电话簿"。
三、域名级别:一根树上的层级
域名不是平面的,而是层级分明的。理解域名级别,是理解 DNS 树形结构、Zone Delegation、委派关系的基础。
3.1 域名的层级结构
.
根域
┌──────┼──────┐
.com .cn .org ← 顶级域(TLD)
│ │ │
┌──────┤ ├──────┐
example shop baidu gov
.com .cn .com .cn ← 二级域(注册单元)
│
┌───────┼───────┬──────────┐
www blog api dev
│ │
v2 team.dev ← 子域(多级)
3.2 每一级的含义
| 级别 | 含义 | 示例 | 谁管理 |
|---|---|---|---|
| 根域 | 域名树的根 | .(通常省略不写) |
ICANN / 根服务器集群 |
| 顶级域(TLD) | 根下的第一级 | .com、.cn、.org、.net |
各 TLD 注册局 |
| 二级域 | 注册的域名主体 | example.com 里的 example |
企业/个人向注册商购买 |
| 子域名 | 二级域下的部分 | api.example.com 里的 api |
由域名持有者自行配置 |
3.3 几个容易混淆的概念
| 概念 | 说明 | 例子 |
|---|---|---|
| 主域名 | 通常指二级域 + 顶级域 | example.com |
| 子域名 | 主域名下的任何层级 | api.example.com、v2.api.example.com |
| 多级子域 | 子域下面还有子域 | v2.api.example.com 里的 v2.api |
| FQDN | 完全限定域名,含末尾根点 | api.example.com.(末尾的点通常省略) |
3.4 域名级别对子域名挖掘的意义
关键认知 :子域名挖掘的目标,就是发现"二级域下面"的所有层级。
api.example.com是子域,v2.api.example.com也是子域,team.dev.example.com还是子域。每一级都可能是一个独立的服务、独立的资产。
这就是为什么子域名挖掘要递归深入------发现一个子域后,不能停在它身上,要继续往下挖,因为子域下面可能还有子域。后续讲 Zone Delegation 时会解释:当子域被委派出去成为独立 Zone,它就是一个新的挖掘起点,需要当成"新主域"重新挖。
四、本篇小结
| 概念 | 一句话 |
|---|---|
| URL | 一张"零件清单",每段都对应一个挖掘维度 |
| 域名与 IP | 人记域名、机器用 IP,DNS 负责翻译 |
| 域名级别 | 根 → 顶级域 → 二级域 → 子域,越往下越具体 |
| 子域名挖掘目标 | 发现二级域下的所有层级 |
有了这些地基,下一篇我们讲 DNS 怎么把域名翻译成 IP------从"DNS 服务器的作用与分级"开始。