Sayan110/soc-vulnerability-scanner
GitHub: Sayan110/soc-vulnerability-scanner
一个基于 FastAPI 和本地大模型的教育型 SOC 漏洞扫描平台,集成了 Nmap 扫描、威胁情报丰富与 AI 分析,用于模拟安全运营中心的漏洞评估工作流。
Stars: 1 | Forks: 0
# AI 驱动的 SOC 漏洞扫描器




## 概述
AI 驱动的 SOC 漏洞扫描器是一个网络安全 Web 应用程序,它模拟了安全运营中心的工作流程,用于授权的漏洞评估、分析师分诊和报告。
该平台接受目标 IP 地址或域名,对其进行验证,使用 Nmap 执行服务发现,通过 CVE 和 CVSS 上下文丰富结果,检查常见的 Web 暴露问题,将危险服务映射到 MITRE ATT&CK 风格的技术,通过 Ollama 生成 AI 辅助的 SOC 解释,将扫描历史存储在 SQLite 中,并导出可供分析师使用的 PDF 报告。
该界面已被重新设计为专业的 SOC 指挥中心,具有动态遥测面板、雷达视觉效果、扫描线特效、严重性阶梯、检测流水线卡片、历史审计视图以及适用于桌面和移动端的响应式页面。
## 亮点
- 专业的 SOC 风格 UI,具有深色指挥中心视觉效果、动态遥测、响应式布局和以分析师为中心的结果屏幕。
- 采用 FastAPI 后端和 Jinja2 模板,用于登录、仪表板、扫描结果、历史记录和报告视图。
- 基于 Nmap 的目标扫描,用于发现开放服务和暴露端口。
- 通过 NVD API 获取 CVE 情报,并提供基于 CVSS 的风险解读。
- 在配置 API 密钥后,可选集成 AbuseIPDB 和 VirusTotal 进行信息丰富。
- 基于 Ollama 的本地 AI 助手,用于漏洞解释、攻击模拟和修复指导。
- MITRE ATT&CK 风格的服务映射,涵盖常见暴露模式,例如 SSH、RDP、SMB、FTP 和数据库服务。
- 使用 Scapy 实现类似 IDS 的数据包遥测,用于检测可疑流量指标。
- SQLite 扫描历史记录,提供适合审计的历史记录。
- 使用 ReportLab 导出 PDF,用于下载 SOC 扫描报告。
- 支持 Redis 和 Celery 以提供后台 Worker 功能。
- Windows 辅助脚本,可快速启动和停止本地实验环境。
## 演示访问
应用程序在首次运行时会创建一个默认的本地演示用户:
```
Username: admin
Password: admin123
```
对于任何共享演示或托管环境,请更改密码并设置一个强 `SECRET_KEY`。
## 仓库结构
```
soc-vulnerability-scanner/
|-- start-all.bat
|-- stop-all.bat
|-- main.py
|-- celery_worker.py
|-- requirements.txt
|-- Procfile
|-- README.md
|-- .gitignore
|-- .gitattributes
|-- redis-local.conf
|-- report.json
|-- report.txt
|-- security_report.pdf
|-- templates/
| |-- base.html
| |-- dashboard.html
| |-- history.html
| |-- index.html
| |-- login.html
| |-- register.html
| |-- result.html
|-- reports/
| |-- report_*.pdf
|-- redis/
| |-- redis/
| | |-- redis-server.exe
| | |-- redis-cli.exe
| | |-- redis.windows.conf
|-- soc_web_scanner/
| |-- app.py
| |-- report.json
| |-- security_report.pdf
| |-- templates/
| | |-- index.html
```
运行时文件(例如 `venv/`、`__pycache__/`、logs、`.env` 和 `soc_scans.db*`)故意未包含在仓库中。
## 核心文件
| 文件 | 用途 |
| --- | --- |
| `main.py` | 主 FastAPI 应用程序、身份验证、扫描器工作流、风险评分、AI 分析、历史记录和报告路由。 |
| `celery_worker.py` | 用于支持 Redis 后台扫描的 Celery Worker 配置。 |
| `templates/base.html` | 共享的 SOC 视觉系统、主题变量、动画、可复用卡片、导航和响应式样式。 |
| `templates/index.html` | 主指挥中心仪表板和扫描启动页面。 |
| `templates/result.html` | 分析师结果工作区,包含服务发现、风险态势、MITRE 映射、图表和 AI 输出。 |
| `templates/history.html` | 历史扫描/审计视图。 |
| `start-all.bat` | Windows 辅助脚本,用于启动 Redis、Ollama、Celery、FastAPI 和浏览器。 |
| `stop-all.bat` | Windows 辅助脚本,用于停止本地实验服务并释放端口。 |
| `redis-local.conf` | 辅助脚本使用的本地 Redis 配置。 |
| `reports/` | 示例/生成的 PDF 报告输出。 |
## 架构
```
Browser / SOC Operator
|
v
FastAPI + Jinja2 SOC Interface
|
v
Target Validation
|
v
Nmap Service Discovery
|
+--> CVE / CVSS Enrichment
+--> AbuseIPDB / VirusTotal Enrichment
+--> Web Header Exposure Checks
+--> MITRE ATT&CK-Style Mapping
+--> Ollama AI SOC Analysis
|
v
Risk Classification + Analyst Result View
|
v
SQLite History + ReportLab PDF Export
```
## 技术栈
| 层级 | 工具 |
| --- | --- |
| 后端 | Python, FastAPI, Uvicorn |
| 前端 | HTML, Jinja2, CSS animations, Chart.js |
| 扫描 | Nmap, python-nmap |
| 数据包遥测 | Scapy |
| AI 分析 | Ollama 及本地 Llama 兼容模型 |
| 威胁情报 | NVD CVE API,可选 AbuseIPDB,可选 VirusTotal |
| 数据库 | SQLite |
| 报告 | ReportLab |
| 后台任务 | Redis, Celery |
| 部署支持 | 兼容 Railway 的 `Procfile` |
## 前置条件
在运行扫描器之前,请安装以下内容:
- Python 3.10 或更高版本
- Git
- Nmap 已安装并在系统 PATH 中可用
- 如果需要 AI 解释,请安装 Ollama
- 一个本地 Ollama 模型,例如 `tinyllama`、`llama3` 或 `llama3.2`
- Redis,用于支持 Celery/后台 Worker
在 Windows 上,Nmap 可能还会安装 Npcap。如果数据包监控不起作用,请以管理员身份运行终端。
## 安装
克隆仓库:
```
git clone https://github.com/Sayan110/soc-vulnerability-scanner.git
cd soc-vulnerability-scanner
```
创建并激活虚拟环境:
```
python -m venv venv
venv\Scripts\activate
```
安装 Python 依赖项:
```
python -m pip install --upgrade pip
pip install -r requirements.txt
```
安装或准备 Ollama:
```
ollama pull tinyllama
```
## 在 Windows 上运行
安装依赖项后,最简单的本地工作流程是:
```
start-all.bat
```
该脚本会打开 Redis、Ollama、Celery 和 FastAPI 的服务窗口,然后在浏览器中打开应用程序:
```
http://127.0.0.1:8000
```
要停止本地实验环境:
```
stop-all.bat
```
辅助脚本支持 `main.py` 位于仓库根目录的 GitHub 仓库布局。它们也支持旧版解压 ZIP 布局(其中应用程序位于嵌套的 `soc-vulnerability-scanner-main` 文件夹中)。
## 手动运行
启动 Redis:
```
redis\redis\redis-server.exe redis-local.conf
```
启动 Ollama:
```
ollama serve
```
启动 Celery Worker:
```
python -m celery -A celery_worker.celery worker --pool=solo --loglevel=info
```
启动 FastAPI 应用程序:
```
python -m uvicorn main:app --host 127.0.0.1 --port 8000
```
打开:
```
http://127.0.0.1:8000
```
## 部署到 Railway
此仓库包含可直接用于 Railway 部署的文件:
- `Dockerfile` 构建 Linux 容器,安装 Nmap,安装 Python 依赖项,并在 Railway 的 `$PORT` 上启动 FastAPI。
- `railway.json` 告诉 Railway 使用 Dockerfile 并检查 `/health`。
- `.dockerignore` 会将本地虚拟环境、日志、缓存文件和 SQLite 运行时文件排除在部署镜像之外。
- `.railwayignore` 会将仅限 Windows 的 Redis 二进制文件、生成的 PDF、日志、数据库文件和本地虚拟环境排除在 Railway 上传存档之外。
- `Procfile` 保留给使用 Procfile 样式启动的平台使用。
推荐的 Railway 流程:
```
railway login
railway init
railway up
```
如果通过 Railway 仪表板部署,请连接 GitHub 仓库并选择此项目根目录。Railway 将检测到 `Dockerfile` 并从中构建 Web 服务。
建议的 Railway 环境变量:
```
SECRET_KEY=replace-this-with-a-long-random-value
OLLAMA_MODEL=tinyllama
ABUSE_API_KEY=optional-abuseipdb-key
VT_API_KEY=optional-virustotal-key
```
Railway 部署注意事项:
- Web 应用程序可以在 Railway 上运行,但除非您连接可访问的模型服务,否则本地 Ollama 不会自动在 Railway 内部可用。
- SQLite 历史记录存储在容器文件系统上,除非添加持久存储/数据库选项,否则在重新部署时可能会重置。
- 捆绑的 Windows Redis 二进制文件保留在仓库中用于本地 Windows 演示;Railway 改用 Linux 容器环境。
- 始终只扫描您拥有或明确授权测试的目标。
## 环境变量
| 变量 | 是否必需 | 用途 |
| --- | --- | --- |
| `SECRET_KEY` | 推荐 | JWT 签名密钥。在任何共享使用之前替换演示默认值。 |
| `OLLAMA_MODEL` | 可选 | 首选的本地 Ollama 模型名称。 |
| `ABUSE_API_KEY` | 可选 | 启用 AbuseIPDB 丰富功能。 |
| `VT_API_KEY` | 可选 | 启用 VirusTotal IP 丰富功能。 |
示例:
```
SECRET_KEY=replace-this-with-a-long-random-value
OLLAMA_MODEL=tinyllama
ABUSE_API_KEY=your-abuseipdb-key
VT_API_KEY=your-virustotal-key
```
## SOC 工作流
```
Login
|
v
Enter authorized IP/domain target
|
v
Run service discovery and enrichment
|
v
Review severity, CVEs, MITRE mapping, and AI analysis
|
v
Ask follow-up SOC questions
|
v
Download PDF report and review scan history
```
## UI 页面
- 登录/注册:带有 SOC 身份验证主题的操作员访问门户。
- 仪表板:扫描启动器、遥测卡片、检测流水线、IDS 状态、历史记录预览和 AI 助手入口点。
- 结果:发现表、风险态势、CVE/CVSS 数据、MITRE 映射、攻击图、AI 模拟和报告下载。
- 历史记录:用于先前扫描和风险评分的审计风格表格。
## 验证
编辑后使用以下检查:
```
python -m py_compile main.py
```
运行应用程序并手动验证:
```
Login -> Dashboard -> Scan authorized target -> Result page -> PDF report -> History page
```
## 故障排除
| 问题 | 解决方案 |
| --- | --- |
| `Nmap is not installed` 或扫描失败 | 安装 Nmap,将其添加到 PATH,然后重启终端。 |
| Ollama 模型错误 | 运行 `ollama pull tinyllama` 并确保 `ollama serve` 正在运行。 |
| Redis 缺失 | 使用捆绑的 `redis\redis\redis-server.exe` 或安装 Redis 并将其添加到 PATH。 |
| 端口 `8000`、`6379` 或 `11434` 已被占用 | 运行 `stop-all.bat`,然后重新启动。 |
| Scapy/数据包遥测不起作用 | 以管理员身份运行终端并确认已安装 Npcap。 |
| 更改用户后登录失败 | 仅在实验环境中删除本地 `soc_scans.db`,然后重启应用程序以重新创建演示用户。 |
## 生产环境就绪说明
此项目是为教育、演示和授权实验室使用而构建的。该 UI 采用专业 SOC 界面风格设计,但在进行任何真正的共享部署之前,您应该:
- 替换默认的管理员凭据。
- 设置一个强 `SECRET_KEY`。
- 使用 HTTPS 和生产级的 ASGI 服务器设置。
- 添加更强的基于角色的访问控制。
- 在仓库之外存储机密信息。
- 审查扫描授权和速率限制。
- 强化日志记录、错误处理和审计控制。
## GitHub
仓库:
```
https://github.com/Sayan110/soc-vulnerability-scanner
```
## 教育目的
此项目是作为 B.Tech 计算机科学 (AI & ML) 网络安全项目构建的,旨在演示 SOC 风格的工具如何将漏洞发现、信息丰富、AI 辅助分析、报告生成和分析师工作流整合在一个应用程序中。
## 免责声明
仅在您拥有或获得明确书面许可测试的系统上使用此工具。未经授权的扫描可能违反法律、机构规定、云提供商政策或网络可接受使用政策。
## 作者
**Sayan Deb Nath**
B.Tech CSE (AI & ML)
GitHub: https://github.com/Sayan110
标签:AI安全分析, AI风险缓解, Apex, AV绕过, Cloudflare, CTI, CVE情报, CVSS评分, DLL 劫持, FastAPI, Jinja2, LLM评估, MITRE ATT&CK, Nmap, Ollama, OPA, PDF报告生成, Python, SQLite, Web安全应用, 加密, 后端开发, 大语言模型, 威胁情报, 安全态势感知, 安全运营中心, 实时处理, 开发者工具, 开源安全工具, 插件系统, 搜索引擎查询, 教育实验室, 数据统计, 无后门, 服务发现, 本地AI, 机器学习, 漏洞修复, 漏洞扫描器, 端口扫描, 网络安全, 网络安全培训, 网络安全审计, 网络映射, 虚拟驱动器, 逆向工具, 逆向工程平台, 隐私保护, 靶场, 风险预测