aarocy/Recon-Scan
GitHub: aarocy/Recon-Scan
一款轻量级开源被动侦察扫描器,集成AI安全分析与PDF报告生成,帮助安全团队快速获取目标攻击面态势快照。
Stars: 5 | Forks: 0
# Recon-Scan
ReconScan 是一个开源被动侦察扫描器,采用 FastAPI 后端、async worker 管道以及单页面前端。
其核心在于快速信号获取:运行扫描,获取逐模块的发现结果,并获得现在可导出为精美 PDF 报告的 AI 总结。
## 项目定位(与用途)
- 这是被动侦察。它不进行端点暴力破解、模糊测试或运行主动利用逻辑。
- 适用于态势快照、分类甄别和报告生成。
- 不能替代完整的渗透测试。
## 功能特性
- 13 个被动模块:
- 安全标头
- SSL/TLS
- DNS + 邮箱认证 (SPF/DMARC/MX)
- WHOIS
- Robots/sitemap
- 子域名枚举
- 技术指纹识别
- WAF 检测
- CORS 检查
- Cookie 安全检查
- JS 暴露检查
- 目录暴露检查
- 信誉检查
- 基于 Redis + ARQ worker 的异步执行。
- 如果队列入队失败,回退到进程内后台执行。
- 通过 OpenRouter / Anthropic / OpenAI 提供可选的 AI 总结。
- 基于扫描 + AI 总结生成 PDF 报告。
- 前端直接由 FastAPI 服务(单一 URL,单一应用)。
## 单命令启动(本地开发)
如果你只想快速运行:
```
./start.sh
```
执行内容:
- 如果缺少 `.env`,则从 `.env.example` 创建。
- 如果需要,创建 `.venv`。
- 从 `requirements.txt` 安装依赖。
- 在 `http://localhost:8000` 上启动带热重载的 FastAPI。
- 强制设置 `USE_ARQ_QUEUE=false` 以便在本地更轻松地无 Redis 启动。
使用 `Ctrl+C` 停止。
## 单命令启动(Docker)
```
./start-docker.sh
```
执行内容:
- 如果缺少 `.env`,则从 `.env.example` 创建。
- 通过 Docker Compose 启动 API + worker + Redis。
## Docker 启动(手动)
```
cp .env.example .env
docker compose up --build
```
## 本地开发(不使用 Docker)
1. 安装依赖:
```
pip install -r requirements.txt
```
2. 创建环境文件:
```
cp .env.example .env
```
3. 启动 API:
```
uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
```
4. 在另一个终端中启动 worker(推荐):
```
arq app.worker.WorkerSettings
```
5. 打开:
`http://localhost:8000`
## 运行测试
安装测试依赖:
```
pip install -r requirements-dev.txt
```
运行完整套件:
```
pytest -q
```
## PDF 报告
扫描完成后,在 UI 中点击 `Download PDF`。
后端端点:
- `GET /scans/{scan_id}/report.pdf`
报告包含:
- 目标和扫描元数据
- AI 执行摘要(简版 + 完整叙述,如果可用)
- 严重程度快照表
- 详细的逐模块发现结果
## API
- `GET /health`
- `POST /scans`
- 请求体示例:
- `{ "target": "example.com" }`
- `{ "target": "example.com", "byoapi_key": "...", "byoapi_provider": "your_provider" }`
- 备注:
- 除非 `ALLOW_BYO_API_KEY=true`,否则拒绝 `byoapi_key`
- 私有 / 环回 / 保留目标被阻止
- `user_id` 是可选的,保留是为了兼容性
- `GET /scans/{scan_id}`
- `GET /scans/{scan_id}/report.pdf`
## 配置
来自 `.env.example`:
- `DATABASE_URL`(默认值:`sqlite:///./reconscan.db`)
- `REDIS_URL`(默认值:`redis://localhost:6379`)
- `USE_ARQ_QUEUE`(默认值:`true`)
- `RATE_LIMIT_PER_MINUTE`(默认值:`10`)
- `RATE_LIMIT_PER_DAY`(默认值:`200`)
- `ALLOWED_HOSTS`(默认值:`localhost,127.0.0.1`)
- `CORS_ALLOWED_ORIGINS`(默认值:本地开发源)
- `ALLOW_BYO_API_KEY`(默认值:`false`)
- `OPENROUTER_API_KEY`, `ANTHROPIC_API_KEY`, `OPENAI_API_KEY`(可选)
- `VIRUSTOTAL_API_KEY`, `GOOGLE_SAFE_BROWSING_API_KEY`(可选)
## 注意事项
- 如果未配置外部 AI 密钥,ReconScan 会存储本地回退摘要。
- SQLite 是默认存储引擎,便于本地使用。
- 此代码库有意保持轻量级且易于自托管。
## 许可证
MIT。参见 [LICENSE](./LICENSE)。
ReconScan 是一个开源被动侦察扫描器,采用 FastAPI 后端、async worker 管道以及单页面前端。
其核心在于快速信号获取:运行扫描,获取逐模块的发现结果,并获得现在可导出为精美 PDF 报告的 AI 总结。
## 项目定位(与用途)
- 这是被动侦察。它不进行端点暴力破解、模糊测试或运行主动利用逻辑。
- 适用于态势快照、分类甄别和报告生成。
- 不能替代完整的渗透测试。
## 功能特性
- 13 个被动模块:
- 安全标头
- SSL/TLS
- DNS + 邮箱认证 (SPF/DMARC/MX)
- WHOIS
- Robots/sitemap
- 子域名枚举
- 技术指纹识别
- WAF 检测
- CORS 检查
- Cookie 安全检查
- JS 暴露检查
- 目录暴露检查
- 信誉检查
- 基于 Redis + ARQ worker 的异步执行。
- 如果队列入队失败,回退到进程内后台执行。
- 通过 OpenRouter / Anthropic / OpenAI 提供可选的 AI 总结。
- 基于扫描 + AI 总结生成 PDF 报告。
- 前端直接由 FastAPI 服务(单一 URL,单一应用)。
## 单命令启动(本地开发)
如果你只想快速运行:
```
./start.sh
```
执行内容:
- 如果缺少 `.env`,则从 `.env.example` 创建。
- 如果需要,创建 `.venv`。
- 从 `requirements.txt` 安装依赖。
- 在 `http://localhost:8000` 上启动带热重载的 FastAPI。
- 强制设置 `USE_ARQ_QUEUE=false` 以便在本地更轻松地无 Redis 启动。
使用 `Ctrl+C` 停止。
## 单命令启动(Docker)
```
./start-docker.sh
```
执行内容:
- 如果缺少 `.env`,则从 `.env.example` 创建。
- 通过 Docker Compose 启动 API + worker + Redis。
## Docker 启动(手动)
```
cp .env.example .env
docker compose up --build
```
## 本地开发(不使用 Docker)
1. 安装依赖:
```
pip install -r requirements.txt
```
2. 创建环境文件:
```
cp .env.example .env
```
3. 启动 API:
```
uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
```
4. 在另一个终端中启动 worker(推荐):
```
arq app.worker.WorkerSettings
```
5. 打开:
`http://localhost:8000`
## 运行测试
安装测试依赖:
```
pip install -r requirements-dev.txt
```
运行完整套件:
```
pytest -q
```
## PDF 报告
扫描完成后,在 UI 中点击 `Download PDF`。
后端端点:
- `GET /scans/{scan_id}/report.pdf`
报告包含:
- 目标和扫描元数据
- AI 执行摘要(简版 + 完整叙述,如果可用)
- 严重程度快照表
- 详细的逐模块发现结果
## API
- `GET /health`
- `POST /scans`
- 请求体示例:
- `{ "target": "example.com" }`
- `{ "target": "example.com", "byoapi_key": "...", "byoapi_provider": "your_provider" }`
- 备注:
- 除非 `ALLOW_BYO_API_KEY=true`,否则拒绝 `byoapi_key`
- 私有 / 环回 / 保留目标被阻止
- `user_id` 是可选的,保留是为了兼容性
- `GET /scans/{scan_id}`
- `GET /scans/{scan_id}/report.pdf`
## 配置
来自 `.env.example`:
- `DATABASE_URL`(默认值:`sqlite:///./reconscan.db`)
- `REDIS_URL`(默认值:`redis://localhost:6379`)
- `USE_ARQ_QUEUE`(默认值:`true`)
- `RATE_LIMIT_PER_MINUTE`(默认值:`10`)
- `RATE_LIMIT_PER_DAY`(默认值:`200`)
- `ALLOWED_HOSTS`(默认值:`localhost,127.0.0.1`)
- `CORS_ALLOWED_ORIGINS`(默认值:本地开发源)
- `ALLOW_BYO_API_KEY`(默认值:`false`)
- `OPENROUTER_API_KEY`, `ANTHROPIC_API_KEY`, `OPENAI_API_KEY`(可选)
- `VIRUSTOTAL_API_KEY`, `GOOGLE_SAFE_BROWSING_API_KEY`(可选)
## 注意事项
- 如果未配置外部 AI 密钥,ReconScan 会存储本地回退摘要。
- SQLite 是默认存储引擎,便于本地使用。
- 此代码库有意保持轻量级且易于自托管。
## 许可证
MIT。参见 [LICENSE](./LICENSE)。标签:AI安全分析, Anthropic, ARQ, AV绕过, CIS基准, DevSecOps, DNS安全, Docker, FastAPI, HTTP/HTTPS抓包, OpenAI, PDF报告, Python, Redis, SSL/TLS分析, 上游代理, 内存规避, 大模型, 威胁情报, 子域名枚举, 安全工具库, 安全防御评估, 实时处理, 密码管理, 开发者工具, 开源安全工具, 异步任务, 态势感知, 情报收集, 技术栈识别, 搜索引擎查询, 数据可视化, 数据统计, 无后门, 渗透测试辅助, 漏洞研究, 端口扫描, 系统安全, 网络安全, 网络安全, 被动侦察, 请求拦截, 逆向工具, 逆向工程平台, 隐私保护, 隐私保护