aadarshkadam067/prod-siem
GitHub: aadarshkadam067/prod-siem
一个本地部署的 AI 驱动 SOC SIEM 平台,利用 LLM 实现告警自动分诊与 SOAR 响应。
Stars: 1 | Forks: 0
```
██████╗ ██████╗ ██████╗ ██████╗ ███████╗██╗███████╗███╗ ███╗
██╔══██╗██╔══██╗██╔═══██╗██╔══██╗ ██╔════╝██║██╔════╝████╗ ████║
██████╔╝██████╔╝██║ ██║██║ ██║█████╗███████╗██║█████╗ ██╔████╔██║
██╔═══╝ ██╔══██╗██║ ██║██║ ██║╚════╝╚════██║██║██╔══╝ ██║╚██╔╝██║
██║ ██║ ██║╚██████╔╝██████╔╝ ███████║██║███████╗██║ ╚═╝ ██║
╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚══════╝╚═╝╚══════╝╚═╝ ╚═╝
```
### AI 驱动的安全运营中心 — 本地部署,一键启动
*摄入告警 → 跨 MITRE ATT&CK 杀伤链关联 → LLM 分类与理由 → 自动 SOAR 响应 → 关闭案例。全部无需人工介入。*
[](https://python.org)
[](https://fastapi.tiangolo.com)
[](https://react.dev)
[](https://elastic.co)
[](https://docker.com)
[](https://console.groq.com)
[](LICENSE)
## 目录
- [问题与挑战](#the-problem)
- [截图展示](#screenshots)
- [架构设计](#architecture)
- [为何选择此技术栈](#why-this-stack)
- [数据管道如何工作](#how-the-pipeline-works)
- [AI 实际返回内容](#what-the-ai-actually-returns)
- [核心功能](#features)
- [前置条件](#prerequisites)
- [快速开始](#quick-start)
- [API 参考](#api-reference)
- [攻击场景](#attack-scenarios-32-total)
- [项目结构](#project-structure)
- [常见问题](#troubleshooting)
- [已知限制](#known-limitations)
- [路线图](#roadmap)
- [关于项目](#about-the-project)
## 问题与挑战
典型的企业 SOC 每天接收 **数千条告警**。其中大多数是误报或低优先级噪声。初级分析师将 70% 的时间用于第一轮分类:阅读上下文、关联事件、判断严重性、选择响应剧本。这一过程重复、规则化且令人疲惫。它正是 LLM 擅长处理的任务。
**prod-siem** 自动化了完整的首轮分类流程:
1. **摄入**:通过 REST API 接收任意来源的原始安全事件
2. **关联**:使用基于 Redis 的有状态规则实时与 MITRE ATT&CK 杀伤链模式关联
3. **发送**:将每个 HIGH/CRITICAL 告警提交给 Groq 的 LLaMA 3.3 70B 模型,附带结构化的三级 SOC 分析师提示
4. **接收**:返回严重性判定、置信度分数、自然语言推理、MITRE 技术映射、提取的 IOC 以及待执行的 SOAR 动作列表
5. **执行**:自动执行这些动作 — 在 TheHive 中创建案例、通过 Cortex 丰富 IOC、推送威胁情报至 MISP、生成 PDF 事件报告,并关闭或升级案例
6. **流式传输**:通过 WebSocket 实时将全部内容推送到 10 页的 React 仪表板
打开仪表板的分析师会看到已预分类的案例,并附带完整的 AI 推理。他们只需关注真正需要人工判断的 5% 告警。
## 截图展示
| 运营仪表板 | 告警管理 |
|:---:|:---:|
|  |  |
| 实时指标、严重性分布、24 小时告警时间线、AI 决策计数。 | 实时告警流,带严重性标签、源 IP、状态跟踪与一键 AI 触发。 |
| AI 决策引擎 | MITRE 杀伤链时间线 |
|:---:|:---:|
|  |  |
| 每个告警的完整 LLM 推理 — 决策、置信度仪表、MITRE 映射、IOC、遏制步骤。 | 跨全部 12 个 ATT&CK 阶段的交互式杀伤链可视化。点击任意阶段可深入查看事件。 |
| IOC 情报 | 系统指标 |
|:---:|:---:|
|  |  |
| 跨所有 AI 分析聚合的 IP、域名、文件哈希、URL。 | 全部 6 个服务加上 Elasticsearch 集群状态的实时健康状态。 |
## 架构设计
```
┌─────────────────────────────────────────────────────────────────────┐
│ INGESTION LAYER │
│ │
│ Continuous Generator APT Simulator External Sources │
│ (32 attack scenarios) (7-stage kill-chain) (any HTTP source) │
│ │ │ │ │
│ └──────────────────────┴──────────────────────┘ │
│ │ │
│ POST /api/v1/alerts/ingest │
└─────────────────────────────────┬───────────────────────────────────┘
│
┌─────────────────────────────────▼───────────────────────────────────┐
│ FASTAPI BACKEND │
│ │
│ ┌─────────────────┐ ┌──────────────────┐ ┌────────────────┐ │
│ │ Correlation │ │ AI Engine │ │ Case Manager │ │
│ │ Engine │───▶│ (Groq LLaMA │───▶│ (ES + TheHive)│ │
│ │ (MITRE + │ │ 3.3 70B) │ │ │ │
│ │ kill-chain) │ │ │ │ │ │
│ └─────────────────┘ └──────────────────┘ └────────────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ Redis Alert Queue Action Executor PDF Generator │
│ ├─ TheHive (cases) (ReportLab) │
│ ├─ Cortex (IOC enrich) │
│ └─ MISP (threat intel) │
└──────────────────────────────────┬──────────────────────────────────┘
│
WebSocket broadcast on every event
│
┌──────────────────────────────────▼──────────────────────────────────┐
│ REACT DASHBOARD (10 Pages) │
│ │
│ Dashboard │ Alerts │ Cases │ AI Engine │ Kill Chain │ IOC Intel │
│ Activity Log │ Live Logs │ Reports │ System Metrics │
└─────────────────────────────────────────────────────────────────────┘
```
## 为何选择此技术栈
每个关键技术选型都旨在解决特定问题。此处无意引入供应商锁定。
| 组件 | 选择原因 |
|------|----------|
| **FastAPI + Uvicorn** | **原生 WebSocket 支持**,实现无需轮询的实时仪表板更新。异步运行时使单个工作进程可同时维持数百个 WebSocket 连接,同时继续服务 REST 请求。自动生成的 Swagger 文档位于 `/docs`。 |
| **Groq + LLaMA 3.3 70B** | **推理速度**。在 Groq 上,三级 SOC 分析师提示可在 2 秒内返回结构化 JSON — 比 GPT-4 或 Claude API 快数个数量级。免费额度提供每日 14,400 次请求,足以应对真实 SOC 的 HIGH/CRITICAL 队列。 |
| **Elasticsearch** | **对原始日志和案例笔记的全文搜索** 是本项目不可或缺的数据库功能。ES 同时处理告警索引、案例索引与事件索引,语义一致且客户端统一。 |
| **Redis** | **在单个进程中完成三项任务**:AI 工作队列(`BLPOP siem:alerts:pending`)、有状态关联窗口(认证失败计数、横向移动主机集合)以及 WebSocket 发布/订阅骨干。替换它需要三个独立系统。 |
| **React 18 + Vite + Tailwind** | **Vite 的热重载** 使仪表板迭代近乎即时。Tailwind 避免了通常困扰 10 页管理 UI 的 CSS 膨胀。Zustand 处理全局状态而无需 Redux 的仪式感。 |
| **TheHive 5 + Cortex 3** | **行业标准事件响应平台**。使用真实的 TheHive(而非模拟)意味着案例流程、可观测类型、TLP 级别与分析器执行均符合真实 SOC 预期,而非概念验证外壳。 |
| **独立的 AI 守护进程** | **隔离性**。AI 引擎作为独立进程(`ai_engine/decision_engine.py`)在 Redis 上阻塞。若其崩溃,FastAPI 后端仍可继续服务告警与仪表板。若后端重启,队列等待。各组件可独立扩展。 |
| **Docker Compose(非 k8s)** | **一键启动完整堆栈**。招聘人员应能运行 `./setup.sh` 并在 10 分钟内看到效果 — 无需配置集群。生产部署可替换为 Helm。 |
## 数据管道如何工作
每个进入系统的告警按以下精确顺序流转:
1. **摄入**:告警到达 `POST /api/v1/alerts/ingest`。API 分配唯一 `ALERT-{hex}` ID 并写入内存缓存(200 项 LRU),以便仪表板即时可见。
2. **关联**:`CorrelationEngine` 在基于 Redis 的有状态计数器上评估事件:
- `auth_fail` × 20+(5 分钟内同 IP)→ `BRUTE_FORCE`
- SMB/RDP/WMI 在 1 小时内访问 ≥4 不同主机 → `LATERAL_MOVEMENT`
- `large_upload` 事件 → 立即 `DATA_EXFILTRATION`
每个关联告警附加 MITRE 技术 ID。
3. **持久化**:通过 FastAPI `BackgroundTasks` 将告警索引至 Elasticsearch — 非阻塞,确保仪表板速度不受 ES 负载影响。
4. **排队供 AI 分析**:`HIGH` 与 `CRITICAL` 告警推入 Redis 列表 `siem:alerts:pending`。
5. **广播**:`new_alert` WebSocket 事件在约 50 毫秒内送给所有连接的仪表板。
6. **AI 分析**:独立守护进程(`ai_engine/decision_engine.py`)阻塞读取 Redis 队列。对每条告警,调用 `ClaudeSOCAnalyst.analyze_alert()` 将完整告警上下文提交至 Groq,附带结构化的三级 SOC 分析师提示(温度 0.1,最大 2048 令牌,强制 JSON 输出)。
7. **动作执行**:`ActionExecutor.execute_all()` 顺序执行 AI 返回的每个动作:
- `create_thehive_case` → TheHive v5 API
- `enrich_ioc_cortex` → Cortex 分析器(AbuseIPDB、VirusTotal、URLhaus)
- `push_misp` → MISP 威胁事件创建
- `generate_report` → ReportLab PDF 生成
每个动作失败时优雅降级,不阻塞其他动作。
8. **持久化与广播结果**:Elasticsearch 中的告警记录更新为完整的 AI 分析结果。广播 `ai_decision` WebSocket 事件至所有仪表板。
**降级行为**:若 Groq API 不可用或返回格式错误的 JSON,`_fallback_analysis()` 返回模拟的 `escalate` 决策,置信度为 0 并标记为需人工审查。管道绝不会静默丢弃任何告警。
## AI 实际返回内容
每次分析均返回以下精确的 JSON 架构:
```
{
"severity": "CRITICAL",
"confidence": 92,
"decision": "escalate",
"mitre_techniques": ["T1003.001", "T1055"],
"attack_phase": "Credential Access",
"threat_actor": "Unknown — consistent with commodity RAT operator",
"iocs": {
"ips": ["10.10.1.42"],
"domains": [],
"hashes": ["a3f1c2b4..."],
"urls": [],
"emails": []
},
"investigation_notes": "LSASS process accessed with 0x1fffff rights by powershell.exe. This matches Mimikatz sekurlsa::logonpasswords execution pattern. Source host has prior indicators of compromise in this session.",
"business_impact": "Full domain credential compromise possible. All accounts on this host should be considered compromised.",
"recommended_containment": [
"Isolate WORKSTATION-42 from network immediately",
"Force password reset for all accounts on affected host",
"Revoke Kerberos tickets issued in last 4 hours"
],
"actions": ["create_thehive_case", "enrich_ioc_cortex", "generate_report"],
"escalation_reason": "Active credential theft in progress with lateral movement history"
}
```
**提示词强制执行的决策逻辑:**
| 严重性 | 决策 | 动作 |
|--------|------|------|
| `CRITICAL` / `HIGH` | `escalate` | 全部四项(案例 + Cortex + MISP + PDF) |
| `MEDIUM` | `monitor` 或 `escalate` | 案例 + PDF |
| `LOW` | `close` 并附带 `close_reason` | 无 |
这意味着低优先级噪声将被自动分类并关闭,无需分析师参与,显著降低队列深度。
## 核心功能
### 核心数据管道
- 通过 REST API 实时摄入告警 — 接受任意 JSON 载荷
- 基于 Redis 的时间窗口有状态 MITRE ATT&CK 关联
- LLM 分类 — LLaMA 3.3 70B 判定与置信度、推理、MITRE 映射
- 自动 SOAR — 案例创建、IOC 丰富、威胁情报推送、PDF 报告、案例关闭
- WebSocket 流式传输 — 每个事件在约 50 毫秒内广播至所有仪表板
- 内存缓存 — 即使在 Elasticsearch 负载下,仪表板仍保持响应
- 优雅降级 — 所有集成均为可选;若 FastAPI/Redis 存活,系统仍可运行
### 仪表板(10 页)
| 页面 | 显示内容 |
|------|----------|
| **运营仪表板** | 实时指标、严重性分布、24 小时告警时间线、攻击类型分布 |
| **告警管理** | 完整告警表格、筛选器、严重性徽章、一键 AI 触发、注入测试告警 |
| **案例管理** | 案例生命周期 — 查看、添加备注、更改状态、手动关闭 |
| **AI 决策引擎** | 每个告警的推理卡片、置信度仪表、MITRE 标签、IOC 列表、遏制步骤 |
| **杀伤链时间线** | 交互式 MITRE ATT&CK 阶段可视化 — 点击任意阶段可深入查看事件 |
| **IOC 情报** | 跨所有 AI 分析聚合的指标(IP、域名、哈希、URL) |
| **活动日志** | 全系统审计追踪 — 每个告警、AI 决策、案例动作的时间线视图 |
| **实时日志** | 实时日志流,带级别筛选与搜索 |
| **事件报告** | AI 生成的 PDF 报告 — 按案例查看与下载 |
| **系统指标** | 全部 6 个集成服务的实时健康状态 + Elasticsearch 集群状态 |
### 攻击模拟
- **持续生成器** — 32 种攻击场景,按真实世界频率加权(40% 低危、35% 中危、18% 高危、7% 严重),每 45–120 秒生成一批
- **APT 杀伤链模拟器** — 完整 7 阶段攻击序列(初始访问 → 执行 → 持久化 → 凭据访问 → 横向移动 → 收集 → 泄密)
### 集成(可选)
- **TheHive 5** — 完整案例生命周期:创建、添加可观测对象、任务日志、关闭
- **Cortex 3.1** — 通过 AbuseIPDB、VirusTotal、URLhaus 分析器丰富 IOC
- **MISP** — 将提取的 IOC 作为结构化威胁情报事件推送
## 前置条件
| 要求 | 最低要求 | 说明 |
|------|----------|------|
| 操作系统 | Kali Linux / Ubuntu 22.04+ | 已在两者上测试 |
| 内存 | 4 GB | 推荐 8 GB 以完整 SOAR 堆栈 |
| 磁盘 | 20 GB | Elasticsearch 数据 |
| Python | 3.11+ | 已测试 3.11、3.12、3.13 |
| Node.js | 18+ | 用于前端开发服务器 |
| Docker | 24+ 且 Compose v2 | 使用 `docker compose` 而非 `docker-compose` |
| Groq API 密钥 | 免费 | [在此获取](https://console.groq.com/keys) — 每日 14,400 次请求免费 |
## 快速开始
### 1. 克隆
```
git clone https://github.com/aadarshkadam067/prod-siem.git
cd prod-siem
```
### 2. 配置
```
cp .env.example .env
nano .env
```
唯一必需的值是 `GROQ_API_KEY`。其余内容均有可用默认值:
```
# 必需 — 在 https://console.groq.com/keys 获取免费密钥
GROQ_API_KEY=gsk_your_key_here
# 默认 — 本地设置无需更改
ELASTICSEARCH_URL=http://localhost:9200
ELASTICSEARCH_USER=elastic
ELASTICSEARCH_PASSWORD=changeme
REDIS_URL=redis://localhost:6379
# 可选 — 仅适用于完整的 SOAR 栈
THEHIVE_API_KEY=
CORTEX_API_KEY=
MISP_API_KEY=
```
### 3. 安装
```
chmod +x setup.sh run.sh health_check.sh stop.sh
./setup.sh
```
`setup.sh` 处理全部流程:预检、端口冲突检测、Docker 权限、Elasticsearch 的 `vm.max_map_count`、Python 虚拟环境、pip 安装、Docker 镜像、堆栈启动、ES 索引初始化。
### 4. 打开
| 服务 | URL |
|------|-----|
| **仪表板** | http://localhost:5173 |
| **API 文档** | http://localhost:8000/docs |
| **Kibana** | http://localhost:5601(可选) |
| **TheHive** | http://localhost:9000(仅 `--full`) |
| **Cortex** | http://localhost:9001(仅 `--full`) |
告警自动生成。点击 **“注入测试告警”** 可手动触发完整管道。
### 5. 验证
```
./health_check.sh
```
预期输出:
```
✔ Elasticsearch container ✔ Redis container
✔ Elasticsearch API ✔ FastAPI backend
✔ FastAPI health status ✔ Redis ping
✔ Groq AI responding ✔ Index: siem-alerts
✔ Index: siem-events ✔ Index: siem-cases
✔ All systems operational
```
### 6. 停止
```
./setup.sh --stop
```
### 完整 SOAR 堆栈(可选)
```
./setup.sh --full # adds TheHive + Cortex + Cassandra (~8 GB RAM)
```
## 手动触发 AI 分类
```
# 对队列中的所有 HIGH/CRITICAL 告警运行 AI 分析
source venv/bin/activate
python3 - << 'EOF'
import httpx, time
alerts = httpx.get("http://localhost:8000/api/v1/alerts?limit=50").json().get("alerts", [])
critical = [a for a in alerts if a.get("severity") in ("CRITICAL", "HIGH")]
for a in critical:
httpx.post(f"http://localhost:8000/api/v1/ai/analyze/{a['id']}", timeout=10)
print(f" Queued: {a['id']} [{a['severity']}]")
time.sleep(2)
EOF
```
或运行 APT 模拟器以注入完整的多阶段攻击:
```
python3 soc_simulation/apt_simulator.py --verbose
```
## API 参考
完整的交互式 Swagger 文档位于 **http://localhost:8000/docs**
| 方法 | 端点 | 描述 |
|------|------|----------|
| `GET` | `/health` | 活跃度 + 组件状态 |
| `WS` | `/ws` | WebSocket 流 — `new_alert`、`ai_decision`、`case_updated` |
| `POST` | `/api/v1/alerts/ingest` | 摄入安全告警 |
| `GET` | `/api/v1/alerts` | 列出告警(可选状态过滤) |
| `POST` | `/api/v1/ai/analyze/{alert_id}` | 触发 AI 分类(异步) |
| `GET` | `/api/v1/cases` | 列出所有事件案例 |
| `GET` | `/api/v1/cases/{id}` | 案例详情(含 AI 分析) |
| `POST` | `/api/v1/cases/{id}/notes` |分析师调查备注 |
| `POST` | `/api/v1/cases/{id}/close` | 关闭案例并附带解决说明 |
| `GET` | `/api/v1/cases/{id}/report` | 下载 PDF 事件报告 |
| `GET` | `/api/v1/cases/{id}/iocs` | 该案例提取的 IOC 列表 |
| `GET` | `/api/v1/stats` | 仪表板聚合计数 |
| `GET` | `/api/v1/metrics` | 系统性能指标 |
| `GET` | `/api/v1/activity` | 最近系统活动日志 |
| `GET` | `/api/v1/system/status` | 全部 6 个集成服务的健康状态 |
### 示例:摄入 + 分类
```
# 摄入
ALERT_ID=$(curl -s -X POST http://localhost:8000/api/v1/alerts/ingest \
-H "Content-Type: application/json" \
-d '{
"source": "edr",
"event_type": "credential_dump",
"severity": "CRITICAL",
"source_ip": "10.10.1.42",
"raw_log": "procdump.exe -ma lsass.exe detected on WORKSTATION-42"
}' | python3 -c "import sys,json; print(json.load(sys.stdin)['alert_id'])")
# 触发 AI 分诊
curl -X POST http://localhost:8000/api/v1/ai/analyze/$ALERT_ID
```
## 攻击场景(总计 32 种)
初始访问(6)
| 场景 | 技术 |
|------|------|
| `email_phishing` | T1566 — 钓鱼 |
| `auth_fail` / `auth_success` | T1078 — 有效账户 |
| `rdp_external` | T1021.001 — 远程桌面协议 |
| `vpn_connect` | T1133 — 外部远程服务 |
| `impossible_travel` | T1078.004 — 云账户 |
| `usb_connect` | T1200 — 硬件添加 |
执行(3)
| 场景 | 技术 |
|------|------|
| `powershell_exec` | T1059.001 — PowerShell |
| `macro_blocked` | T1204.002 — 恶意文件 |
| `malware_detected` | T1204 — 用户执行 |
持久化(3)
| 场景 | 技术 |
|------|------|
| `scheduled_task_abuse` | T1053.005 — 计划任务 |
| `persistence_registry` | T1547.001 — 注册表运行键 |
| `software_install` | T1574 — 执行流程劫持 |
凭据访问(6)
| 场景 | 技术 |
|------|------|
| `credential_dump` | T1003.001 — LSASS 内存 |
| `password_spray` | T1110.003 — 密码喷洒 |
| `brute_force` | T1110 — 暴力破解 |
| `kerberoasting` | T1558.003 — Kerberoasting |
| `golden_ticket` | T1558.001 — Golden Ticket |
| `dcsync_attack` | T1003.006 — DCSync |
权限提升与发现(3)
| 场景 | 技术 |
|------|------|
| `new_local_admin` | T1136.001 — 本地账户 |
| `port_scan` | T1046 — 网络服务发现 |
| `scheduled_scan` | T1518 — 软件发现 |
横向移动(3)
| 场景 | 技术 |
|------|------|
| `lateral_movement` | T1021 — 远程服务 |
| `wmi_lateral_movement` | T1021.006 — Windows 远程管理 |
| `rdp_session` | T1021.001 — 远程桌面协议 |
收集、C2、泄密与影响(8)
| 场景 | 技术 |
|------|------|
| `data_staging` | T1074 — 数据暂存 |
| `sensitive_file_access` / `file_access` | T1005 — 来自本地系统的数据 |
| `dns_query`(隧道) | T1071.004 — DNS |
| `data_exfiltration` | T1041 — 通过 C2 通道泄密 |
| `ransomware_indicator` | T1486 — 数据加密以影响 |
| `certificate_expiry` | (运行态) |
## 项目结构
```
prod-siem/
│
├── main.py # FastAPI app — 15 endpoints, WebSocket, lifespan
│
├── ai_engine/
│ ├── claude_analyst.py # Groq LLM client — structured JSON SOC analysis
│ ├── decision_engine.py # Redis-polling autonomous AI daemon
│ ├── action_executor.py # Executes AI decisions: TheHive + Cortex + MISP + PDF
│ └── prompts.py # Tier-3 SOC analyst system prompt
│
├── detection_engine/
│ ├── correlation.py # Stateful MITRE ATT&CK correlation (Redis-backed)
│ ├── sigma_rules/ # Sigma rule directory (extensible)
│ └── yara_rules/ # YARA rule directory (extensible)
│
├── soc_workflow/
│ └── case_manager.py # Elasticsearch case lifecycle: create → escalate → close
│
├── soc_simulation/
│ ├── continuous_generator.py # 32-scenario weighted realistic alert stream
│ └── apt_simulator.py # Multi-stage APT kill chain injector
│
├── integrations/
│ ├── thehive_client.py # TheHive 5 API: cases, observables, task logs
│ ├── cortex_client.py # Cortex 3.1: submit IOC → poll → extract verdict
│ └── misp_client.py # MISP: create events with attributes from IOCs
│
├── incident_response/
│ └── report_generator.py # ReportLab PDF: summary, MITRE table, IOC table, containment
│
├── frontend/
│ ├── src/
│ │ ├── pages/ # 10 pages (Dashboard, Alerts, Cases, AI, Timeline...)
│ │ ├── components/ # Sidebar (live service dots), Topbar (WS indicator)
│ │ ├── services/api.js # All 15 API calls in one place
│ │ ├── store/index.js # Zustand global state
│ │ └── hooks/
│ │ ├── usePolling.js # Generic polling hook with configurable interval
│ │ └── useWebSocket.js # WS connection with auto-reconnect + event routing
│ ├── tailwind.config.js
│ └── vite.config.js
│
├── scripts/
│ └── setup_indexes.py # Create ES indexes with proper field mappings
│
├── docker-compose.yml # ES + Redis + (--full: TheHive + Cortex + Cassandra)
├── setup.sh # Full automated setup — idempotent, retry logic
├── run.sh # Start backend + AI daemon
├── health_check.sh # Component-by-component verification
├── stop.sh # Graceful shutdown
├── requirements.txt # Pinned Python dependencies
└── .env.example # Environment template with comments
```
## 端到端工作流示例
```
1. Alert ingested → ALERT-A9B641D5 created, cached, broadcast
2. Correlation evaluated → No multi-event rules triggered (single event)
3. AI queue → Pushed to siem:alerts:pending
4. AI analysis complete → CRITICAL / ESCALATE / 94% confidence
5. TheHive case created → CASE-A1B2C3D4 (status: New)
6. Task log added → AI investigation notes written to case
7. IOC enriched → 10.10.1.42 → AbuseIPDB → MALICIOUS (confidence 100)
8. PDF generated → reports/INCIDENT_ALERT-A9B641D5_20260325_174245.pdf
9. Case status → escalated / InProgress
10. WebSocket event → ai_decision broadcast to all frontend clients
```
总耗时通常不到 5 秒,从摄入到仪表板更新。
## 常见问题
Elasticsearch 无法启动 / 连接超时
```
# ES 必需的内核设置
sudo sysctl -w vm.max_map_count=262144
# 永久生效
echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf
# 如果 RAM 不足 (<8GB),请降低 ES 堆内存
sed -i 's/ES_JAVA_OPTS=.*/ES_JAVA_OPTS=-Xms512m -Xmx512m/' docker-compose.yml
docker compose restart elasticsearch
sleep 30
curl -u elastic:changeme http://localhost:9200/_cluster/health
```
FastAPI 健康检查失败
```
# 检查实际错误
tail -30 logs/backend.log
# 测试 main.py 是否无错误加载
source venv/bin/activate
python3 -c "import main"
# 干净重启
./setup.sh --stop && ./setup.sh
```
Groq AI 无响应
```
source venv/bin/activate
python3 -c "
from groq import Groq; import os; from dotenv import load_dotenv; load_dotenv()
c = Groq(api_key=os.getenv('GROQ_API_KEY'))
print(c.chat.completions.create(
model='llama-3.3-70b-versatile', max_tokens=10,
messages=[{'role':'user','content':'ping'}]
).choices[0].message.content)
"
```
TheHive 返回 401 或连接拒绝
```
docker logs thehive --tail=30
# TheHive 在 Cassandra 启动后需要 2-3 分钟
watch -n 10 'curl -s http://localhost:9000/api/status | python3 -m json.tool'
# 从 UI 获取 API 密钥:http://localhost:9000 → 头像 → 设置 → API 密钥 → 创建
```
完整重置 — 清除所有数据
```
./setup.sh --stop
docker compose down -v # WARNING: deletes all Elasticsearch data
./setup.sh --reset
```
## 已知限制
本节说明边界问题,坦诚比营销话术更重要。
| 限制 | 说明 |
|------|------|
| **无认证** | 所有 API 端点开放。仅限本地主机使用 — 不要暴露至网络。 |
| **单租户** | 单一组织、单一 ES 索引。无多租户支持。 |
| **无 AI 限流** | 紧密循环调用 AI 端点可能耗尽 Groq 免费配额。 |
| **内存活动日志** | 重启后端会丢失活动日志。告警与案例仍保留在 ES 中。 |
| **单一提示模板** | 所有告警类型共用同一系统提示。尚未支持微调或 RAG。 |
| **前端为开发服务器** | 通过 `vite dev` 运行,未构建生产版本或反向代理。 |
| **TheHive/Cortex 可选** | AI 分类与 PDF 报告可在无 TheHive/Cortex 情况下运行。SOAR 动作可优雅降级。 |
| **无测试覆盖** | `tests/` 目录为占位符。 |
| **仅 Sigma/YARA 框架** | 规则目录存在,但尚未实现规则评估引擎。 |
## 路线图
- [ ] 增加 JWT 认证 + RBAC(分析师 / 管理员 / 访客角色)
- [ ] 生产前端构建并使用 nginx 反向代理
- [ ] Sigma 规则评估引擎(集成 `pySigma`)
- [ ] Wazuh API 集成以拉取真实代理告警
- [ ] 分析师反馈闭环 — 正确/错误判定 → 提示优化
- [ ] 使用 Redis Streams 持久化活动日志
- [ ] 在 `tests/` 中添加实际测试套件
- [ ] 全链路 OpenTelemetry 追踪(从后端 → Groq → 执行剧本)
- [ ] Kubernetes 的 Helm 图表
## 关于项目
本项目旨在回答一个实际问题:**在不牺牲决策质量与审计追踪完整性的前提下,当前工具链能自动化多少 Tier-1 与 Tier-2 SOC 工作量?**
基于此实现,答案是“大量”。AI 引擎在常见告警类型(暴力破解、端口扫描、常规认证失败)上始终做出可辩护的分类,并能正确升级多阶段攻击序列,且具备准确的 MITRE 技术映射。每个决策均被记录,每个动作均可追溯,每个案例均生成报告 — 这些正是人工分析师应交付的产物。
技术栈有意选择以反映真实企业部署:Elasticsearch 用于日志存储,TheHive 用于案例管理,Cortex 用于自动化增强。Groq 的选择基于其推理速度 — 分析延迟通常在 2 秒以内,这对于需要比人类更快响应的系统至关重要。
作为个人作品集项目 — 并非生产级硬化(参见已知限制),但每个组件均按设计工作,通过一条命令即可在本地运行,并展示了真实 SIEM/SOAR 堆栈的架构模式。
## 许可证
MIT — 参见 [LICENSE](LICENSE)。
由 **[Aadarsh Kadam](https://github.com/aadarshkadam067)** 构建
*若此项目对您有帮助,请考虑给予 ⭐*
标签:AI安全, AMSI绕过, AV绕过, Chat Copilot, Cloudflare, DLL 劫持, Docker, Elasticsearch, FastAPI, FTP漏洞扫描, GitHub, LLM, MITRE ATT&CK, Modbus, Python, React, SOAR, Syscalls, Triage, Unmanaged PE, 企业安全, 告警收敛, 响应自动化, 大语言模型, 威胁检测, 安全编排, 安全运营中心, 安全防御评估, 密码管理, 开源, 异常检测, 搜索分析引擎, 搜索引擎查询, 攻击链关联, 无后门, 日志可视化, 日志聚合, 时间线生成, 智能研判, 网络映射, 网络资产管理, 自动化响应, 自定义脚本, 自托管, 误配置预防, 请求拦截, 逆向工具, 配置审计