1. 项目定位与用途
AutoSubRecon 是一个用 Go 编写的子域名枚举命令行工具,属于安全测试领域的资产侦察类应用。其核心用途是自动化发现目标域名的所有子域名,并验证其 HTTP 可达性,为后续的安全评估提供完整的资产清单。工具通过统一接口整合多种枚举技术,避免用户在多个独立工具间手动切换,显著提升侦察效率与结果完整性。
AutoSubRecon 是一个用 Go 编写的子域名枚举命令行工具,整合被动收集、DNS 暴力破解、TLS 探测、排列变异、JS 抓取与 HTTP 检查。本文详细介绍其安装配置、五种扫描模式选择、命令行参数用法及结果输出,适用于渗透测试、红队行动与漏洞赏金中的自动化资产侦察。
AutoSubRecon 是一个用 Go 编写的子域名枚举 CLI 工具,整合被动收集、DNS 爆破、TLS 探测、排列变异、JS 抓取与 HTTP 检查等多种技术,实现自动化资产侦察与结果过滤。
AutoSubRecon 是一个用 Go 编写的子域名枚举命令行工具,属于安全测试领域的资产侦察类应用。其核心用途是自动化发现目标域名的所有子域名,并验证其 HTTP 可达性,为后续的安全评估提供完整的资产清单。工具通过统一接口整合多种枚举技术,避免用户在多个独立工具间手动切换,显著提升侦察效率与结果完整性。
传统子域名枚举往往依赖多个独立工具(如 subfinder、puredns、gospider 等),流程分散且需手动合并结果,容易遗漏且效率低下。AutoSubRecon 通过模块化设计将被动收集、DNS 爆破、排列变异、TLS 探测、JS 抓取和 HTTP 检查等步骤自动化串联,并内置结果去重与过滤机制,解决了流程碎片化、结果冗余、操作繁琐等问题,提供一站式的子域名发现与验证方案。
该工具主要适用于需要大规模子域名枚举的安全场景,包括但不限于:渗透测试前期的资产梳理与攻击面扩大;红队行动中的目标 reconnaissance 阶段;漏洞赏金计划中的子域名发现与存活验证;企业安全团队的外部资产监控与风险发现。用户可根据时间与资源限制,选择五种扫描模式中的一种进行深度或快速枚举。
基于仓库当前 Go 代码实现,安装步骤如下:首先确保已安装 Go 环境(建议 1.24 或更高版本);其次克隆本仓库到本地;然后克隆 Wordlists 仓库至项目根目录(路径为 ./Wordlists),以确保字典与解析器文件可用;接着在项目根目录执行 go mod download 下载依赖;最后执行 go build 编译生成可执行文件 asr。注意:工具依赖 Wordlists/dns/dns_2m.txt(爆破字典)和 Wordlists/dns/valid_resolvers.txt(DNS 解析器)两个文件,需提前准备。
工具通过命令行参数控制,基本运行格式为 ./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(存活主机)。
从代码结构可见,项目采用清晰的模块化设计,主程序根据模式协调调用 passive、dns、tls、permutations、crawl、http 等独立包,耦合度低。工具直接依赖 projectdiscovery 的 Go 库(如 dnsx、httpx、subfinder、tlsx),而非调用外部二进制文件,这保证了更好的性能与跨平台兼容性。需注意 README 中描述的 bash 脚本工作流与当前 Go 实现存在差异,可能未同步更新,实际行为以 main.go 中的模式定义与模块调用为准。
当前仓库是 Go 语言实现的 CLI 工具,直接集成 projectdiscovery 生态库(如 dnsx、httpx),而 README 描述的 bash 脚本工作流可能对应旧版本或概念设计。实际行为以 cmd/asr/main.go 中的模式定义与模块调用为准,工具更稳定、性能更高。
工具提供 5 种模式:模式 1 仅被动收集,速度最快但深度有限;模式 2 专注主动枚举(爆破+排列+TLS),适合深度发现;模式 3 和 4 包含 HTTP 检查与 JS 抓取,模式 3 含 DNS 爆破,模式 4 无爆破;模式 5 为全功能默认模式,覆盖所有技术。用户可根据时间、网络环境与目标规模选择。
需将 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/ 目录下扩展对应包的功能。