mehran-sec/Wazuh-Detection-lab-
GitHub: mehran-sec/Wazuh-Detection-lab-
基于 Wazuh 构建的家庭 SOC 实验室,通过 SSH 暴力破解攻击模拟验证自定义检测规则与 MITRE ATT&CK 映射的完整闭环。
Stars: 0 | Forks: 0
# 使用 Wazuh 进行 SSH 暴力破解攻击模拟与检测
构建并验证了自定义的 Wazuh 关联规则,用于检测 SSH 暴力破解尝试,包括使用 `sshpass` 对运行中的 Ubuntu 目标进行的完整攻击模拟。
## 目标
对实验室目标模拟真实的 SSH 暴力破解攻击,然后构建、调整并验证自定义的 Wazuh 检测规则,该规则会在多次身份验证失败时触发,并将其与成功的登录进行关联——从而闭环从攻击到检测的完整过程。
## 实验室架构
| 组件 | 详情 |
|---|---|
| Wazuh Manager/Indexer/Dashboard | Docker 单节点部署, |
| 主机 | Ubuntu, 16GB RAM |
| 攻击源 | 使用 sshpass 的 Bash 脚本 |
| 目标 | Ubuntu VM (SSH 服务器) |
| 基础检测规则 | 5760 (SSH 认证失败 ) |
| 自定义规则 ID | 100010 |
```
[Attacker Script] --sshpass/SSH--> [Ubuntu Target] --auth logs--> [Wazuh Agent]
|
v
[Wazuh Manager: rule 5760]
|
v
[Custom Rule 100010: frequency correlation]
|
v
[Wazuh Dashboard Alert]
```
## 攻击模拟
一个使用 `sshpass` 的 bash 脚本针对目标执行了多次重复的 SSH 登录失败尝试,随后使用正确的凭据 进行了一次成功的登录。
```
#!/bin/bash
# ssh_bruteforce_sim.sh
# 模拟 SSH brute-force 尝试以及随后的成功登录。
# 仅针对您在隔离 lab 中拥有/控制的系统使用。
TARGET="192.168.x.x"
USER="Ayan"
WRONG_PASSWORDS=("password123" "admin123" "letmein" "qwerty123" "test1234")
CORRECT_PASSWORD=""
for pass in "${WRONG_PASSWORDS[@]}"; do
echo "[*] Trying password: $pass"
sshpass -p "$pass" ssh -o StrictHostKeyChecking=no "$USER@$TARGET" exit
sleep 1
done
echo "[*] Attempting correct login..."
sshpass -p "$CORRECT_PASSWORD" ssh -o StrictHostKeyChecking=no "$USER@$TARGET" exit
```
每次失败的尝试都会生成一条 Linux auth log 记录,由 Wazuh agent 提取并与基础规则 `5760` 进行匹配。
## 自定义检测规则
`local_rules.xml`
```
5760
SSH brute-force attempt detected: 5+ authentication failures from same source in 120 seconds
T1110.001
authentication_failures,pci_dss_10.2.4,pci_dss_10.2.5,
```
**逻辑:** 该规则在 120 秒的时间窗口内,当同一来源发生 5 次或更多与基础规则 `5760` 匹配的事件时触发——这是一种基于频率的关联,而不是单事件匹配,从而减少了偶尔输错密码导致的误报。
## 验证
1. 针对目标运行了由 `sshpass` 驱动的登录失败尝试。
2. 确认每次失败都被记录,并通过 `wazuh-logtest` 确认其与规则 `5760` 匹配。
3. 确认规则 `100010` 在时间范围内第 5 次失败后触发。
4. 随后进行了一次成功的登录,并确认 Wazuh Dashboard 显示了完整的序列:多个 `5760` 告警 → `100010` 关联告警 → 成功的认证事件。
*(在此处插入仪表板截图:`screenshots/alert-100010.png`,`screenshots/attack-sequence.png`)*
## MITRE ATT&CK 映射
| 技术 | ID | 说明 |
|---|---|---|
| Brute Force: Password Guessing | T1110.001 | 模拟并检测到的核心技术 |
| Valid Accounts | T1078 | 由最终成功的登录体现 |
## 后续步骤
- **失败后成功规则**:一个复合规则,专门用于标记在来自同一来源的 `100010` 告警后不久发生的成功登录(成功 SSH 认证的基础规则)——这是比单纯的失败更强的入侵指标。
- 添加源 IP 威胁情报充实(例如,通过 Wazuh 的 active response 或外部数据源)。
- 扩展至 active response:在 `100010` 触发后自动封锁源 IP。
## 仓库结构
```
.
├── README.md
├── scripts/
│ └── ssh_bruteforce_sim.sh
├── rules/
│ └── local_rules.xml
└── screenshots/
├── alert-100010.png
└── attack-sequence.png
```
## 环境
- Wazuh 4.14.5 (Docker 单节点)
- Ubuntu (主机 + 目标)
- `sshpass`
*为进行实战检测工程实践而构建的家庭 SOC 实验室的一部分。*
标签:Wazuh, 安全运营中心, 应用安全, 攻击模拟, 网络映射, 请求拦截, 驱动签名利用