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)
标签:特征检测, 网络测绘, 请求拦截, 逆向工具