abhi050206/wazuh-soc-lab
GitHub: abhi050206/wazuh-soc-lab
基于自托管 Wazuh SIEM 构建的 SOC 分析师实验室,涵盖自定义检测规则编写、攻击遥测生成与端到端告警分诊。
Stars: 0 | Forks: 0
# Wazuh SOC 分析师实验室 — 检测工程与威胁狩猎
一个基于自托管 Wazuh SIEM(Docker,单节点)构建的 SOC 分析师实操实验室。在这里,我编写了自定义检测规则,使用 Windows 端点生成了真实的攻击遥测数据,并进行了端到端的告警分诊——包括发现并记录了一个误报。
本项目是在完成 [HTB Academy SOC 分析师路径](https://academy.hackthebox.com/) 的过程中构建的,旨在将所学概念应用于实时环境,而不仅仅是实验模块。
## 架构

- **Windows agent** (`soc-test-machine`) 通过端口 1514 将 Windows Security 和 Sysmon 日志发送到 manager。
- **Wazuh manager** 运行规则引擎(自定义规则位于 `local_rules.xml` 中)并评估每一个传入的事件。
- **Wazuh indexer**(基于 OpenSearch)存储所有生成的告警。
- **Wazuh dashboard** 提供用于威胁狩猎和分诊的 Kibana 风格 UI。
所有四个组件均通过 `docker-compose`(`single-node` 部署)作为 Docker 容器运行。
## 场景 1 — 自定义暴力破解检测规则
**目标:** 检测 Windows agent 上的重复身份验证失败,并将它们关联为一个单独的高严重性告警,而不是依赖 Wazuh 默认的、充满噪音的单事件日志。
**编写的规则** (`/var/ossec/etc/rules/local_rules.xml`):
```
60122
Multiple failed logon attempts (5+ in 120s) - possible brute force attack
T1110
authentication_failures,
```
此规则在基础规则 `60122`(“Logon Failure — Unknown user or bad password”)之上触发,将 120 秒窗口内的 5 次及以上失败关联起来,并将其标记为 MITRE ATT&CK **T1110 (Brute Force)**。
**测试:** 在 Windows agent 上模拟了多次失败登录,并确认关联规则正确触发。

*仪表板确认了级别为 10 的告警,并在 MITRE ATT&CK 下标记为 Brute Force。*

*文档详情显示 `rule.frequency: 5`,并且失败时间戳聚集在 8 秒的时间窗口内——确认关联逻辑按预期工作。*
**基础规则参考**(60122 — 100010 基于其进行关联的底层登录失败规则):

## 场景 2 — PowerShell 告警分诊(误报)
**目标:** 调查高严重性的基于 Sysmon 的告警(规则 `92213`,级别 15 — “Executable file dropped in folder commonly used by malware”),并确定其是否代表真正的威胁。

*规则 92213(释放可执行文件)和 92027(生成 PowerShell 进程)在 agent 上同时触发的事件。*
**调查:** 展开告警的文档详情以检查释放文件的路径:

`data.win.eventdata.targetFilename`:
```
C:\Users\Abhishek\AppData\Local\Temp\__PSScriptPolicyTest_gvi44ono.ypm.ps1
```
**分析与结论:**

```
Investigation: Rule 92213 - Executable dropped in folder commonly used by malware
Alert triggered on: __PSScriptPolicyTest_gvi44ono.ypm.ps1
Path: C:\Users\Abhishek\AppData\Local\Temp\
Analysis: File pattern "__PSScriptPolicyTest_*.ps1" is a known Windows
PowerShell Script Block Logging / Constrained Language Mode policy test
artifact, auto-generated by the OS itself whenever PowerShell evaluates
script execution policy - NOT attacker-dropped payload.
Verdict: FALSE POSITIVE - benign system-generated test script
Action: No response needed; consider tuning rule to exclude this pattern
```
这对于 SOC 分析师角色尤为重要,因为**正确排除误报与发现真实威胁同样重要**——由未归档的误报引起的告警疲劳是现实世界中最常见的 SOC 失败模式之一。
## 环境设置
- Wazuh v4.9.0,通过 Docker Desktop 部署(`wazuh-docker/single-node`)
- Windows 11 agent 已注册并连接(`Endpoints` → `soc-test-machine`,状态:Active)
- 在 agent 上安装并配置了 Sysmon(SwiftOnSecurity 配置)以实现进程创建可见性

## 关键收获
- 从零开始编写并测试了自定义 Wazuh 关联规则(XML 规则语法、`if_matched_sid`、`frequency`/`timeframe`、MITRE ATT&CK 映射)
- 针对真实的 Windows 遥测数据(Security + Sysmon 日志)模拟并验证了检测结果
- 实践了完整的告警分诊工作流:识别 → 调查 → 确定根本原因 → 记录结论
- 学会了区分真正的威胁与操作系统生成的噪音——这对于减少分析师的告警疲劳至关重要
## 关于我
计算机工程专业的学生(LDCE, Ahmedabad),致力于网络安全,目前专注于 SOC 分析师(L1)职位。
- GitHub:[github.com/abhi050206](https://github.com/abhi050206)
- LinkedIn:[linkedin.com/in/abhishekgohel05](https://linkedin.com/in/abhishekgohel05)
标签:Wazuh, 告警分诊, 安全实验室, 安全运营, 扫描框架, 请求拦截