L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Productivité · SKILL.md

performing-dns-enumeration-and-zone-transfer

performing-dns-enumeration-and-zone-transfer

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

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: performing-dns-enumeration-and-zone-transfer description: > 在授权侦察期间枚举 DNS 记录、尝试区域传输(Zone Transfer)、暴力枚举子域名, 并绘制 DNS 基础架构图,以识别目标域名中的攻击面、错误配置和信息泄露。 domain: cybersecurity subdomain: network-security tags: [network-security, dns, enumeration, zone-transfer, reconnaissance] version: "1.0" author: mahipal license: Apache-2.0

执行 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 服务器和基本记录

# 查找权威名称服务器
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:尝试区域传输

# 对每个名称服务器尝试 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:通过暴力枚举发现子域名

# 使用 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 枚举

# 对已发现的 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 安全配置

# 检查 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:解析并映射所有已发现的子域名

# 将所有已发现的子域名解析为 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 数据库发现有效子域名的过程
DNSSECDNS 安全扩展,为 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(硬失败)
Skills enregistrées