SarmadAidrus/soc-lab-wazuh-dvwa

GitHub: SarmadAidrus/soc-lab-wazuh-dvwa

一个基于 Wazuh 和 DVWA 的自托管 SOC 实验室,通过记录检测空白发现与误报修复的真实过程来教授检测工程实践。

Stars: 0 | Forks: 0

# SOC 实验室 — Wazuh + DVWA 检测工程 一个免费、自托管的 SOC 实验室,旨在学习和演示实用的检测工程:将 **Wazuh** 部署为 SIEM,监控真实的 endpoint,攻击一个故意留下漏洞的 Web 应用程序 (**DVWA**),并通过自定义规则来填补检测空白和修正误报。 这不仅仅是一个“这是我的告警仪表板”项目——它以构建日志的形式记录,包括其中犯过的错误、调试过程以及修复方案,因为这个过程才是真正的技能所在。 ## 技术栈 | 组件 | 工具 | |---|---| | SIEM | [Wazuh](https://wazuh.com/) 4.9.2 (Docker 单节点:manager、indexer、dashboard) | | 受害者 endpoint | Ubuntu Server 虚拟机 (VMware,桥接网络) | | 漏洞靶标 | [DVWA](https://github.com/digininja/DVWA) (Damn Vulnerable Web Application) | | 检测内容 | 自定义 Wazuh 规则 (`rules/local_rules_dvwa.xml`),标记了 MITRE ATT&CK | ## 本项目演示的内容 - 从零开始搭建 SIEM 并将真实的 endpoint 注册为 agent - 阅读和解释 SIEM 告警,包括 **atomic(原子)** 检测(单行日志 → 规则)和 **correlated(关联)** 检测(事件模式 → 升级规则)之间的区别 - 发现真正的 **检测空白** —— 一次真实的 SQL 注入成功攻击了 DVWA,而 Wazuh 的默认规则集却生成了零告警 —— 并通过自定义的、标记了 MITRE ATT&CK 的规则来填补它 - 发现并修复同一自定义规则中的 **误报**(一次登录尝试被错误地标记为 SQL 注入,因为正则表达式匹配到了单词 "password" 中的子字符串 "OR")—— 并理解为什么过于宽泛的检测规则和漏报一样代价高昂 - 真实的基础设施故障排查:Docker 凭证轮换、虚拟机桥接网络、主机防火墙拦截,以及由于格式错误的规则 XML 导致的 manager 服务崩溃 ## 项目结构 ``` soc-lab/ ├── README.md <- you are here ├── docs/ │ ├── part1-wazuh-setup.md Wazuh deployment, credential rotation, first agent │ ├── part2-first-detections.md SSH brute-force detection (atomic vs. correlated rules) │ ├── part3-dvwa-detection-gap.md DVWA setup, an undetected SQLi, and the fix │ └── part4-dvwa-rule-coverage.md Full ruleset testing, a false-positive found and fixed └── rules/ └── local_rules_dvwa.xml Final custom Wazuh detection rules (14 rules, MITRE-tagged) ``` ## 检测覆盖范围(自定义规则) | 规则 ID | 检测内容 | MITRE ATT&CK | |---|---|---| | 100100 | SQL 注入 | T1190 | | 100101 | 跨站脚本攻击 (XSS) | T1059.007 | | 100102 | 操作系统命令注入 | T1059 | | 100103 | 本地/远程文件包含 | T1190 | | 100104 | 恶意文件上传(脚本扩展名) | T1505.003 | | 100105 | 访问存在 CSRF 漏洞的 endpoint | T1204 | | 100106 / 100107 | 暴力破解(单次尝试 / 频率升级) | T1110 | | 100108 | 访问命令执行模块 | T1059 | | 100109 | 访问弱会话 ID 模块 | T1539 | | 100110 | 访问不安全的 CAPTCHA 模块 | T1204 | | 100111 | 开放重定向 | T1204 | | 100112 | XXE 注入 | T1190 | | 100113 | 访问 JavaScript 攻击模块 | T1059.007 | 已通过实测确认有效:**SQL 注入 (100100)**、**反射型 XSS (100101)**、**暴力破解 (100106/100107)** —— 后两项是在第 4 部分记录的误报修复之后才实现的。 ## 快速开始(复现此实验室) 1. **部署 Wazuh** —— 有关 Docker Compose 设置和凭证轮换,请参阅 [`docs/part1-wazuh-setup.md`](docs/part1-wazuh-setup.md) 2. **注册 endpoint** —— 有关 agent 安装和桥接虚拟机网络的内容,请参阅第 1 部分 3. **生成真实检测** —— 以 SSH 暴力破解作为第一个测试用例,请参阅 [`docs/part2-first-detections.md`](docs/part2-first-detections.md) 4. **搭建 DVWA** —— 有关漏洞应用程序设置和 Apache 日志集成,请参阅 [`docs/part3-dvwa-detection-gap.md`](docs/part3-dvwa-detection-gap.md) 5. **部署自定义规则集** —— 将 `rules/local_rules_dvwa.xml` 复制到 Wazuh manager 上: docker cp rules/local_rules_dvwa.xml :/var/ossec/etc/rules/local_rules.xml docker exec -it chown wazuh:wazuh /var/ossec/etc/rules/local_rules.xml docker exec -it xmllint --noout /var/ossec/etc/rules/local_rules.xml docker exec -it /var/ossec/bin/wazuh-control restart 6. **测试覆盖范围** —— 有关测试计划和结果,请参阅 [`docs/part4-dvwa-rule-coverage.md`](docs/part4-dvwa-rule-coverage.md) ## 状态 持续完善中。下一步计划添加:完成全面的 DVWA 模块测试、MITRE ATT&CK 覆盖矩阵,以及用于跨平台对比的第二个受监控 endpoint (Windows)。 ## 许可证 MIT —— 随意复用这些规则或结构来构建您自己的实验室。
标签:CISA项目, Docker, DVWA, Wazuh, 安全实验室, 安全运营, 安全防御评估, 扫描框架, 版权保护, 请求拦截