1.1简介
Subfinder
是一款开源的子域名发现工具,广泛应用于网络安全领域中的信息收集阶段。它可以帮助安全研究人员、渗透测试人员以及开发人员快速找到目标域名下的所有公开可访问的子域名。Subfinder
通过查询多个在线数据源(如公共DNS记录、证书透明度日志等),并结合一些智能算法,能够高效地发现和枚举出大量子域名。
1.1.1主要特点
-
多源查询:
Subfinder
可以从多个数据源获取子域名信息,包括但不限于公共DNS记录、证书透明度日志、WHOIS数据库等。 -
高效率:利用并发处理技术,
Subfinder
能够在短时间内完成大量的子域名查询任务。 -
灵活配置:用户可以根据需要配置不同的查询参数,如设置超时时间、指定输出格式等。
-
易于集成:
Subfinder
支持多种输出格式(如JSON、CSV等),方便与其他工具或脚本集成。 -
社区支持:作为一个开源项目,
Subfinder
拥有一个活跃的开发者和用户社区,持续更新和完善功能。
1.2安装及使用
1.2.1centos安装
在 CentOS 上安装 subfinder
1. 安装 Go 语言环境
首先,你需要安装 Go 语言环境。你可以使用以下命令来安装
sudo yum update
sudo yum install -y golang
2. 安装 subfinder
使用 Go 的 go install 命令来安装 subfinder:
GO111MODULE=on go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest
3. 将 Go 二进制文件路径添加到系统 PATH
默认情况下,Go 会将可执行文件安装到 $GOPATH/bin 目录下。你需要将这个目录添加到系统的 PATH 环境变量中。
打开或创建 ~/.bash_profile 文件:
nano ~/.bash_profile
添加以下行到文件末尾:
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
保存并关闭文件,然后使更改生效:
source ~/.bash_profile
4. 验证安装
检查 subfinder 是否安装成功:
subfinder -version
你应该会看到 subfinder 的版本信息,表示安装成功。
1.2.2在Kali Linux 上安装
1.直接安装
(1)安装subfinder
sudo apt install subfinder
(2)验证
2.使用go安装
GO111MODULE=on go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest
将 Go 二进制文件路径添加到系统 PATH(如果尚未添加):
echo 'export PATH=$PATH:$(go env GOPATH)/bin' >> ~/.bashrc
source ~/.bashrc
验证安装:
subfinder -version
1.2.3在 macOS 上安装
安装 Homebrew(如果尚未安装):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
安装 subfinder:
brew install subfinder
验证安装:
subfinder -version
1.2.4在 Windows 上安装
安装 Go 语言环境(如果尚未安装):
下载并安装 Go 从 官方下载页面。
配置环境变量,确保 GOPATH 和 GOBIN 路径正确。
打开命令提示符或 PowerShell,安装 subfinder:
GO111MODULE=on go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest
将 Go 二进制文件路径添加到系统 PATH:
打开“系统属性” -> “高级” -> “环境变量”。
在“系统变量”部分,编辑 Path 变量,添加 %GOPATH%bin。
验证安装:
subfinder -version
1.2.5直接下载编译好的二进制文件
https://github.com/projectdiscovery/subfinder/releases
1.2.6subfinder基本参数
用法:
./subfinder [选项]
选项:
输入:
-d, -domain 字符串数组 要查找子域的域名
-dL, -list 字符串 包含域名列表的文件,用于子域发现
来源:
-s, -sources 字符串数组 用于发现的特定来源(例如 -s crtsh,github)。使用 -ls 显示所有可用来源。
-recursive 仅使用可以递归处理子域的来源,而不是同时使用递归和非递归来源
-all 使用所有来源进行枚举(较慢)
-es, -exclude-sources 字符串数组 从枚举中排除的来源(例如 -es alienvault,zoomeyeapi)
过滤:
-m, -match 字符串数组 要匹配的子域或子域列表(文件或逗号分隔)
-f, -filter 字符串数组 要过滤的子域或子域列表(文件或逗号分隔)
速率限制:
-rl, -rate-limit 整数 每秒发送的最大 HTTP 请求数量(全局)
-rls, -rate-limits 值 以 key=value 格式为每个提供者设置每秒发送的最大 HTTP 请求数量(例如 -rls hackertarget=10/m)(默认值 ["github=30/m", "fullhunt=60/m", "robtex=18446744073709551615/ms", "securitytrails=1/s", "shodan=1/s", "virustotal=4/m", "hackertarget=2/s", "waybackarchive=15/m", "whoisxmlapi=50/s", "securitytrails=2/s", "sitedossier=8/m", "netlas=1/s", "github=83/m", "subdomaincenter=2/m"])
-t 整数 用于解析的并发 goroutine 数量(仅限 -active)(默认 10)
更新:
-up, -update 更新 subfinder 到最新版本
-duc, -disable-update-check 禁用 subfinder 的自动更新检查
输出:
-o, -output 字符串 输出文件
-oJ, -json 以 JSONL(ines) 格式写入输出
-oD, -output-dir 字符串 输出目录(仅限 -dL)
-cs, -collect-sources 在输出中包含所有来源(仅限 -json)
-oI, -ip 在输出中包含主机 IP(仅限 -active)
配置:
-config 字符串 配置文件(默认 "/root/.config/subfinder/config.yaml")
-pc, -provider-config 字符串 提供者配置文件(默认 "/root/.config/subfinder/provider-config.yaml")
-r 字符串数组 要使用的解析器列表(逗号分隔)
-rL, -rlist 字符串 包含要使用的解析器列表的文件
-nW, -active 仅显示活动子域
-proxy 字符串 与 subfinder 一起使用的 HTTP 代理
-ei, -exclude-ip 从域名列表中排除 IP 地址
调试:
-silent 仅在输出中显示子域
-version 显示 subfinder 的版本
-v 显示详细输出
-nc, -no-color 禁用输出中的颜色
-ls, -list-sources 列出所有可用来源
-stats 报告来源统计信息
优化:
-timeout 整数 在超时前等待的秒数(默认 30)
-max-time 整数 等待枚举结果的分钟数(默认 10)
1.3基本命令
1.直接对目标进行探测
subfinder -d example.com
-d:指定目标域名。
2.输出结果到文件
subfinder -d example.com -o subdomains.txt
subfinder -d baidu.com -o baidu.com.txt
-o:指定输出文件路径。
3.使用 API 密钥
subfinder 支持多个在线服务(如 SecurityTrails、VirusTotal 等),需要 API 密钥才能使用这些服务。
创建配置文件:
subfinder -config init
编辑配置文件(通常位于 ~/.config/subfinder/config.yaml),添加 API 密钥:
yaml
sources:
- securitytrails
- virustotal
apikeys:
securitytrails: your_securitytrails_api_key
virustotal: your_virustotal_api_key
4.使用 API 密钥进行子域名枚举
subfinder -d example.com -config ~/.config/subfinder/config.yaml
5.指定来源
你可以指定 subfinder 使用哪些数据源进行子域名枚举。
subfinder -d example.com -sources securitytrails,virustotal
subfinder -d zsyliaw1.com -sources securitytrails,virustotal
-sources:指定数据源,多个数据源用逗号分隔。
6.排除某些来源
你可以排除某些数据源,以避免不必要的查询。
subfinder -d example.com -exclude-sources bruteforce,passivedns
-exclude-sources:排除的数据源,多个数据源用逗号分隔。
7.示例
# 枚举 example.com 的子域名,并将结果输出到 subdomains.txt 文件
subfinder -d example.com -o subdomains.txt
# 使用 SecurityTrails 和 VirusTotal 进行子域名枚举
subfinder -d example.com -sources securitytrails,virustotal
# 排除 bruteforce 和 passivedns 数据源
subfinder -d example.com -exclude-sources bruteforce,passivedns
8.更新到最新版本
sudo subfinder -up
原文始发于微信公众号(小兵搞安全):subfinder子域名探测
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论