MIGRANT-51/soc-lab
GitHub: MIGRANT-51/soc-lab
该项目构建了一条将规则检测引擎与 Claude LLM 告警分诊相结合的 SOC 模拟流水线,解决传统安全运营中告警疲劳和人工分诊效率低下的问题。
Stars: 0 | Forks: 0
# 🛡️ SOC-Lab:AI 增强的检测与分诊流水线
一个轻量级的安全运营中心(SOC)模拟环境,它将
**基于规则的检测工程**与**LLM 驱动的告警分诊**相结合——
模拟现代 SOC 如何开始利用 AI 作为“Tier-0 分析师”来
减少告警疲劳,并缩短平均分诊时间(MTTT)。
本项目旨在演示实用的检测工程、MITRE ATT&CK 映射,
以及 AI 在安全场景中的实际整合应用——而不仅仅是理论。
## 🎯 为什么会有这个项目
在担任 Lloyds Metals & Energy 的信息安全副经理期间,我的很大一部分
工作是调整检测规则以减少误报噪声
(在那里实现了 35% 以上的 FP 减少),同时保持 P1 遏制的快速响应
(30 分钟以内)。这个实验室是对该
工作流的从零开始的、适合作品集展示的重现:
1. **检测** — 自定义规则引擎(Sigma 风格的逻辑)标记可疑事件
2. **映射** — 每个规则都关联到具体的 MITRE ATT&CK 技术
3. **分诊** — 每个告警都会发送到 LLM(Claude)进行严重性评分、
误报可能性评估,并推荐下一步操作
4. **可视化** — Streamlit 仪表板优先展示最高优先级的告警
## 🏗️ 架构
```
sample_logs/ ──▶ src/log_parser.py
(synthetic events) │
▼
detection_rules/ ──▶ src/detector.py ──▶ alerts
(Sigma-style YAML) │
▼
src/ai_triage.py ──▶ Anthropic API (Claude)
│
▼
output/results.json
│
▼
dashboard/app.py (Streamlit)
```
**流水线流程:**
`原始事件 → 规则引擎 → 触发的告警 → AI 分诊(严重程度、FP%、操作) → 仪表板`
## 🗂️ 检测覆盖范围(MITRE ATT&CK)
| 规则 ID | 检测项 | MITRE 技术 |
|---|---|---|
| RULE-001 | 编码的 PowerShell 执行 | T1059.001 |
| RULE-002 | 来自脚本解释器的可疑出站连接 | T1071 |
| RULE-003 | 暴力破解身份验证尝试 | T1110 |
| RULE-004 | 暴力破解后的成功登录 | T1078 |
| RULE-005 | 通过 PsExec 进行远程执行 | T1021.002 |
| RULE-006 | 通过注册表 Run 键实现持久化 | T1547.001 |
| RULE-007 | 双重扩展名 / 伪装的可执行文件 | T1036.007 |
| RULE-008 | 大量出站数据传输 | T1041 |
规则以声明式定义在 [`detection_rules/rules.yaml`](detection_rules/rules.yaml)
中 —— 无需修改任何代码即可添加新的检测项。
## ⚙️ 设置
### 1. 克隆并安装依赖
```
git clone https://github.com/MIGRANT-51/SOC-Lab.git
cd SOC-Lab
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
```
### 2. 添加你的 API key
```
cp .env.example .env
# 然后编辑 .env 并添加你的 Anthropic API key
```
在 [console.anthropic.com](https://console.anthropic.com/) 获取 key。
### 3. 运行流水线
```
python src/main.py
```
这将会:
- 从 `sample_logs/sample_events.json` 加载合成事件
- 通过检测引擎运行它们
- 将每个告警发送给 Claude 进行 AI 分诊
- 将丰富后的结果保存到 `output/results.json`
- 在控制台打印摘要
仅运行检测,不调用 AI(无需 API key):
```
python src/main.py --no-ai
```
### 4. 查看仪表板
```
streamlit run dashboard/app.py
```
## 📄 输出示例
```
[HIGH] Encoded PowerShell Execution -> EVT-1001
Host/User : WKSTN-042 / j.mehta
MITRE : T1059.001 - Command and Scripting Interpreter: PowerShell
Rule baseline : high
AI severity : CRITICAL | FP likelihood: low
Action : Isolate WKSTN-042 immediately and capture memory for
analysis; the encoded PowerShell launched from Word
strongly suggests a macro-based initial access chain.
```
## 🔧 技术栈
- **Python 3.10+**
- **Anthropic API (Claude)** — AI 分诊层
- **PyYAML** — 声明式规则定义
- **Streamlit + Pandas** — 面向分析师的仪表板
## 🚧 路线图 / 后续迭代
- [ ] 接入真实的 Sysmon/EVTX 日志以替代合成 JSON
- [ ] 添加跨多个事件的告警关联(多阶段攻击链)
- [ ] 为关键告警集成 Slack/电子邮件通知
- [ ] 反馈循环:将分析师的覆盖操作反馈回去以改进分诊提示词
## ⚠️ 免责声明
本仓库中的所有日志都是**合成的**,仅为演示
目的而生成。不包含任何真实的主机名、IP、凭据或组织数据。本项目仅用于教育和作品展示目的。
## 👤 作者
**Nehal Kalbande** — 网络安全 | SOC / IR / 检测工程
[LinkedIn](https://linkedin.com/in/nehal-kalbande-1187761a8) · [GitHub](https://github.com/MIGRANT-51)
标签:DLL 劫持, Kubernetes, Streamlit, 告警分诊, 大语言模型, 安全运营中心, 恶意代码分类, 网络映射, 访问控制, 逆向工具