jellaharshith/ai-soc-lab

GitHub: jellaharshith/ai-soc-lab

该项目是一个在 Docker 中本地运行、配备 AI 代理分析师的完整 SOC 模拟环境,用于实验和验证大语言模型在安全检测与响应全流程中的实际能力。

Stars: 0 | Forks: 0

# AI SOC Lab ![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/3723b38097032955.svg) ![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg) ![Detection](https://img.shields.io/badge/detection%20coverage-100%25-3fb950) ![LLM](https://img.shields.io/badge/LLM-Claude%20%7C%20GPT%20%7C%20Ollama-58a6ff) 一个在本地 Docker 中运行的完整**安全运营中心**模拟环境,配备**基于代理的 LLM(Claude、GPT 或本地模型)作为 AI 分析师**,贯穿整个检测→响应流水线。 ``` ATTACK RANGE → TELEMETRY → WAZUH SIEM → AI SOC ANALYST (LLM + tools) → RESPONSE victim-ssh OpenSearch triage · hunt · detect · respond victim-web alerts │ victim-ubuntu siem · intel · detection · response tools ``` 与普通的 Wazuh 家庭实验室相比,其核心差异在于 AI 层:LLM 使用工具来**分诊**警报、**狩猎**威胁、**工程化检测**并驱动**事件响应**——在设计上具备防范提示词注入的意识(日志被视为不受信任的数据,被包裹在 `` 标签内,绝不作为指令执行)。 ## 构建阶段 —— 全部完成 | 阶段 | 内容 | 状态 | |-------|------|--------| | **P0** | 实验室基础设施:Wazuh 单节点 + 包含已注册 agent 的受害机 | ✅ | | **P1** | 攻击靶场:3 台受害机,6 个带 MITRE 标签的脚本化攻击,自定义 Wazuh 规则 | ✅ | | **P2** | AI 警报分诊(代理循环 + SIEM/情报工具) | ✅ | | **P3** | AI 威胁狩猎(自然语言 → SIEM 搜索) | ✅ | | **P4** | AI 检测工程(编写 + 部署 Wazuh 规则) | ✅ | | **P5** | AI 事件响应(遏制操作 + IR 报告) | ✅ | | **P6** | 控制台 UI + 评估计分卡 + 文档 | ✅ | ## 前置条件 - **容器运行时 + `docker-compose`**(独立版)。在 Apple Silicon 上,使用 Colima: brew install colima docker docker-compose colima start --cpu 4 --memory 8 --disk 40 colima ssh -- sudo sysctl -w vm.max_map_count=262144 # OpenSearch 需要此设置 - 为 Wazuh 单节点堆栈保留约 **8 GB 内存**的可用空间。 - 一个 **LLM API 密钥**(仅在 P2–P5 阶段需要):Anthropic **或** OpenAI。 ## 快速开始 ``` cp .env.example .env # set LLM key (see below) make fetch # clone pinned Wazuh core (v4.14.5) + generate certs make up # bring up SIEM + 3 victims + ai-service, load custom rules make ps # watch services become healthy (indexer takes ~1-2 min) ``` - **Wazuh dashboard:** https://localhost (`admin` / `SecretPassword`) - **AI SOC console:** http://localhost:8888 ### 选择 LLM 提供商 代理循环适用于任一提供商。在 `.env` 中设置**其中一个**密钥;系统会自动检测提供商,也可以使用 `LLM_PROVIDER` 强制指定: ``` # 选项 A — Anthropic (Claude) ANTHROPIC_API_KEY=sk-ant-... ANTHROPIC_MODEL=claude-opus-4-8 # 选项 B — OpenAI (GPT) OPENAI_API_KEY=sk-proj-... OPENAI_MODEL=gpt-4o # 可选的显式 override LLM_PROVIDER=openai # anthropic | openai ``` ## 端到端演示 ``` make attack # fire 6 MITRE-tagged attacks at the victims make triage # P2 — AI pulls alerts, correlates, returns JSON verdict make hunt Q="any brute force in the last hour?" # P3 — evidence-backed answer echo '{"threat":"detect SQL injection on the Flask login"}' \ | curl -s -XPOST localhost:8888/api/detect -d @- # P4 — writes+deploys a rule make respond # P5 — investigates + contains + drafts IR report make score # P6 — detection coverage + MTTR scorecard make score-triage # P6 — adds AI triage precision/recall/F1 ``` 或者直接在 http://localhost:8888 的**控制台 UI** 中驱动所有操作。 ## 检测结果(基准测试套件) | 指标 | 数值 | |--------|-------| | 发起的攻击 | 6 次 (T1110.001, T1190, T1059.004, T1083, T1053.003, T1548.003) | | 检测覆盖率 | **100%** (6/6) | | 平均检测时间 | ~2–3 秒 | ## 基于事实的分诊(LLM + 确定性兜底机制) P2 分诊 agent 绝不允许模型捏造事实。LLM 负责驱动调查并撰写叙述,但**结构化结论**(严重程度、受影响的主机、ATT&CK 技术)始终会与直接的 SIEM 查询进行核对。如果模型返回不完整或格式错误的 JSON,确定性基础层会从真实的 Wazuh 警报数据中填充这些字段——因此结论是可复现的且绝不会产生幻觉,即使是在小型本地模型上也是如此。参见 `ai-service/agent/triage.py`(`_grounded_verdict`)。 ## 架构连接方式 - `make fetch` 会将官方的 [`wazuh-docker`](https://github.com/wazuh/wazuh-docker) 克隆到固定标签 `v4.14.5`,并存放在 `wazuh-core/` 目录中(被 git 忽略)。我们采用锁定 + 覆盖的方式,而不是 fork。 - `docker-compose.override.yml` 在 Wazuh 网络上添加了受害机和 `ai-service`,因此 agent 可以通过名称解析 `wazuh.manager` 并自动注册。 - `make up` 将 `lab/wazuh/rules/local_rules.xml`(自定义 Web 攻击规则)部署到管理器中并重新加载。 - `ai-service` (FastAPI) 暴露了控制台 UI 和 4 个 agent endpoint;它直接查询 OpenSearch,并通过挂载的 Docker socket 执行遏制操作(仅限白名单内的受害机容器)。 ## 架构与安全 有关完整的设计、信任边界模型以及 agent/工具的详细分解,请参阅 [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)。 ## 目录结构 ``` ai-soc-lab/ ├── docker-compose.yml # stub — use `make up` ├── docker-compose.override.yml # victims + ai-service overlay ├── Makefile # fetch / up / attack / triage / hunt / respond / score ├── scripts/fetch-wazuh.sh # pin + clone Wazuh core, gen certs ├── wazuh-core/ # (fetched, git-ignored) official Wazuh single-node ├── lab/ │ ├── victims/{ubuntu,ssh,web}/ # victim host images + agent enrollment [P0/P1] │ ├── attacks/ # MITRE-tagged attack runner + modules [P1] │ └── wazuh/rules/ # custom local_rules.xml [P1] ├── ai-service/ │ ├── app.py # FastAPI: UI + /api/{triage,hunt,detect,respond} │ ├── agent/ # llm.py (provider loop) + 4 SOC agents [P2-P5] │ ├── tools/ # siem / intel / detection / response [P2-P5] │ └── ui/templates/index.html # HTMX analyst console [P6] └── eval/ ├── ground_truth.yaml # labeled attacks └── score.py # coverage / MTTR / triage precision-recall [P6] ```
标签:AI安全运营, AI风险缓解, Docker仿真环境, IPS, Petitpotam, Wazuh, 大模型智能体, 威胁检测与响应, 安全运营中心(SOC), 请求拦截, 逆向工具