Yash-Patil-1/reconprobe
GitHub: Yash-Patil-1/reconprobe
一款模块化的渗透测试自动化侦察框架,通过 18 阶段流水线覆盖从子域名枚举到漏洞评估、OSINT 收集和专业报告生成的完整侦察工作流。
Stars: 1 | Forks: 0
# 🛡️ ReconProbe
**用于渗透测试的自动化侦察工具**
ReconProbe 是一个全面、模块化的侦察框架,可自动化完整的渗透测试侦察工作流程——从子域名枚举和端口扫描,到漏洞评估、OSINT 收集以及专业报告生成。
## 功能
### 🔍 侦察流水线 (18 个阶段)
| 阶段 | 模块 | 描述 |
|-------|--------|-------------|
| 1 | **子域名枚举** | 被动来源 (crt.sh, CertSpotter, VirusTotal, SecurityTrails) + 暴力破解 |
| 2 | **端口扫描** | 多线程 TCP,集成 masscan,Top-1000 端口,服务版本检测,OS 指纹识别 |
| 3 | **HTTP 探测** | 服务发现,技术指纹识别(30+ 种技术),状态码分析 |
| 4 | **信息丰富** | Shodan IP 信息丰富,针对检测到的技术进行 NVD CVE 查询 |
| 5 | **Web 爬取** | 带有范围强制、深度限制、关键发现提取的 BFS 爬虫 |
| 6 | **目录暴力破解** | 多线程,智能 404 检测,自定义扩展名 |
| 7 | **屏幕截图** | 基于 Playwright 的无头浏览器截图 |
| 8 | **报告** | JSON、Markdown 和带有 Chart.js 的交互式 HTML 仪表板 |
| 9 | **漏洞扫描** | CVE 映射(100+ 个 CVE,15+ 种服务)+ 默认凭据检查(30+ 个凭据) |
| 10 | **SSL/TLS 审计** | 证书验证,协议/密码扫描,安全标头,分级 (A-F) |
| 11 | **子域名接管** | DNS 解析 + HTTP 签名匹配(40+ 个云提供商) |
| 12 | **WAF 检测** | 被动标头/cookie 指纹识别 + 主动恶意 payload 探测(15+ 种 WAF) |
| 13 | **漏洞利用建议** | 映射到服务的 150+ 个漏洞利用条目,集成 Searchsploit |
| 14 | **Payload 生成** | 反向 shell:Python, Bash, PowerShell, Netcat, PHP, Perl, Ruby, MSFVenom |
| 15 | **战利品收集** | 凭据、API 密钥、token、哈希——按目标/严重程度组织 |
| 16 | **MSF 脚本生成** | 从扫描结果自动生成 Metasploit resource (.rc) 脚本 |
| 17 | **高级 OSINT** | GitHub dorking、Google dorking、电子邮件收集、WHOIS、社交足迹、泄露检查、技术栈 OSINT |
| 18 | **报告自动化** | CVSS v3.1 评分,执行摘要,PDF 报告,CSV/XLSX 导出 |
### ⚡ 核心能力
- **批量模式** — 从文件中并发扫描多个目标
- **检查点/恢复** — 中断的扫描会从上次中断的地方继续
- **代理/Tor 支持** — 通过 HTTP 代理或 SOCKS5 (Tor) 路由流量
- **速率限制** — 可配置的延迟或每秒请求数
- **REST API** — 基于 FastAPI 的服务器,用于远程提交和监控扫描
- **定时扫描** — 可通过 YAML 配置的循环扫描
- **Webhook 通知** — 扫描完成后发送 Slack、Discord 和电子邮件提醒
- **Docker 支持** — 多阶段 Docker 镜像,便于部署
- **CI/CD 就绪** — 包含 lint、测试、类型检查和 Docker 发布的 GitHub Actions 工作流
## 安装说明
### 通用安装(适用于所有操作系统)
```
# 创建并激活虚拟环境
python3 -m venv ~/venvs/reconprobe
source ~/venvs/reconprobe/bin/activate
# 从 PyPI 安装
pip install reconprobe
```
就是这样——只需 **Python 3.10+** 即可在 **Linux、macOS 和 Windows** 上运行。
核心安装特意保持了轻量化——仅包含纯 Python 依赖(httpx、rich、beautifulsoup4、dnspython、pyyaml)。不需要 Docker,不需要系统包,也不需要浏览器。
#### 安装可选附加组件
ReconProbe 使用**可选依赖组**,因此你只需安装所需的组件:
```
# 首先激活 venv(如果尚未激活)
source ~/venvs/reconprobe/bin/activate
# 安装所有内容
pip install "reconprobe[full]"
# 或安装各个功能组:
pip install "reconprobe[screenshots]" # Playwright browser screenshots
pip install "reconprobe[reporting]" # PDF (fpdf2) + XLSX (openpyxl) exports
pip install "reconprobe[api]" # FastAPI REST API server
pip install "reconprobe[webhooks]" # Slack/Discord/Email notifications
```
如果你在未安装依赖的情况下尝试使用某项功能,ReconProbe 会显示清晰的安装提示:
```
$ reconprobe example.com --serve
Error: FastAPI + uvicorn are required for server mode.
Install with: pip install reconprobe[api]
```
### 从源码安装
```
git clone https://github.com/Yash-Patil-1/reconprobe.git
cd reconprobe
# 创建并激活虚拟环境
python3 -m venv venv
source venv/bin/activate
# 从本地源码安装
pip install -e . # Core only
# 或
pip install -e ".[full]" # Everything (extras)
# 验证其是否正常工作
reconprobe --version
```
### Docker(可选)
如果你倾向于容器化部署:
```
docker pull ghcr.io/yash-patil-1/reconprobe:latest
docker run --rm -v $(pwd)/reports:/reports ghcr.io/yash-patil-1/reconprobe:latest example.com -o /reports
docker run --rm -p 8000:8000 ghcr.io/yash-patil-1/reconprobe:latest --serve
```
### 环境要求
- **Python 3.10+**(所有平台)
- **可选:** 用于截图的 `playwright`(`playwright install chromium`)
- **可选:** 用于 PDF 报告的 `fpdf2`
- **可选:** 用于 XLSX 导出的 `openpyxl`
- **可选:** 用于高速端口扫描的 `masscan`(仅限 Linux)
## 快速开始
```
# 基础扫描
reconprobe example.com
# 启用所有模块的全面评估
reconprobe example.com \
--vuln-scan --ssl-audit --takeover --waf-detect \
--exploit-suggest --payload-gen --loot --msf-gen \
--osint --html --pdf --csv --xlsx --exec-summary \
-o ./reports/example_com
# 结合爬取 + 目录爆破
reconprobe example.com --crawl --crawl-depth 3 --dirbuster -o ./reports
# 多目标批量扫描
echo "example.com" > targets.txt
echo "example.org" >> targets.txt
reconprobe --targets-file targets.txt --max-concurrency 5 -o ./batch_reports
# REST API 服务器
reconprobe --serve --port 8000
# 定时扫描
cat > schedule.yaml << 'EOF'
schedules:
- name: "Daily scan"
target: "example.com"
interval_hours: 24
flags:
vuln_scan: true
ssl_audit: true
osint: true
output_dir: "./reports/daily"
EOF
reconprobe --schedule schedule.yaml
```
## CLI 参考
### 基本选项
| 参数 | 描述 |
|------|-------------|
| `domain` | 要扫描的目标域名 |
| `-p, --ports` | 要扫描的端口(`80,443` 或 `1-1000`) |
| `-o, --output` | 报告的输出目录 |
| `--no-brute-force` | 跳过子域名暴力破解 |
| `--wordlist` | 自定义子域名字典 |
| `--list-ports` | 显示常用端口参考 |
| `-V, --version` | 显示版本 |
### 扫描性能
| 参数 | 默认值 | 描述 |
|------|---------|-------------|
| `--masscan` | — | 使用 masscan 进行高速扫描 |
| `--masscan-rate` | 1000 | masscan 的每秒数据包数 |
| `--max-subdomain-workers` | 50 | 子域名暴力破解的线程数 |
| `--max-port-workers` | 100 | 端口扫描的线程数 |
| `--port-timeout` | 2.0s | 端口扫描超时时间 |
| `--delay` | 0.0s | 请求间的延迟 |
| `--rate-limit` | — | 最大每秒请求数 |
### 代理与匿名
| 参数 | 描述 |
|------|-------------|
| `--proxy` | 代理 URL(`http://...`,`socks5://...`) |
| `--tor` | 通过 Tor 路由(SOCKS5 localhost:9050) |
### 高级扫描
| 参数 | 描述 |
|------|-------------|
| `--version-detection` | 服务版本指纹识别 |
| `--os-fingerprint` | 通过 TTL/TCP 窗口进行 OS 检测 |
| `--top-1000` | 扫描前 1000 个 TCP 端口 |
| `--advanced-subdomains` | 区域传送 + 排列组合 + 递归 |
| `--screenshots` | 浏览器截图(需要 Playwright) |
| `--crawl` | Web 爬取 |
| `--dirbuster` | 目录暴力破解 |
### 漏洞评估
| 参数 | 描述 |
|------|-------------|
| `--vuln-scan` | CVE 映射 + 默认凭据检查 |
| `--no-credential-check` | 跳过凭据验证 |
| `--ssl-audit` | SSL/TLS 深度审计 |
| `--ssl-ports` | 自定义 SSL 端口(默认:443,8443,9443) |
| `--takeover` | 子域名接管检测 |
| `--waf-detect` | WAF 检测与指纹识别 |
### 漏洞利用
| 参数 | 默认值 | 描述 |
|------|---------|-------------|
| `--exploit-suggest` | — | 漏洞利用建议引擎 |
| `--payload-gen` | — | 生成反向 shell payload |
| `--payload-type` | auto | Payload 类型 |
| `--payload-encode` | — | Base64 编码 payload |
| `--loot` | — | 从扫描结果收集战利品 |
| `--msf-gen` | — | 生成 MSF resource 脚本 |
| `--lhost` | 127.0.0.1 | Payload 的本地主机 |
| `--lport` | 4444 | Payload 的本地端口 |
### OSINT
| 参数 | 描述 |
|------|-------------|
| `--osint` | 启用所有 OSINT 模块 |
| `--github-token` | 用于经过身份验证搜索的 GitHub PAT |
| `--no-github-dork` | 跳过 GitHub dorking |
| `--no-google-dorks` | 跳过 Google dorking |
| `--no-email-harvest` | 跳过电子邮件收集 |
| `--no-whois` | 跳过 WHOIS 查询 |
| `--no-social` | 跳过社交足迹 |
| `--no-breach-check` | 跳过泄露数据库检查 |
| `--no-tech-osint` | 跳过技术栈 OSINT |
### 报告
| 参数 | 描述 |
|------|-------------|
| `--html` | 交互式 HTML 仪表板 (Chart.js) |
| `--pdf` | 专业 PDF 报告(需要 fpdf2) |
| `--csv` | CSV 结果导出 |
| `--xlsx` | XLSX 工作簿导出(需要 openpyxl) |
| `--exec-summary` | 执行摘要文本文件 |
### 自动化
| 参数 | 描述 |
|------|-------------|
| `--serve` | 启动 REST API 服务器 |
| `--host` | API 服务器绑定地址 |
| `--port` | API 服务器端口 |
| `--schedule` | 用于循环扫描的 YAML 计划文件 |
| `--schedule-once` | 运行一次到期的扫描并退出 |
| `--webhook-slack` | Slack webhook URL |
| `--webhook-discord` | Discord webhook URL |
| `--webhook-email` | SMTP 连接字符串 |
## REST API
当使用 `--serve` 启动时,ReconProbe 会暴露一个基于 FastAPI 的 REST API。
```
reconprobe --serve --host 0.0.0.0 --port 8000
```
### 端点
| 方法 | 路径 | 描述 |
|--------|------|-------------|
| `GET` | `/health` | 包含版本、运行时间和活动作业的健康检查 |
| `POST` | `/scan` | 提交新的扫描作业 |
| `GET` | `/scan/{job_id}` | 获取扫描作业状态 |
| `GET` | `/scan/{job_id}/result` | 获取扫描作业结果 |
| `GET` | `/scan/{job_id}/cancel` | 取消待处理的作业 |
| `GET` | `/jobs` | 列出最近的扫描作业(最多 50 个) |
### 示例
```
# 提交扫描
curl -X POST http://localhost:8000/scan \
-H "Content-Type: application/json" \
-d '{"domain": "example.com", "flags": {"vuln_scan": true, "osint": true}}'
# 检查状态
curl http://localhost:8000/scan/{job_id}
# 获取结果
curl http://localhost:8000/scan/{job_id}/result
```
## 定时扫描
在 YAML 文件中定义循环扫描:
```
schedules:
- name: "Nightly full scan"
target: "example.com"
interval_hours: 24
flags:
vuln_scan: true
ssl_audit: true
takeover: true
waf_detect: true
osint: true
pdf: true
csv: true
output_dir: "./reports/example_com"
- name: "Weekly OSINT"
target: "example.org"
interval_hours: 168
flags:
osint: true
no_http_probe: true
no_brute_force: true
output_dir: "./reports/example_org"
```
运行调度器:
```
reconprobe --schedule scan_schedule.yaml
```
## 输出
ReconProbe 生成多种格式的结构化报告:
- **JSON** — 完整的机器可读扫描数据
- **Markdown** — 人类可读的格式化报告
- **HTML** — 带有 Chart.js 可视化的交互式仪表板(6 种图表类型,可折叠部分,暗色主题)
- **PDF** — 专业的安全评估报告
- **CSV** — 用于电子表格分析的扁平化结果导出
- **XLSX** — 带有样式化标头和严重程度颜色的多表工作簿
- **执行摘要** — 简明的风险评估及优先建议
- **MSF Resource 脚本** — 可直接运行的 Metasploit `.rc` 脚本
## 环境变量
| 变量 | 描述 |
|----------|-------------|
| `SHODAN_API_KEY` | 用于 IP 信息丰富的 Shodan API 密钥 |
| `NVD_API_KEY` | NVD API 密钥(更高的速率限制) |
| `VT_API_KEY` | VirusTotal API 密钥 |
| `ST_API_KEY` | SecurityTrails API 密钥 |
| `GITHUB_TOKEN` | GitHub 个人访问令牌 |
## 项目结构
```
reconprobe/
├── reconprobe/
│ ├── __init__.py # Package metadata, version
│ ├── __main__.py # python -m reconprobe entry point
│ ├── cli.py # CLI argument parser & main()
│ ├── runner.py # 18-phase scan orchestrator
│ ├── subdomain.py # Subdomain enumeration
│ ├── scanner.py # Port scanning
│ ├── http_probe.py # HTTP probing & fingerprinting
│ ├── enrichment.py # Shodan + NVD enrichment
│ ├── screenshot.py # Playwright screenshots
│ ├── crawler.py # Web crawling
│ ├── dirbuster.py # Directory brute-force
│ ├── vuln_scan.py # CVE mapping + default creds
│ ├── ssl_audit.py # SSL/TLS deep audit
│ ├── takeover.py # Subdomain takeover detection
│ ├── waf_detect.py # WAF detection & fingerprinting
│ ├── exploit_suggest.py # Exploit suggestion engine
│ ├── payload_gen.py # Payload generation
│ ├── loot.py # Loot collection
│ ├── msf_gen.py # MSF resource script generator
│ ├── osint.py # Advanced OSINT
│ ├── reporting.py # Reporting automation (CVSS, PDF, CSV, XLSX)
│ ├── reporter.py # JSON + Markdown report builder
│ ├── html_reporter.py # Interactive HTML dashboard
│ ├── webhook.py # Slack/Discord/Email notifications
│ ├── scheduler.py # YAML-based scheduled scanning
│ ├── api.py # FastAPI REST API
│ ├── batch.py # Multi-target batch scanning
│ ├── checkpoint.py # Scan checkpoint/resume
│ └── utils.py # DNS, validation, common ports
├── tests/ # Comprehensive test suite (469+ tests)
├── wordlists/
│ ├── subdomains.txt # Subdomain brute-force wordlist
│ └── paths.txt # Path discovery wordlist
├── Dockerfile # Multi-stage Docker build
├── pyproject.toml # Project configuration
├── MANIFEST.in # Packaging manifest
├── setup.py # PyPI setup script
├── Makefile # Build/test/clean targets
├── CHANGELOG.md # Release history
├── LICENSE # MIT License
└── README.md # This file
```
## 许可证
该项目基于 MIT 许可证授权——详情请参阅 [LICENSE](LICENSE) 文件。
## 作者
**Yash Patil** — 网络安全分析师 | 渗透测试工程师
- 📧 yashpatil7714@gmail.com
- 🔗 [LinkedIn](https://www.linkedin.com/in/yash-patil-997357330)
- 🐙 [GitHub](https://github.com/Yash-Patil-1)
标签:特征检测, 网络测绘, 请求拦截, 逆向工具