aaronjohnsontech/wazuh-detection-engineering-lab
GitHub: aaronjohnsontech/wazuh-detection-engineering-lab
该项目是一个 Wazuh 检测工程实验室,通过模拟受控 SSH 暴力破解活动,验证自定义 SIEM 规则对 Windows 端点重复认证失败的检测与告警能力。
Stars: 0 | Forks: 0
# Wazuh 检测工程实验室
## 执行摘要
本项目演示了使用 Wazuh、Windows 11、Kali Linux 和 OpenSSH 的完整检测工程工作流。该实验室针对 Windows 终端节点生成了受控的 SSH 认证活动,针对重复的认证失败创建了自定义 Wazuh 规则逻辑,并在 Wazuh Threat Hunting 中验证了面向分析师的告警。
其目的是展示从**受控活动**到**端点遥测**再到**SIEM 检测输出**的完整路径。
## 项目链接
- **作品集案例研究:** https://aaronjohnson.tech/wazuh_ssh_bruteforce_lab.html
- **作品集主页:** https://aaronjohnson.tech
- **GitHub 仓库:** https://github.com/aaronjohnsontech/wazuh-detection-engineering-lab
## 问题
认证失败在企业环境中很常见,但针对远程访问服务的重复失败可能表明存在暴力破解行为、凭证猜测、配置错误或未经授权的访问尝试。安全团队需要一种方法,将常规的认证噪音与值得分析师审查的模式区分开来。
## 目标
- 构建一个隔离的 Wazuh 检测实验室。
- 将 Windows 11 终端节点配置为遥测源。
- 在 Windows 终端节点上启用 OpenSSH Server。
- 从 Kali 生成受控的 SSH 认证活动。
- 创建针对重复认证失败的自定义 Wazuh 规则逻辑。
- 在 Wazuh Threat Hunting 中验证检测。
- 通过脱敏的证据和可复现的文档打包项目。
## 环境
| 组件 | 角色 |
|---|---|
| Wazuh Manager | SIEM 和检测平台 |
| Windows 11 终端节点 | 受监控的终端节点和 OpenSSH 遥测源 |
| Kali Linux | 受控活动生成 |
| VirtualBox NAT 网络 | 隔离的实验室网络 |
| OpenSSH Server | 用于生成认证遥测的远程访问服务 |
| Hydra | 授权实验室中的受控凭证测试模拟器 |
| Wazuh Threat Hunting | 分析师验证界面 |
## 检测逻辑
该自定义规则旨在检测与 SSH 活动相关的重复 Windows 认证失败。
最终验证的规则特征:
| 字段 | 值 |
|---|---|
| Rule ID | `100002` |
| Level | `10` |
| Matched rule | Windows 认证失败基线 |
| Frequency | 短时间内的重复失败 |
| Description | 针对 Windows 终端节点的疑似 SSH 暴力破解活动 |
| Groups | `windows`, `authentication_failed`, `ssh`, `local` |
## 证据亮点
### 实验室拓扑

### VirtualBox 实验室网络

### 受控的 SSH 认证模拟

凭证输出已脱敏。实验室 IP 地址特意保留可见状态,因为它们仅为该隔离实验室创建,并有助于演示测试路径。
### 自定义 Wazuh 规则

### Threat Hunting 验证

### Dashboard 摘要

## 检测逻辑深度解析
该自定义规则旨在使重复的 Windows SSH 认证失败作为面向分析师的模式脱颖而出,而不是将其作为孤立的低级别事件遗留。
| 检测选择 | 理由 |
|---|---|
| `if_matched_sid 60122` | 链接自实验室中观察到的 Windows 认证失败信号,而不是仅匹配原始文本。 |
| `frequency 5` | 在引发自定义告警之前需要重复失败多次。 |
| `timeframe 60` | 保持告警集中在聚集行为上,而不是孤立的失误。 |
| `level 10` | 使告警对分析师可见,而不会将每次测试都标记为严重事件。 |
| Groups | 添加可搜索的上下文:`windows`, `authentication_failed`, `ssh`, 和 `local`。 |
### 之前 / 之后
**之前:** 该活动表现为单个 Windows 认证失败事件。
**之后:** 重复的失败被提升至自定义 Wazuh 规则 `100002`,针对针对 Windows 终端节点的疑似 SSH 暴力破解行为生成明确的 level 10 检测。
### 相关的 Windows 事件上下文
支持的 Wazuh 文档字段显示了 Windows 认证失败上下文,包括:
- Windows Event ID `4625`
- 终端节点身份和 agent 字段
- OpenSSH 进程上下文
- 登录类型
- 状态和子状态值
- 认证包信息
这为分析师提供了充足的上下文,以决定告警代表的是实验室测试、用户错误、过期凭证还是可疑的认证行为。
## 分析师分诊指南
当此告警触发时,分析师应检查:
1. 涉及了哪个终端节点和账户。
2. 源主机是预期的还是异常的。
3. 在重复失败后不久是否发生了成功的登录。
4. 相同的账户或源是否出现在多个终端节点上。
5. 该账户是否具有特权、与服务相关或是新创建的。
6. 该活动是否符合已批准的管理测试。
## 误报考虑
可能的误报包括:
- 管理员反复输入错误密码
- 过期的已保存 SSH 凭证
- 使用过期凭证的定时脚本
- 授权的漏洞测试
- 实验室验证活动
在生产环境中,应使用正常的认证基线、已批准的管理源 IP 范围、特权账户监控要求以及预期的 service account 行为对该规则进行调优。
## 仓库结构
```
wazuh-detection-engineering-lab/
├── README.md
├── docs/
│ ├── case-study.md
│ ├── implementation-guide.md
│ ├── validation-checklist.md
│ ├── detection-rationale.md
│ └── interview-talking-points.md
├── configs/
│ └── local_rules_ssh_bruteforce.xml
├── scripts/
│ └── controlled-ssh-simulation-example.sh
├── evidence/
│ └── screenshots/
├── website/
│ ├── wazuh-case-study.html
│ └── project-card-snippet.html
├── LICENSE
└── SECURITY.md
```
## 展示的技能
- Wazuh 检测工程
- Windows 终端节点遥测
- SSH 认证事件分析
- 自定义 SIEM 规则逻辑
- Threat Hunting 工作流
- 隔离实验室中的受控对手模拟
- 告警验证和文档记录
- 安全运营沟通
## 安全提示
本项目是在隔离的、经授权的实验室环境中进行的。请勿对您不拥有或未经明确许可测试的系统运行凭证测试工具。
标签:Wazuh, 后端开发, 安全实验环境, 安全运营, 扫描框架, 红队行动