跳到主要内容

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/udpmDNS/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 查询后再判断。

防御建议

  1. 在权威服务器上禁止 AXFR 区域传输。
  2. TXT/SRV 记录不存放任何凭据或敏感验证信息。
  3. mDNS 不跨越网络边界,在网段间做过滤。
  4. 解析器关闭开放递归,避免被当作反解跳板。

相关知识