子域名扫描工具的主要功能是把所有属于那个指定范围的子域名都找出来。它能让人们在进行渗透测试、梳理攻击面以及执行安全审计的时候, 拥有一个非常完整的资产清单。在选择这种工具时, 需要重点关注四个方面的内容。

这四个方面包括数据源的覆盖程度、能够同时处理的吞吐量性能、对结果进行去重和验证的能力、还有合规性的控制措施。下面将会按照工具对比和选型参数以及使用规范的这样三个层次来进行详细的讲解。

主流开源子域名扫描工具对比

Subfinder是用Go语言写的一个工具。它同时支持暴力匹配和被动模式两种工作方式。它的内部已经集成了包括Crunchy、Wayback和AlienVault在内的数十个API数据源。

这个工具的启动速度比较快, 而且占据的系统资源很少。因此, 它能够非常适合用于持续集成流水线中那些需要高频次、大批量进行扫描的场景。

Amass是OWASP出品的工具, 这个工具有被动引擎和主动引擎。被动引擎覆盖的范围很广, 包括DNS、CT Log、公共搜索引擎还有DNS历史记录等多种数据源。主动引擎支持使用字典来进行爆破。它的数据深度是非常强的。因此, 这种工具适合用户去进行一次性的深度资产摸底。

httpx这个东西, 它本身是不去做子域名的枚举工作的。 但是, 当把它和Subfinder或者Amass这些工具串联起来一起用的时候。 它就马上可以用来做快速验证了。

比如它可以去验证每一个子域名是不是处于存活的HTTP状态。 也可以看清楚响应头里边的内容, 还能抓取到指纹信息。 这一套操作下来, 它就是构成了那个“扫描”加上“验证”的完整闭环里非常重要的一块关键东西。

OneForAll是一个国产的开源项目, 它把十五个以上的数据源进行了整合, 在里面还内置了去重功能以及存活检测的功能, 中文版的文档写得挺完善的, 针对在国内网络环境底下怎么绕过那种CDN还有WAF的情况做了适配工作, 因此特别适合内网安全团队直接拿去使用。

选型必须核实的六项参数

1. 源的数据的个数子域名扫描工具龙南市就业服务平台,还有数据更新的频率这两个东西是挂钩的, 如果那个数据的来源多, 而且更新的速度快, 那么出现漏报的这个概率呢就会越低, 所以我们建议在优先选择的时候要去选那种项目, 这个项目是支持你自己去自定义添加api的。

2. 并发与限速: 默认的并发线程数, 还有单域名的每秒请求次数上限, 这些是否可以调整的问题, 会直接对扫描的速度造成影响的, 同时也会对目标端所产生的压力带来直接影响。

子域名扫描工具怎么选?主流工具对比与选型指南(图1)

3. 输出格式: 系统支持将数据以CSV或JSON的形式输出, 同时也支持Machinetree这类结构化格式, 这样做的好处是让后续的工作变得更顺利, 方便把数据接入到SOC或者SIEM系统中去。

4. 关于增量扫描能力, 需要确认是否支持“仅输出新增子域名”, 以此来减少重复告警的情况。

5. 这个存活校验机制是否能够自动把那些已经失效的, 或是发生了重定向的, 又或者是使用了通配符DNS记录的项给过滤掉。

6. 合规控制: 看它里面有没有限制请求的频率, 看在爬虫爬取数据的时候是不是遵守了目标网站的Robots文件的规定, 看用户在开始进行扫描工作之前, 是不是能用白名单或者是黑名单来过滤掉一些东西。

使用规范与常见坑

在进行扫描操作之前, 必须要先把目标域名的管理方的书面授权拿到, 如果没有获得授权的扫描情况, 是属于违法的行为。

我们要把单个目标的每秒查询率维持在50这个数值之下, 这样做的目的就是为了防止目标端那边的Web应用防火墙开启封禁机制, 与此同时也不会对正常的业务运行造成任何不良影响。

最后的结果需要有人工来进行复核因为通配符DNS, 比如*.example.com这种情况, 会生出特别多像是假的小域名。所以必须得用httpx这样的工具再做一次验证才行。

建议大家建立一个按周进行的常规化扫描安排, 把资产清单动态地更新好子域名扫描工具,不要只弄一次然后导出就完了。

结果落地与资产聚合

在实际安全运营的时候, 对于来自多个来源的扫描结果, 需要进行统一的收集和汇集。

举例来说的话, 可以通过gz88.cn这个平台提供的资产聚合以及去重接口功能, 把Subfinder、Amass以及OneForAll这些工具产生的多条输出路径给合并起来, 最后变成一份标准化的清单, 然后再把它同步到SOC平台上去, 这样就能够减少人工进行数据拼接的工作成本了, 也能够确保资产台账里面的内容始终都能够和实际的DNS状态保持高度一致。