Subfinder:被动子域名收集,一条命令跑通

Subfinder:被动子域名收集,一条命令跑通

做渗透测试和漏洞挖掘的人都知道,信息收集是第一步,也是经常被忽略的一步。很多人上来就扫,结果漏掉了一堆隐藏资产。而子域名收集,正是信息收集中绕不开的环节。一个主域名下面可能挂着几十上百个子域名,每个都可能是一个入口。把这层摸清楚了,后续的漏洞扫描才有意义。

Subfinder 是 ProjectDiscovery 团队开发的子域名发现工具,在 GitHub 上拿了 13,617 个 Star。这个团队还做了 Nuclei、HTTPX、Naabu 这些工具,Subfinder 在他们工具链里负责最前面的信息收集环节。在安全从业者的工具箱里,它属于装上了就不太会卸的类型。

正文顶部截图

被动收集的思路

Subfinder 只做一件事:被动子域名枚举。"被动"的意思,指的是不直接扫描目标服务器,只从第三方数据源获取信息。这些数据源包括证书透明度日志、搜索引擎缓存、DNS 数据库等公开渠道。

这个思路带来两个结果。第一,速度快,只需要向数据源发查询请求,不用等目标响应,几秒钟就能拿到第一批结果。第二,隐蔽,目标服务器完全感知不到你的行为,不会触发告警,也不会在目标日志里留下痕迹。

数据源覆盖

Subfinder 内置了几十个被动数据源。crt.sh、AlienVault、Anubis、Censys 这些平台都支持,直接拿来用。配好 API Key 之后,还能接入 Shodan、SecurityTrails、Chaos 这些付费数据源,覆盖面扩大一个档次。

配置文件里管理所有数据源,想开哪个开哪个。也可以指定只用某几个,或者排除某些不想要的数据源。设置 -all 参数会把所有数据源都调一遍,覆盖面最大但耗时也会增加。日常用的话,一般挑几个效果好的数据源就够了。

输出和工作流集成

三种输出方式:终端标准输出、文件写入、JSON Lines。STDIN/STDOUT 的打通让它跟其他工具串联很自然。

一个常见组合是用管道把 Subfinder 的输出丢给 HTTPX 做存活检测:

subfinder -d example.com -silent | httpx

拿到存活子域名后,可以继续丢给 Nuclei 跑漏洞扫描,或者用 Naabu 做端口扫描。ProjectDiscovery 自家的工具链能从头到尾走通,中间不需要做格式转换。

性能和资源

Go 语言写的,编译出来是单个二进制文件,没有运行时依赖。启动快,跑起来占的内存也小。默认并发 10 个协程,可以根据网络条件上下调整。

还支持按数据源分别设置速率限制,比如 -rls "hackertarget=10/s,shodan=15/s",防止某个数据源的 API 被封。这个机制在批量处理几百个域名时很实用。

安装和上手

Go 环境配好之后,一行命令就装好了:

go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest

然后配一下 API Key 就能直接用。不配也能跑,但配了之后能调用的数据源多出一大截,效果差一个量级。API Key 的配置文档写得很清楚,照着做就行。

适用场景

做漏洞赏金的话,Subfinder 放在信息收集第一步。目标域名进去,几分钟后拿到子域名列表,接着用其他工具做存活验证和漏洞扫描。很多漏洞猎人分享的挖洞流程里,第一步基本都是这个操作。

做企业安全评估也一样。拿自己公司的域名跑一遍,能看到有哪些子域名暴露在公网上。不少企业的安全事件,源头都是某个被遗忘的子域名,比如三年前上线后就再没人管过的测试环境。

跟同类工具比,Subfinder 的定位很清晰:只做被动收集,不碰主动扫描。这个定位让它跟 Amass 形成了互补关系,Amass 功能更全但也更重,Subfinder 更轻更快,两者搭配使用的情况不少。

README区域截图

总结

Subfinder 不搞大而全,就盯着被动子域名收集这一块。几十个数据源的覆盖、跟 ProjectDiscovery 工具链的自然配合、Go 语言带来的轻量运行,让它在安全从业者的工具箱里一直有一席之地。

装起来就一行命令,跑一次就知道效果。没试过的可以试试。

posted @ 2026-06-09 07:09  小飞技术快餐  阅读(19)  评论(0)    收藏  举报