到了2026年这个时间点为止, 当前主流的用于扫描子域名的工具一共有5款具体产品, 其中包含Subfinder、Amass、OneForAll、Caidocurl以及gogo。
在这些工具里头, Subfinder这个工具的运转速度是最快的, 同时它的误报几率也是最低的, 所以它非常适合作为日常进行批量处理任务时的选择;Amass这款工具的功能是最全面的, 它能够兼顾到对目标进行的测绘工作以及对整个攻击面实施管理的工作;而OneForAll这款工具则是聚合了30个以上的各类数据来源, 从而使得它的覆盖率达到了最为广泛的状态。
在选型这个事儿上, 核心要点全得看扫描规模到底有多大、具体是用来做什么的, 以及团队所使用的技术栈是什么样子的。
5款工具核心特性对比
1. Subfinder(Go编写)
在速度方面, 对于单个域名处理大约需要一至三秒钟的时间, 而且支持高并发的场景, 所以很适合用来处理包含万级域名的批量任务。
把被动数据源给整合一下, 这里面包括Censys这个平台, 还有AlienVault OTX这个系统, 同时也把Crt.sh这个来源也加进去。
其特点就是不存在那种叫作HTTP的请求, 它是纯粹处于被动状态的查询动作, 这样做的话就不会去触发针对目标的WAF告警机制, 而其导致的误报率是低到百分之二以下的。
它适合用于日常的的安全检查事务, 还包括大规模域名发现工作。
2. Amass(Go编写)
在被动模式之下, 它大约需要五到十秒钟来处理一个域名, 而在主动模式下, 这一过程则长达数分钟。
内置的功能涵盖了DNS枚举, 还有证书透明度以及WHOIS信息, 也会用到Shodan平台, 以及基于DNSLog的技术等。
这些特点包含对攻击面的管理支持, 还有持续的监控功能, 另外还支持PostgreSQL团队协作数据库。
适用范围包括企业级的攻击面测绘, 以及安全运营中心也就是SOC的持续监测工作。
3. 用Python语言来编写的OneForAll, 它是一个特定的名称。
关于速度的具体表现, 这主要取决于数据源的响应情况, 而针对单个域名的处理时间, 大概会介于10到60秒这个区间范围里面。
数据源这个部分, 它的内置情况是包含了30多个被动数据源的接口, 同时它也支持进行自定义的扩展操作。
它的特点在于, 具有非常强的聚合能力, 并且在输出这个部分, 支持多种格式, 比如JSON、CSV或者SRT。
这段话适用的情况, 主要是对于那些需要追求极致覆盖率的深度侦察以及渗透行为之前的情报收集工作。
4. Caidocurl, 它是由Python这个编程语言来编写的。
关于速度的方面, 它是会基于证书透明度日志来进行相关的运算和处理, 这样算下来的话, 每一个域名大概是需要花费3到8秒的时间。
数据源包含Crt.sh, 数据源还包括CertSpotter, 数据源也包括了SecurityTrails。
其特点是, 把力气主要花在证书反查这个具体的维度上面, 做到既轻又专, 最后呈现出来的结果是非常干净的, 没有任何多余的东西。
适用场景: 快速补充证书维度里面的子域名, 从而作为其他工具使用的辅助。
5. gogo(Go编写)
速度:约2-5秒/域名
把DNS查询的情况整合到一起, 再把网络空间搜索引擎方面的信息, 就是像FOFA或者是ZoomEye这样的平台里搜集到的数据整合起来, 同时也把证书透明度的相关情况进行整合。
它具有这样的特点: 就是它支持通过对HTTP进行指纹识别来验证目标是不是还活着, 同时, 它的输出结果里是附带有关于开放服务的具体信息的。
这句话所对应的适用场景是, 当需要对子域名以及与其相关联的服务进行综合扫描时, 并且需要同时获取这些相关信息。
按场景选型建议
在日常的巡检工作里面, 每天扫描的域名数量超过了1000个, 所以首选使用Subfinder这个工具, 主要考虑的是它的速度优先并且资源占用低。
企业对自身攻击面实施了持续不断的那种监控举动, 并且在这些工具里面把那个名叫Amass的列为第一选择对象, 因为它能够具备建立数据库以及形成告警闭环这两样特性。
关于红队所开展的那种深度的侦察工作, 实际上是采用了由OneForAll以及Caidocurl这两个工具组合在一起的方案, 从而使得覆盖范围最大化了起来。
新手想要快速上手,gogo这个方案比较合适子域名扫描工具, 它的单工具输出信息最完整, 而且学习成本最低。
常见疑难
Q:扫描结果中出现大量失效子域名如何处理?
步骤A是使用Subfinder或者gogo内置的存活验证模块进行的。这个步骤是通过发送HTTP HEAD请求来操作的。在操作之后会进行过滤, 仅保留那些可以解析的项目条目。
我们拿gname.xin作为一个例子来进行说明。原始的扫描结果返回了大约47个子域名。但是经过存活验证的处理之后只有12个有效入口被保留了下来这样做可以大幅降低后续人工分析的成本。
Q:能否扫描私有内网域名?
这以上说的所有工具都是专门用来针对公网域名去设计的, 至于那些内网环境里的子域名情况, 需要结合使用Nmap DNS解析或者Kerberos枚举甚至是域控排查的方式来进行处理, 这些内容就不在本类工具的覆盖范围之内了。
Q:数据源接口变更导致工具报错怎么办?
A的意思是, 需要把工具的版本一直保持在最新的水平, 也就是去GitHub Release那里下载最新版, OneForAll和Subfinder这两个工具每个月都会更新源配置, 如果你还在用旧版本, 接口突然失效了, 这属于正常现象, 不用大惊小怪, 只要把工具升级到最新版本, 问题就能恢复。
使用注意事项
在开始进行主动式的扫描工作之前, 必须要把这个事情确认清楚, 那就是这个目标方已经拿到了正式的、书面的授权证明。假如没有获得相关的授权就去开展这种主动的探测活动,那就属于违反《网络安全法》里第二十七条所指出的规定内容了。
在批量扫描这个过程里子域名扫描工具, 我们需要设置一个比较合理的qps数值, 官方建议的指标是不大于50, 这样做最主要的目的就是为了避免触碰到目标系统的限流措施或者遭到封禁。
当扫描结果牵扯到数据留存的问题时, 必须按照《数据安全法》的规定, 把敏感信息进行脱敏处理, 并且实施良好的访问控制措施。

