Gitlovess/soc-automation-lab
GitHub: Gitlovess/soc-automation-lab
一个全自动 SOC 流水线实验室,通过 Wazuh 检测安全威胁并经 Shuffle 编排 VirusTotal 情报扩充、TheHive 案例创建和邮件告警,实现 Tier-1 安全运营工作的零人工干预自动化。
Stars: 0 | Forks: 0
# 🤖 SOC 自动化实验室 — Wazuh + Shuffle + TheHive
一个全自动的 SOC pipeline,能够检测 **Mimikatz 凭据窃取**,通过 **VirusTotal** 对告警进行扩充(enrichment),在 **TheHive** 中自动创建案例,并向 SOC 分析师发送 **电子邮件告警** —— 所有这些均无需任何人工干预。
## 🎯 这证明了什么
现代 SOC 正淹没在海量的告警中。这个项目展示了我能够 **自动化重复的 Tier-1 工作** —— 将原始的 SIEM 告警一路转化为经过丰富、附带文档的事件案例和分析师通知,全程无需人工介入。
## 🏗️ 架构

### Pipeline 流程:
```
Windows 10 (Mimikatz executed)
↓ [1. Send Events]
Wazuh Manager (SIEM)
↓ [2. Trigger Alert — Rule ID 100002, Level 15]
Shuffle (SOAR)
↓ [3. Receive webhook from Wazuh]
↓ [4. Extract hash → Query VirusTotal]
↓ [5. Send alert to TheHive → Create case]
↓ [6. Send email to SOC Analyst]
SOC Analyst (Gmail alert received)
```
## 🔧 工具与技术栈
| 工具 | 角色 | 托管于 |
|------|------|-----------|
| **Wazuh** | SIEM — 通过自定义规则检测 Mimikatz | Vultr Cloud |
| **Shuffle** | SOAR — 编排整个 pipeline | Shuffle.io Cloud |
| **VirusTotal** | IOC enrichment — 哈希信誉查询 | API |
| **TheHive** | 案例管理 — 自动创建事件 | Vultr Cloud |
| **Windows 10** | 包含 Wazuh agent + Sysmon 的 endpoint | Vultr Cloud |
| **Gmail** | SOC 分析师告警通知 | 电子邮件 |
## 基础设施设置
### TheHive 技术栈 (Vultr Ubuntu 24.04)
**版本兼容性 — 切勿偏离:**
- Java: Amazon Corretto **仅限 11** (不要使用 8、17 或 21 — 版本错误是导致 TheHive 崩溃的第一大原因)
- Cassandra: **4.1.x**
- Elasticsearch: **8.x** 且设置 `xpack.security.enabled: false`
- TheHive: **5.x**
**关键配置决策:**
- Elasticsearch 的 `network.host` 保持为 `127.0.0.1` — 安全功能已禁用,绑定到公网 IP 将会暴露整个未经验证的数据库
- Cassandra 的 `listen_address`/`rpc_address` 使用真实的服务器 IP
- 仅有端口 **9000** (TheHive UI) 对互联网开放;端口 9200 (ES) 和 9042 (Cassandra) 已被防火墙拦截/仅限本地访问
- 对于单节点实验室,不需要 Cassandra 身份验证 — 默认使用 `AllowAllAuthenticator`
## 📋 逐步演练
### 步骤 1 — 在 Windows 10 上执行 Mimikatz
在 Windows 10 endpoint 上通过 PowerShell 运行了 Mimikatz (`mimikatz.exe`)。Sysmon 捕获了进程创建事件并将其转发给 Wazuh。

### 步骤 2 — Wazuh 自定义检测规则
在 `local_rules.xml` 中编写了一条自定义规则,通过文件名检测 Mimikatz:
```
sysmon_event1
(?i)mimikatz\.exe
Mimikatz Usage Detected
T1003
```
- **规则 ID:** 100002
- **级别:** 15 (严重)
- **MITRE ATT&CK:** T1003 — OS Credential Dumping

### 步骤 3 — 触发 Wazuh 告警
Wazuh 触发并记录了告警。在 Wazuh 的 Discover 视图中搜索 `mimikatz` 会显示完整的遥测数据 — agent IP、文件路径、进程 GUID 和父命令行。


### 步骤 4 — Shuffle 接收 Webhook
Wazuh 通过 webhook 将告警 payload 发送给 Shuffle。原始 JSON 显示:
- `"title": "Mimikatz Usage Detected"`
- `"severity": 3`
- `rule_id: 100002`
- 包含文件哈希在内的带有 23 个项目的完整 `eventdata`

### 步骤 5 — 执行 Shuffle Workflow
Shuffle workflow 自动:
1. 从 webhook 解析告警
2. 提取文件哈希
3. 向 **VirusTotal** 查询哈希信誉
4. 将丰富后的告警发送给 **TheHive**
5. 向 SOC 分析师发送 **电子邮件**

### 步骤 6 — 自动创建 TheHive 案例
TheHive 自动接收了来自 Shuffle 的告警并创建了一个事件案例:
- **标题:** Mimikatz Usage Detected
- **严重性:** HIGH
- **TLP:** AMBER | **PAP:** AMBER
- **来源:** WAZUH Alert
- **MITRE 标签:** T10003
- **摘要:** 在主机上检测到 Mimikatz 活动:DESKTOP-3KO75RC
- **创建者:** SOAR (全自动)

### 步骤 7 — 收到电子邮件告警
Shuffle 自动向 SOC 分析师收件箱发送了一封电子邮件通知:
- **主题:** Sent by email app: Mimikatz Detected
- **发件人:** Shuffle Email App
- **正文:** 关于在 Wazuh 中检测到 Mimikatz 的告警消息

## ✅ 完整 Pipeline 验证
| 阶段 | 工具 | 结果 |
|-------|------|--------|
| 执行 Mimikatz | Windows 10 + Sysmon | ✅ 捕获进程 |
| 触发告警 | Wazuh Rule 100002 | ✅ Level 15 严重告警 |
| 收到 Webhook | Shuffle | ✅ 解析完整的 JSON payload |
| 哈希 enrichment | VirusTotal API | ✅ 自动查询 IOC |
| 创建案例 | TheHive | ✅ 自动生成, SEVERITY:HIGH |
| 通知分析师 | Gmail | ✅ 立即收到电子邮件 |
**从执行到电子邮件告警的总时间:不到 60 秒。零手动步骤。**
## 📁 仓库结构
```
soc-automation-lab/
├── README.md # This file — full walkthrough with screenshots
├── rules/
│ └── local_rules.xml # Custom Wazuh Mimikatz detection rule
├── docs/
│ ├── setup-notes.md
│ └── incident-report.md ← Formal SOC incident investigation
└── screenshots/
├── 01-architecture-diagram.png
├── 02-mimikatz-execution.png
├── 03-wazuh-custom-rule.png
├── 04-wazuh-alert-overview.png
├── 05-wazuh-alert-telemetry.png
├── 06-shuffle-webhook.png
├── 07-shuffle-workflow.png
├── 08-thehive-case.png
└── 09-email-alert.png
```
## 📄 事件报告
我们为该事件编写了一份正式的 SOC 调查报告,记录了完整的时间线、取证证据、IOC、MITRE 映射和处置建议 — 可在此处查看:[IR-2026-001 — Mimikatz 凭据转储](docs/incident-report.md)
## 🎯 展示的技能
- 在云端 (Vultr) 部署 Wazuh SIEM
- 编写 (XML) Wazuh 自定义检测规则
- MITRE ATT&CK 映射 (T1003 — Credential Dumping)
- Sysmon endpoint 遥测数据收集
- Shuffle SOAR workflow 设计与自动化
- 集成 VirusTotal API 进行 IOC enrichment
- 集成 TheHive 案例管理
- 端到端 SOC pipeline 自动化
- Mimikatz 攻击模拟与检测
### 遇到的问题及修复
| 问题 | 修复方法 |
|---|---|
| 在 Ubuntu 24.04 上 `cqlsh` 损坏 (`ModuleNotFoundError: six.moves`) | 在 Python venv 中通过 pip 安装独立的 cqlsh:`python3 -m venv ~/cqlsh-venv && pip install cqlsh` |
| 全新安装后 Elasticsearch 无法启动 (`ElasticsearchSecurityException: xpack.security.transport.ssl`) | 自动安全配置会将 SSL 密码存储在 keystore 中。修复方法:清除 keystore,修复目录权限 (`chmod g+w /etc/elasticsearch`),重新创建干净的 keystore,并删除 `/etc/elasticsearch/certs` |
| StrangeBee apt repo 域名无法解析 DNS | 通过 wget 从 `thehive.download.strangebee.com` 直接下载 TheHive |
| Cassandra sources 文件包含 Markdown 括号语法而不是纯 URL | 删除并使用纯 URL 重新创建 sources 文件 |
| Shuffle 集成未触发 (`File not found inside integrations`) | `Shuffle ` 使用了大写 S;磁盘上的文件名是小写的。请更改为 `shuffle ` |
| Wazuh 集成 hook_url 末尾包含空格 | 删除 `` 结束标签之前的末尾空格 |
## 📌 参考
- [Wazuh 文档](https://documentation.wazuh.com)
- [Shuffle SOAR](https://shuffler.io)
- [TheHive 项目](https://thehive-project.org)
- [VirusTotal API](https://developers.virustotal.com)
- [MITRE ATT&CK T1003](https://attack.mitre.org/techniques/T1003/)
- [MyDFIR SOC 自动化系列](https://www.youtube.com/@MyDFIR)
## 🔗 SOC 家庭实验室系列
| 实验室 | 项目 | 状态 |
|-----|---------|--------|
| 实验 1 | [NSM 技术栈 — TShark + Zeek + Suricata IDS](https://github.com/Gitlovess/nsm-lab) | ✅ 已完成 |
| 实验 2 | [pfSense 防火墙 + Suricata IPS](https://github.com/Gitlovess/pfSense-Suricata-IPS-lab) | ✅ 已完成 |
| 实验 3 | [Windows 10 Endpoint 加固](https://github.com/Gitlovess/Windows-10-Endpoint-Hardening) | ✅ 已完成 |
| 实验 4 | [Linux 服务器加固](https://github.com/Gitlovess/linux-hardening-lab) | ✅ 已完成 |
| 实验 5 | SOC 自动化 — Wazuh + Shuffle + TheHive (本仓库) | ✅ 已完成 |
标签:CIDR查询, SOAR, SOC自动化, TheHive, Wazuh, 安全实验室, 安全运营, 扫描框架, 自动化响应