子域名发现神器 Subfinder 保姆级教程:选项详解与常用命令

2025-11-11 03:54:17 5561

Subfinder 是一个强大的子域名发现工具,由 ProjectDiscovery 团队开发,用于通过被动在线资源(如证书透明度日志、DNS 数据、搜索引擎等)发现目标网站的子域名。它适用于安全研究人员和渗透测试人员,能够快速高效地枚举子域名。本教程将详细介绍 Subfinder 的安装、使用方法及各个参数的功能,帮助你全面掌握这一工具。

一、安装 Subfinder

在开始使用 Subfinder 之前,你需要先安装它。以下是安装步骤:

使用 Go 安装(推荐) 如果你有 Go 环境,可以通过以下命令直接安装最新版本:

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

安装完成后,Subfinder 的二进制文件会位于 $GOPATH/bin 目录下。确保将该路径添加到你的环境变量中,以便全局调用。

使用预编译二进制文件 你可以从 Subfinder 的 GitHub Releases 页面 下载适用于你操作系统的预编译二进制文件。下载后解压并将其移动到可执行路径,例如:

tar -xzf subfinder_2.x.x_linux_amd64.tar.gz

sudo mv subfinder /usr/local/bin/

验证安装 安装完成后,运行以下命令检查版本号,确认安装成功:

subfinder -version

二、基本用法

Subfinder 的基本用法是通过命令行指定目标域名并运行子域名枚举。以下是一个简单的示例:

subfinder -d example.com

这条命令将对 example.com 执行子域名发现,并将结果输出到终端。

三、常用参数详解

Subfinder 提供了丰富的参数选项,可以根据需求进行灵活配置。以下是参数的分类和详细说明:

1. 输入参数 (INPUT)

-d, -domain string[] 指定目标域名,可以是单个域名或多个域名(用逗号分隔)。 示例:

subfinder -d example.com,example.org

-dL, -list string 指定包含域名列表的文件,每行一个域名。 示例:

subfinder -dL domains.txt

domains.txt 示例内容:

example.com

example.org

2. 数据源参数 (SOURCE)

-s, -sources string[] 指定要使用的特定数据源,用逗号分隔。默认情况下,Subfinder 会使用所有可用源。 示例:

subfinder -d example.com -s crtsh,github

-recursive 仅使用支持递归子域名枚举的源(例如能处理 sub.sub.domain.tld 的源)。 示例:

subfinder -d example.com -recursive

-all 使用所有可用数据源进行枚举(速度较慢)。 示例:

subfinder -d example.com -all

-es, -exclude-sources string[] 排除指定的数据源。 示例:

subfinder -d example.com -es alienvault,zoomeye

-ls, -list-sources 列出所有可用数据源,然后退出。 示例:

subfinder -ls

3. 过滤参数 (FILTER)

-m, -match string[] 指定要匹配的子域名(可以是文件或逗号分隔的列表)。仅输出匹配的子域名。 示例:

subfinder -d example.com -m api.example.com,dev.example.com

-f, -filter string[] 指定要过滤掉的子域名(可以是文件或逗号分隔的列表)。 示例:

subfinder -d example.com -f test.example.com

4. 速率限制参数 (RATE-LIMIT)

-rl, -rate-limit int 设置每秒发送的 HTTP 请求上限。 示例:

subfinder -d example.com -rl 50

-t int 设置并发解析的 goroutine 数量(仅在 -active 模式下生效,默认值为 10)。 示例:

subfinder -d example.com -t 20 -nW

5. 更新参数 (UPDATE)

-up, -update 更新 Subfinder 到最新版本。 示例:

subfinder -up

-duc, -disable-update-check 禁用自动更新检查。 示例:

subfinder -d example.com -duc

6. 输出参数 (OUTPUT)

-o, -output string 指定输出结果的文件。 示例:

subfinder -d example.com -o subdomains.txt

-oJ, -json 将结果以 JSON Lines 格式输出。 示例:

subfinder -d example.com -oJ -o subdomains.jsonl

-oD, -output-dir string 指定输出目录(仅在 -dL 模式下生效)。 示例:

subfinder -dL domains.txt -oD output/

-cs, -collect-sources 在输出中包含每个子域名的数据源(仅在 -json 模式下生效)。 示例:

subfinder -d example.com -oJ -cs

-oI, -ip 在输出中包含主机的 IP 地址(仅在 -active 模式下生效)。 示例:

subfinder -d example.com -nW -oI

7. 配置参数 (CONFIGURATION)

-config string 指定配置文件路径,默认路径为 /root/.config/subfinder/config.yaml。 示例:

subfinder -d example.com -config custom-config.yaml

-pc, -provider-config string 指定数据源的 API 密钥配置文件路径,默认路径为 /root/.config/subfinder/provider-config.yaml。 示例:

subfinder -d example.com -pc provider-config.yaml

-r string[] 指定自定义 DNS 解析器列表,用逗号分隔。 示例:

subfinder -d example.com -r 8.8.8.8,1.1.1.1

-rL, -rlist string 指定包含 DNS 解析器列表的文件。 示例:

subfinder -d example.com -rL resolvers.txt

-nW, -active 仅显示活跃的子域名(通过 DNS 解析验证)。 示例:

subfinder -d example.com -nW

-proxy string 指定 HTTP 代理。 示例:

subfinder -d example.com -proxy http://127.0.0.1:8080

-ei, -exclude-ip 从结果中排除 IP 地址。 示例:

subfinder -d example.com -ei

8. 调试参数 (DEBUG)

-silent 仅显示子域名,不输出其他信息。 示例:

subfinder -d example.com -silent

-version 显示 Subfinder 的版本号。 示例:

subfinder -version

-v 显示详细输出(包括调试信息)。 示例:

subfinder -d example.com -v

-nc, -no-color 禁用终端输出的颜色。 示例:

subfinder -d example.com -nc

-stats 显示数据源统计信息。 示例:

subfinder -d example.com -stats

9. 优化参数 (OPTIMIZATION)

-timeout int 设置超时时间(单位:秒,默认值为 30)。 示例:

subfinder -d example.com -timeout 60

-max-time int 设置枚举的最大等待时间(单位:分钟,默认值为 10)。 示例:

subfinder -d example.com -max-time 5

四、配置文件说明

Subfinder 支持通过配置文件管理数据源的 API 密钥和其他设置。默认的提供者配置文件位于 ~/.config/subfinder/provider-config.yaml。你需要为某些数据源(如 VirusTotal、Shodan)提供 API 密钥。配置文件示例:

provider-config.yaml

binaryedge:

- abc123

censys:

- id:secret

shodan:

- xyz789

编辑完成后,将文件路径通过 -pc 参数指定。

五、实用示例

基本子域名枚举

subfinder -d example.com -o subdomains.txt

使用特定数据源并输出 JSON

subfinder -d example.com -s crtsh,passivetotal -oJ -o subdomains.jsonl

枚举多个域名并验证活跃状态

subfinder -dL domains.txt -nW -oI -o active-subdomains.txt

设置代理和速率限制

subfinder -d example.com -proxy http://127.0.0.1:8080 -rl 100

递归枚举并显示详细输出

subfinder -d example.com -recursive -v

六、注意事项

API 密钥 某些数据源需要 API 密钥才能正常工作。确保在 provider-config.yaml 中正确配置。

网络环境 如果网络受限,可以通过 -proxy 参数设置代理,或者使用 -r 指定自定义 DNS 解析器。

性能优化 使用 -rl 和 -t 参数调整请求速率和并发数,避免触发目标网站的防护机制。

七、总结

Subfinder 是一个功能强大且灵活的子域名枚举工具,通过其丰富的参数和被动数据源,可以高效地发现目标域名的子域名。希望本教程能帮助你熟练掌握 Subfinder 的使用!

Copyright © 2022 世界杯积分_上一届世界杯冠军 - f0cai.com All Rights Reserved.