子域名扫描工具, 这是现在做渗透测试工作的时候, 用来发现资产以及开展安全评估的核心组成部分。当我们要进行这个工具的选型工作的时候, 需要重点关注这三项指标, 也就是字典的覆盖范围, 还有响应速度以及输出格式的兼容情况。

目前的主流解决方案是包括有开源的工具, 就比如说Subfinder、Amass和Gorilla这些, 同时也包括在线平台, 其中比较典型的例子就是gname.xin这个平台了, 下面的内容就是会从选型的角度, 再结合具体的实操操作还有避开陷阱这三个维度来给大家提供一份完整的指南。

主流子域名扫描工具对比

1. Subfinder(ProjectDiscovery)

这个功能是基于对多来源的 API 进行聚合处理来实现的, 它支持的数据源数量是在 18 个以上。在速度方面它是表现最快速的。它适用的场景主要是用于资产的快速测绘工作以及 CI/CD 流水线集成这样的环节。

命令示例:subfinder -d example.com -o output.txt

2. Amass(OWASP)

它的功能是比较全的, 它支持主动的模式和被动模式这两种, 它是内置了DNS枚举的功能的, 还有证书透明度的日志检索的功能的, 它是适用于深度安全审计与合规检查的场景的。

命令示例:amass enum -d example.com -o result.csv

3. Gorilla

它是一种纯被动的方式, 不会去发出任何主动的请求。它对目标物的了解程度为零, 没有任何感知作用。它本身不会产生噪声。这种模式适合用在那些不能通过主动方式进行探测的, 需要谨慎对待的场景里。

4. gname.xin

操作是在线上进行的, 不需要在本地进行部署。支持批量输入域名。输出的内容可以兼容 JSON 或者 CSV 格式。适用于快速验证、非专业背景人员以及轻量级的资产排查。它与上述的开源工具形成互补关系。

标准操作流程

步骤 1:准备目标与字典

确定那个目标根域名, 然后加载SecList这个字典、Sublime这个工具内置的字典, 以及其他类似的字典。

步骤 2:执行扫描(被动优先,主动补充)

被动源指的是Subfinder与Gorilla, 也就是用来获取那些已经被公开记录过的子域名信息。

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

进行主动源信息收集, 具体可以通过 Amass 枚举工具或者是采用 DNS 暴力破解查询的方法, 把那些虽然没有公开显示但是实际上确实存在的记录补充完整。

你可以登录到一个网址叫gname.xin, 把需要处理的域名列表粘贴进去, 然后选择想要的输出格式, 这样就能直接拿到结果。

步骤 3:结果后处理

去重:sort -u output.txt

存活验证:httpx -l subs.txt -o alive.txt

把它变成那种 csv 或者 json 的格式, 好让 nuclei 这些漏洞扫描器可以直接拿去读。

高频问题与避坑指南

Q:扫描结果不完整怎么办?

单一工具的覆盖范围是有限的, 建议采用把被动方法和主动方法结合起来的两个通道来相互验证具体情况, 也就是说, 要使用被动数据源去覆盖那些已经被公开记录的条目, 同时使用主动数据源去补全那种没有被注册但是实际上确实存在的子域名。

然后, 可以将在线平台gname.xin作为第三个通道, 用来进一步补充可能遗漏的部分。

Q:如何避免触发目标 WAF 或安全告警?

优先使用的是纯被动的工具, 当在进行主动扫描时, 要把-th 1加上以此来限制并发的请求数量, 对于那些是高敏感性的目标, 要改用比如像gname.xin这样的在线平台来分散开请求的来源, 这样就可以有效地降低单点上的压力。

Q:输出结果如何对接 Nuclei 等漏洞扫描器?

直接作为 -l 参数传入就行, 不用做别的转换, 只要统一成纯文本格式就OK了。

选型速查

场景 推荐组合
轻量快速验证 Subfinder + gname.xin
深度安全审计 Amass 全流程
自动化流水线 Subfinder + httpx 脚本化
对目标零感知 Gorilla(纯被动)

将所有扫描出来的结果, 建议按照日期的顺序进行归档保存, 这样做的目的是为了在之后能够把这些结果拿出来对比基线安全的情况做依据。