SekharPatel/bugBounty-auto-recon
GitHub: SekharPatel/bugBounty-auto-recon
一款基于状态跟踪的 bug bounty 自动化侦察流水线,串联多个 ProjectDiscovery 工具实现增量式子域名发现与漏洞扫描,并通过多渠道通知实时推送结果。
Stars: 0 | Forks: 0
# Bug Bounty 自动侦察
`bugBounty_auto_recon.py` 是一个健壮的、具备项目感知能力的侦察 pipeline,专为授权的安全测试和 bug bounty 猎人构建。
它会读取目标范围,发现子域名,使用 SQLite 跟踪历史状态,并专门扫描新发现的主机以节省时间和资源。所有事件都会被妥善记录,并使用 ProjectDiscovery 的 `notify` 工具无缝广播通知。
该工具旨在被重复执行(通过 cron 或 systemd),可完全在无头环境下运行。
## 🚀 核心功能
* **有状态执行 (SQLite)**:子域名和漏洞会在本地进行记录。只有*新增*的子域名才会经历密集的扫描 pipeline(HTTP 探测、端口扫描、爬取和漏洞扫描)。
* **多工具 Pipeline**:
1. `subfinder`:发现子域名。
2. `httpx`:识别存活 Web 服务器。
3. `naabu`:扫描开放端口并识别服务指纹。
4. `katana`:动态爬取存活的 URL(与 Naabu 并发运行)。
5. `nuclei`:扫描合并去重后的 URL 以发现漏洞。
* **通用通知 (`notify`)**:用 ProjectDiscovery 的 `notify` 替换了硬编码的 Telegram 支持。你现在可以接收来自 Discord、Slack、Telegram、Teams 或自定义 webhook 的提醒。
* **逐步警报**:可配置的进度跟踪。在每个工具完成执行时接收单独的警报,随后是一份格式精美的 Markdown 摘要报告。
* **无头服务就绪**:完全利用 Python 的 `logging` 模块(没有标准 CLI `print()` 带来的杂音),使其非常适合作为 Linux 后台服务运行。
* **自动化引导**:直接通过 CLI 快速接入新的目标域名。
## 🛠️ 环境要求
### Python
* Python 3.10+
* 仅使用内置的标准库模块(无需 `pip install`)。
### 外部工具
以下二进制文件必须已安装并在你的系统 `$PATH` 中可用:
* [subfinder](https://github.com/projectdiscovery/subfinder)
* [httpx](https://github.com/projectdiscovery/httpx)
* [naabu](https://github.com/projectdiscovery/naabu)
* [katana](https://github.com/projectdiscovery/katana)
* [nuclei](https://github.com/projectdiscovery/nuclei)
* [notify](https://github.com/projectdiscovery/notify)
通过 Go 轻松安装它们:
```
go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest
go install -v github.com/projectdiscovery/httpx/cmd/httpx@latest
go install -v github.com/projectdiscovery/naabu/v2/cmd/naabu@latest
go install -v github.com/projectdiscovery/katana/cmd/katana@latest
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
go install -v github.com/projectdiscovery/notify/cmd/notify@latest
```
## ⚙️ 配置 (.env)
该脚本依赖于本地的 `.env` 文件进行配置。请将 `.env.example` 复制为 `.env`。
```
cp .env.example .env
nano .env
```
### 核心变量
| 变量 | 描述 | 默认值 |
| :--- | :--- | :--- |
| `ROOT_DIR` | 用于存储所有数据库、目标、日志和产出物的主目录。 | `recon_watch_data` |
| `NOTIFY_BIN` | `notify` 二进制文件的路径。 | `notify` |
| `NOTIFY_ID` | 在你的 `provider-config.yaml` 中配置的可选提供商 ID,用于路由消息。 | *(空)* |
| `NOTIFY_STEP_BY_STEP` | 如果为 `true`,则在每个工具完成后发送警报。如果为 `false`,则仅发送最终摘要。 | `true` |
| `MAX_JOB_RETENTION_DAYS` | 自动删除超过 X 天的工具输出产出物。 | `30` |
*(所有工具二进制文件和超时时间均可在 `.env` 文件中配置)。*
## 🏗️ 安装与使用
### 1. 初始化环境
在运行第一次扫描之前,请初始化核心文件夹结构和 SQLite 数据库:
```
python3 bugBounty_auto_recon.py --setup
```
这将创建主目录 `ROOT_DIR`(例如 `recon_watch_data/`),以及 `targets/`、`work/`、`logs/` 和空的 `recon.db` 数据库。
### 2. 添加目标
轻松将新的目标域名引导至 pipeline 中:
```
python3 bugBounty_auto_recon.py -d example.com
```
这会自动格式化项目名称,并使用你的域名创建 `recon_watch_data/targets/example_com.txt` 文件。
### 3. 运行 Pipeline
运行脚本以对所有配置的目标执行完整的 pipeline:
```
python3 bugBounty_auto_recon.py
```
*注意:如果你的 `targets/` 文件夹中不存在任何域名,脚本将安全地记录错误并退出。*
## 📂 数据存储与产出物
所有数据都安全地沙箱化隔离在你配置的 `ROOT_DIR` 下。
```
recon_watch_data/
├── recon.db # SQLite tracking database
├── logs/
│ └── recon_watch.log # Headless service logs
├── targets/
│ ├── example_com.txt # Program scope files
│ └── company_b.txt
└── work/ # Artifacts (JSONL, TXT) generated per run
└── example_com/
└── 20260616_120000/
├── roots.txt
├── new_subdomains.txt
├── httpx_hosts.txt
├── naabu.jsonl
├── katana_crawled_urls.txt
└── nuclei.jsonl
```
### 目标文件结构
如果 `targets/example_com.txt` 包含多个域名,它们将作为一个整体项目被一起扫描。
```
# 主要生产范围
example.com
example.net
# 次要品牌
api.example.org
```
## 📡 通知
与 `notify` 的集成能够原生支持在 Discord 和 Slack 等平台上展示高度格式化的 Markdown 报告。
**逐步报告** (`NOTIFY_STEP_BY_STEP=true`):
```
[example_com] Step 1 - subfinder completed successfully
[example_com] Step 2 - httpx completed successfully
[example_com] Step 3 - naabu completed successfully
[example_com] Step 4 - katana completed successfully
[example_com] Step 5 - nuclei completed successfully
```
**最终侦察摘要**:
执行完成后,将发送一份详细的 Markdown 报告,其中包含:
* 项目名称和根范围数量。
* Subfinder 发现/新增/已知的主机数量。
* HTTPX 存活主机验证指标。
* Naabu 端口和服务结果数量。
* Katana 新爬取的 URL 数量。
* Nuclei 漏洞发现(按严重程度分组)。
* 包含存活主机详细信息的区块(URL、状态、技术栈、端口和漏洞)。
## 🐧 Linux 服务设置 (Systemd)
由于此脚本能跟踪状态并静默运行,因此非常适合通过 cron 或 systemd 定时器进行自动化操作。
**systemd 服务示例** (`/etc/systemd/system/recon-watch.service`):
```
[Unit]
Description=Bug Bounty Auto Recon Scan
Wants=network-online.target
After=network-online.target
[Service]
Type=oneshot
User=recon
WorkingDirectory=/opt/recon-watch
Environment=PATH=/usr/local/bin:/usr/bin:/bin:/home/recon/go/bin
ExecStart=/usr/bin/python3 /opt/recon-watch/bugBounty_auto_recon.py
NoNewPrivileges=true
PrivateTmp=true
```
**systemd 定时器示例** (`/etc/systemd/system/recon-watch.timer`):
```
[Unit]
Description=Run Recon Watch hourly
[Timer]
OnCalendar=hourly
Persistent=true
Unit=recon-watch.service
[Install]
WantedBy=timers.target
```
启用自动化:
```
sudo systemctl daemon-reload
sudo systemctl enable --now recon-watch.timer
```
标签:GitHub, Python, 动态插桩, 子域名枚举, 实时处理, 密码管理, 无后门, 系统安全, 自动化侦察, 运行时操纵, 逆向工具