Bgsitopu/Reconforge-
GitHub: Bgsitopu/Reconforge-
ReconForge 是一个基于 Python 的异步 Web 侦察框架,通过 32 个模块覆盖从子域名枚举到漏洞验证的完整渗透测试前期信息收集流程。
Stars: 0 | Forks: 0
# ReconForge v8.0
🦖🦖🦖
一个基于 Python 的 Web 侦察框架,具有交互式终端 UI、异步扫描引擎、AI 驱动的风险分析和 32 个专用模块 —— 专为专业渗透测试人员和安全研究人员构建。
## 功能
- **32 个侦察模块**,分为 5 个顺序阶段,在每个阶段内通过 `asyncio.gather` 进行并行处理
- **AI Risk Engine v9.1** —— 针对每项发现进行置信度加权的评分、执行摘要以及攻击面分类
- **Global Dedup Engine v1.0** —— 语义去重、跨模块关联、证据图和置信度传播
- **SIEM Scoring Engine v1.0** —— 基于事件的、感知关联的风险评分(Splunk/Elastic 风格)
- **Gatekeeper Validator v10.0** —— 针对每项发现的 4 步重新请求 pipeline(原始请求 → 重新请求 → 差异对比 → 确认/拒绝)
- 基于 `rich` 构建的 **交互式 TUI** —— 键盘导航(↑↓ Enter),无需记忆命令参数
- **Self-diagnostic v8.0** —— 启动时自动检测并修复缺失的依赖项
- **6 种扫描配置** —— `fast` / `balanced` / `deep` / `accuracy` + 用于 `deep` 和 `accuracy` 的 ⚡ Turbo 模式
- **4 种报告格式** —— JSON(schema v2)、纯文本摘要、交互式 HTML 仪表板(vis.js 攻击面图表)、CSV
- **隐身模式** —— 随机延迟(0.5–3秒)、user-agent 轮换、自适应速率限制
- **WAF Detection v2** —— 20 多种 WAF 特征,带有置信度分数和证据
- **Session pool** —— 共享的 `aiohttp` 会话,支持传输中去重和自适应重试
- **DNS 缓存** —— 跨模块共享的内存 TTL 缓存,100 个 worker 的 `ThreadPoolExecutor`
- **配置与历史管理** —— 保存/加载扫描配置,保留最近 20 次扫描历史
- **多语言 TUI** —— 英语 / 印尼语 / 西班牙语 / 中文 / 阿拉伯语(可在设置中配置,包括菜单提示在内的全面翻译)
- **跨环境支持** —— Termux、proot-ubuntu、标准 Linux
## 安装说明
## 如果你运行在 Termux 上,首先你需要 Ubuntu 或 proot-distro
## 在 Termux 中
```
pkg update && pkg upgrade -y
pkg install proot-distro -y
proot-distro install ubuntu -y
proot-distro login ubuntu
```
## 在 proot-distro Ubuntu 中
```
apt update && apt upgrade -y
apt install git -y
```
## 克隆仓库
```
git clone https://github.com/Bgsitopu/ReconForge
cd ReconForge
bash install.sh
```
`install.sh` 会自动检测环境(Termux / proot-ubuntu / Linux)并安装所有依赖项,包括默认的字典。
## 使用说明
### 交互模式 (TUI)
```
bash run.sh
```
或者在激活虚拟环境后:
```
source .venv/bin/activate
python main.py
```
### CLI 模式(非交互式)
```
python main.py -t https://example.com
python main.py -t https://example.com -m subdomain,vuln_scan,ssl_check
python main.py -t https://example.com --stealth --threads 20 --timeout 15
python main.py -t https://example.com -o /tmp/output --proxy http://127.0.0.1:8080
```
**可用参数:**
| 参数 | 默认值 | 描述 |
|------|---------|-------------|
| `-t`, `--target` | — | 目标 URL(必填) |
| `-m`, `--modules` | `all` | 逗号分隔的模块列表,或 `all` |
| `-o`, `--output` | `reports/` | 报告输出目录 |
| `--threads` | `50` | 并发线程数 |
| `--timeout` | `10` | 每个请求的超时时间(秒) |
| `--stealth` | 关闭 | 启用随机延迟和 UA 轮换 |
| `--screenshot` | 关闭 | 通过 Playwright 启用屏幕截图 |
| `--proxy` | — | 代理 URL(`http://`、`socks5://`) |
| `--wordlist` | `wordlists/common.txt` | 自定义字典路径 |
## TUI 菜单
| 按键 | 操作 |
|-----|--------|
| `1` | 完整扫描 —— 运行所有选定的模块 |
| `2` | 快速扫描 —— 跳过 `dir_discovery` 和 `wayback` |
| `3` | 设置目标并立即扫描 |
| `4` | 设置目标 URL |
| `5` | 编辑配置(线程、超时、隐身、代理等) |
| `6` | 选择单个模块 |
| `7` | 选择扫描模式 / 配置 |
| `8` | 保存 / 加载配置 |
| `9` | 查看扫描历史(最近 20 次) |
| `10` | 浏览上次扫描结果 |
| `11` | 系统诊断和依赖检查 |
| `12` | 设置(主题、输出样式、语言) |
| `13` | 关于 —— 版本、作者、许可证信息和致谢 |
| `0` | 退出 |
## 扫描模块
模块在 5 个有序阶段中运行。在每个阶段内,独立的模块通过 `asyncio.gather` 并行运行。依赖前一阶段结果的模块(`NEEDS_PRIOR`)将在并行批处理完成后运行。
| 阶段 | 模块 |
|-------|---------|
| **0 — 侦察** | `subdomain`, `tech_detect`, `whois_dns`, `ssl_check`, `port_scan`, `datasources`, `zone_transfer`, `api_sources` |
| **1 — 发现** | `endpoint`, `js_analysis`, `login_finder`, `email_harvest`, `wayback`, `subdomain_alts`, `asn_discovery`, `tls_pivot` |
| **2 — 分析** | `dir_discovery`, `vuln_scan`, `parameter_discovery`, `cloud_discovery`, `api_security`, `graphql_probe`, `cors_advanced`, `http_smuggling`, `open_redirect` |
| **3 — 捕获** | `screenshot` |
| **4 — 准确度** | `fp_validator`, `multi_source_verify`, `endpoint_revalidate`, `secret_confirm`, `header_deep` |
**依赖前一阶段结果的模块(`NEEDS_PRIOR`):**
`parameter_discovery`, `cloud_discovery`, `screenshot`, `subdomain_alts`, `asn_discovery`, `tls_pivot`, `api_security`, `cors_advanced`, `open_redirect`, `fp_validator`, `multi_source_verify`, `endpoint_revalidate`, `secret_confirm`
### 模块参考
| 模块 | 版本 | 描述 |
|--------|---------|-------------|
| `subdomain` | v9.0 | 从 10 个被动来源(crt.sh, HackerTarget, OTX, BufferOver, ThreatCrowd, RapidDNS, SiteDossier, DNSHistory, Bing, DuckDuckGo)进行子域名枚举 + DNS 暴力破解 + 泛解析检测 |
| `tech_detect` | v10.0 | 通过多信号加权证据积累 + CVE 关联进行技术、框架、WAF 和版本检测 |
| `whois_dns` | — | WHOIS 查询 + DNS 记录(A, MX, TXT, NS, CNAME) |
| `ssl_check` | v10.0 | SSL/TLS 证书分析:密码套件、弱协议、HSTS、证书链验证、自签名证书检测、SANs、过期时间 |
| `port_scan` | v9.0 | Top-117 端口扫描,带有 banner grabbing、HTTP 标题提取、指纹识别和验证阶段(置信度评分) |
| `datasources` | — | 被动子域名来源:SiteDossier, DNSHistory, Bing, DuckDuckGo(无需 API 密钥) |
| `zone_transfer` | — | DNS Zone Transfer (AXFR) + SRV 记录枚举 |
| `api_sources` | — | 通过付费 API 发现子域名:VirusTotal, SecurityTrails, BinaryEdge, Chaos, Hunter.io, LeakIX, PassiveTotal, Zetalytics |
| `endpoint` | — | 从 HTML(href/src/action)、robots.txt、sitemap.xml、正则表达式 API 模式检测、隐藏输入字段中抓取 endpoint |
| `js_analysis` | — | 从 JavaScript 文件中提取密钥(API 密钥、token、AWS 密钥、Firebase 配置、硬编码凭证) + 基于熵的检测 + source map 解析 |
| `login_finder` | — | 探测常见的登录/管理路径,检测 HTML 中的登录表单,按技术进行分类 |
| `email_harvest` | v7.0 | 从 HTML、JS、WHOIS、联系页面收集邮箱 + MX 验证 + 去混淆 |
| `wayback` | v10.0 | 来自 Wayback Machine + Common Crawl + URLScan.io 的历史 URL,24 小时进程内缓存 |
| `subdomain_alts` | — | 子域名排列和更改(Amass 风格):添加/附加 60 多个常用词 |
| `asn_discovery` | — | 通过 BGP 数据从目标 IP 发现 ASN/netblock |
| `tls_pivot` | — | 通过跨所有发现的子域名的 TLS 证书 SANs 枢轴转向新域名 |
| `dir_discovery` | v9.0 | 目录和敏感文件暴力破解(4,750 个路径 + 12 个扩展名),自适应抖动,429 退避,403 限流 |
| `vuln_scan` | v9.0 | 安全标头分析(CSP/HSTS 评分,COEP/COOP/CORP),CVE 路径探测,CORS,点击劫持,版本泄露,危险的 HTTP 方法 |
| `parameter_discovery` | v8.0 | 从 HTML、JS、robots.txt、sitemap、endpoint 和 Wayback 发现隐藏参数;对敏感参数进行风险评分 |
| `cloud_discovery` | v8.0 | 暴露的云存储检测:AWS S3, CloudFront, Azure Blob/CDN, Google Cloud Storage, DigitalOcean Spaces, Backblaze B2 |
| `api_security` | v1.0 | OWASP API Security Top 10:BOLA/IDOR,破损的身份验证(JWT 弱密钥),数据过度暴露,速率限制,批量赋值,安全配置错误 |
| `graphql_probe` | — | 跨 5 个常见路径的 GraphQL endpoint 检测 + 开放内省测试 |
| `cors_advanced` | — | CORS 绕过测试:null origin、子域名信任、任意反射、带有凭证的请求 |
| `http_smuggling` | — | 通过基于时间的探测进行 CL.TE / TE.CL 不同步检测(安全,无 payload 注入) |
| `open_redirect` | — | 针对 13 个常见的重定向参数进行模糊测试,检测未经验证的重定向漏洞 |
| `screenshot` | — | 通过 Playwright/Chromium 进行页面截图(可选;在 proot 环境中不可用) |
| `fp_validator` | — | 通过独立的第二次请求重新探测来自 `dir_discovery`、`login_finder`、`endpoint`、`vuln_scan`、`api_security` 的所有发现 |
| `multi_source_verify` | — | 通过 DNS 解析 + crt.sh + HackerTarget 交叉验证子域名;只有被 2 个或更多来源确认的子域名才能通过 |
| `endpoint_revalidate` | — | 重新探测所有发现的 endpoint 以确认它们仍然处于活动状态;标记状态更改 |
| `secret_confirm` | — | 验证由 `js_analysis` 发现的密钥的实际可用性(AWS STS, GitHub, Slack, Stripe 等) |
| `header_deep` | — | Host header 注入、CRLF 注入、通过 Vary header 分析进行缓存中毒 |
| `ai_analysis` | v9.1 | 风险引擎:针对每项发现进行置信度加权的评分、执行摘要、攻击面分类、配置错误和修复指南 |
## 扫描配置
从 TUI (`7`) 中选择配置,或者以编程方式应用:
| 配置 | 线程 | 超时 | 模块 | 端口 |
|---------|---------|---------|---------|-------|
| `fast` | 80 | 6s | 6 个核心模块 | 15 |
| `balanced` | 50 | 10s | 17 个模块 | 117 |
| `deep` | 30 | 15s | 25 个模块 | 117 |
| `accuracy` | 20 | 20s | 31 个模块 + 阶段 4 验证 | 117 |
### ⚡ Turbo 模式
`deep` 和 `accuracy` 配置支持 **Turbo** 模式,该模式可增加并发量并减少超时,从而显著加快扫描速度 —— 而无需更改模块集或收集的结果。
| 配置 | 正常 | Turbo | 预计时间 |
|---------|--------|-------|----------------|
| `deep` | 30 线程 · 15s 超时 | 80 线程 · 8s 超时 | ~15 分钟 → ~4–6 分钟 |
| `accuracy` 20 线程 · 20s 超时 | 60 线程 · 10s 超时 | ~15 分钟 → ~6–8 分钟 |
在 TUI (`7`) 中选择 `deep` 或 `accuracy` 时,系统会提示你:
```
⚡ Enable Turbo? (threads↑, timeout↓) [y/N]
```
**Turbo 优化:**
- 增加线程数(deep:30→80,accuracy:20→60)
- 减少每个请求的超时时间(deep:15s→8s,accuracy:20s→10s)
- 通过 `ReconCache.dns` 在模块间进行内存 DNS 结果缓存
- 为 DNS 调用共享 100 个 worker 的 `ThreadPoolExecutor`
- Semaphore 限制动态跟随 `cfg.threads`
## 配置参考
所有可配置的 `Config` 字段:
| 字段 | 默认值 | 描述 |
|-------|---------|-------------|
| `target` | `""` | 目标 URL |
| `output_dir` | `"reports"` | 报告输出目录 |
| `threads` | `10`/`50`* | 并发线程数 |
| `timeout` | `10` | 每个请求的超时时间(秒) |
| `retries` | `3` | 每个请求的重试次数 |
| `delay_min` | `0.0` | 最小隐身延迟(秒) |
| `delay_max` | `0.0` | 最大隐身延迟(秒) |
| `proxy` | `None` | 代理 URL |
| `wordlist` | `wordlists/common.txt` | 目录发现字典 |
| `dns_wordlist` | `wordlists/subdomains.txt` | 子域名暴力破解字典 |
| `extensions` | 12 个扩展名 | 目录发现的文件扩展名 |
| `stealth` | `False` | 启用隐身模式 |
| `screenshot` | `False` | 启用屏幕截图 |
| `profile` | `"balanced"` | 当前扫描配置 |
| `ports` | top-200 | 用于扫描的端口列表 |
| `cache_enabled` | `True` | 启用 TTL 缓存 |
| `cache_ttl_dns` | `300s` | DNS 缓存 TTL |
| `cache_ttl_http` | `60s` | HTTP 缓存 TTL |
| `cache_ttl_wayback` | `3600s` | Wayback 缓存 TTL |
| `turbo` | `False` | Turbo 模式 |
| `accuracy_mode` | `False` | 额外验证阶段 |
| `port_verify_rounds` | `1` | 端口验证轮数 |
| `subdomain_probes` | `5` | 泛解析检测探测 |
| `dir_jitter` | `"off"` | 目录抖动:`off` / `low` / `medium` / `high` |
*在 proot 环境中为 `10`,在标准 Linux 上为 `50`。
### API 密钥(可选)
编辑 `config/api_keys.yaml` 或设置环境变量,以在 `api_sources` 中启用额外的来源:
| 服务 | 环境变量 |
|---------|---------------------|
| VirusTotal | `VIRUSTOTAL_KEY` |
| SecurityTrails | `SECURITYTRAILS_KEY` |
| BinaryEdge | `BINARYEDGE_KEY` |
| Chaos | `CHAOS_KEY` |
| Hunter.io | `HUNTERIO_KEY` |
| LeakIX | `LEAKIX_KEY` |
| PassiveTotal | `PASSIVETOTAL_KEY` |
| Zetalytics | `ZETALYTICS_KEY` |
## 报告
报告保存在 `reports/`(或指定的输出目录)中:
```
reports/
example.com_report.json # Full module data (schema v2)
example.com_report.txt # Plain-text summary
example.com_dashboard.html # Interactive HTML dashboard (vis.js graph)
example.com_findings.csv # Findings in CSV format
```
**HTML 仪表板包括:**
- 风险分数和级别(0–100)
- 交互式攻击面图表(vis.js 网络)
- 带有按严重程度划分的修复指南的配置错误表
- SSL/TLS 详情、开放端口、子域名、检测到的技术
- 热门攻击路径
- SIEM 风险和信任分数
**结果浏览器(菜单 `10`)** —— 14 个交互式视图:
- 原始部分查看器、配置错误 + 修复、SSL/TLS 详情
- 开放端口 + banner、子域名列表、收集到的邮箱
- 登录面板、JS 密钥、目录发现(200/403)
- 漏洞扫描发现、按严重程度划分的 endpoint、跨结果搜索
- 导出过滤后的 CSV、风险细分图表
## 项目结构
```
recon-framework-v.8.0/
├── main.py # Entry point, TUI, scan engine, CLI argument parsing
├── requirements.txt
├── run.sh # Virtual environment setup and launcher
├── install.sh # Multi-environment installer
├── core/
│ ├── config.py # Config dataclass, PROFILES, STAGES, NEEDS_PRIOR, apply_turbo()
│ ├── doctor.py # Self-diagnostic v8.0 + auto-fix
│ ├── session.py # Shared aiohttp session pool, in-flight dedup, adaptive retry
│ ├── session_manager.py # Profile and scan history management (~/.recon_framework/)
│ ├── validator.py # Gatekeeper v10.0: 4-step re-request pipeline per finding
│ ├── dedup_engine.py # Global dedup v1.0: semantic clustering + evidence graph
│ ├── siem_scoring.py # SIEM scoring v1.0: event correlation + trust score
│ ├── cache.py # In-memory TTL cache (dns/http/wayback/tech namespaces)
│ ├── diagnostics.py # Per-module status, timing, retry, and timeout tracking
│ ├── logger.py # Centralized logger with ModuleTimer
│ ├── waf_detect.py # WAF detection v2: 20+ signatures, confidence scoring
│ ├── api_keys.py # API key loader from YAML + environment variable fallback
│ ├── queue_worker.py # Async queue-based worker pool
│ └── theme.py # TUI themes (20+ color themes) + multi-language strings (EN/ID/ES/ZH/AR)
├── modules/ # 32 reconnaissance modules (Stage 0–4)
│ ├── [Stage 0] subdomain, tech_detect, whois_dns, ssl_check,
│ │ port_scan, datasources, zone_transfer, api_sources
│ ├── [Stage 1] endpoint, js_analysis, login_finder, email_harvest,
│ │ wayback, subdomain_alts, asn_discovery, tls_pivot
│ ├── [Stage 2] dir_discovery, vuln_scan, parameter_discovery,
│ │ cloud_discovery, api_security, graphql_probe,
│ │ cors_advanced, http_smuggling, open_redirect
│ ├── [Stage 3] screenshot
│ ├── [Stage 4] fp_validator, multi_source_verify, endpoint_revalidate,
│ │ secret_confirm, header_deep
│ └── ai_analysis.py # Risk engine v9.1 + executive summary
├── reporting/
│ └── reporter.py # JSON v2, TXT, HTML dashboard, CSV generation
├── utils/
│ ├── helpers.py # URL helpers, cached_resolve_a(), get_dns_executor()
│ ├── stealth.py # Random delays, fake UA, realistic timing, evasion headers
│ ├── rate_limiter.py # Adaptive token-bucket rate limiter
│ └── user_agents.py # Pool of 20+ user agent strings
├── config/
│ ├── api_keys.yaml # API keys (optional)
│ └── theme.yaml # Active theme
├── tests/
│ └── test_modules.py # pytest unit tests
└── wordlists/
├── common.txt # 4,750 directory paths
└── subdomains.txt # 5,000 subdomain wordlist
```
## 运行测试
```
source .venv/bin/activate
python -m pytest tests/ -v
```
## 依赖项
| 包 | 版本 | 用途 |
|---------|---------|---------|
| `aiohttp` | 3.13.5 | 异步 HTTP 客户端 + session pool |
| `beautifulsoup4` | 4.14.3 | HTML 解析 |
| `dnspython` | 2.8.0 | DNS 解析 |
| `tldextract` | 5.3.1 | 域名/子域名/TLD 提取 |
| `rich` | 15.0.0 | TUI、表格、面板、实时显示 |
| `lxml` | 6.1.1 | 快速 XML/HTML 解析 |
| `playwright` | 1.60.0 | 通过 Chromium 截图(可选) |
| `readchar` | 4.2.2 | 用于 TUI 导航的键盘输入 |
## 安全提示
- 在扫描任何目标之前,请务必获得书面授权
- 使用 `--stealth` 减少你在目标上的痕迹
- 所有扫描结果均保存在本地,从不向外部传输
- 在未与目标团队协调的情况下,请勿对生产系统运行扫描
- `api_sources` 需要付费 API 密钥 —— 如果未配置密钥,该模块将处于非活动状态
## 许可证
Apache-2.0 —— 查看 [LICENSE](LICENSE)
**作者:** Bang Sitopu · [github.com/Bgsitopu](https://github.com/Bgsitopu)
标签:GitHub, Python, Web侦察, 主机安全, 实时处理, 密码管理, 异步框架, 无后门, 特征检测, 计算机取证, 逆向工具