Sayan110/soc-vulnerability-scanner

GitHub: Sayan110/soc-vulnerability-scanner

一个基于 FastAPI 和本地大模型的教育型 SOC 漏洞扫描平台,集成了 Nmap 扫描、威胁情报丰富与 AI 分析,用于模拟安全运营中心的漏洞评估工作流。

Stars: 1 | Forks: 0

# AI 驱动的 SOC 漏洞扫描器 ![Python](https://img.shields.io/badge/Python-3.10+-blue) ![FastAPI](https://img.shields.io/badge/FastAPI-SOC%20Web%20App-green) ![安全](https://img.shields.io/badge/Cybersecurity-Vulnerability%20Assessment-red) ![状态](https://img.shields.io/badge/Project-Educational%20SOC%20Lab-orange) ## 概述 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, 机器学习, 漏洞修复, 漏洞扫描器, 端口扫描, 网络安全, 网络安全培训, 网络安全审计, 网络映射, 虚拟驱动器, 逆向工具, 逆向工程平台, 隐私保护, 靶场, 风险预测