Mehul-bisht-0/SIEM
GitHub: Mehul-bisht-0/SIEM
一个基于多 Agent 编排与 LLM 的轻量级 SIEM 演示系统,覆盖从日志摄取到威胁检测、攻击链关联和自动响应的完整分析 pipeline。
Stars: 0 | Forks: 0
# 基于 AI-Agent 的 SIEM 分析系统 MVP
此工作区包含一个功能性的 SIEM 演示 pipeline:
`日志摄取 -> 威胁检测 Agent -> 关联 Agent -> LLM 事件分析 -> 响应 Agent -> Dashboard`
它特意设计得很小且以演示为导向。MongoDB 存储日志、告警和模拟封禁的 IP;FastAPI 运行 agent pipeline;React 显示实时 Dashboard;而 `log_simulator.py` 会注入一个端到端的暴力破解模式。
## 技术栈
- 后端:FastAPI, Motor, MongoDB, Scikit-learn, OpenAI 兼容的 LLM 调用
- ML:保存为 `models/isolation_forest.pkl` 的 Isolation Forest
- 前端:React, Vite, Recharts, Lucide 图标
- 演示运行时:Docker Compose
## 使用 Docker 运行
```
docker compose up --build
```
打开:
- Dashboard: http://localhost:5173
- API 文档: http://localhost:8000/docs
- 健康检查: http://localhost:8000/health
在另一个终端中,注入一个暴力破解攻击链:
```
docker compose run --rm simulator python log_simulator.py --api-url http://backend:8000/ingest --once --min-delay 0.5
```
或者运行持续的模拟流量:
```
docker compose --profile demo up simulator
```
## 本地开发
后端:
```
cd backend
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
python -m app.ml.train_model
uvicorn app.main:app --reload
```
前端:
```
cd frontend
npm install
npm run dev
```
模拟器:
```
cd simulator
pip install -r requirements.txt
python log_simulator.py --once
```
## API
### `POST /ingest`
接受原始 JSON 日志:
```
{
"log_id": "log-demo-001",
"timestamp": "2026-05-27T10:00:00Z",
"source_ip": "203.0.113.44",
"destination_ip": "10.0.2.10",
"event_type": "failed_login",
"severity": "high"
}
```
该 endpoint 会存储日志,运行异常检测,关联攻击链,生成 3 句话的摘要,并对高置信度告警执行模拟封禁。
告警还会存储 LLM 事件情报:
```
{
"summary": "Three-sentence analyst summary",
"risk_level": "critical",
"likely_attack": "Credential compromise followed by privilege escalation",
"mitre_tactic": "Credential Access / Privilege Escalation",
"recommended_actions": [
"Keep the source IP blocked and review whether it used rotating addresses.",
"Force a password reset for the affected account and revoke active sessions."
],
"analyst_notes": "Confirm whether the successful login accessed sensitive systems."
}
```
### Dashboard Endpoints
- `GET /logs`
- `GET /alerts`
- `GET /stats/attack-types`
- `GET /blocked-ips`
## 模型训练
后端会加载 `models/isolation_forest.pkl`。如果文件缺失,启动时会从合成的类 SIEM 记录中训练一个备用的 Isolation Forest 模型,以确保演示始终能正常运行。
要从预处理过的 NSL-KDD CSV 文件进行训练,请提供 `NSL_KDD_CSV`:
```
cd backend
$env:NSL_KDD_CSV="C:\path\to\nsl-kdd-preprocessed.csv"
python -m app.ml.train_model
```
## Agent 行为
- 威胁检测 Agent:对每条日志进行向量化,并使用 Isolation Forest 加上少量高风险事件启发式算法对其进行评分。
- 关联 Agent:将重复的登录失败、成功登录和权限提升归组为关联告警。
- LLM 事件分析 Agent:调用 OpenAI 兼容的聊天 endpoint,以生成摘要、可能的攻击、MITRE 风格战术、风险等级、分析师注意事项以及建议的应对措施。
- 响应 Agent:将源 IP 写入 `blocked_ips` 并打印模拟封禁操作。
- NLP 降级方案:如果未配置 API key 或 LLM 调用失败,后端仍会为演示返回确定性的事件情报。
## LLM 配置
在启动 Docker 之前,将 `.env.example` 复制到 `.env` 或设置环境变量:
```
OPENAI_API_KEY=your_api_key
OPENAI_BASE_URL=https://api.openai.com/v1
OPENAI_MODEL=gpt-4o-mini
LLM_TIMEOUT_SECONDS=20
```
对于兼容 OpenAI 的提供商,请将 `OPENAI_BASE_URL` 和 `OPENAI_MODEL` 设置为该提供商的相应值。应用会向 `{OPENAI_BASE_URL}/chat/completions` 发送请求,并期望模型返回 JSON。
标签:AI智能体, AV绕过, FastAPI, React, SIEM系统, Syscalls, 安全运营, 异常检测, 扫描框架, 版权保护, 自动化响应, 逆向工具