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, 安全运营中心, 应用安全, 攻击模拟, 网络映射, 请求拦截, 驱动签名利用