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安全, 主机入侵检测, 企业安全, 信息安全, 威胁情报, 安全实验室, 安全运营中心, 开发者工具, 攻击模拟, 网络信息收集, 网络安全, 网络映射, 网络资产管理, 虚拟化安全, 隐私保护, 靶场, 驱动签名利用