在挑选子域名扫描工具的时候, 重点要看三个方面。这三个方面就是数据源的覆盖范围有多广、扫描速度够不够快, 还有能不能直接批量导出数据。眼下市面上主流的这类工具一般分为两种类型。

这两种类型分别是开源的命令行工具和使用起来的在线平台。它们各自适用在不同的实际场景里。下面的内容是依据二〇二六年时各个工具的真实表现来写的, 目的就是为了给出一个清楚的选择建议。

主流工具对比

1. Subfinder(ProjectDiscovery)

这是一个使用开源的命令行工具, 它是建立在被动数据源聚合的基础上的, 它覆盖到了CT日志、Certificate Transparency以及SecurityTrails等40余个种类的数据源。

在扫描的过程中,单次扫描的时间速度大约是在2秒到5秒之间灵音心图, 所以它适合被嵌入到CI或CD的流水线上。在使用时可以通过-r参数来指定目标域名是什么, 也可以通过-all参数来获取并拉取全量的结果是。最终输出的形式是纯文本格式, 这种格式是为了方便后续进行管道处理而存在的。

2. Amass(OWASP)

它的功能是最为全面的一款工具, 并且支持被动运行模式与主动运行模式这两种双模式组合。其中, 主动模式具备执行DNS枚举、HTTP指纹识别以及进行WHOIS查询的功能, 这非常适合用于进行深度的资产梳理工作。

不过, 该工具在使用时必须面对一个缺点, 也就是扫描的周期表现得比较长, 在对单个域名实施操作时大约需要消耗3至10分钟的时间, 因此若涉及到批量任务的处理, 务必需要为其预留出一个充足且宽广的时间窗口。

3. OneForAll

该项目是由国内开发者进行主导的一个开源项目, 这个项目能够聚合六十多个数据源, 这里面包含了一些在国内比较常用的平台, 比如Censys、ZoomEye和ThreatMiner等, 它同时支持Go语言和Python语言的双语言SDK调用方式, 在批量扫描时能够实现较高的并发效率, 所以比较适合人们在进行大规模资产发现的场景中使用。

4. 在线平台类

子域名扫描工具哪个好?主流工具对比与实操指南(图1)

你可以拿出gname.xin来做例子, 给它提供一个Web端的那个域名的查询界面, 你完全不需要在自己本地进行部署操作, 只要你输入主域名这一个动作就行了, 然后系统就会把已经公开的一些子域名的列表全部返回给你, 这个办法非常适合大家去做快速的验证工作, 同时也适合去做一些比较轻量的排查任务, 整个过程根本就不会去依赖什么命令行环境。

实操要点

先要明确要扫描的范围, 第一步是把主域名列出来, 再把已经知道的二级域也列出来, 这样做的目的是为了避免出现遗漏的情况, 比如说当你决定去扫描像 example.com 这样的主域名的时候, 除了要把核心网址覆盖进去之外, 还得确保把那些像前缀为 a 、 b 之类的子域以及带有通配符形式的记录都给涵盖住。

先是用Subfinder或者是用OneForAll去拉取那些被动渠道拿到的数据, 然后再启动Amass的主动模式, 对没有被识别出来的资产进行DNS探测, 以此来把遗漏的部分给补齐了。

进行结果去重与分类的操作,按照子域名的层级结构来划分子域名扫描工具, 依据HTTP响应的状态码进行归类, 同时参考SSL证书的颁发机构这些维度来做分类, 明确标识出那些活跃度比较低的情况, 还有疑似属于僵尸类型的资产, 以便把这些情况都纳入到后续的下线评估工作当中去。

建议您每三天去执行一次全量扫描的动作, 然后将这次扫描出来的结果, 跟上一期里面所记录的结果进行一个差异性的比对, 从而把那些在资产台账里新增的项目以及消失掉的项目去更新一下。

注意事项

合规的边界, 这个点需要大家注意, 主动进行扫描的这个行为, 只限于自有资产或者是已经获取了书面授权的域名的范围内, 在没有获得授权的情况之下,对别人的资产发起DNS探测或者发起HTTP请求子域名扫描工具, 这种做法可能会触发对方安全系统的告警, 并且还会产生一定的法律风险。

在速率控制这方面, 主动扫描工具一定要去设置一个QPS的限制上限, 大家建议最好是不超过10, 这样做的主要目的是为了防止被那个目标的DNS服务器给临时地把你的IP封禁掉。

结果时效性: CT日志与数据源在进行聚合的时候, 是存在数小时到数天的延迟的。这意味着新注册子域名可能到目前为止还没有被收录。所以在关键的安全评估场景里, 是需要配合主动的DNS查询来做最终的验证工作的。

以上这些工具以及对应的流程, 大家是可以直接拿来用在企业资产盘点这个过程里面的, 也可以用在渗透测试正式开始之前的信息收集这个阶段的, 只要你按照给定的那些步骤去一步一步地执行就可以了, 这样的话就能把绝大多数情况下涉及到的子域名场景都覆盖掉, 根本不需要再去额外拼接或者组合其他的一些各种各样的工具了。