如何高效查找域名子域名?优化Kali Linux工具获取更多结果
我太懂你那种用Kali里的工具只挖出两三个子域名,看着付费工具一堆结果的挫败感了——我之前做渗透测试初期也踩过这个坑,分享些实打实的技巧和思路,帮你把本地工具的潜力拉满,甚至达到接近付费工具的效果。
让本地工具输出最佳结果的实操技巧
组合多个工具,拒绝单工具依赖:单个工具的数据源覆盖范围有限,比如
subfinder擅长搜索引擎和公开API,amass在OSINT和DNS枚举上更全面,sublist3r则侧重爬虫抓取。把它们的结果合并去重,能瞬间扩大子域名池。举个例子:# 用subfinder收集基础子域名 subfinder -d example.com -o subs.txt # 用amass做被动枚举补充 amass enum -d example.com -passive -o amass_subs.txt # 合并去重得到完整列表 cat subs.txt amass_subs.txt | sort -u > all_subs.txt开启工具的全数据源模式:很多工具默认只启用基础数据源,得手动开启全部选项,甚至配置免费API密钥(比如Shodan、Censys的免费额度完全够用)。比如
subfinder加-all参数启用所有内置数据源,amass加-active参数做主动探测——别嫌配置密钥麻烦,这一步能挖到很多隐藏的子域名。重点利用证书透明度(CT)日志:大量子域名会出现在SSL证书的SAN字段里,这是付费工具常用的数据源之一。你可以用
certipy专门爬取CT日志:certipy find -d example.com这部分结果经常能补全工具默认漏掉的边缘子域名。
主动探测+字典爆破双管齐下:被动收集完后,用
dnsx验证子域名的存活状态,同时用dnsbrute结合大字典做爆破。比如:# 验证存活子域名并解析记录 dnsx -l all_subs.txt -a -aaaa -cname -o alive_subs.txt # 用seclists里的大字典做爆破 dnsbrute -d example.com -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt
子域名枚举的最佳实践(接近付费工具效果的思路)
手动整合多渠道开源情报:付费工具的核心优势是整合了大量私有数据源,但你可以手动挖取免费的公开数据源:
- 用搜索引擎的
site:*.example.com语法,翻到后面几页找冷门结果; - 去Wayback Machine查目标域名的历史快照,找已经下线但曾经存在的子域名;
- 搜GitHub上的公开代码,找包含目标域名的配置文件、脚本;
- 查目标公司的招聘信息、技术博客,有时候会不小心暴露内部系统的子域名。
- 用搜索引擎的
反向IP/AS号探测:查目标域名对应的AS号,获取其名下的所有IP段,再对IP段做反向解析,能挖到绑定在同一服务器上的其他子域名。比如用
whois查AS号,再用masscan扫IP段,最后用host命令批量反向解析。构建自动化工作流:把收集、验证、探测的流程串起来,用脚本或者工具链自动化处理。比如一个简单的工作流:
subfinder -d example.com | tee subs.txt | amass enum -d example.com -passive | tee amass.txt | cat subs.txt amass.txt | sort -u | dnsx -a | httpx -silent -o alive_web_subs.txt这样从收集子域名到验证存活的Web服务一步到位,节省大量时间。
深挖多级子域名:很多工具默认只挖二级子域名,你可以指定深度参数,比如
amass enum -d example.com -depth 3,这样能挖到dev.api.example.com这种三级甚至更深的子域名,这些往往是付费工具能挖到的“隐藏款”。
其实付费工具的本质就是多数据源聚合+高度自动化,你把本地工具的数据源拉满,结合OSINT补充和主动探测,完全能达到接近的效果。关键是不要依赖单一工具,要组合使用,还要花点精力去挖那些工具覆盖不到的人工情报。
内容的提问来源于stack exchange,提问作者Philippe Delteil

