Enumerates DNS records, attempts zone transfers, brute-forces subdomains, and maps infrastructure during authorized reconnaissance to identify attack surfaces, misconfigurations, and leaks.
npx claudepluginhub killvxk/cybersecurity-skills-zhThis skill uses the workspace's default tool permissions.
- 在授权渗透测试中绘制目标组织的外部攻击面
Enumerates DNS records with dig, attempts AXFR zone transfers, brute-forces subdomains, and maps infrastructure during authorized pentests to find attack surface and misconfigurations.
Enumerates DNS records, attempts zone transfers, brute-forces subdomains, and maps infrastructure during authorized pentests to identify attack surfaces, misconfigurations, and info disclosure.
Queries DNS records using dog for colorized readable output, DoT/DoH protocols, JSON parsing, reverse lookups, and DNSSEC. Integrates Bash dig, nslookup, host, whois.
Share bugs, ideas, or general feedback.
不要在未获授权的域名上使用,不要用于 DNS 放大或反射攻击,也不要用过量查询压垮 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
# 对每个名称服务器尝试 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
# 使用 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
# 对已发现的 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
# 检查 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)
# 将所有已发现的子域名解析为 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 记录,通常揭示内部命名规范和服务器角色 |
背景:安全顾问正在为 Web 应用渗透测试进行外部侦察。客户的主域名为 example.com,范围包括所有子域名和相关基础架构。顾问获授权枚举 DNS 记录并探测已发现的 Web 服务。
方法:
注意事项:
## 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(硬失败)