GauravASY/Security-Operation-Agent-v2

GitHub: GauravASY/Security-Operation-Agent-v2

一个基于多智能体架构的 AI 安全运营助手,结合 RAG 和 MITRE ATT&CK 映射,实现威胁情报文档自动解析、IoC/TTP 提取以及与 Wazuh SIEM 的实时事件分析集成。

Stars: 0 | Forks: 0

# 安全运营代理 v2 一款智能 AI 驱动的安全运营助手,可帮助分析威胁情报报告、提取危害指标、将战术、技术和程序 映射到 MITRE ATT&CK 框架,并与 Wazuh SIEM 集成以进行实时安全事件分析。该系统结合了自然语言处理与结构化数据存储,使安全分析师能够通过对话交互来查询和分析威胁数据。 ## 概述 安全运营代理 v2 是一个全栈应用程序,由具备 AI 代理功能的 FastAPI 后端和基于 React 的聊天界面组成。系统处理上传的威胁情报文档,提取结构化安全信息,并将其存储在 PostgreSQL 数据库中以便高效查询。此外,它与 Wazuh SIEM 集成,以获取、分析安全事件并提供实时可操作的见解。用户通过由 OpenAI ChatKit 驱动的聊天界面与系统交互,支持对威胁报告、IoC、受害行业、攻击技术和实时安全事件进行自然语言查询。 ## 架构 该应用程序采用客户端-服务器架构,包含以下组件: ### 后端架构 - **FastAPI Server**:处理 HTTP 请求、文件上传和用于流式响应的 WebSocket 连接 - **AI Agent System**:使用 OpenAI Agents 框架的多代理架构,采用工具即代理 模式及专用代理间的切换 - **Vector Database**:ChromaDB,用于上传文档的语义搜索 - **Relational Database**:PostgreSQL,用于存储威胁情报数据,包括报告、IoC 和 TTP - **File Storage**:AWS S3 集成,用于持久化文档存储 - **Document Processing**:Unstructured 库,用于从各种文档格式中提取文本 - **Wazuh SIEM Integration**:通过 Wazuh API 进行实时安全事件获取和分析 ### 前端架构 - **React 19**:具有最新特性的现代 UI 框架 - **OpenAI ChatKit**:预构建的聊天界面组件,支持实时流式传输 - **Vite**:快速构建工具和开发服务器 - **TypeScript**:类型安全的开发体验 ### 数据流 1. 用户通过聊天界面上传威胁情报文档 2. 后端处理文档,提取文本并上传至 S3 3. 内容被摄取到 ChromaDB 向量存储中以进行语义搜索 4. AI 代理分析文档并提取结构化数据(IoC、TTP、受害者信息) 5. 结构化数据存储在 PostgreSQL 中以便高效查询 6. 用户通过自然语言查询系统,由专用代理处理 7. 代理从向量存储、SQL 数据库或 Wazuh SIEM 检索相关信息 8. 结果实时流式传输回用户界面 ## 功能特性 ### 核心能力 - **威胁情报处理**:上传和解析 TXT 和 PDF 格式的威胁报告 - **结构化数据提取**:自动提取和分类: - 入侵指标(IP 地址、域名、哈希值、URL) - 映射到 MITRE ATT&CK 的战术、技术和程序 - 受害者行业信息 - 事件时间线和严重性评估 - **自然语言查询**:用于以下功能的对话式界面: - 按受害行业搜索报告 - 查找与特定报告关联的 IoC - 按 MITRE ATT&CK 技术查询报告 - 检索完整报告内容 - 对上传文档进行语义搜索 - **Wazuh SIEM 集成**: - 从 Wazuh 实时获取安全事件 - AI 驱动的安全警报分析 - 特定域名的事件过滤 - 自动化风险评估和建议 - 将分析结果直接流式传输到 UI - **多代理系统**:具有不同能力的专用代理: - **Main Agent (Gaurav)**:用户交互和工具编排的主要接口。根据用户查询决定调用哪些工具或代理。 - **Extraction Agent**:处理威胁情报文档的结构化数据提取,使用 Pydantic 模式验证 IoC、TTP 和报告元数据。 - **Wazuh Agent**:专用于 Wazuh SIEM 操作的代理。通过 Wazuh API 获取安全事件,执行分析,并提供带有风险评估的安全建议。 ### 技术特性 - **实时流式传输**:基于 WebSocket 的代理响应流式传输,针对 Wazuh 分析支持直接 UI 流式传输 - **Tool-as-Agent 模式**:Wazuh 代理作为工具暴露给主代理,实现无缝委托 - **ReAct 循环架构**:具有工具执行的多轮推理,用于复杂查询 - **两阶段文件上传策略**:高效处理大文件上传 - **向量相似性搜索**:使用嵌入的语义搜索能力 - **结构化数据库查询**:基于 SQL 的过滤和聚合 - **CORS 支持**:为本地开发配置 - **类型安全**:前端完全支持 TypeScript ## 前置条件 ### 系统要求 - **Python**:3.13 版本或更高 - **Node.js**:18 版本或更高 - **PostgreSQL**:12 版本或更高 - **AWS 账户**:用于 S3 存储桶访问(可选但推荐) ### 外部服务 - **LLM Provider**:访问语言模型 API(OpenAI、Anthropic 或兼容端点) - **PostgreSQL Database**:本地或远程 PostgreSQL 实例 - **AWS S3 Bucket**:用于文档存储(可选) - **Wazuh SIEM**:访问 Wazuh 索引器端点以进行安全事件分析(可选,但使用 Wazuh 功能时必需) ## 环境设置 ### 后端设置 1. **导航到后端目录** cd Security-Operations-Agent 2. **创建 Python 虚拟环境** python3.13 -m venv .venv source .venv/bin/activate # On macOS/Linux # or .venv\Scripts\activate # On Windows 3. **安装 uv 包管理器(推荐)** pip install uv 4. **安装依赖项** uv pip install -e . # or using pip pip install -e . 5. **设置 PostgreSQL 数据库** 如果尚未安装,请安装 PostgreSQL: # macOS brew install postgresql brew services start postgresql # Ubuntu/Debian sudo apt-get install postgresql postgresql-contrib sudo systemctl start postgresql 创建数据库用户(可选): psql postgres CREATE USER your_username WITH PASSWORD 'your_password'; ALTER USER your_username WITH SUPERUSER; \q 6. **配置环境变量** 在 `Security-Operations-Agent` 目录中创建 `.env` 文件: # LLM Configuration LMAAS_URL=https://api.openai.com/v1 # Your LLM provider endpoint LMAAS_KEY=your_api_key_here LMAAS_MODEL=gpt-4 # Model name # PostgreSQL Configuration POSTGRES_USER=your_username POSTGRES_PASSWORD=your_password POSTGRES_HOST=localhost POSTGRES_PORT=5432 TARGET_DB=siem_db # AWS S3 Configuration (Optional) AWS_ACCESS_KEY_ID=your_access_key AWS_SECRET_ACCESS_KEY=your_secret_key S3_BUCKET_NAME=your_bucket_name AWS_REGION=us-east-1 # Wazuh SIEM Configuration (Required for Wazuh integration) WAZUH_URL=https://your-wazuh-server:9200/_search # Wazuh indexer endpoint WAZUH_USER=your_wazuh_username WAZUH_PASS=your_wazuh_password 7. **初始化数据库** 数据库表将在首次运行时自动创建,但您可以验证: uv run python -c "from database import init_db; init_db()" ### 前端设置 1. **导航到前端目录** cd Client-UI 2. **安装依赖项** npm install ## 运行应用程序 ### 启动后端服务器 从 `Security-Operations-Agent` 目录运行: ``` uv run main.py ``` 后端服务器将在 `http://localhost:8000` 上启动 您应该看到类似以下的输出: ``` Database siem_db already exists. Schema initialized successfully (Tables created/verified). INFO: Started server process INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:8000 ``` ### 启动前端开发服务器 从 `Client-UI` 目录运行: ``` npm run dev ``` 前端将在 `http://localhost:5173` 上启动 您应该看到类似以下的输出: ``` VITE v7.2.4 ready in 500 ms ➜ Local: http://localhost:5173/ ➜ Network: use --host to expose ``` ### 访问应用程序 打开浏览器并导航到 `http://localhost:5173` ## 使用说明 ### 上传威胁报告 1. 点击聊天界面中的附件图标 2. 选择包含威胁情报的 `.txt` 或 `.pdf` 文件 3. 等待上传和处理确认 4. 文档将被分析并存储在向量数据库和 PostgreSQL 中 ### 查询系统 **威胁情报查询:** - "Show me all reports targeting the healthcare sector"(显示所有针对医疗行业的报告) - "What are the IoCs for report ID 5?"(报告 ID 5 的 IoC 是什么?) - "Find all reports using technique T1566"(查找所有使用 T1566 技术的报告) - "Show me the content of file threat_report.txt"(显示文件 threat_report.txt 的内容) - "Search for information about ransomware attacks"(搜索有关勒索软件攻击的信息) - "What techniques are associated with report 3?"(与报告 3 相关的技术有哪些?) **Wazuh SIEM 查询:** - "Start Wazuh analysis"(开始 Wazuh 分析) - "Analyze the last 50 security events from Wazuh"(分析来自 Wazuh 的最近 50 个安全事件) - "Show me Wazuh alerts for domain example.com"(显示域名 example.com 的 Wazuh 警报) - "What security events occurred in the last hour?"(过去一小时发生了什么安全事件?) - "Analyze Wazuh data and provide recommendations"(分析 Wazuh 数据并提供推荐) ### 代理委托 系统使用具有智能委托功能的多代理架构: **Extraction Agent:** 当您上传威胁报告时,您可能会看到: ``` Delegating Extraction to Extraction Agent ``` 这表明主代理正在将结构化数据提取委托给专用的 Extraction Agent。 **Wazuh Agent:** 当您请求 Wazuh 分析时,主代理会自动将 Wazuh Agent 作为工具调用。Wazuh Agent 会: 1. 从您的 Wazuh SIEM 获取安全事件 2. 使用 AI 分析事件 3. 将分析结果实时直接流式传输到您的界面 4. 提供风险评估和可操作的建议 ### 生产环境构建 **前端:** ``` cd Client-UI npm run build ``` 生产构建将位于 `dist` 目录中。 **后端:** Python 不需要构建步骤。使用生产级 ASGI 服务器(如 Gunicorn)进行部署: ``` gunicorn main:app -w 4 -k uvicorn.workers.UvicornWorker ``` ## 故障排除 ### 后端问题 **数据库连接错误:** - 验证 PostgreSQL 是否正在运行:`pg_isready` - 检查 `.env` 文件中的凭据 - 确保数据库用户具有必要的权限 **ChromaDB 错误:** - 检查 `./my_local_db` 目录是否可写 - 如果损坏,清除 ChromaDB 目录:`rm -rf my_local_db` **S3 上传失败:** - 验证 AWS 凭据是否正确 - 检查 S3 存储桶权限 - 确保存储桶存在于指定区域 **LLM API 错误:** - 验证 API 密钥是否有效 - 检查端点 URL 是否正确 - 确保模型名称受您的提供商支持 **Wazuh SIEM 连接错误:** - 验证 Wazuh 索引器是否可从您的网络访问 - 检查 `.env` 文件中的 `WAZUH_URL`、`WAZUH_USER` 和 `WAZUH_PASS` - 确保 Wazuh 用户具有查询安全事件索引的权限 - 如果使用自签名证书,请注意默认情况下禁用 SSL 验证 - 检查 Wazuh 服务器日志以查找身份验证失败 ### 前端问题 **找不到 Vite 命令:** ``` npm install ``` **CORS 错误:** - 确保后端在端口 8000 上运行 - 检查 `main.py` 中的 CORS 配置 **WebSocket 连接失败:** - 验证后端服务器是否正在运行 - 检查浏览器控制台以获取具体的错误消息 ## 许可证 本项目按原样提供,用于教育和内部使用。 ## 贡献 这是一个内部项目。如有问题或疑问,请联系开发团队。
标签:AV绕过, ChromaDB, CISA项目, Cloudflare, DLL 劫持, FastAPI, HTTP/HTTPS抓包, IoC, IP 地址批量处理, LLM, MITRE ATT&CK, Multi-agent, OpenAI, PostgreSQL, RAG, React, SecOps, SIEM集成, Syscalls, TI, TTP提取, Unmanaged PE, Wazuh, 云安全架构, 入侵指标, 内存规避, 向量数据库, 多智能体, 大语言模型, 威胁情报, 安全报告生成, 安全运营, 开发者工具, 态势感知, 扫描框架, 攻击框架映射, 智能对话机器人, 检索增强生成, 测试用例, 网络安全, 逆向工具, 隐私保护, 非结构化数据处理