BrandonRoos/wazuh-detection-engineering-lab
GitHub: BrandonRoos/wazuh-detection-engineering-lab
一个基于 Wazuh 的 SOC 检测工程实验室,通过 Atomic Red Team 攻击模拟定位默认部署的检测盲区,并记录从根因分析到自定义规则修复与验证的完整闭环。
Stars: 0 | Forks: 0
# 🛡️ Wazuh 检测工程实验室
### 攻击模拟 · 检测盲区 · 已验证的修复
这是一个注重动手操作的 SOC 实验室,旨在测试默认 Wazuh 部署能捕获哪些威胁,追踪缺失预期告警的原因,并为已确认的检测盲区添加经过验证的控制策略。
     
     
这不仅仅是一篇安装指南。它记录了攻击模拟、遥测分析、误导线索、根因分析、检测规则更改以及验证过程。 我发现了三个已确认的检测盲区,并构建了两种类型的修复方案:实时文件完整性监控(FIM)和由 `auditd` 支持的手写关联规则。 ## 🎯 快速概览 本项目演示了: - Wazuh manager、indexer、dashboard 和 Linux agent 的部署 - 使用 FIM 和 `auditd` 收集 Linux 遥测数据 - 映射到 MITRE ATT&CK 的 Atomic Red Team 测试 - 自定义 Wazuh XML 规则的开发与验证 - 跨 endpoint、collector、decoder、rule 和 dashboard 层的根因分析 - 误报分析与基于证据的故障排查 - Proxmox 虚拟化、Linux 管理与资源规划 - 基于真实会话记录构建的清晰技术文档 | 领域 | 本仓库中的证据 | | --- | --- | | 检测测试 | 在更改前后测试了三种模拟行为 | | 根因分析 | 诊断了缺失的 FIM 范围、定期扫描时机、audit 摄取以及静默的 rule 80700 | | 检测工程 | 实时 FIM 以及自定义 rule 100100 | | 验证 | 重新运行了精确的测试,并记录了生成的 Wazuh 规则 | | 可重复性 | [`configs/`](configs/) 下的可部署配置示例 | | 交流沟通 | 此处的执行摘要以及按时间顺序记录的详细工程日志 | ## 🧭 导航 - [架构](#architecture) - [已闭环的三项技术](#three-techniques-closed) - [案例研究 1:短暂的 shell 制品](#case-study-1-short-lived-shell-artifact) - [案例研究 2:一个控制策略,另一种检测](#case-study-2-one-control-another-detection) - [案例研究 3:基于 audit 的自定义规则](#case-study-3-audit-based-custom-rule) - [故障排查重点](#troubleshooting-highlights) - [复现控制策略](#reproduce-the-controls) - [局限性](#limitations) - [后续计划](#whats-next) - [完整构建笔记](docs/full-build-notes.md) ## 🗂️ 仓库结构图 ``` wazuh-detection-engineering-lab/ ├── README.md ├── configs/ │ ├── README.md │ ├── auditd/ │ │ └── t1082-hostname.rules │ └── wazuh/ │ ├── agent-audit-log.xml │ ├── agent-fim.xml │ └── local_rules.xml └── docs/ ├── full-build-notes.md └── images/ ├── phase1-infrastructure/ └── phase2-detection-engineering/ ``` ## 🖥️ 架构 | 虚拟机 (VM) | 角色 | 资源 / 详情 | 地址 | | --- | --- | --- | --- | | `wazuh-aio` | Wazuh manager、indexer 和 dashboard | Wazuh 4.14.6 | `192.168.2.101` | | `victim-01` | 一次性 Linux 目标机和 Wazuh agent | Ubuntu Server 22.04 | `192.168.2.102` | | `kali-01` | 攻击机和扫描机 | Kali 滚动发布版 | `192.168.2.103` | | `ollama-01` | 本地 LLM 推理 | 纯 CPU 的 Ollama | `192.168.2.104` | 宿主机是一台配备 32 GB 内存的联想 ThinkCentre M710q。构建过程初始基于 Proxmox VE 9.2.2;宿主机更新后的后续 UI 截图显示版本为 9.2.4。 实验室流量使用位于 pfSense 后方、处于隔离状态的 `192.168.2.0/24` 网段。 这些地址是私有的且不可路由。虽然它们仍然暴露了实验室的内部寻址方案,但为了清晰展示拓扑结构,此处依然将其保留。  ## 🧰 工具与版本 | 组件 | 版本或详情 | | --- | --- | | Hypervisor | Proxmox VE 9.2.2 | | SIEM | Wazuh 4.14.6,从 4.9.2 升级而来 | | 受害者机 | Ubuntu Server 22.04.5 | | 攻击模拟 | 通过 Invoke-AtomicRedTeam 执行的 Atomic Red Team | | Linux 审计 | `auditd` 和 `audispd-plugins` | | 测试 shell | PowerShell Core 7.6.3 和 Bash | | 本地推理 | Ollama,使用 `llama3.1:8b` 和 `jimscard/whiterabbit-neo:13b` | ## ✅ 已闭环的三项技术 | # | 技术 / 测试 | 初始结果 | 更改 | 验证 | | --- | --- | --- | --- | --- | | 1 | T1059.004-1 — 创建并执行 Bash Shell 脚本 | 无相关告警 | 在 `/tmp` 上添加了实时 FIM | 在两次重新运行中触发了 rule 550 | | 2 | T1082-3 — 列出操作系统信息 | 无相关告警 | 复用了相同的实时 FIM 控制策略 | 在 `/tmp/T1082.txt` 上触发了 rule 550 | | 3 | T1082-8 — 主机名发现 | 无告警 | 添加了 `auditd`、audit 日志摄取和 rule 100100 | rule 100100 触发了四次 | 这项工作产生了两条经过验证的检测路径:用于快速文件活动的实时 FIM,以及用于没有文件制品的活动的、由 audit 支持的自定义关联规则。 要自行部署这些控制策略,请参阅 [`configs/README.md`](configs/README.md) 中的逐步应用与验证指南。这四个代码片段中有两个需要手动合并到 `ossec.conf` 中,因此这不是一次简单的盲目粘贴。 ## 🔬 案例研究 1:短暂的 shell 制品 ### 测试 我运行了 Atomic Red Team 测试 `T1059.004-1`。它写入 `/tmp/art.sh`,执行它,并在清理期间将其删除。 ``` Invoke-AtomicTest T1059.004 -TestNumbers 1 ```  ### 初始结果 命令执行成功,但我没有发现相关的 Wazuh 告警。 广泛的搜索显示了 217 个标记为“存储数据操纵”的事件。文档检查表明它们是计划内的 CIS 基准检查,而不是来自测试的证据。  在测试时间窗口内出现了两个 rule 510 事件。它们的详细信息指出了 `/usr/bin/diff` 和宽泛的 rootcheck 特征,因此它们的时机只是巧合。  直接搜索 `/tmp` 未返回任何结果。  ### 根本原因 默认的 `syscheck` 范围不包含 `/tmp`。其定期扫描频率也为 43,200 秒,而 Atomic 测试在大约一秒钟内创建并删除了该脚本。  ### 修复 我添加了一个单独的实时 FIM 条目,而不是将每个默认目录都更改为实时监控。 ```
*执行摘要 · 配合按时间顺序记录的[完整构建笔记](docs/full-build-notes.md)阅读 · 属于 [Home-Lab](https://github.com/BrandonRoos/Home-Lab) 的一部分*
标签:AI风险缓解, Proxmox, Root-cause分析, SOC实验室, Wazuh, 攻击模拟, 驱动签名利用