用途
子域名枚举技能用于在任何侦察流程的起始阶段,全面发现目标域名下的子域名。它通过证书透明度日志、被动 API 聚合和 DNS 解析等方式,揭示暂存环境、内部管理面板、API 网关、被遗忘的 WordPress 安装等通常比生产站点更薄弱的入口点。
主要能力
- 被动枚举:查询 crt.sh(证书透明度日志)、crt.name(历史证书透明度数据)和 subfinder(聚合 VirusTotal、Shodan、DNSdumpster 等被动 API),收集子域名。
- DNS 解析:使用 dnsx 批量解析 A/AAAA/CNAME 记录,速度远快于 dig 循环,可发现非 HTTP 服务。
- 存活探测:使用 httpx 探测 HTTP/HTTPS 存活主机,获取状态码、技术栈、页面标题和重定向位置。
- 子域名分类:按暂存/开发、管理/内部、API、CDN/静态、邮件、云服务、遗留系统等模式对子域名进行归类。
- 子域名接管检查:检查悬空 CNAME,识别指向未认领服务的子域名,并提示可能的提供商(AWS、Azure、GitHub Pages、Heroku、Vercel、Zendesk 等)。
- 排列与预测:使用 gotator 生成智能排列,结合 puredns 解析,发现隐藏服务。
- TLD 扩展:使用 tldbrute 或 IANA TLD 列表发现同一组织拥有的其他顶级域名变体。
- 实时证书监控:使用 gungnir 或 certwatcher 监控证书透明度日志,在新子域名签发时即时捕获。
使用方式
技能以 shell 脚本形式提供,按步骤执行:
- 被动枚举:设置 DOMAIN 和 OUTPUT_DIR,运行 crt.sh、crt.name 和 subfinder 查询,合并去重得到 all_passive.txt。
- DNS 解析:使用 dnsx 批量解析,输出子域名到 IP 的映射,并识别共享托管集群。
- 存活探测:使用 httpx 探测存活主机,按状态码和技术栈分类,并提取 WordPress 子域名及 MX/NS/TXT 记录。
- 子域名分类:通过 grep 模式匹配将子域名分为暂存/开发、管理/内部、API、CDN/静态、邮件、云服务、遗留系统等类别。
- 子域名接管检查:遍历子域名,检查 CNAME 目标是否解析,识别可能的接管机会及提供商。
- 排列与预测:使用 gotator 生成排列,puredns 解析。
- TLD 扩展:使用 tldbrute 或 IANA TLD 列表发现其他 TLD 变体。
- 实时证书监控:使用 gungnir 或 certwatcher 监控新证书。
适用场景
- 开始对任何目标域名进行侦察。
- 生产站点防护良好,需要寻找更薄弱的入口点。
- 在执行 wp-mass-recon 技能后,为每个 WordPress 目标枚举子域名。
- 为目标组织构建完整的资产清单。
限制与注意事项
- 前置条件:需要 curl、httpx、dig、jq、dnsx、subfinder 等工具,以及操作员提供的 DNS 爆破字典。需要获得向 crt.sh、crt.name 和 subfinder 提供商等第三方被动源披露域名的授权。
- crt.sh 速率限制:可能返回空 JSON,需使用延迟或直接查询 PostgreSQL 转储。
- subfinder 需要 API 密钥:部分源(VirusTotal、Shodan)需要在 ~/.config/subfinder/provider-config.yaml 中配置 API 密钥,否则结果有限。
- 通配符 DNS:如果 *.example.com 解析到同一 IP,所有子域名在 httpx 中都会显示为存活,需通过解析随机字符串检查。
- Cloudflare 代理:位于 Cloudflare 后的子域名会显示 Cloudflare IP 而非源站 IP,需使用 SecurityTrails 或 DNSDumpster 获取历史 DNS 记录。
- 验证要求:每个子域名必须用 httpx 探测确认 HTTP/HTTPS 服务;解析的 IP 必须与已知 CDN IP 交叉比对;子域名接管候选必须手动验证 CNAME 目标未被认领;所有存活子域名应记录 URL、HTTP 状态、技术栈和页面标题。