DFC302/waybackwhen
GitHub: DFC302/waybackwhen
一款整合 Wayback Machine、Common Crawl、VirusTotal 等多个被动数据源、对目标域名进行历史 URL 聚合与去重的安全侦察工具。
Stars: 0 | Forks: 0
# waybackwhen
一个多源被动 URL 枚举工具,可一次性聚合来自 Wayback Machine、Common Crawl、AlienVault OTX、URLScan、VirusTotal 等平台的历史端点。
## 它的功能
对目标域名运行五个被动工具,并将结果合并为一个去重后的输出文件。适用于在不直接接触目标的情况下进行表面映射、端点发现和参数挖掘。
**涵盖的数据源:**
| 工具 | 数据源 |
|------|---------|
| waybackurls | Wayback Machine |
| gau | Wayback Machine, Common Crawl, AlienVault OTX, URLScan |
| waymore | Wayback Machine, URLScan, VirusTotal, Common Crawl |
| urlfinder | Wayback Machine, Common Crawl |
| paramspider | Wayback Machine (侧重于参数) |
**工具并发性:** `gau` 和 `urlfinder` 并行运行(不同的后端)。`waybackurls`、`waymore` 和 `paramspider` 按顺序运行,以避免同时过度请求 Wayback CDX API。
## 安装说明
### 前置依赖
安装 Go 工具:
```
go install github.com/tomnomnom/waybackurls@latest
go install github.com/lc/gau/v2/cmd/gau@latest
go install github.com/projectdiscovery/urlfinder/cmd/urlfinder@latest
```
安装 waymore:
```
git clone https://github.com/xnl-h4ck3r/waymore.git ~/tools/waymore
pip install -r ~/tools/waymore/requirements.txt
```
安装 paramspider:
```
pip install paramspider
```
安装 tldextract(`--apex` 参数必需):
```
pip install tldextract
```
### 安装 waybackwhen
```
git clone https://github.com/DFC302/waybackwhen.git
cd waybackwhen
chmod +x waybackwhen
sudo cp waybackwhen /usr/local/bin/ # optional: add to PATH
```
### 验证设置
```
waybackwhen --check
```
这会打印一个状态表,显示哪些工具已安装及其位置:
```
waybackwhen — tool check
TOOL STATUS PATH
-----------------------------------------------
waybackurls [OK] /home/user/go/bin/waybackurls
gau [OK] /home/user/go/bin/gau
urlfinder [OK] /home/user/go/bin/urlfinder
paramspider [OK] /usr/local/bin/paramspider
waymore [OK] /home/user/tools/waymore/waymore.py
python3 [OK] /usr/bin/python3
tldextract [OK] /usr/lib/python3/dist-packages/tldextract
```
缺失的工具会在运行时被静默跳过——如果某个工具不存在,脚本不会崩溃,只是不会提供相应的结果。
## 用法
```
waybackwhen [options] [domain]
```
### 选项
| 参数 | 完整形式 | 描述 |
|------|-----------|-------------|
| `-e` | `--exclude` | 从所有结果中过滤掉静态资源(图片、字体、CSS、JS 库等) |
| `-a` | `--apex` | 去除子域名,转而针对已注册的顶级域名运行所有工具 |
| `-c` | `--check` | 检查已安装的工具及其位置,然后退出 |
| `-s TOOLS` | `--skip TOOLS` | 要跳过的工具的逗号分隔列表(例如 `waymore` 或 `gau,waybackurls`) |
| `-f FILE` | `--file FILE` | 从文件中读取域名(每行一个) |
| `-p N` | `--parallel N` | 并发处理的域名数量(默认:1) |
| `-l FILE` | `--log FILE` | 将带有时间戳的运行日志写入 FILE(如果缺少则自动添加 `.log` 扩展名) |
**用于 `--skip` 的有效工具名称:** `waybackurls`、`gau`、`urlfinder`、`waymore`、`paramspider`
### 输入方式
**单个域名:**
```
waybackwhen example.com
```
**从文件读取:**
```
waybackwhen -f domains.txt
```
**从标准输入读取:**
```
cat domains.txt | waybackwhen
```
## 示例
**针对单个域名的基础运行:**
```
waybackwhen example.com
```
**针对子域名运行,但提取顶级域名级别的记录:**
```
waybackwhen --apex api.example.com
# 剥离至 example.com 并对其运行所有工具
```
**排除静态资源(为端点挖掘提供更简洁的输出):**
```
waybackwhen --exclude example.com
```
**并发运行多个域名并记录日志:**
```
waybackwhen -f domains.txt -p 5 -l run.log
```
**跳过较慢的工具以加快运行速度:**
```
waybackwhen --skip waymore example.com
```
**跳过多个工具:**
```
waybackwhen --skip gau,waybackurls example.com
```
**完整组合 —— 顶级域名、排除、跳过、并发、日志:**
```
waybackwhen -f subdomains.txt --apex --exclude --skip waymore -p 3 -l hunt.log
```
## 输出
每个域名都会在当前目录下生成一个以该域名命名(点替换为下划线)的 `.wbw` 文件:
```
example_com.wbw
api_example_com.wbw
```
文件每行包含一个 URL,经过排序和去重。如果某个域名返回零结果,输出文件将被自动删除。
**输出示例:**
```
https://example.com/api/v1/users
https://example.com/login?redirect=/dashboard
https://example.com/search?q=FUZZ
https://example.com/wp-login.php
```
## 注意事项
- **Apex 参数与多段 TLD:** `--apex` 使用 `tldextract`,它能正确处理复杂的 TLD(例如 `api.example.co.uk` → `example.co.uk`)。如果未安装 `tldextract`,则回退为两段式拆分。
- **paramspider 输出:** paramspider 会将参数值替换为 `FUZZ` 占位符(例如 `?id=FUZZ`)。这是有意为之——它可以清晰地提取带有参数的端点。
- **速率限制:** 出于设计,waybackurls、waymore 和 paramspider 都会按顺序查询 Wayback CDX API。并发运行多个域名(`-p`)会成倍增加查询量——请设置合理的并发值。
- **waymore 配置:** 当配置了 URLScan 和 VirusTotal 的 API key 时,waymore 会返回明显更多的结果。有关设置,请参阅 [waymore 的 README](https://github.com/xnl-h4ck3r/waymore)。
标签:GitHub, Snort++, 实时处理, 应用安全, 攻击面挖掘, 被动扫描, 资产测绘, 逆向工具