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

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


一、安装 Subfinder

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

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

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

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

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

    tar -xzf subfinder_2.x.x_linux_amd64.tar.gz
    sudo mv subfinder /usr/local/bin/
    
  3. 验证安装
    安装完成后,运行以下命令检查版本号,确认安装成功:

    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 参数指定。


五、实用示例

  1. 基本子域名枚举

    subfinder -d example.com -o subdomains.txt
    
  2. 使用特定数据源并输出 JSON

    subfinder -d example.com -s crtsh,passivetotal -oJ -o subdomains.jsonl
    
  3. 枚举多个域名并验证活跃状态

    subfinder -dL domains.txt -nW -oI -o active-subdomains.txt
    
  4. 设置代理和速率限制

    subfinder -d example.com -proxy http://127.0.0.1:8080 -rl 100
    
  5. 递归枚举并显示详细输出

    subfinder -d example.com -recursive -v
    

六、注意事项

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

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

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


七、总结

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值