performing-dns-enumeration-and-zone-transfer

在授权侦察期间枚举 DNS 记录、尝试区域传输(Zone Transfer)、暴力枚举子域名, 并绘制 DNS 基础架构图,以识别目标域名中的攻击面、错误配置和信息泄露。

9 stars

Best use case

performing-dns-enumeration-and-zone-transfer is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

在授权侦察期间枚举 DNS 记录、尝试区域传输(Zone Transfer)、暴力枚举子域名, 并绘制 DNS 基础架构图,以识别目标域名中的攻击面、错误配置和信息泄露。

Teams using performing-dns-enumeration-and-zone-transfer should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/performing-dns-enumeration-and-zone-transfer/SKILL.md --create-dirs "https://raw.githubusercontent.com/killvxk/cybersecurity-skills-zh/main/skills/performing-dns-enumeration-and-zone-transfer/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/performing-dns-enumeration-and-zone-transfer/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How performing-dns-enumeration-and-zone-transfer Compares

Feature / Agentperforming-dns-enumeration-and-zone-transferStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

在授权侦察期间枚举 DNS 记录、尝试区域传输(Zone Transfer)、暴力枚举子域名, 并绘制 DNS 基础架构图,以识别目标域名中的攻击面、错误配置和信息泄露。

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# 执行 DNS 枚举和区域传输

## 适用场景

- 在授权渗透测试中绘制目标组织的外部攻击面
- 发现通过 DNS 记录暴露的隐藏子域名、内部主机名和 IP 地址
- 测试 DNS 服务器是否允许泄露完整区域文件的未授权区域传输
- 识别邮件服务器、名称服务器和服务记录以便进行进一步的定向测试
- 验证 DNS 安全配置,包括 DNSSEC、SPF、DKIM 和 DMARC

**不要在**未获授权的域名上使用,不要用于 DNS 放大或反射攻击,也不要用过量查询压垮 DNS 服务器。

## 前置条件

- 对目标域名执行 DNS 枚举的书面授权
- 已安装 DNS 枚举工具:dig、nslookup、host、dnsrecon、dnsenum、subfinder、amass
- 可访问目标 DNS 服务器的网络(UDP/TCP 53 端口)
- 用于子域名暴力枚举的字典(SecLists dns-wordlist 或类似工具)
- 了解 DNS 记录类型(A、AAAA、CNAME、MX、NS、TXT、SOA、SRV、PTR)

## 工作流程

### 步骤 1:识别 DNS 服务器和基本记录

```bash
# 查找权威名称服务器
dig NS example.com +short
# ns1.example.com.
# ns2.example.com.

# 获取 SOA 记录以了解区域元数据
dig SOA example.com +short
# ns1.example.com. admin.example.com. 2024031501 3600 900 604800 86400

# 枚举所有常见记录类型
dig example.com ANY +noall +answer

# 获取 MX 记录(邮件服务器)
dig MX example.com +short
# 10 mail.example.com.
# 20 mail-backup.example.com.

# 获取 TXT 记录(SPF、DKIM、DMARC、验证)
dig TXT example.com +short

# 检查 DMARC 策略
dig TXT _dmarc.example.com +short

# 检查 DKIM 选择器
dig TXT default._domainkey.example.com +short
dig TXT selector1._domainkey.example.com +short
dig TXT google._domainkey.example.com +short

# 获取常见服务的 SRV 记录
dig SRV _sip._tcp.example.com +short
dig SRV _ldap._tcp.example.com +short
dig SRV _kerberos._tcp.example.com +short
```

### 步骤 2:尝试区域传输

```bash
# 对每个名称服务器尝试 AXFR 区域传输
dig AXFR example.com @ns1.example.com
dig AXFR example.com @ns2.example.com

# 使用 host 命令进行区域传输
host -t axfr example.com ns1.example.com

# 使用 dnsrecon 自动尝试区域传输
dnsrecon -d example.com -t axfr

# 若区域传输成功,保存输出
dig AXFR example.com @ns1.example.com > zone_transfer_results.txt

# 测试 IXFR(增量区域传输)
dig IXFR=2024031500 example.com @ns1.example.com
```

### 步骤 3:通过暴力枚举发现子域名

```bash
# 使用 dnsenum 进行综合枚举
dnsenum --dnsserver ns1.example.com --enum -f /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt -r example.com -o dnsenum_output.xml

# 使用 dnsrecon 进行暴力枚举
dnsrecon -d example.com -t brt -D /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt

# 使用 gobuster 快速暴力枚举 DNS
gobuster dns -d example.com -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-20000.txt -t 50 -o gobuster_dns.txt

# 使用 subfinder 进行被动子域名发现
subfinder -d example.com -all -o subfinder_results.txt

# 使用 amass 进行综合枚举(被动 + 主动)
amass enum -d example.com -passive -o amass_passive.txt
amass enum -d example.com -active -brute -o amass_active.txt

# 合并并去重结果
cat subfinder_results.txt amass_passive.txt amass_active.txt gobuster_dns.txt | sort -u > all_subdomains.txt
```

### 步骤 4:反向 DNS 和 PTR 枚举

```bash
# 对已发现的 IP 段进行反向 DNS 查找
dnsrecon -d example.com -t rvl -r 10.10.0.0/24

# 对 IP 段进行 PTR 记录枚举
for ip in $(seq 1 254); do
  result=$(dig -x 10.10.1.$ip +short 2>/dev/null)
  if [ -n "$result" ]; then
    echo "10.10.1.$ip -> $result"
  fi
done

# 使用 Nmap 对子网进行反向 DNS
nmap -sL 10.10.0.0/24 | grep "(" | awk '{print $5, $6}'

# 检查 DNS 缓存窃听(查询域名的相关信息)
dig @ns1.example.com www.competitor.com +norecurse
```

### 步骤 5:分析 DNS 安全配置

```bash
# 检查 DNSSEC 验证
dig example.com +dnssec +short
dig DNSKEY example.com +short
dig DS example.com +short

# 检查开放递归解析器(错误配置)
dig @ns1.example.com google.com +recurse
# 若能解析,则该服务器是开放解析器

# 检查通配符 DNS 记录
dig nonexistent-subdomain-xyz123.example.com +short
# 若能解析,则存在通配符记录

# 测试 DoH/DoT 支持
curl -s -H 'accept: application/dns-json' 'https://dns.google/resolve?name=example.com&type=A'

# 验证用于邮件安全的 SPF 记录
dig TXT example.com +short | grep "v=spf1"
# 检查是否存在过于宽松的 SPF(+all、?all)
```

### 步骤 6:解析并映射所有已发现的子域名

```bash
# 将所有已发现的子域名解析为 IP 地址
while read subdomain; do
  ip=$(dig +short A "$subdomain" | head -1)
  if [ -n "$ip" ]; then
    echo "$subdomain,$ip"
  fi
done < all_subdomains.txt > resolved_subdomains.csv

# 识别唯一 IP 地址
cut -d',' -f2 resolved_subdomains.csv | sort -u > unique_ips.txt

# 检查通过 DNS 泄露的内网 IP 地址
grep -E "^10\.|^172\.(1[6-9]|2[0-9]|3[01])\.|^192\.168\." resolved_subdomains.csv > internal_ip_leaks.txt

# 使用 httpx 探测已发现子域名上的 Web 服务
cat all_subdomains.txt | httpx -title -status-code -tech-detect -o httpx_results.txt
```

## 核心概念

| 术语 | 定义 |
|------|------|
| **区域传输(AXFR)** | 将完整区域文件从主服务器复制到辅助服务器的 DNS 机制;未授权的传输会暴露区域内的所有记录 |
| **子域名枚举(Subdomain Enumeration)** | 通过暴力枚举、证书透明度日志、搜索引擎和被动 DNS 数据库发现有效子域名的过程 |
| **DNSSEC** | DNS 安全扩展,为 DNS 响应添加密码签名,防止缓存投毒和欺骗攻击 |
| **SPF/DKIM/DMARC** | 在 DNS TXT 记录中定义的邮件认证协议,可防止邮件欺骗和域名冒充 |
| **通配符 DNS(Wildcard DNS)** | 使用星号(*)的 DNS 记录,匹配对不存在子域名的所有查询,可能掩盖枚举结果 |
| **PTR 记录** | 将 IP 地址映射到主机名的反向 DNS 记录,通常揭示内部命名规范和服务器角色 |

## 工具与系统

- **dig**:标准 DNS 查询工具,完整支持所有记录类型、DNSSEC 验证和区域传输查询
- **dnsrecon**:综合 DNS 枚举工具,支持区域传输、暴力枚举、反向查找、缓存窃听和 Google dork 查询
- **subfinder**:快速被动子域名发现工具,查询证书透明度日志、搜索引擎和 DNS 数据库
- **Amass(OWASP)**:高级攻击面测绘工具,支持被动和主动 DNS 枚举、图分析和数据源集成
- **gobuster**:使用可配置字典和并发线程进行 DNS 子域名暴力枚举的快速工具

## 常见场景

### 场景:为 Web 应用渗透测试进行外部侦察

**背景**:安全顾问正在为 Web 应用渗透测试进行外部侦察。客户的主域名为 example.com,范围包括所有子域名和相关基础架构。顾问获授权枚举 DNS 记录并探测已发现的 Web 服务。

**方法**:
1. 查询 example.com 的 NS、MX、TXT 和 SOA 记录,以绘制 DNS 基础架构图
2. 对两个名称服务器尝试区域传输——ns2 成功,共泄露 347 条 DNS 记录,包括内部暂存环境
3. 以被动模式运行 subfinder 和 amass,从证书透明度日志中发现额外 89 个子域名
4. 使用包含 20,000 词条的字典通过 gobuster 暴力枚举子域名,再发现 12 个被动来源未能找到的子域名
5. 解析所有子域名,发现 15 个解析到内部 RFC1918 地址(信息泄露)
6. 使用 httpx 探测所有可访问的 Web 子域名,发现一个使用默认凭证的暂存环境(staging.example.com)
7. 向客户报告区域传输漏洞、内网 IP 泄露和暴露的暂存环境

**注意事项**:
- 每秒发送大量 DNS 查询,触发频率限制或基于 DNS 的 DDoS 防护
- 未检查通配符 DNS 记录,导致子域名发现出现假阳性
- 遗漏使用独立 DNS 提供商或 CDN 专属 CNAME 记录的子域名
- 忽视包含 API 密钥、验证令牌或内部备注的 TXT 记录

## 输出格式

```
## DNS 枚举报告

**目标域名**:example.com
**授权名称服务器**:ns1.example.com (203.0.113.10), ns2.example.com (203.0.113.11)

### 区域传输状态
| 名称服务器 | AXFR 结果 | 获取记录数 |
|------------|-----------|----------|
| ns1.example.com | REFUSED | 0 |
| ns2.example.com | SUCCESS | 347 条记录 |

### 子域名发现摘要
| 方法 | 发现子域名数 |
|------|------------|
| 区域传输 | 347 |
| 被动(subfinder + amass) | 89 |
| 主动暴力枚举 | 12 |
| **总唯一数** | **412** |

### 关键发现
1. **允许区域传输**(高危):ns2.example.com 允许任意来源的 AXFR
2. **内网 IP 泄露**(中危):15 个子域名解析到 RFC1918 地址
3. **暴露的暂存环境**(高危):staging.example.com 可用默认凭证访问
4. **缺失 DMARC 策略**(中危):未找到 DMARC 记录,可能被用于邮件欺骗
5. **弱 SPF 记录**(低危):SPF 使用 ~all(软失败)而非 -all(硬失败)
```

Related Skills

performing-yara-rule-development-for-detection

9
from killvxk/cybersecurity-skills-zh

通过识别可执行文件中的唯一字节模式、字符串和行为指标,开发精准的 YARA 恶意软件检测规则,同时将误报率降至最低。

performing-wireless-security-assessment-with-kismet

9
from killvxk/cybersecurity-skills-zh

使用 Kismet 通过被动射频监控进行无线网络安全评估,检测流氓接入点(Rogue AP)、隐藏 SSID、弱加密和未授权客户端。

performing-wireless-network-penetration-test

9
from killvxk/cybersecurity-skills-zh

执行无线网络渗透测试,通过捕获握手包、破解 WPA2/WPA3 密钥、检测流氓接入点以及使用 Aircrack-ng 和相关工具测试无线网络分段,评估 WiFi 安全性。

performing-windows-artifact-analysis-with-eric-zimmerman-tools

9
from killvxk/cybersecurity-skills-zh

使用 Eric Zimmerman 的开源 EZ Tools 套件(包括 KAPE、MFTECmd、PECmd、LECmd、JLECmd 和 Timeline Explorer)执行全面的 Windows 取证制品分析,解析注册表 hive、预取文件、事件日志和文件系统元数据。

performing-wifi-password-cracking-with-aircrack

9
from killvxk/cybersecurity-skills-zh

在授权无线安全评估中捕获 WPA/WPA2 握手包,并使用 aircrack-ng、hashcat 和字典攻击进行离线密码破解, 以评估密码短语强度和无线网络安全状况。

performing-web-cache-poisoning-attack

9
from killvxk/cybersecurity-skills-zh

在授权安全测试期间,通过未纳入缓存键的头部和参数毒化缓存响应,利用 Web 缓存机制向其他用户投递恶意内容。

performing-web-cache-deception-attack

9
from killvxk/cybersecurity-skills-zh

通过利用 CDN 缓存层与源服务器之间的路径规范化差异,执行 Web 缓存欺骗攻击,从而缓存并获取敏感的已认证内容。

performing-web-application-vulnerability-triage

9
from killvxk/cybersecurity-skills-zh

使用 OWASP 风险评级方法论对 DAST/SAST 扫描器的 Web 应用程序漏洞发现进行分类,区分真阳性和假阳性,并确定修复优先级。

performing-web-application-scanning-with-nikto

9
from killvxk/cybersecurity-skills-zh

Nikto 是一款开源 Web 服务器和 Web 应用程序扫描器,可针对超过 7,000 个潜在危险文件/程序进行测试,检查超过 1,250 个服务器的过期版本,并识别超过 270 个服务器的版本特定问题。

performing-web-application-penetration-test

9
from killvxk/cybersecurity-skills-zh

遵循 OWASP Web 安全测试指南(WSTG)方法论,对 Web 应用程序执行系统化安全测试,识别认证、授权、 输入验证、会话管理和业务逻辑中的漏洞。测试人员以 Burp Suite 作为主要拦截代理,结合手动测试技术 发现自动化扫描器遗漏的缺陷。适用于 Web 应用渗透测试、OWASP 测试、应用安全评估或 Web 漏洞测试等请求场景。

performing-web-application-firewall-bypass

9
from killvxk/cybersecurity-skills-zh

使用编码技术、HTTP 方法操控、参数污染和载荷混淆绕过 Web 应用防火墙保护,将 SQL 注入、XSS 及其他攻击载荷穿透 WAF 检测规则。

performing-vulnerability-scanning-with-nessus

9
from killvxk/cybersecurity-skills-zh

使用 Tenable Nessus 执行认证和未认证漏洞扫描,识别网络基础设施、服务器和应用程序中的已知漏洞、 错误配置、默认凭据和缺失补丁。扫描器将发现与 CVE 数据库和 CVSS 评分关联,生成优先级修复指导。 适用于漏洞扫描、Nessus 评估、补丁合规检查或自动化漏洞检测等请求场景。