chrisnov-it/modular_reconx
GitHub: chrisnov-it/modular_reconx
一款模块化的 Python OSINT 与 Bug Bounty 侦察工具,集成了从被动情报收集到主动漏洞检测的多种功能并支持多格式报告输出。
Stars: 3 | Forks: 3
# 模块化 ReconX v1.3.0
Modular ReconX 是一款模块化的 Python OSINT 与 Bug Bounty 侦察工具,用于分析域名、网站和选定的本地文件。它将被动情报收集、主动侦察、漏洞富化以及报告生成整合在一个 CLI 中。
## 功能特性
- WHOIS、DNS、SSL 证书、GeoIP、反向 IP 和 Wayback 发现
- 基于字典和证书透明度 的子域名发现
- 技术、CMS、WordPress 插件、WAF 和安全头检查
- 针对参数、JavaScript、API、表单、CORS、cookies、点击劫持、HPP 和 XSS 反射检查的可选 Bug Bounty 模块
- 针对常见 AWS S3、Azure Blob 和 GCP bucket 名称的云存储枚举
- 针对公开文件和本地文件的元数据与图像取证
- GitHub dork/API 扫描、数据泄露查询以及基于 Gemini 的 AI 报告分析
- 支持 JSON、TXT、CSV、HTML、PDF 和 Markdown 报告
- 共享 HTTP 客户端,支持代理、自定义 User-Agent、重试、超时和速率限制
## 环境要求
- Python 3.8 或更高版本
- Git
- 可选但推荐:`uv`
- 可选:Docker 和 Docker Compose
- 用于 Shodan、HIBP、Vulners、ZoomEye、WPScan、Gemini、GitHub 和 MaxMind 的可选 API 密钥
## 快速开始
### Windows 10/11 PowerShell 配合 uv
`uv` 是日常开发中最快捷的方式。它可以创建 `.venv`,根据 `requirements.txt` 安装依赖,并以可编辑模式安装本项目。
如有需要,请安装 `uv`:
```
winget install astral-sh.uv
uv --version
```
然后设置项目:
```
git clone https://github.com/chrisnov-it/modular_reconx.git
cd modular_reconx
uv venv --python 3.14 .venv
.\.venv\Scripts\Activate.ps1
uv pip install -r requirements.txt
uv pip install -e .
reconx --help
reconx example.com --skip-ports --skip-bruteforce
```
如果尚未安装 Python 3.14,可以通过 Python Manager (`py install 3.14`) 安装,或者让 `uv` 使用其他可用且兼容的 runtime:
```
uv python list
uv venv --python 3.13 .venv
```
### Windows 10/11 PowerShell 配合 Python Manager
Windows 上的现代 Python 通过 Python 安装管理器进行管理。可以从 Microsoft Store、python.org 或使用 WinGet 安装:
```
winget install 9NQ7512CXL7T -e
py install --configure -y
py install 3.14
py list
```
然后为此项目创建一个虚拟环境。这可以避免全局包损坏,并且在跨计算机或驱动器迁移项目时尤为有用。
```
git clone https://github.com/chrisnov-it/modular_reconx.git
cd modular_reconx
py -3.14 -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
python -m pip install -e .
reconx --help
reconx example.com --skip-ports --skip-bruteforce
```
如果 `py -3.14` 不可用,请检查可安装的 runtime:
```
py list --online 3.14
py install 3.14
```
如果 `python` 打开的是 Microsoft Store 而不是 Python,请运行 `py install --configure -y`,然后检查 `python.exe`、`python3.exe` 和 `py.exe` 的 Windows 应用执行别名。在已激活的 venv 中,`python` 应解析为 `.venv\Scripts\python.exe`。
如果 PowerShell 阻止了 venv 激活:
```
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
.\.venv\Scripts\Activate.ps1
```
### Linux / macOS 配合 uv
```
curl -LsSf https://astral.sh/uv/install.sh | sh
git clone https://github.com/chrisnov-it/modular_reconx.git
cd modular_reconx
uv venv --python 3.14 .venv
source .venv/bin/activate
uv pip install -r requirements.txt
uv pip install -e .
reconx --help
reconx example.com --skip-ports --skip-bruteforce
```
### Linux / macOS 配合标准 venv
```
git clone https://github.com/chrisnov-it/modular_reconx.git
cd modular_reconx
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
python -m pip install -e .
reconx --help
reconx example.com --skip-ports --skip-bruteforce
```
在 Debian、Ubuntu、Kali、Parrot 和其他遵循 PEP 668 的系统上,请勿使用 `sudo pip` 进行全局安装。请使用上述的 venv 流程。
### 稍后重新打开项目
在已经创建过 venv 之后:
```
cd D:\dev\chrisnov-it\modular_reconx
.\.venv\Scripts\Activate.ps1
python -m pip install -r requirements.txt
reconx --help
```
Linux/macOS:
```
cd /path/to/modular_reconx
source .venv/bin/activate
reconx --help
```
## 配置说明
复制示例环境文件,并仅填入您拥有的密钥:
```
Copy-Item .env.example .env
```
Linux/macOS:
```
cp .env.example .env
```
支持的环境变量:
```
SHODAN_API_KEY=""
HIBP_API_KEY=""
VULNERS_API_KEY=""
ZOOMEYE_API_KEY=""
WPSCAN_API_KEY=""
GEMINI_API_KEY=""
GITHUB_TOKEN=""
MAXMIND_LICENSE_KEY=""
```
缺乏所需密钥的模块将被跳过,或返回提示/错误,而不会中断整个扫描过程。
## 数据设置
部分功能使用本地数据文件。配置完 `.env` 后,请运行:
```
python download_data.py
python update_db.py
```
有用的变体命令:
```
python download_data.py --geoip
python download_data.py --nvd
python download_data.py --force
```
GeoIP 下载需要 `MAXMIND_LICENSE_KEY`。
## Docker
当您需要一个干净、可重复的 runtime 时,Docker 非常有用。
```
cp .env.example .env
docker-compose run --rm reconx python download_data.py
docker-compose build
docker-compose run --rm reconx example.com --skip-ports --skip-bruteforce
```
挂载的文件夹:
- `output/` 用于存放生成的报告
- `nvd_data/` 用于存放下载的 NVD feeds
- `app/data/` 用于存放字典、GeoIP 和本地数据库
## 使用说明
基本扫描:
```
reconx example.com
```
更快速、更安静的扫描:
```
reconx example.com --profile safe
```
仅被动侦察:
```
reconx example.com --profile passive
```
面向 Bug Bounty 的运行:
```
reconx example.com --profile aggressive --bug-hunt --output md
```
HTML 报告:
```
reconx example.com --output html
```
代理、自定义 User-Agent 和速率限制:
```
reconx example.com --proxy http://127.0.0.1:8080 --rate-limit 1.0 --user-agent "Custom UA"
```
本地文件分析:
```
reconx image.jpg
reconx document.pdf
```
报告将写入 `output/` 目录。
## CLI 参考
| 标志 | 描述 |
| ---- | ----------- |
| `--output {json,txt,csv,html,pdf,md}` | 选择报告格式。默认值:`json`。 |
| `--profile {passive,safe,active,aggressive}` | 选择扫描强度。默认值:`active`。 |
| `--skip-ports` | 跳过 TCP 端口扫描。 |
| `--skip-bruteforce` | 跳过路径暴力破解。 |
| `--passive-only` | `--profile passive` 的别名。 |
| `--proxy URL` | 为使用共享 HTTP 客户端的模块设置代理 URL。 |
| `--rate-limit SECONDS` | 共享 HTTP 客户端请求之间的最小延迟。 |
| `--user-agent VALUE` | 为使用共享 HTTP 客户端的模块设置自定义 User-Agent。 |
| `--correlate` | 通过 WHOIS 相似度关联反向 IP 邻居。速度较慢。 |
| `--bug-hunt` | 运行高级 Web 安全分析模块。需要 `--profile aggressive`。 |
| `--cloud` | 检查常见的云存储 bucket/container 名称。 |
| `--metadata` | 搜索公开文档并提取 PDF/DOCX 元数据。 |
| `--forensics` | 抓取并分析图像的 EXIF 数据。 |
| `--social` | 生成社会工程学侦察数据和 dorks。 |
| `--reverse` | 在图像 URL 可用时添加反向图像搜索链接。 |
| `--enhanced-subdomains` | 使用更大的子域名字典。速度较慢。 |
| `--ai` | 使用 Gemini 分析最终报告。需要 `GEMINI_API_KEY`。 |
| `--github` | 生成 GitHub dorks 并可选择使用 GitHub API。 |
| `--waf` | 检测常见的 Web Application Firewalls。 |
| `--deep-cms` | 指纹识别 Drupal、Joomla、Magento 和 Moodle。 |
| `--version` | 打印 Modular ReconX 版本。 |
## 扫描模式
针对授权测试的推荐工作流程:
1. 从被动扫描开始:
reconx target.com --profile passive --output json
2. 运行安全主动检查:
reconx target.com --profile safe --deep-cms --output html
3. 仅在获得允许时运行较重的 Bug Bounty 检查:
reconx target.com --profile aggressive --bug-hunt --rate-limit 1.0 --output md
Profile 行为:
- `passive`:除了被动/API 式的发现外,不进行主动 HTTP 探测。
- `safe`:进行 HTTP 指纹识别和低影响检查,但不进行端口扫描/路径暴力破解。
- `active`:默认扫描 profile,除非跳过,否则包括端口扫描和路径暴力破解。
- `aggressive`:执行 `--bug-hunt` 模糊测试和高级漏洞检查所必需。
## 项目结构
- `app/scan.py`:CLI 入口点和扫描编排
- `app/modules/`:各个独立的侦察模块
- `app/modules/http_client.py`:用于处理代理/速率限制/User-Agent 行为的共享 HTTP 客户端
- `app/data/`:打包的字典和本地数据文件
- `nvd_data/`:下载的 NVD JSON feeds
- `output/`:生成的报告
- `cache/`:WHOIS/DNS 缓存文件
- `tests/`:测试脚本和 pytest 风格的检查
- `scripts/`:演示和维护实用工具
## 开发说明
首先创建或激活 venv,然后以可编辑模式安装:
```
uv pip install -r requirements.txt
uv pip install -e .
```
运行语法检查:
```
python -m compileall -q app tests scripts
```
如果已安装 `pytest`,则运行测试:
```
uv pip install pytest
python -m pytest -q
```
## 故障排除
### `python` 打开了 Microsoft Store
安装/配置 Python 安装管理器,然后重新创建 venv:
```
winget install 9NQ7512CXL7T -e
py install --configure -y
py install 3.14
py -3.14 -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -r requirements.txt
python -m pip install -e .
```
如果命令仍然解析到 Store 别名,请检查 Windows 设置 -> 应用执行别名。
### 缺少 `pip` 或找不到命令
如果您正在使用 `uv`,请使用以下命令重新安装:
```
uv pip install -r requirements.txt
uv pip install -e .
```
如果您使用的是标准 pip,建议在 venv 中使用模块形式:
```
python -m ensurepip --default-pip
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
```
### 无法识别 `reconx`
激活 venv 并重新安装可编辑包:
```
.\.venv\Scripts\Activate.ps1
uv pip install -e .
```
### PDF 输出失败
再次安装依赖项。PDF 输出需要 `reportlab`。
```
python -m pip install -r requirements.txt
```
### `lxml` 提示需要 Microsoft Visual C++ Build Tools
这通常意味着 pip 找不到适用于您 Python 版本的预构建 wheel,并尝试从源码编译 `lxml`。在 Windows 上使用 Python 3.14 时,请先使用更新后的依赖列表:
```
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install --only-binary=:all: "lxml>=6.0.2,<7.0.0"
python -m pip install -r requirements.txt
python -m pip install -e .
```
如果 pip 仍然尝试从源码构建,请安装 Microsoft C++ Build Tools 或使用具有更广泛 wheel 支持的 Python runtime:
```
py install 3.13
py -3.13 -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -r requirements.txt
python -m pip install -e .
```
### GeoIP 查询无数据
将 `MAXMIND_LICENSE_KEY` 添加到 `.env`,然后运行:
```
python download_data.py --geoip
```
## 负责任的使用
仅扫描您拥有或被授权测试的目标。某些标志处于活动状态,可能会针对目标产生流量。建议优先使用 `--passive-only`,然后根据授权情况逐步扩大范围。
请参阅 [RESPONSIBLE_USE.md](RESPONSIBLE_USE.md) 和 [SECURITY.md](SECURITY.md)。
## 作者
Reynov Christian / Chrisnov IT Solutions
- 网站:
标签:ESC4, GitHub, OSINT, Python, 实时处理, 密码管理, 无后门, 版权保护, 请求拦截, 逆向工具