MDPorsch/Threat-Detection-with-Wazuh-SIEM

GitHub: MDPorsch/Threat-Detection-with-Wazuh-SIEM

一个基于 Wazuh SIEM 的蓝队威胁检测实践指南,涵盖 SSH 暴力破解检测、文件完整性监控、主动响应和 CIS 合规审计等核心安全运营技能。

Stars: 0 | Forks: 0

# 蓝队:使用 Wazuh SIEM 进行威胁检测 ### 网络安全家庭实验室系列 ## 概述 **日期:** 2026年3月19日 **环境:** Ubuntu VM + Kali Linux (VirtualBox on MacBook M4) **难度:** 中级 **耗时:** ~180 分钟 这是一个视角的转换。本次练习站在防御者的角度。使用 Wazuh SIEM,我配置了检测规则,实时监控攻击触发警报,设置了自动主动响应,针对 CIS Benchmark 审计系统,并监控文件完整性。我生成的每一个警报都直接对应于之前练习中的攻击。 ## 目标 - 修复 Wazuh agent 配置并建立 manager-agent 连接 - 实时检测 SSH 暴力破解攻击 - 理解 MITRE ATT&CK 警报映射 - 配置文件完整性监控 (FIM) - 检测可疑用户账户创建 - 针对 CIS Benchmark 运行配置评估 - 修复真实的安全发现 - 配置主动响应以自动封锁攻击者 - 集成 Suricata IDS 与 Wazuh - 启动漏洞检测 ## 工具与环境 | 项目 | 详情 | |------|--------| | 主机 | MacBook M4 | | VM 平台 | VirtualBox | | Agent VM | Ubuntu 25.10 (192.168.4.113) | | Manager VM | Kali Linux (192.168.4.198) | | SIEM | Wazuh v4.14.2 | | IDS | Suricata 7.0.10 | | 工作目录 | ~/lab/ex07 | ## 分步指南 ### Step 1 — 修复 Wazuh Agent 配置 在之前的设置中,两个 VM 上都已经安装了 Wazuh,但 agent 指向的是一个旧的 IP 地址。在 Ubuntu 上更新了 agent 配置: ``` sudo nano /var/ossec/etc/ossec.conf ``` 更改前: ```
10.0.2.3
``` 更改后: ```
192.168.4.198
``` 重启 agent: ``` sudo systemctl daemon-reload sudo systemctl restart wazuh-agent ``` 验证 agent 已连接到 Kali 上的 manager: ``` sudo /var/ossec/bin/agent_control -l ``` 输出: ``` ID: 000, Name: kali (server), IP: 127.0.0.1, Active/Local ID: 001, Name: GoMyCodeEndpoint, IP: any, Active ``` **Wazuh 架构:** ``` Ubuntu (Agent) → sends logs → Kali (Manager) → analyses → Dashboard ``` 所有数据流经 manager。仅在 agent 上配置不足以进行检测或响应 —— 这是本次实验中学到的关键一课。 ### Step 2 — 实时 SSH 暴力破解检测 从 Kali 发起 SSH 登录尝试: ``` for i in {1..10}; do ssh wronguser@192.168.4.113; done ``` 立即检查 Wazuh dashboard 的 Threat Hunting 标签页。 生成的警报: ``` sshd: Attempt to login using a non-existent user ← rule 5710, severity 5 sshd: Attempt to login using a denied user ← rule 5718, severity 5 ``` 所有 5 次尝试均记录了相同的时间戳 —— 实时捕获。 展开一个警报以查看完整详情: ``` data.srcip: 192.168.4.198 ← Kali — the attacker data.srcuser: wrongpassword ← username attempted agent.name: GoMyCodeEndpoint ← Ubuntu — the target full_log: Invalid user wrongpassword from 192.168.4.198 port 57426 ``` **自动应用的 MITRE ATT&CK 映射:** ``` T1110.001 ← Password Guessing T1021.004 ← SSH lateral movement Tactic: Credential Access, Lateral Movement ``` **自动标记的合规框架:** ``` GDPR: IV_35.7.d HIPAA: 164.312.b PCI-DSS: 10.2.4, 10.2.5 NIST: AU.14, AC.7 ``` ### Step 3 — 文件完整性监控 (FIM) 在受监控目录中创建测试文件: ``` sudo touch /etc/test-fim-alert.txt echo "wazuh fim test" | sudo tee /etc/test-fim-alert.txt ``` 从 manager 强制立即执行 FIM 扫描: ``` sudo /var/ossec/bin/agent_control -r -u 001 ``` 输出:`Wazuh agent_control: Restarting Syscheck/Rootcheck on agent: 001` FIM 警报出现在 dashboard 中: ``` /etc/test-fim-alert.txt ← our test file File added Rule: 100201 Severity: 7 ``` 捕获到的额外 FIM 警报显示了后台系统变更: - Snap packages 正在安装 - CUPS 打印机服务配置被修改 - Systemd 服务文件被添加 ### Step 4 — 检测后门账户创建 模拟攻击者创建后门用户账户: ``` sudo useradd testattacker sudo passwd testattacker ``` Wazuh 警报立即出现: ``` New user added to the system ← rule 5902, severity 8 New group added to the system ← rule 5901, severity 8 ``` 严重性 8 —— 中高。在真实的 SOC 中,这会立即引起分析师的注意,因为创建新用户账户是典型的攻击者持久化技术。 **事件响应 —— 移除后门账户:** ``` sudo userdel -r testattacker cat /etc/passwd | grep testattacker # confirmed gone ``` Wazuh 也记录了删除操作: ``` Group (or user) deleted from the system ← rule 5903, severity 3 ``` 完整的审计追踪: ``` New user added → severity 8 ← suspicious activity User deleted → severity 3 ← remediation confirmed ``` ### Step 5 — 配置评估 (CIS Benchmark) 修复了 SCA 策略版本检查以适配 Ubuntu 25.10: ``` sudo nano /var/ossec/ruleset/sca/cis_ubuntu22-04.yml ``` 更改前: ``` - "f:/etc/os-release -> r:Ubuntu 22.04" ``` 更改后: ``` - "f:/etc/os-release -> r:Ubuntu" ``` 为了实验目的,将 SCA 扫描间隔减少到 5 分钟: ``` yes yes 5m yes ``` 配置评估结果显示针对 CIS Ubuntu Benchmark 执行了 **204 项检查**。 **主要发现:** | 检查项 | 结果 | 严重性 | |-------|--------|---------| | /tmp 是独立分区 | ✅ 通过 | — | | /tmp 上的 nodev 选项 | ✅ 通过 | — | | /tmp 上的 noexec 选项 | ❌ 失败 | Medium | | /etc/shells 权限 | ❌ 失败 | Medium | | systemd-journal-upload 已启用 | ❌ 失败 | Medium | | 审计日志空间警告 | ❌ 失败 | Medium | ### Step 6 — 修复真实发现 修复了 CIS Benchmark 中关于 `/tmp noexec` 的发现: **临时修复:** ``` sudo mount -o remount,noexec /tmp mount | grep /tmp ``` 输出:`tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noexec,...)` **永久修复(重启后生效):** ``` sudo nano /etc/fstab ``` 添加了: ``` tmpfs /tmp tmpfs defaults,rw,nosuid,nodev,noexec,relatime 0 0 ``` 验证永久修复: ``` sudo mount -a mount | grep /tmp ``` 输出确认:挂载选项中永久包含 `noexec`。 ✅ ### Step 7 — 主动响应:自动封锁攻击者 在 Kali 上的 **manager** 中添加主动响应配置: ``` firewall-drop local 5710,5718 180 ``` 这告诉 Wazuh:当规则 5710 或 5718 触发(SSH 登录失败)时,自动运行 `firewall-drop` 封锁攻击 IP 180 秒。 **测试主动响应:** Step 1 — 攻击前检查 iptables(无封锁): ``` sudo iptables -L INPUT -n ``` 干净 —— 只有 UFW 规则,没有 IP 封锁。 Step 2 — 从 Kali 发起 SSH 失败尝试: ``` for i in {1..10}; do ssh wronguser@192.168.4.113; done ``` Step 3 — 随后立即检查 iptables: ``` sudo iptables -L INPUT -n ``` 输出: ``` DROP all -- 192.168.4.198 0.0.0.0/0 ← Kali automatically BLOCKED! ``` Step 4 — 180 秒后封锁自动解除。 ✅ **完整的主动响应周期:** ``` Attack detected → IP blocked automatically (0 seconds) 180 seconds later → IP unblocked automatically ``` ### Step 8 — Suricata 集成 Suricata (IDS) 已在 Ubuntu 上运行 —— 收集了 109MB 的网络事件。通过以下方式将其与 Wazuh 集成: **在 Ubuntu agent 上:** ``` json /var/log/suricata/eve.json ``` **修复 manager 上的 JSON 解码器限制:** ``` sudo nano /var/ossec/etc/local_internal_options.conf ``` 添加了:`analysisd.decoder_order_size=512` Suricata 警报出现在 Wazuh dashboard 中: ``` Suricata: Alert - ET INFO Possible Kali Linux hostname in DHCP Request Packet Rule: 86601 Severity: 3 ``` 自练习 3 以来,Suricata 一直默默检测 Kali 在网络中的存在 —— 每次 Kali 连接时都通过 DHCP 广播进行标记。 ### Step 9 — 漏洞检测 确认 Ubuntu 上已清点 1,996 个软件包: ``` sudo sqlite3 /var/ossec/queue/db/001.db "SELECT count(*) FROM sys_programs;" ``` 输出:`1996` 减少了漏洞扫描间隔并触发了 CVE feed 下载。等待后: ``` sudo du -sh /var/ossec/queue/vd/feed/ ``` 输出:`7.6G` —— 完整的 CVE 数据库已下载。 漏洞检测处理需要额外时间将 1,996 个软件包与 CVE 数据库进行交叉引用。结果将在 feed 下载完成后的 1-2 小时内显示在 dashboard 中。 ## 错误与修复 ### 错误 1 — Agent 配置中的 Manager IP 错误 **发生了什么:** Wazuh agent 指向旧 IP `10.0.2.3` —— 没有日志流向 manager。 **修复:** 将 `/var/ossec/etc/ossec.conf` 中的 `
` 更新为 `192.168.4.198`。 **教训:** 设置 SIEM 时务必验证 agent-manager 的连通性。 ### 错误 2 — 仅在 Agent 上配置主动响应 **发生了什么:** 在 Ubuntu agent 上添加了主动响应配置 —— 封锁未触发。 **修复:** 将配置添加到 Kali **manager** 上。Manager 负责编排响应。 **教训:** 在 Wazuh 中,manager 控制主动响应。仅配置 agent 是不够的。 ### 错误 3 — Suricata JSON 解码器错误 **发生了什么:** `wazuh-analysisd: ERROR: Too many fields for JSON decoder` —— Suricata 复杂的嵌套 JSON 超出了默认限制。 **修复:** 在 `local_internal_options.conf` 中添加 `analysisd.decoder_order_size=512`。 **教训:** 复杂的日志格式通常需要调整解码器配置。 ### 错误 4 — SCA 策略版本不匹配 **发生了什么:** 配置评估未显示结果 —— CIS 策略要求 Ubuntu 22.04,但系统运行的是 25.10。 **修复:** 修改 `cis_ubuntu22-04.yml` 中的版本检查以匹配任何 Ubuntu 版本。 **教训:** 始终检查策略与操作系统版本的兼容性。 ## 关键收获 1. **Manager 架构至关重要** —— 主动响应和 Suricata 检测都需要在 manager 端配置,而不仅仅是 agent 端 2. **MITRE ATT&CK 映射是自动的** —— Wazuh 无需手动配置即可将每个警报映射到攻击技术和合规框架 3. **主动响应非常强大** —— 零人工干预的自动 IP 封锁 4. **FIM 捕获利用后行为** —— 受监控目录中的每个文件更改都被记录 5. **CIS Benchmark 发现真实差距** —— 204 项自动检查识别出了我们修复的实际配置错误 6. **调试 SIEM 问题能深入理解架构** —— 每一步故障排除都揭示了 Wazuh 组件的交互方式 ## 现实意义 | 练习技能 | 现实应用 | |----------------|----------------------| | SIEM 警报分析 | SOC 分析师日常工作 | | MITRE ATT&CK 映射 | 威胁情报与事件响应 | | 主动响应配置 | 自动化安全运营 | | CIS Benchmark 评估 | 安全审计与合规 | | FIM 监控 | 入侵后取证调查 | | IDS 集成 | 网络安全监控 | Wazuh 被全球数千家组织用作其主要 SIEM。了解如何配置、故障排除和解读其警报,直接适用于 SOC 分析师、安全工程师和蓝队角色。
标签:AMSI绕过, ATTACK-Python-Client, ATT&CK映射, CIS Benchmark, DNS 反向解析, GitHub Advanced Security, Homelab, SSH暴力破解, Suricata, VirtualBox, Wazuh, x64dbg, 主动响应, 入侵检测系统, 威胁检测, 安全加固, 安全实验, 安全数据湖, 现代安全运营, 网络安全, 速率限制处理, 防御视角, 隐私保护