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 告警一路转化为经过丰富、附带文档的事件案例和分析师通知,全程无需人工介入。 ## 🏗️ 架构 ![SOC 自动化架构](https://static.pigsec.cn/wp-content/uploads/repos/cas/19/191d1b27dac4996b43929747b70d9152af1415bf1059748a46164e76e8873bbc.png) ### 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。 ![在 PowerShell 中执行 Mimikatz](https://static.pigsec.cn/wp-content/uploads/repos/cas/c1/c111883160d56f7e4d37bffbe06505ab404561408a5e3092118115c6cbc772a1.png) ### 步骤 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 ![Wazuh 自定义规则](https://static.pigsec.cn/wp-content/uploads/repos/cas/81/81ba2a7204550a1374cecdc13b3ae5b131e919997e777a8a635b157f4fcd0e21.png) ### 步骤 3 — 触发 Wazuh 告警 Wazuh 触发并记录了告警。在 Wazuh 的 Discover 视图中搜索 `mimikatz` 会显示完整的遥测数据 — agent IP、文件路径、进程 GUID 和父命令行。 ![Discover 中的 Wazuh 告警 — 概览](https://static.pigsec.cn/wp-content/uploads/repos/cas/d9/d913e675cbe7e6809be732da96cabaf7223fbd7617913d9a0a6d1e6528ac08ce.png) ![Discover 中的 Wazuh 告警 — 完整遥测数据](https://static.pigsec.cn/wp-content/uploads/repos/cas/a2/a2cbf43cd5185d517ee94991127cf166fe984fc1340fea809a17e250df07336a.png) ### 步骤 4 — Shuffle 接收 Webhook Wazuh 通过 webhook 将告警 payload 发送给 Shuffle。原始 JSON 显示: - `"title": "Mimikatz Usage Detected"` - `"severity": 3` - `rule_id: 100002` - 包含文件哈希在内的带有 23 个项目的完整 `eventdata` ![Shuffle webhook 接收 Wazuh 告警](https://static.pigsec.cn/wp-content/uploads/repos/cas/30/3063ed54eeb85f166128a15e1087730036688775334e5894962fa94f8ac1df44.png) ### 步骤 5 — 执行 Shuffle Workflow Shuffle workflow 自动: 1. 从 webhook 解析告警 2. 提取文件哈希 3. 向 **VirusTotal** 查询哈希信誉 4. 将丰富后的告警发送给 **TheHive** 5. 向 SOC 分析师发送 **电子邮件** ![Shuffle workflow 执行](https://static.pigsec.cn/wp-content/uploads/repos/cas/2e/2e5520aa76068ad409869a71d70cd65938a966e09a586bc343241e0271603605.png) ### 步骤 6 — 自动创建 TheHive 案例 TheHive 自动接收了来自 Shuffle 的告警并创建了一个事件案例: - **标题:** Mimikatz Usage Detected - **严重性:** HIGH - **TLP:** AMBER | **PAP:** AMBER - **来源:** WAZUH Alert - **MITRE 标签:** T10003 - **摘要:** 在主机上检测到 Mimikatz 活动:DESKTOP-3KO75RC - **创建者:** SOAR (全自动) ![自动创建的 TheHive 案例](https://static.pigsec.cn/wp-content/uploads/repos/cas/b5/b547b52035b90e39e03662c4b75b38bd7f45efddcbf30cf8c665b77677ed2901.png) ### 步骤 7 — 收到电子邮件告警 Shuffle 自动向 SOC 分析师收件箱发送了一封电子邮件通知: - **主题:** Sent by email app: Mimikatz Detected - **发件人:** Shuffle Email App - **正文:** 关于在 Wazuh 中检测到 Mimikatz 的告警消息 ![在 Gmail 中收到电子邮件告警](https://static.pigsec.cn/wp-content/uploads/repos/cas/69/694aed20aa76490cc1e2885bd36531e58d026d0731e198d6e8c8d47ce4e67732.png) ## ✅ 完整 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, 安全实验室, 安全运营, 扫描框架, 自动化响应