DNS 枚举
DNS 枚举是通过查询 DNS 服务器获取目标域名相关信息的过程,是信息搜集和渗透测试的重要步骤。
DNS 记录类型
常见记录类型
| 类型 |
全称 |
用途 |
| A |
Address |
IPv4 地址映射 |
| AAAA |
IPv6 Address |
IPv6 地址映射 |
| CNAME |
Canonical Name |
别名记录 |
| MX |
Mail Exchange |
邮件服务器 |
| NS |
Name Server |
域名服务器 |
| TXT |
Text |
文本信息(SPF、DKIM 等) |
| SOA |
Start of Authority |
授权起始记录 |
| SRV |
Service |
服务记录 |
| PTR |
Pointer |
反向 DNS 查询 |
命令行工具
1. dig
功能强大的 DNS 查询工具。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| dig example.com
dig example.com MX dig example.com TXT dig example.com NS
dig example.com ANY
dig -x 8.8.8.8
dig @8.8.8.8 example.com
dig +trace example.com
dig +short example.com
dig -f domains.txt +short
|
2. nslookup
Windows 和 Linux 通用的 DNS 查询工具。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| nslookup example.com
nslookup -type=MX example.com nslookup -type=NS example.com
nslookup example.com 8.8.8.8
nslookup > set type=MX > example.com > server 8.8.8.8 > example.com
|
3. host
简洁的 DNS 查询工具。
1 2 3 4 5 6 7 8 9 10 11 12
| host example.com
host -t MX example.com host -t TXT example.com
host -v example.com
host 8.8.8.8
|
DNS 区域传送
DNS 区域传送是一种 DNS 服务器同步机制,如果配置不当可能泄露所有子域名信息。
1 2 3 4 5 6 7 8
| dig axfr @ns1.example.com example.com
host -l example.com ns1.example.com
nmap --script dns-zone-transfer -p 53 ns1.example.com
|
DNS 爆破工具
dnsx
快速 DNS 解析和爆破工具。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| go install -v github.com/projectdiscovery/dnsx@latest
dnsx -l domains.txt -o resolved.txt
dnsx -l domains.txt -a -o a_records.txt
dnsx -l domains.txt -a -aaaa -cname -mx -txt -o all_records.txt
dnsx -l domains.txt -wildcard
dnsx -l domains.txt -t 100 -o resolved.txt
dnsx -l domains.txt -json -o results.json
|
massdns
高性能的 DNS 解析器。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| git clone https://github.com/blechschmidt/massdns.git cd massdns make && make install
massdns -r resolvers.txt -t A domains.txt -o results.txt
echo "8.8.8.8" > resolvers.txt echo "1.1.1.1" >> resolvers.txt massdns -r resolvers.txt -t A domains.txt
massdns -r resolvers.txt -t A domains.txt -o S -w results.txt
|
DNS 信息搜集工具
DNSRecon
功能全面的 DNS 枚举脚本。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| git clone https://github.com/darkoperator/dnsrecon.git cd dnsrecon pip install -r requirements.txt
python dnsrecon.py -d example.com
python dnsrecon.py -t axfr -d example.com
python dnsrecon.py -d example.com -D wordlist.txt -t brt
python dnsrecon.py -d example.com -t srv
python dnsrecon.py -d example.com -t wildcard
python dnsrecon.py -d example.com -t goo
|
实用技巧
1. SPF 记录分析
SPF 记录可以揭示邮件服务器和第三方服务信息。
1 2 3 4 5 6 7 8
| dig example.com TXT
|
2. DKIM 和 DMARC
1 2 3 4 5 6
| dig _dmarc.example.com TXT
dig selector1._domainkey.example.com TXT dig google._domainkey.example.com TXT
|
3. DNSSEC 记录
1 2 3 4 5 6
| dig example.com DNSKEY dig example.com DS
dig +dnssec example.com
|
4. 多种 DNS 服务器查询
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
dig @1.1.1.1 example.com dig @2606:4700:4700::1111 example.com
dig @8.8.8.8 example.com dig @2001:4860:4860::8888 example.com
dig @9.9.9.9 example.com
dig @208.67.222.222 example.com
|
在线工具
DNS 查询服务
DNS 历史记录
安全建议
防御 DNS 枚举
禁用区域传送
1 2 3 4
| zone "example.com" { type master; allow-transfer { none; }; };
|
限制 DNS 记录暴露
- 避免在 TXT 记录中存储敏感信息
- 定期审查 DNS 记录
使用 DNSSEC
监控 DNS 查询
实战工作流
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| #!/bin/bash
DOMAIN="example.com" OUTPUT_DIR="dns_enum_${DOMAIN}" mkdir -p $OUTPUT_DIR
echo "[*] DNS 枚举开始: $DOMAIN"
echo "[+] A 记录" dig $DOMAIN A +short > $OUTPUT_DIR/a.txt
echo "[+] MX 记录" dig $DOMAIN MX +short > $OUTPUT_DIR/mx.txt
echo "[+] NS 记录" dig $DOMAIN NS +short > $OUTPUT_DIR/ns.txt
echo "[+] TXT 记录" dig $DOMAIN TXT +short > $OUTPUT_DIR/txt.txt
echo "[+] 区域传送测试" dig axfr @$DOMAIN $DOMAIN > $OUTPUT_DIR/axfr.txt 2>&1
echo "[+] 子域名枚举" subfinder -d $DOMAIN -silent > $OUTPUT_DIR/subdomains.txt
echo "[+] 解析验证" dnsx -l $OUTPUT_DIR/subdomains.txt -o $OUTPUT_DIR/resolved.txt
echo "[*] DNS 枚举完成!结果保存在 $OUTPUT_DIR"
|