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, 告警分诊, 大语言模型, 安全运营中心, 恶意代码分类, 网络映射, 访问控制, 逆向工具