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, 云安全架构, 入侵指标, 内存规避, 向量数据库, 多智能体, 大语言模型, 威胁情报, 安全报告生成, 安全运营, 开发者工具, 态势感知, 扫描框架, 攻击框架映射, 智能对话机器人, 检索增强生成, 测试用例, 网络安全, 逆向工具, 隐私保护, 非结构化数据处理