SinishtajM/wazuh-soc-lab
GitHub: SinishtajM/wazuh-soc-lab
一个基于 Wazuh 搭建的 SOC 实验室项目,演示跨平台端点监控、自定义检测规则、调查场景分析及警报调优的完整安全运营工作流。
Stars: 0 | Forks: 0
# Wazuh SOC 实验室:Windows 和 Linux 威胁检测
## 概述
本项目记录了一个使用 Wazuh 搭建的家庭 SOC 实验室,用于监控 Windows 和 Linux 端点。该实验室演示了端点接入、日志接入、警报审查、调查工作流、自定义检测工程、误报调优以及仪表盘证据收集。
目标不仅是安装 Wazuh,还要验证在 SOC 风格的工作流中,能够生成、审查、调优并解释有意义的遥测数据。
## 实验室架构
| 组件 | 用途 |
|---|---|
| Wazuh server | Wazuh manager、indexer 和 dashboard |
| Windows 端点 | Windows 安全日志、Sysmon、PowerShell 4104 日志记录、RDP/身份验证活动 |
| Linux 端点 | SSH 身份验证、sudo/PAM 活动、syslog/journald、文件完整性监控 |
| 管理工作站 | 用于访问 dashboard、生成测试事件并收集证据 |

## 工具与技术
- Wazuh manager、indexer 和 dashboard
- Wazuh Windows 和 Linux agent
- Windows 11 端点
- Ubuntu Server 端点
- Sysmon
- PowerShell 脚本块日志记录
- Windows 安全审计
- Linux journald/syslog
- Wazuh 文件完整性监控
- `local_rules.xml` 中的自定义 Wazuh 规则
## 已验证的遥测数据
### Windows 端点
Windows 端点被配置为收集并转发:
- 失败的登录:事件 ID 4625
- 成功的远程登录:事件 ID 4624
- 特权登录:事件 ID 4672
- 进程创建:事件 ID 4688
- PowerShell 脚本块日志记录:事件 ID 4104
- Sysmon 进程创建:事件 ID 1
- Sysmon 文件创建:事件 ID 11



### Linux 端点
Linux 端点被配置为收集并转发:
- 失败的 SSH 身份验证
- PAM 会话活动
- sudo/root 活动
- 文件完整性监控更改


## 调查场景 1:Windows 远程管理员登录与发现
### 场景总结
一台远程工作站尝试以本地管理员身份向 Windows 端点进行身份验证。第一次尝试失败,随后远程登录成功。登录后,通过账户枚举和 PowerShell 活动观察到了发现行为。
### 审查的证据
| 事件 | 描述 | SOC 价值 |
|---|---|---|
| 4625 | 本地管理员账户登录失败 | 检测身份验证失败 |
| 4624 | 使用 NTLM 成功进行远程登录 | 检测远程身份验证 |
| 4672 | 分配了特殊权限 | 识别特权登录 |
| 4688 | `net1 user` 进程创建 | 显示账户发现行为 |
| 4104 | PowerShell 脚本块活动 | 捕获脚本内容 |
| Sysmon EID 1 | PowerShell 进程活动 | 显示进程链和父进程上下文 |
### 分析师评估
此活动在实验室中是符合预期的,但在真实环境中,该链需要进一步审查,因为它类似于未经授权的远程访问及随后的发现行为。建议的操作包括验证源工作站、确认用户活动是否已授权、审查账户权限,以及搜寻额外的发现或横向移动指标。
## 调查场景 2:Linux SSH、Sudo 和文件完整性监控
### 场景总结
针对 Linux 端点生成了一次失败的 SSH 登录。之后,执行了 sudo/root 活动,并且从 Wazuh FIM 监控的目录中删除了一个受监控的文件。
### 审查的证据
| 规则 | 描述 | SOC 价值 |
|---|---|---|
| 5760 | SSH 身份验证失败 | 检测 SSH 登录失败 |
| 5501 | PAM 会话已开启 | 显示特权会话活动 |
| 5402 | 成功通过 sudo 切换到 root | 检测 root 命令执行 |
| 553 | 文件已删除 | 通过 FIM 检测受监控文件的删除 |
### 分析师评估
此活动在实验室中是符合预期的。在真实环境中,SSH 登录失败,随后发生 sudo/root 活动以及受监控文件被删除,这将需要验证源 IP、审查 shell 历史记录、确认该活动是否已授权,并对已删除的文件进行调查。
## 检测工程
### 自定义规则 100100:SSH 暴力破解关联
创建了一个自定义 Wazuh 规则,以提高来自同一源 IP 的重复 SSH 失败的严重级别。
| 字段 | 值 |
|---|---|
| 规则 ID | 100100 |
| 严重性 | Level 10 |
| 触发条件 | 120 秒内来自同一源 IP 的 3 次 SSH 登录失败 |
| 源规则 | 5760 - SSH 身份验证失败 |
| 目的 | 将重复的身份验证失败升级为更高优先级的暴力破解类警报 |
### 自定义规则 100101:良性 PowerShell 策略测试调优
对一项高危 Sysmon 文件创建警报进行了调查和调优。PowerShell 在用户 Temp 目录中创建了一个匹配模式 `__PSScriptPolicyTest_*.ps1` 的文件。这被评估为良性的 PowerShell 策略测试行为。
| 字段 | 值 |
|---|---|
| 规则 ID | 100101 |
| 严重性 | Level 3 |
| 父规则 | 92213 |
| 目的 | 减少已知良性 PowerShell 策略测试文件的噪音,同时保留可见性 |

自定义规则包含在 [`rules/local_rules.xml`](rules/local_rules.xml) 中。
## 展示的技能
- Wazuh 部署与管理
- Windows 端点监控
- Linux 端点监控
- Sysmon 部署与验证
- PowerShell 脚本块日志记录
- Windows 安全审计策略验证
- Linux SSH/sudo/PAM 日志分析
- 文件完整性监控
- 警报分类与调查时间线
- 使用自定义 Wazuh 规则进行检测工程
- 误报调优与严重性调整
- 仪表盘保存的搜索与证据收集
- 用于作品集展示的技术文档
## 经验教训
- 高危警报需要上下文支持。在审查了目标文件名模式和进程上下文后,确定了一个高危的 PowerShell 文件创建警报是良性的。
- 构建时间线是关键。将失败的登录、成功的登录、特权登录和发现命令放在一起审查时会变得更有意义。
- 良好的仪表盘和保存的搜索使调查更容易重复和解释。
- 检测工程包括升级和调优:提高重复 SSH 失败的信号强度,并减少已知良性 PowerShell 行为的噪音。
## 仓库布局
```
wazuh-soc-lab
├── README.md
├── screenshots
│ ├── wazuh-agents-overview.png
│ ├── windows-authentication-chain.png
│ ├── windows-powershell-4104.png
│ ├── windows-sysmon-activity.png
│ ├── linux-ssh-sudo-activity.png
│ ├── linux-fim-file-deleted.png
│ └── custom-wazuh-rules.png
└── rules
└── local_rules.xml
```
## 备注
本项目是在受控的实验室环境中完成的。所有警报和场景均是为了学习、验证和作品集文档记录而有意生成的。
标签:AI合规, AMSI绕过, Wazuh, x64dbg, 威胁检测, 安全运营中心, 实验室环境, 终端检测与响应, 网络映射