Josh-McDougall/Wazuh-Detection-Lab

GitHub: Josh-McDougall/Wazuh-Detection-Lab

一个基于 Wazuh 和 Sysmon 构建的 SOC 检测工程家庭实验室,涵盖攻击模拟、SIEM 检测、自动化响应与自定义规则编写。

Stars: 0 | Forks: 0

# Wazuh 检测实验室 这是一个注重实践的 SOC 家庭实验室,旨在培养和展示实际的检测工程技能——包括攻击模拟、SIEM 配置、警报分类以及自动化事件响应。 该项目由 Josh McDougall 构建,作为积极培养真实世界 SOC 分析师能力的一部分。 ## 概述 本项目记录了在本地 VMware hypervisor 上运行的、自包含的安全监控环境的端到端构建过程。该实验室模拟了一个小型企业网络,包含一个集中式 SIEM、一个受监控的 Windows endpoint,以及一台专用攻击机。 目标并不是为了单纯跑完一个教程——而是为了构建真实的环境,破坏它,修复它,并理解其中的原因。这里记录的每一个故障排除决策和检测结果都反映了实际的动手工作。 ## 实验室拓扑 | 组件 | 角色 | |---|---| | **Ubuntu Server 22.04** | Wazuh SIEM manager — 日志摄取、解析、警报、主动响应 | | **Windows 10 Pro** | 受监控的 endpoint — Wazuh agent + Microsoft Sysmon | | **Kali Linux** | 攻击机 — 暴力破解模拟 | | **VMware Workstation** | 托管所有三个 VM 的 Type-2 hypervisor,运行在隔离的 NAT 网络上 | 所有三台虚拟机都运行在隔离的 NAT 网络上,在开始攻击性测试之前,刻意将其与家庭 LAN 分离——这是一个有意识的范围控制决策,旨在防止实验室流量触碰到真实的基础设施。 ## 构建内容 ### 1. 遥测 Pipeline - 在 Ubuntu 上部署了 Wazuh manager,并将一个 Windows 10 endpoint 注册为受监控的 agent - 使用 SwiftOnSecurity 配置模板在 Windows endpoint 上安装了 Microsoft Sysmon,从而实现了深度的内核级遥测,包括进程创建、网络连接和注册表修改事件 - 配置了 Wazuh agent 通过端口 1514 上的加密 pipeline 将 Sysmon eventchannel 转发给 manager ### 2. 真实世界的故障排除 在设置过程中遇到了并解决了两个真正的基础设施问题: - **隐藏的文件扩展名:** Windows Explorer 隐藏已知文件扩展名的默认行为导致了 Wazuh agent 配置中的配置路径不匹配,从而静默地破坏了日志 pipeline。通过 CLI 导航以验证真实文件名并更正路径解决了此问题。 - **UTC/本地时间漂移:** Wazuh manager 运行在 UTC 时间,而 Windows VM 在暂停后漂移到了本地时间。这导致 Wazuh 的事件索引拒绝接收传入的遥测数据(因为它们被认为是“未来时间”的),从而使仪表板显示为空。通过将两个系统同步到 AWST (Australia/Perth) 并强制重新注册 Windows Time 服务解决了此问题。 ### 3. 可见性盲区 — Manager 自我监控 发现 Wazuh manager 没有监控自身的认证日志 (`/var/log/auth.log`),从而针对针对 manager 本身的攻击产生了一个盲点。在 `ossec.conf` 中添加了缺失的 localfile 块并重启了 manager 以填补该漏洞。 ### 4. 攻击模拟 — SSH 暴力破解 使用 Hydra 从 Kali VM 对 Wazuh manager 发起了一次受控的 SSH 暴力破解攻击,目标是专用测试账户 (`bftest`),并使用了一个包含目标密码的自定义字典。 **观察到的检测链:** - 单个失败的登录尝试由规则 `5760` 检测到 (sshd: 认证失败,级别 5,MITRE T1110.001) - 暴力破解模式升级由规则 `5763` 触发 (120 秒内来自同一源 IP 的 8 次以上失败,级别 10) - 失败后的成功登录由规则 `40112` 检测到 (多次认证失败后跟一个成功,级别 12,MITRE T1078 + T1110) ### 5. 自动化主动响应 配置了 Wazuh 内置的 `firewall-drop` 主动响应,以便在规则 `5763` 触发时通过 `iptables` 自动封锁攻击 IP。在一次实时攻击期间验证了封锁已被实时应用,并通过以下方式确认: - `active-responses.log` 显示了自动执行过程 - `iptables -L -n` 显示了针对攻击者 IP 的实时 DROP 规则 ### 6. 检测工程 — 自定义规则 发现了一个检测盲区:Wazuh 的默认规则集监控 `HKLM\Software\Microsoft\Windows\CurrentVersion\Run` 以发现持久化行为,但未涵盖用户级别的等效项 (`HKCU\Software\Microsoft\Windows\CurrentVersion\Run`),这意味着攻击者如果通过 PowerShell 建立用户级别的持久化,将无法被检测到。 **修复方案:** - 将 `HKCU\...\Run` 添加到 Wazuh agent 的 syscheck 注册表监控配置中 - 在 `local_rules.xml` 中编写了自定义检测规则 `100002`,针对 Sysmon Event ID 13(注册表值设置)以监控 Run 键的修改,并将其映射到 MITRE ATT&CK T1547.001(Boot 或 Logon Autostart Execution: Registry Run Keys) ## 事件报告 SSH 暴力破解攻击的完整事件报告记录在 [`docs/03-incident-report.md`](docs/03-incident-report.md) 中。 ## 展示的技能 - SIEM 部署与配置 (Wazuh) - Endpoint 遥测配置 (Sysmon + SwiftOnSecurity) - 日志 pipeline 故障排除与盲区识别 - 攻击模拟 (Hydra, SSH 暴力破解) - 警报分类与真/假阳性分析 - MITRE ATT&CK 框架映射 - 自动化事件响应 (Wazuh active response + iptables) - 自定义检测规则编写 (XML, local_rules.xml) - 事件记录归档 ## 工具与技术 `Wazuh 4.x` `Microsoft Sysmon` `Kali Linux` `Hydra` `VMware Workstation` `Ubuntu Server 22.04` `Windows 10 Pro` `iptables` `SwiftOnSecurity Sysmon Config` ## 项目状态 🟡 活跃 — 检测工程工作正在进行中。 有关详细的阶段文档,请参阅 [`docs/`](docs/)。
标签:Wazuh, 安全, 实验室, 自动化响应, 超时处理