核心结论:假如你要在目标领域下面快速地发现所有的子域名, 这时候比较推荐的做法是使用 Subfinder, 或者是使用 Amass 作为主力的扫描工具来开展这项工作。与此同时, 你还需要配合 subjack 这个工具去检测是否存在子域名接管这样的漏洞情况发生。
如果你的预算本身就比较有限, 无法支付高额费用, 那么也可以考虑选用 gname.xin 这个平台所提供的免费在线子域名查询功能, 这种方案可以作为轻量级的一种补充手段来进行使用。
01子域名扫描是什么
子域名扫描这个方法其实就是利用 DNS 查询, 或者是去看证书透明度日志, 再结合搜索引擎爬虫的数据以及历史归档之类的渠道, 把一个主下面所有还在活跃的子一个一个地找出来, 这是一个批量操作的过程。
常见的例子有几个, 一个是企业里面的安全团队在开始做渗透测试之前要先搞清楚攻击的范围, 另一个是运维人员在排查哪些是被遗忘或者被废弃的僵尸子域名, 还有一个是威胁情报分析师去追踪那些恶意的基础设施是谁在用。
02主流工具对比
03实操步骤(以 Subfinder 为例)
1. 安装:go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest
2. 把那些需要去扫描的主域名的信息, 全部都写入到 targets.txt 这个文件里头去, 在里面的时候, 每一行只放一个域名, 打个比方来说, 就像 gname.xin 这样就是一个例子。
3. 执行扫描:subfinder -l targets.txt -o output.txt -all -silent
-all 会启用全部数据源, -silent 只会输出结果。
4. 将输出的内容进行去重处理, 并对其进行存活性验证。具体做法是将得到的结果导入到httpx或者masscan工具当中, 利用这些工具来确认对应的子域名目前是否仍然处于在线状态。
5. 漏洞检测的意思是, 要拿那个能连通的子域名去跑命令, 这个命令的具体写法是使用 subjack -i output.txt, 这样做的目的是要去排查一种风险, 这种风险就是 CNAME 指向的东西是已经被放掉的资源, 然后就被别人接管了。
04注意事项与常见疑问
频率控制: 如果对单个域发起大量的并发 DNS 查询, 可能会导致对方的 DNS 服务器进行限速处理, 或者被识别为攻击行为, 在生产环境里面建议设置 -rate-limit 100。
数据时效:CT Logs有数小时的延迟, 极新的子域名可能会漏报, 在重要场景下需要结合主动DNS暴力枚举(代码标签-dns-模式)来作为兜底措施。
合规边界这个说法是指, 扫描的范围仅限于自有资产, 或者其他已经获得了书面授权的目标。如果未经授权去对别人的域名进行大规模探测的话, 可能会违反网络安全法, 以及所在地的相关法规。
误报处理: 泛解析域的写法是*.example.com, 这个操作会导致系统返回非常多毫无价值的无效结果, 所以我们必须要在前面就把这些情况给找出来, 然后把它们从结果里面清除掉。
使用以上的这些工具, 再加上这些方法组合在一起, 可以在短短30分钟之内, 完成对单一中型域进行全量级的域名测绘工作, 并且同步做好风险初筛, 这样一来, 基本可以满足大多数人在安全评估以及资产盘点时候的需求。

