跳到主要内容
项目档案命令行工具

AutoSubRecon 子域名枚举工具:Go 语言 CLI 安装与 5 种扫描模式使用指南

AutoSubRecon 是一个用 Go 编写的子域名枚举命令行工具,整合被动收集、DNS 暴力破解、TLS 探测、排列变异、JS 抓取与 HTTP 检查。本文详细介绍其安装配置、五种扫描模式选择、命令行参数用法及结果输出,适用于渗透测试、红队行动与漏洞赏金中的自动化资产侦察。

31GoStar 于 2026年4月11日2026年9月15日 更新

AI 总结

AutoSubRecon 是一个用 Go 编写的子域名枚举 CLI 工具,整合被动收集、DNS 爆破、TLS 探测、排列变异、JS 抓取与 HTTP 检查等多种技术,实现自动化资产侦察与结果过滤。

中文项目介绍

AutoSubRecon 是一个专为安全测试设计的子域名枚举命令行工具,采用 Go 语言开发,旨在解决传统枚举流程分散、手动操作繁琐的问题。 它通过模块化设计,将被动信息收集、主动 DNS 暴力破解、排列变异生成、TLS/SSL 证书探测、JavaScript 文件爬取以及 HTTP 服务存活检查等多种技术整合于一体,支持五种扫描模式(1-5),用户可根据需求灵活组合功能。 工具直接集成 projectdiscovery 生态的核心库(如 subfinder、dnsx、httpx、tlsx),确保高效稳定的枚举与解析能力,最终输出过滤后的子域名列表及对应存活主机,适用于渗透测试、红队行动与漏洞赏金中的资产发现阶段。

详细信息与使用说明

1. 项目定位与用途

AutoSubRecon 是一个用 Go 编写的子域名枚举命令行工具,属于安全测试领域的资产侦察类应用。其核心用途是自动化发现目标域名的所有子域名,并验证其 HTTP 可达性,为后续的安全评估提供完整的资产清单。工具通过统一接口整合多种枚举技术,避免用户在多个独立工具间手动切换,显著提升侦察效率与结果完整性。

2. 解决的问题

传统子域名枚举往往依赖多个独立工具(如 subfinder、puredns、gospider 等),流程分散且需手动合并结果,容易遗漏且效率低下。AutoSubRecon 通过模块化设计将被动收集、DNS 爆破、排列变异、TLS 探测、JS 抓取和 HTTP 检查等步骤自动化串联,并内置结果去重与过滤机制,解决了流程碎片化、结果冗余、操作繁琐等问题,提供一站式的子域名发现与验证方案。

3. 适用场景

该工具主要适用于需要大规模子域名枚举的安全场景,包括但不限于:渗透测试前期的资产梳理与攻击面扩大;红队行动中的目标 reconnaissance 阶段;漏洞赏金计划中的子域名发现与存活验证;企业安全团队的外部资产监控与风险发现。用户可根据时间与资源限制,选择五种扫描模式中的一种进行深度或快速枚举。

4. 安装方式

基于仓库当前 Go 代码实现,安装步骤如下:首先确保已安装 Go 环境(建议 1.24 或更高版本);其次克隆本仓库到本地;然后克隆 Wordlists 仓库至项目根目录(路径为 ./Wordlists),以确保字典与解析器文件可用;接着在项目根目录执行 go mod download 下载依赖;最后执行 go build 编译生成可执行文件 asr。注意:工具依赖 Wordlists/dns/dns_2m.txt(爆破字典)和 Wordlists/dns/valid_resolvers.txt(DNS 解析器)两个文件,需提前准备。

5. 使用方式

工具通过命令行参数控制,基本运行格式为 ./asr -d <目标域名>。关键参数包括:-mode 指定扫描模式(1-5,默认 5 为全扫描),-w 自定义 DNS 爆破字典路径,-r 自定义 DNS 解析器文件路径,-t 设置并发线程数(默认 50)。五种模式分别为:1-仅被动(subfinder);2-DNS 爆破+TLS+排列;3-被动+TLS+爆破+HTTP+抓取;4-被动+TLS+HTTP+抓取(无爆破);5-全功能。扫描结果将保存至 subs/filtered_subs.txt(子域名)与 subs/filtered_hosts.txt(存活主机)。

6. 补充说明与实现特点

从代码结构可见,项目采用清晰的模块化设计,主程序根据模式协调调用 passive、dns、tls、permutations、crawl、http 等独立包,耦合度低。工具直接依赖 projectdiscovery 的 Go 库(如 dnsx、httpx、subfinder、tlsx),而非调用外部二进制文件,这保证了更好的性能与跨平台兼容性。需注意 README 中描述的 bash 脚本工作流与当前 Go 实现存在差异,可能未同步更新,实际行为以 main.go 中的模式定义与模块调用为准。

思维导图

AutoSubRecon
核心功能
子域名枚举
存活主机检测
结果过滤去重
扫描模式
模式1: 仅被动收集
模式2: DNS爆破+TLS+排列
模式3: 全功能+HTTP+抓取
模式4: 无DNS爆破
模式5: 完整扫描(默认)
技术模块
passive: 被动源收集
dns: 解析与暴力破解
tls: 证书探测
permutations: 排列变异
crawl: JS抓取
http: HTTP存活检查
依赖生态
subfinder
dnsx
tlsx
httpx

常见问题

AutoSubRecon 与 README 中描述的 bash 脚本版本有何区别?

当前仓库是 Go 语言实现的 CLI 工具,直接集成 projectdiscovery 生态库(如 dnsx、httpx),而 README 描述的 bash 脚本工作流可能对应旧版本或概念设计。实际行为以 cmd/asr/main.go 中的模式定义与模块调用为准,工具更稳定、性能更高。

如何选择合适的扫描模式?

工具提供 5 种模式:模式 1 仅被动收集,速度最快但深度有限;模式 2 专注主动枚举(爆破+排列+TLS),适合深度发现;模式 3 和 4 包含 HTTP 检查与 JS 抓取,模式 3 含 DNS 爆破,模式 4 无爆破;模式 5 为全功能默认模式,覆盖所有技术。用户可根据时间、网络环境与目标规模选择。

依赖的 Wordlists 仓库如何准备?

需将 https://github.com/h0tak88r/Wordlists 克隆至项目根目录,路径必须为 ./Wordlists。确保其中包含 dns 子目录,且 dns_2m.txt(DNS 爆破字典)与 valid_resolvers.txt(可靠 DNS 解析器列表)文件存在。工具默认从 Wordlists/dns/ 读取这些文件,也可通过 -w 和 -r 参数自定义路径。

扫描结果文件保存在哪里?格式如何?

工具在项目根目录创建 subs/ 目录,结果文件包括 filtered_subs.txt(去重后的子域名列表,每行一个域名)和 filtered_hosts.txt(对应子域名的 HTTP 存活主机信息,通常包含 URL 或 IP:端口)。具体输出格式由 httpx 等库决定,一般为可扩展的文本列表,便于导入其他工具进一步分析。

是否支持自定义被动信息源或扩展功能?

当前实现主要集成 subfinder 进行被动收集,被动源的配置依赖于 subfinder 本身的设置(如 API 密钥),工具本身未暴露额外被动源选项。其他模块(如 DNS 爆破、排列生成)的参数可通过命令行调整(如字典、解析器、线程数),但高级配置需修改源码。项目采用模块化结构,开发者可在 pkg/ 目录下扩展对应包的功能。