DNS 枚举与记录泄露
DNS 同时监听 53/tcp 与 53/udp,两者都要扫:UDP 面很窄时,TCP 53 可能仍然开放。除常规解析外,PTR、AXFR、TXT 以及 mDNS/DNS-SD(5353/udp)都是容易泄露主机名、用户名甚至明文凭据的收集面。
按 PTR → SOA/NS → AXFR → TXT 的顺序逐层推进,每一步的产出都是下一步的输入。
仅限授权环境
区域传输与 mDNS 枚举仅可在授权测试或靶场环境对目标执行。
判断前提:端口与协议
| 端口 | 说明 |
|---|---|
| 53/udp | 常规 DNS 查询通道 |
| 53/tcp | 大报文与区域传输走 TCP,UDP 面窄时可能仍开放 |
| 5353/udp | mDNS/DNS-SD 服务发现 |
| 8600/udp 等 | 特殊 DNS 端口(如 Consul),需发合法 DNS 报文才有响应 |
方法 A:PTR 反解
dig -x <ip> @<ns>
开放解析器可以反解出主机名与用户名线索,例如 yousef-VirtualBox.lan 这类记录直接给出桌面用户名。
方法 B:定位权威服务器
先查询 SOA 与 NS 记录定位权威服务器,AXFR 与后续查询都对其发起。
方法 C:AXFR 区域传输
dig axfr <domain> @<ns>
未做限制时,一次即可拿到区域内的全部记录,是 DNS 枚举中收益最高的单步动作。
方法 D:TXT 记录
dig TXT <domain> @<ns>
TXT 记录常泄露邮箱、供应商与验证信息。邮箱的本地部分可以同时作为用户名与密码候选,甚至会出现"A 的密码是 B 的账号名"式交叉组合,枚举时应整表留档反复比对。
mDNS / DNS-SD(5353/udp)
从服务枚举入口逐级解析 PTR → SRV → TXT → A:
dig @<target> -p 5353 _services._dns-sd._udp.local PTR
_ssh._tcp.local 的 TXT 记录可能明文携带 username/password。复核可用:
nmap -sU -p 5353 --script=dns-service-discovery <target>
复核要点
- TCP 53 与 UDP 53 分别确认,不要只扫一种协议。
- AXFR 命中后逐条核对记录类型,PTR/TXT 优先提取人名与口令线索。
- 特殊端口(如 Consul 8600)用
dig -p发送合法 DNS 查询后再判断。
防御建议
- 在权威服务器上禁止 AXFR 区域传输。
- TXT/SRV 记录不存放任何凭据或敏感验证信息。
- mDNS 不跨越网络边界,在网段间做过滤。
- 解析器关闭开放递归,避免被当作反解跳板。
相关知识
- Nmap 服务识别与脚本扫描 —
dns-zone-transfer等 NSE 脚本配合使用