ronakmishra28/wazuh-enterprise-siem-lab

GitHub: ronakmishra28/wazuh-enterprise-siem-lab

一个为期6天的企业级Wazuh SIEM动手实验室,完整覆盖检测工程、攻击模拟、事件响应和威胁情报集成等SOC核心工作流。

Stars: 0 | Forks: 0

# Wazuh 企业级 SIEM 实验室 为期 6 天的动手实践家庭实验室,模拟企业安全运营中心 (SOC) 环境。该项目基于 Wazuh 4.14.4 和 Windows 11 及 Kali Linux 终端构建,涵盖了完整的 SOC 工作流——从初始部署到检测工程、攻击模拟、事件响应以及威胁情报集成。 **构建者:** Ronak Mishra — SOC 分析师,渥太华,安大略省 **GitHub:** [github.com/ronakmishra28](https://github.com/ronakmishra) | **Medium:** [@ronakonweb](https://medium.com/@ronakonweb) | **LinkedIn:** [linkedin.com/in/ronakmishra](https://linkedin.com/in/ronakmishra) **实验室持续时间:** 2026年4月18–23日 **状态:** 已完成 ## 实验室环境 | 组件 | 详情 | |-----------|---------| | 宿主机 | MacBook M4 Pro, 24GB RAM | | 虚拟机监控程序 | Parallels Desktop | | Wazuh 管理器 | Ubuntu 22.04 ARM64 — IP: 10.0.0.33 | | Agent 001 | Windows 11 Enterprise — IP: 10.0.0.32 | | Agent 002 | Kali Linux 2025.2 — IP: 10.0.0.100 | | Wazuh 版本 | 4.14.4 | | 网络 | Parallels 共享网络 — 10.0.0.0/24 | ## 我构建了什么 ### 多代理 SIEM 部署 在 Ubuntu 上部署了 Wazuh 管理器,并连接了两个代理——Windows 11 Enterprise 和 Kali Linux 2025.2。配置了 Windows 审核策略,以捕获进程创建 (4688)、身份验证事件 (4624/4625)、计划任务创建 (4698) 和用户帐户更改 (4720)。启用了 PowerShell 脚本块日志记录 (Event ID 4104) 和模块日志记录 (4103),以在整个环境中实现全面的 PowerShell 可见性。 ### 自定义检测规则 — MITRE ATT&CK 映射 从头编写了五条针对真实攻击技术的自定义检测规则: | 规则 ID | 技术 | MITRE | 严重性 | |---------|-----------|-------|----------| | 100002 | PowerShell 编码命令执行 | T1059.001 | 12 | | 100003 | PowerShell 下载载体 | T1105 | 12 | | 100004 | Office 应用程序生成 shell 进程 | T1566.001 | 15 (严重) | | 100005 | 创建了新的本地 Windows 用户帐户 | T1136.001 | 10 | | 100006 | 同一 IP 多次登录失败 (暴力破解) | T1110 | 12 | 所有规则均使用 PCRE2 正则表达式模式,对 Windows 事件日志数据中的 `win.eventdata` 字段进行匹配。规则 100006 使用基于频率的关联——在 2 分钟时间窗口内来自同一 IP 的 5 次以上失败登录发生时触发。 ### 攻击模拟与检测验证 从 Kali Linux 针对 Windows 目标模拟了五种真实攻击技术,并验证了检测效果: - **暴力认证** — 通过 `net use` 进行 10 次失败登录 → 规则 100006 触发 ✅ - **PowerShell 编码命令** (`-EncodedCommand`) → 规则 100002 触发 ✅ - **PowerShell 下载载体** (`Invoke-WebRequest`) → 规则 100003 触发 ✅ - **计划任务持久化** (WindowsUpdateHelper) → 检测到事件 4698 ✅ - **Nmap 端口扫描** → 未检测到 (检测缺口已记录,需要 Suricata) ✅ ### 检测缺口 — 已记录缓解措施 识别并正式记录了两个检测缺口: **缺口 1 — 基于日志的 SIEM 无法发现网络扫描** Nmap 扫描不会生成任何 Windows 事件日志条目。检测需要部署在网络段上的网络层 IDS (Suricata),而不是基于端点的日志记录。 **缺口 2 — Hydra 在认证前被阻止** Windows 11 在 NTLM 协商开始之前于 TCP 握手层阻止了 Hydra。没有生成 4625 事件。使用可触发正确身份验证事件的原生 `net use` 进行了模拟。 ### 事件响应 — 完整的 IR 练习 针对模拟的多阶段攻击进行了完整的事件响应练习。从 Wazuh 警报重建了攻击链: - 11:31 — 暴力认证 (规则 100006) - 11:42 — 编码的 PowerShell 执行 (规则 100002) - 11:52 — 创建了计划任务持久化 (事件 4698) 执行了遏制 (通过 `agent_control -i 001` 隔离代理)、根除 (移除了 WindowsUpdateHelper 计划任务,验证没有后门帐户或恶意服务) 和恢复。生成了正式的事件报告 IR-2026-001。 ### 集成与威胁情报 **VirusTotal 集成** 将 Wazuh FIM 连接到 VirusTotal API。当 FIM 检测到受监控目录中创建或修改了文件时,Wazuh 会自动计算 SHA256/MD5 哈希并查询 VirusTotal 的 70 多个 AV 引擎数据库。未知文件返回规则 87103 (`found:0`)。已知恶意软件返回规则 87105 及其恶意的引擎计数。减少了基于文件的警报的手动调查时间。 **主动响应** 配置了 `win_route-null` 主动响应,以便在暴力破解规则 100006 触发时,通过 Windows 防火墙自动阻止攻击者 IP。在 60 秒超时后自动解除阻止。配置验证正确。生产测试确认集成链功能正常——规则触发,命令到达 execd,脚本执行。完整的端到端 IP 阻止需要真实的外部源 IP;故意将本地主机环回 (`::1`) 排除在防火墙阻止之外,以防止网络堆栈中断。 **漏洞检测** 启用 Wazuh syscollector 以清点 Windows 代理上的所有软件 (验证了 20 多个应用程序,包括 Microsoft Edge 147.0.3912.72、Teams、Outlook)。配置了 CVE 源,每 60 分钟从 NVD 更新一次。在实验室期间成功下载了两次源数据。 **Kali Linux auditd** 在 Kali 上安装并配置了 `auditd`,以实现 syscall 级别的 Linux 可见性。监控 `/etc/passwd`、`/etc/shadow`、`/bin/bash` 和 `/usr/bin/nc` 的监视规则。触发了 shadow 文件读取,并确认来自 Kali 的 51 条 Wazuh 警报,包括 MITRE T1548.003 映射 (Sudo 和 Sudo 缓存)。管道:内核 syscall → audit.log → Wazuh 代理 → 管理器 → 仪表板。 ## 仓库结构 ``` wazuh-enterprise-siem-lab/ ├── README.md ├── rules/ │ └── local_rules.xml # 5 custom detection rules ├── day-01-foundation/ │ ├── day-01-foundation.md # Lab setup, architecture, agent deployment │ └── screenshots/ ├── day-02-log-sources/ │ ├── day-02-log-sources.md # PowerShell logging, SCA, baseline building │ └── screenshots/ ├── day-03-detection-engineering/ │ ├── day-03-detection-engineering.md # Writing 5 custom Wazuh rules │ └── screenshots/ ├── day-04-attack-simulation/ │ ├── day-04-attack-simulation.md # Attack simulation, detection validation, gaps │ └── screenshots/ ├── day-05-incident-response/ │ ├── IR-2026-001.md # Formal incident report │ └── screenshots/ └── day-06-integrations/ ├── day-06-integrations.md # VirusTotal, Active Response, Vuln Detection, auditd └── screenshots/ ``` ## 展示的关键技能 **SIEM 运营** - Wazuh 部署和多代理管理 - 日志源配置和索引器管道故障排除 - 使用 Discover 和仪表板进行警报分类和调查 - Wazuh 规则引擎架构 (解码器 → 规则 → 警报) **检测工程** - 使用 PCRE2 正则表达式针对结构化日志字段编写自定义规则 - MITRE ATT&CK 框架映射 - 用于多事件检测的基于频率的关联 - 区分检测缺口与误报 **威胁情报** - VirusTotal API 集成,用于自动化文件信誉丰富 - 基于哈希的恶意软件识别 - 了解局限性 (零日盲区、纵深防御) **事件响应** - 基于警报的攻击链重建 - 跨越多个规则触发的时间线分析 - 代理隔离和遏制程序 - 正式的 IR 文档 (执行摘要 → 时间线 → 遏制 → 根除 → 恢复 → 经验教训) **Windows 安全** - Windows 事件 ID 及其安全意义 (4624, 4625, 4688, 4698, 4720) - 通过 `auditpol` 进行审核策略配置 - PowerShell 脚本块日志记录以及它为何能击败混淆 - Active Directory 和本地身份验证事件分析 **Linux 安全** - auditd 安装和 syscall 级别监视规则配置 - 审核日志转发至 SIEM - 从 Linux 审核事件进行 MITRE ATT&CK 映射 **漏洞管理** - Wazuh syscollector 软件清点 - CVE 源配置和 NVD 集成 - CVSS 评分和修复优先级框架 ## 检测规则 ``` 67027 (?i)-enc|-encodedcommand ALERT: PowerShell encoded command execution - possible obfuscated attack T1059.001 attack,powershell,obfuscation, 67027 (?i)DownloadString|DownloadFile|Invoke-WebRequest|iwr\s|wget\s|curl\s ALERT: PowerShell download cradle detected - possible malware download T1105 attack,powershell,download, 67027 (?i)winword\.exe|excel\.exe|powerpnt\.exe|outlook\.exe (?i)cmd\.exe|powershell\.exe|wscript\.exe|cscript\.exe|mshta\.exe CRITICAL: Office application spawned shell process - macro attack likely T1566.001 attack,macro,office,critical, 60103 4720 ALERT: New Windows user account created - verify if authorized T1136.001 attack,persistence,account_creation, 60122 win.eventdata.ipAddress ALERT: Multiple failed Windows logons from same IP - possible brute force T1110 attack,brute_force,authentication, ``` ## 每日日志 | 天数 | 重点 | 状态 | |-----|-------|--------| | [第 1 天](day-01-foundation/) | 实验室设置,代理部署,Windows 审核策略,Event ID 4688 验证 | ✅ 已完成 | | [第 2 天](day-02-log-sources/) | PowerShell 脚本块日志记录,SCA CIS 基准,基线构建 | ✅ 已完成 | | [第 3 天](day-03-detection-engineering/) | 5 条自定义检测规则,MITRE ATT&CK 映射,规则测试 | ✅ 已完成 | | [第 4 天](day-04-attack-simulation/) | 从 Kali 进行攻击模拟,检测验证,缺口分析 | ✅ 已完成 | | [第 5 天](day-05-incident-response/) | 完整的 IR 练习,代理隔离,正式事件报告 IR-2026-001 | ✅ 已完成 | | [第 6 天](day-06-integrations/) | VirusTotal,主动响应,漏洞检测,Kali auditd | ✅ 已完成 | ## 我下一步会做什么 - 部署 Suricata IDS 并与 Wazuh 集成,以填补网络扫描检测缺口 - 迁移到 Splunk SIEM — 将所有 5 条自定义规则转换为 SPL,并比较检测能力 - 添加第三个 Windows 终端以模拟横向移动检测 - 实施 Wazuh 代理组以大规模管理终端配置 - 构建一个具有针对每种 MITRE 战术的自定义可视化的 SOC 仪表板 ## 联系方式 **LinkedIn:** [linkedin.com/in/ronakmishra](https://linkedin.com/in/ronakmishra) **作品集:** [ronakmishra28.github.io](https://ronakmishra28.github.io) **Medium:** [@ronakonweb](https://medium.com/@ronakonweb)
标签:Cloudflare, Conpot, meg, MITRE ATT&CK, OPA, OpenCanary, Parallels Desktop, PowerShell安全, SOC分析师, Wazuh, Windows安全, 主机入侵检测, 企业安全, 信息安全, 威胁情报, 安全实验室, 安全运营中心, 开发者工具, 攻击模拟, 网络信息收集, 网络安全, 网络映射, 网络资产管理, 虚拟化安全, 隐私保护, 靶场, 驱动签名利用