AnshioRenin/AI-Assisted-SOC-Detection-Lab
GitHub: AnshioRenin/AI-Assisted-SOC-Detection-Lab
一个结合Wazuh检测工程与本地LLM告警分诊的家用SOC实验室,覆盖从攻击模拟到AI辅助调查的完整安全运营流程。
Stars: 0 | Forks: 0
# AI 辅助 SOC 检测实验室
一个能够检测、调查和响应模拟攻击的家用安全运营中心(SOC)——在其之上叠加了一个 **LLM 驱动的分诊助手**,并且该助手**已针对 prompt 注入进行了强化**。该项目将动手实践的**检测工程**与应用**AI 安全**结合在一起。
## 为什么做这个项目
它反映了真实的威胁检测运营工作:开发检测**信号**、**风险狩猎**、**告警调查**、将活动映射到 **MITRE ATT&CK**、**通过代码实现自动化**、**使用 SQL 进行日志/数据分析**,以及**减少运营琐事**——此外还有大多数实验室会忽略的现代转折:使用 AI 辅助分诊,*并*对该 AI 进行安全加固。
## 架构
```
[ Windows VM + Sysmon ] --logs--> [ Wazuh Agent ] --> [ Wazuh Manager + Dashboard ]
^ |
| [ ai_triage.py ]
[ Atomic Red Team ] simulates local LLM (Ollama):
techniques mapped to MITRE ATT&CK summary, ATT&CK map,
severity, next steps
|
[ hunt_queries.sql ]
SQL hunting over the logs
```
## 技术栈(全部免费)
| 层级 | 工具 |
|-------|------|
| 端点遥测 | Sysmon (SwiftOnSecurity 配置) |
| SIEM / XDR | Wazuh (单节点) |
| 攻击模拟 | Atomic Red Team (MITRE ATT&CK) |
| AI 分诊 | Python + Ollama (本地 LLM: `llama3.2:3b`) |
| 日志分析 | SQLite + SQL |
## 仓库布局
```
detection-rules/ custom Wazuh rules (local_rules.xml)
automation/ ai_triage.py, prompt_injection_test.py, sample_alert.json
analysis/ hunt_queries.sql
docs/ screenshots, ATT&CK Navigator export, write-up
```
## 快速开始
```
# 1. 本地 LLM(免费,离线运行 - 有利于数据隐私)
ollama pull llama3.2:3b
# Ollama 自动在后台运行(Windows 的系统托盘)
# 2. Python deps
pip install -r automation/requirements.txt
# 3. 对示例告警进行分类筛选
python automation/ai_triage.py automation/sample_alert.json
# 4. 查看 AI-security 演示(prompt injection + 防御)
python automation/prompt_injection_test.py
```
## 检测(模板——在第 3 阶段填入你自己的结果)
| MITRE ID | 技术 | 数据源 | 自定义规则 | 结果 |
|----------|-----------|-------------|-------------|--------|
| T1059.001 | 命令和脚本解释器:PowerShell | Sysmon EID 1 | 规则 100210 | _待测试_ |
| T1547.001 | 注册表 Run Key 持久化 | Sysmon EID 13 | 规则 100211 | _待测试_ |
| T1003 | LSASS 访问(凭证转储) | Sysmon EID 10 | 规则 100212 | _待测试_ |
## AI 分诊助手
`ai_triage.py` 将 Wazuh 告警发送到本地托管的 LLM,并返回结构化的分诊结果:通俗易懂的总结、可能的 MITRE ATT&CK 技术、严重程度、指标以及建议的后续步骤——从而将原始告警转化为分析师可用的笔记,并减少人工工作。
**示例输出**(示例告警——编码的 PowerShell):
```
{
"summary": "Encoded PowerShell execution detected on endpoint WIN-ENDPOINT-01",
"mitre_attack": { "id": "T1059.001", "name": "Command and Scripting Interpreter: PowerShell" },
"severity": "High",
"indicators": ["powershell.exe -enc ...", "powershell.exe", "winword.exe"],
"next_steps": ["Investigate the encoded payload", "Verify why winword.exe spawned PowerShell", "Check for follow-on network activity"]
}
```
## 发现与局限性(AI 可靠性)
构建此项目的一个关键的、刻意验证的发现:
- **小型本地模型可能会产生幻觉。** 在 `llama3.2:3b` 模型上,助手正确识别了技术 **ID**(`T1059.001`),但返回了**错误的技术名称**(是“通过其他协议向网络渗透”而不是“命令和脚本解释器:PowerShell”)。ID 是对的;模型却生成了一个看似合理但错误的标签。
- **结论:** LLM 分诊助手应该*加速*分析师的工作,绝不能*取代*他们。输出结果必须经过验证——这就是为什么 AI 辅助 SOC 工具必须保持“人在回路”的原因。
- **已应用的缓解措施:** 技术名称是通过权威的 MITRE ATT&CK ID→名称查找来解析的,而不是盲目信任模型,同时 prompt 限制模型仅输出 ID 及其逻辑依据。(使用更大的模型,例如 `llama3.1` 8B,也可以减少幻觉,但代价是降低速度/增加 VRAM 占用。)
## AI 安全:prompt 注入加固
告警字段属于受攻击者影响的数据。`prompt_injection_test.py` 展示了当攻击者在日志字段中植入指令时会发生什么,以及助手是如何防御的:告警内容被作为不受信任的**数据**进行包装(绝不会被作为指令),可疑的类指令文本会被清理,并且系统 prompt 明确禁止遵循嵌入的命令。请在此处记录你的加固前后结果。
## 免责声明
仅用于在隔离实验室中进行教育和防御性研究。请仅针对你拥有的系统运行攻击模拟。
标签:AI风险缓解, Atomic Red Team, Wazuh, 多线程, 安全运营中心, 提示词注入防御, 数据泄露检测, 本地大模型, 网络映射, 逆向工具