sanjeev1508/AI-Driven-ZeroDay-SOC-Monitoring-Tool

GitHub: sanjeev1508/AI-Driven-ZeroDay-SOC-Monitoring-Tool

一款基于本地大模型和向量数据库的四代理架构 SOC 系统,专用于 Windows 环境下的实时日志分析、零日威胁检测及自动化告警。

Stars: 1 | Forks: 0

# AI 驱动的零日 SOC 监控工具 一个由四个模块化 Agent 组建的 AI 驱动安全运营中心 (SOC) 系统,用于实时日志监控、零日威胁情报、合成攻击模式生成和自动化告警管理。该架构使用轻量级 CSV 流式处理和 Qdrant 向量存储替代了传统的 Kafka 消息代理,并提供了 FastAPI 后端和 Streamlit 仪表盘。 ## 系统架构 ``` ┌─────────────────────────────────────────────────────────────────┐ │ SOC System │ │ │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────────┐ │ │ │ Agent 1 │ │ Agent 2 │ │ Agent 3 │ │ │ │ Log Manager │───▶│ Threat Intel│───▶│ Synthetic Gen │ │ │ │ │ │ │ │ │ │ │ │ Windows Logs │ │ Selenium │ │ LLM (Ollama) │ │ │ │ ▼ │ │ Scraper │ │ Attack Patterns │ │ │ │ normalized_ │ │ ▼ │ │ ▼ │ │ │ │ logs.csv │ │ Qdrant DB │◀───│ Qdrant DB │ │ │ └──────────────┘ └──────────────┘ └──────────────────┘ │ │ │ │ │ │ ▼ ▼ │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ Agent 4: Alert Manager │ │ │ │ Semantic search (CSV logs ↔ Qdrant patterns) │ │ │ │ ▼ │ │ │ │ alerts.json │ │ │ └──────────────────────────────────────────────────────────┘ │ │ │ │ │ ┌─────────────┴──────────────┐ │ │ ▼ ▼ │ │ FastAPI Backend Streamlit │ │ (backend/main.py) Dashboard │ │ Port 8001 (dashboard.py) │ └─────────────────────────────────────────────────────────────────┘ ``` ## Agent 概述 | Agent | 文件 | 角色 | 输出 | |---|---|---|---| | **Agent 1 – Log Manager** | `agent1_log_collector.py` | 持续收集 Windows Event Logs 并将其标准化 | `normalized_logs.csv` | | **Agent 2 – Threat Intel** | `agent2_threat_intel.py` | 使用 Selenium 抓取零日情报;将 embeddings 存储在 Qdrant 中 | Qdrant `threat_intel` 集合 | | **Agent 3 – Synthetic Gen** | `agent3_synthetic_gen.py` | 通过 Ollama LLM 生成合成攻击模式,增强威胁数据库 | Qdrant `synthetic_patterns` 集合 | | **Agent 4 – Alert Manager** | `agent4_alert_manager.py` | 对 CSV 日志进行时间过滤,针对 Qdrant 运行语义搜索,生成结构化告警 | `alerts.json` | **支撑模块:** - `agent4_pattern_detector.py` — 基于 CSV-tail 的模式检测器,作为独立进程与 Agent 1 并行运行 - `api_pattern_analyzer.py` — FastAPI 后端使用的模式分析工具 - `soc_config.py` — 集中化配置和系统验证(Kafka 可选,Ollama 必需) - `main.py` — 编排器:将 Agent 1 和 Agent 4 作为独立的 OS 进程生成 - `dashboard.py` — 用于实时查看告警和手动控制流水线的 Streamlit UI ## 前置条件 | 依赖 | 用途 | 默认地址 | |---|---|---| | **Qdrant** | 威胁模式的向量存储 | `localhost:6333` | | **Ollama** | 本地 LLM 和 embedding 模型 | `localhost:11434` | | **Google Chrome** | Agent 2 的 Selenium 爬虫 | — | | **Python 3.9+** | 运行时 | — | | **Windows OS** | 访问 Windows Event Log 所需 (Agent 1) | — | ### 安装 Python 依赖 ``` pip install -r requirements.txt ``` ### 拉取所需的 Ollama 模型 ``` ollama pull llama3.1:latest ollama pull nomic-embed-text:latest ``` ### 启动 Qdrant (Docker) ``` docker run -p 6333:6333 qdrant/qdrant ``` ### 验证系统就绪状态 ``` python soc_config.py ``` ## 快速开始 系统包含三个独立的组件,每个组件都在各自的终端中运行。 ### 终端 — 启动 FastAPI 后端 ``` python.exe -m uvicorn backend.main:app --host 0.0.0.0 --port 8001 ``` API 将在 `http://localhost:8001` 上可用。交互式文档位于 `http://localhost:8001/docs`。 ## 仪表盘功能 位于 `http://localhost:8501` 的 Streamlit 仪表盘提供以下功能: - **Alert Feed** — 实时显示来自 `alerts.json` 的 Critical/High 严重级别告警,按时间戳排序,每 5 秒自动刷新 - **Metrics panel** — 总告警数、严重威胁计数、最后更新时间 **侧边栏控制:** | 按钮 | 动作 | |---|---| | **Start Log Stream** | 在新终端中启动 Agent 1 (仅限 Windows) | | **Run Threat Update** | 在后台触发 Agent 2 → 3 流水线 | | **Run Analysis Now** | 手动触发 Agent 4 进行可配置时间窗口(小时)的分析 | ## 文件参考 ``` AI-Driven-ZeroDay-SOC-Monitoring-Tool/ ├── agent1_log_collector.py # Windows Event Log collector → normalized_logs.csv ├── agent2_threat_intel.py # Selenium-based zero-day scraper → Qdrant ├── agent3_synthetic_gen.py # LLM-powered synthetic pattern generator → Qdrant ├── agent4_alert_manager.py # Alert generator (CSV ↔ Qdrant semantic search) ├── agent4_pattern_detector.py # CSV-tail continuous pattern detector ├── api_pattern_analyzer.py # Pattern analysis utilities for the API ├── dashboard.py # Streamlit UI dashboard ├── main.py # Multi-process orchestrator (Agent 1 + Agent 4) ├── soc_config.py # Config loader & system validation checks ├── requirements.txt # Python dependencies ├── run_pipeline.ps1 # PowerShell: runs Agent 2 → Agent 3 ├── run_dashboard.ps1 # PowerShell: launches Streamlit dashboard ├── start_soc.ps1 # PowerShell: full system startup script ├── start_soc.bat # Batch: full system startup (Windows) └── test_system.py # Prerequisite and connectivity tests ``` ## 配置 关键设置通过环境变量管理(默认值位于 `soc_config.py`): | 变量 | 默认值 | 描述 | |---|---|---| | `LOCAL_LLM_MODEL` | `llama3.1:latest` | 用于合成生成的 Ollama 模型 | | `OLLAMA_EMBED_MODEL` | `nomic-embed-text:latest` | 用于 embeddings 的 Ollama 模型 | | `OLLAMA_API_URL` | `http://localhost:11434` | Ollama API 基础 URL | | `LOG_LEVEL` | `INFO` | 日志详细程度 | | `OPENAI_API_KEY` | *(空)* | 可选 — Ollama 用作默认 LLM 后端 | ## 数据流 ``` Windows Event Logs │ ▼ (Agent 1, every 5s) normalized_logs.csv │ ▼ (Agent 4 — on-demand or continuous) Semantic search vs. Qdrant │ ├── threat_intel collection ◀── Agent 2 (scraped zero-days) └── synthetic_patterns ◀── Agent 3 (LLM-generated patterns) │ ▼ alerts.json ──▶ Dashboard / FastAPI (port 8001) ``` ## 故障排除 **Agent 1 无法收集日志** 确保终端以管理员权限运行。必须安装 `pywin32` (`pip install pywin32`)。 **Qdrant 连接被拒绝** 确认 Qdrant 正在运行:`docker ps` 或检查 `localhost:6333/healthz`。 **Ollama 模型未找到** 运行 `ollama list` 查看已安装的模型,并使用 `ollama pull ` 下载缺失的模型。 **Agent 2 出现 Chrome/Selenium 错误** 确保已安装 Google Chrome 且 `chromedriver` 与您的 Chrome 版本匹配,或者使用 `webdriver-manager`(包含在 requirements 中)。 **后端未启动** 确认您正在从仓库根目录运行,并且 `backend/main.py` 存在。命令为: ``` python.exe -m uvicorn backend.main:app --host 0.0.0.0 --port 8001 ``` ## 技术栈 - **Python 3.9+** — 核心运行时 - **FastAPI + Uvicorn** — REST API 后端 - **Streamlit** — 交互式仪表盘 - **Qdrant** — 用于语义威胁搜索的向量数据库 - **Ollama** — 本地 LLM 推理 (llama3.1, nomic-embed-text) - **Selenium** — 零日威胁抓取 (Agent 2) - **pywin32** — Windows Event Log 访问 - **CSV streaming** — 轻量级日志传输(替代 Kafka) ## 许可证 本项目用于 AI 驱动的网络安全运营领域的研究和教育目的。
标签:AI风险缓解, AI驱动, AMSI绕过, AV绕过, CSV流式传输, DLL 劫持, FastAPI, Kubernetes, LLM, LLM评估, Ollama, PyRIT, Python, Qdrant, Selenium, Streamlit, Unmanaged PE, Windows日志, 人工智能安全, 可扩展架构, 合规性, 向量数据库, 告警管理, 多智能体系统, 大语言模型, 威胁情报, 威胁检测, 子域名变形, 安全仪表盘, 安全运营中心, 密码管理, 开发者工具, 攻击模式生成, 数据流处理, 无后门, 网络安全, 网络安全审计, 网络映射, 自动化安全分析, 访问控制, 请求拦截, 逆向工具, 隐私保护, 零日威胁, 零日漏洞