KibouAkari/vScanner
GitHub: KibouAkari/vScanner
一个基于 Flask 与 Nmap 的自适应漏洞扫描平台,提供仪表板分析、风险趋势与可导出报告,专注项目级安全数据聚合。
Stars: 1 | Forks: 0
vScanner
具有现代报告、自适应扫描引擎和项目级安全分析的专业漏洞扫描工作空间。
在线: vscanner.vercel.app
## 为什么选择 vScanner
vScanner 最初是一个简单的 Python 脚本,包含一个基础的 Flask 网站和几个基于 Nmap 的扫描选项,用于一个学校项目。
它已经发展成为一个更大的安全平台,具备模块化扫描引擎、去重发现智能、持久化项目分析、可导出报告以及生产就绪的部署选项。
## 实时报告展示
vScanner 提供从首次扫描到执行仪表板视图的完整报告流程:
- 可选择配置文件和策略的实时扫描执行
- 项目仪表板,包含风险趋势、严重性分布和顶级漏洞
- 聚合发现视图,支持过滤、排序和资产影响上下文
- 一键导出 PDF 和 CSV 报告,用于审计和利益相关者沟通
### 实时报告预览
生产环境截图(从 https://vscanner.vercel.app 捕获),以匹配实际的在线 UI 设计。
生产链接:
- 在线 UI: `https://vscanner.vercel.app`
- 健康检查 API: `https://vscanner.vercel.app/api/health`
- 示例仪表板端点: `https://vscanner.vercel.app/api/projects/default/dashboard?window_days=30`
## 报告审查工作流程
在与团队、教师或利益相关者一起审查生成的报告时,请使用以下结构:
1. 验证扫描范围
- 确认目标、配置文件和端口策略与批准的范围匹配。
- 确认扫描时间戳和环境(实验室、预发布、生产)。
2. 审查执行风险快照
- 从风险分布和趋势方向开始。
- 确定当前状态相对于之前的扫描是改善还是退化。
3. 优先处理可操作发现
- 首先关注具有暴露攻击面的关键和高严重性发现。
- 将跨多个资产的重复问题分组为一个修复工作流。
4. 验证技术证据
- 检查开放端口、服务版本、横幅和插件证据。
- 在分配修复工作之前确认信号质量。
5. 定义修复计划
- 为每个已接受发现分配负责人、优先级和截止日期。
- 使用简单的生命周期跟踪状态:打开、进行中、已验证、已关闭。
6. 重新扫描并闭环
- 修复后重新运行有针对性的扫描。
- 导出 PDF/CSV 以生成审计跟踪并附加到工单记录。
## 功能概述
- 目标类型:
- 单个 IP
- 域名
- CIDR 网络(授权本地/实验室发现)
- 扫描配置文件:
- `light` 用于快速发现
- `deep` 用于更全面的服务和版本分析
- `stealth` 用于低噪声防御性扫描
- `network` 用于 CIDR 发现
- `advanced_v2` 用于自适应异步引擎和插件检查
- 端口策略:
- `standard`
- `aggressive`
- 发现智能:
- 每个资产的去重漏洞跟踪
- 跨资产的聚合弱点可见性
- 更清晰的风险分布(仅可操作发现)
- 报告:
- 单次扫描的 PDF 和 CSV
- 项目发现的 PDF 和 CSV
- 用于共享和审查的仪表板导出
## 架构快照
- `vscanner.py`:主要后端、API、持久化、分析、扫描编排
- `scanner_v2/`:模块化异步扫描引擎、协议指纹识别、插件检查
- `scanner_v2/rust_bridge.py`:用于快速 TCP 探测的可选 Rust 工作者桥接
- `rust_worker/`:Rust 数据平面工作者(可选)
- `templates/index.html` + `static/app.js` + `static/style.css`:Web UI 和仪表板体验
- `api/index.py` + `vercel.json`:无服务器部署入口点和路由
## 快速入门
1. 安装 Nmap
- macOS: `brew install nmap`
- Linux: 包管理器,例如 `sudo apt install nmap`
- Windows: https://nmap.org/download.html
2. 安装 Python 依赖
```
pip install -r requirements.txt
```
3. 启动应用程序
```
python vscanner.py
```
4. 打开 UI
- `http://127.0.0.1:5000`
## API 亮点
- `POST /api/scan`
- `POST /api/scan/v2`
- `GET /api/projects`
- `GET /api/projects/
/dashboard?window_days=30`
- `GET /api/projects//findings?severity=all&since_days=90&sort_by=severity&sort_dir=desc&search=`
- `GET /api/reports//pdf`
- `POST /api/admin/reset-data`
示例扫描请求(`POST /api/scan` 或 `POST /api/scan/v2`):
```
{
"target": "example.com",
"profile": "deep",
"port_strategy": "standard",
"project_id": "default"
}
```
## 部署(Vercel)
此仓库开箱即用支持 Vercel 部署:
- `api/index.py` 是无服务器入口点
- `vercel.json` 将传入流量路由到 Flask
推荐的环境变量:
- `VSCANNER_PUBLIC_MODE=1`
- `VSCANNER_FORCE_LIGHT_SCAN=1`(可选)
- `DATABASE_URL=`(可选)
- `MONGODB_URI=`(可选)
- `MONGODB_DB_NAME=vscanner`(可选)
## 可选 Rust 数据平面(V2)
保持 Python 作为控制平面,使用 Rust 作为可选数据平面以实现更快的连接探测。
构建工作者:
```
cd rust_worker
cargo build --release
```
启用工作者:
```
export VSCANNER_USE_RUST_WORKER=1
export VSCANNER_RUST_WORKER_BIN="$(pwd)/rust_worker/target/release/vscanner-rust-worker"
```
然后通过 `POST /api/scan/v2` 或 UI 中的高级 V2 模式运行扫描。
## 工程验证
- 单元测试:
```
python -m unittest tests/test_scanner_v2.py
```
- 集成测试(容器堆栈):
```
python -m unittest tests/integration/test_container_stack.py
```
- 基准测试:
```
python scripts/benchmark_v2.py --host 127.0.0.1 --runs 3 --ports 400
```
架构说明位于 `docs/scanner_v2_architecture.md`。
## 安全与法律
仅对您明确授权测试的系统和网络使用 vScanner。
未经授权的扫描可能违反法律、合同或策略。
`stealth` 意味着低噪声的防御行为。它不提供规避或绕过能力。标签:AMSI绕过, CTI, Flask, GPT, HTTP API, Maven构建, Nmap, PDF报告, Python, V2扫描, Web安全, 企业审计, 可视化界面, 威胁检测, 安全仪表盘, 安全报告, 无后门, 漏洞管理, 生产就绪部署, 网络发现, 网络安全, 自适应扫描, 蓝队分析, 虚拟驱动器, 逆向工具, 隐私保护, 项目级分析