CyberSentinelTee/wazuh-siem-poc

GitHub: CyberSentinelTee/wazuh-siem-poc

基于 Wazuh 构建的全流程 SIEM 概念验证实验室,在模拟企业网络中完成攻击模拟、实时检测及 NIST 标准事件响应演练。

Stars: 0 | Forks: 0

# 🛡️ Wazuh SIEM — 概念验证实验室 ## 概述 本项目记录了一项完整的安全信息和事件管理 (SIEM) 概念验证,该验证针对一个模拟的企业网络进行,该网络旨在代表一家小型电子商务公司 (NEC — Namibia E-commerce Company Ltd Pty)。 目标是证明 **Wazuh** —— 一个免费的开源 SIEM 平台 —— 能够在一个模拟真实商业环境的中,检测到真实的攻击模式并支持结构化的事件响应。 该项目涵盖了完整的生命周期: - 设计并部署多台机器的实验室网络 - 在每个端点上安装并配置带有 agent 的 SIEM - 从 Kali Linux 攻击机上模拟三种不同的攻击 - 实时检测每一次攻击 - 执行结构化的事件响应 ## 实验室环境 该网络是使用 **VMware Workstation Pro** 构建的,在 Host-Only 网络上配置了七台虚拟机 (`10.10.1.0/24`)。 | 主机名 | 角色 | IP | 操作系统 | |---|---|---|---| | DC01.nec.local | Active Directory / DNS / FTP | 10.10.1.10 | Windows Server 2016 | | MAIL01.nec.local | 电子邮件服务器 | 10.10.1.20 | Ubuntu 22.04 LTS | | WAZUH.nec.local | Wazuh SIEM (All-in-One) | 10.10.1.30 | Ubuntu 22.04 LTS | | WIN10-HR | 客户端 — 人力资源部 | 10.10.1.40 | Windows 10 | | WIN11-MKT | 客户端 — 市场营销部 | 10.10.1.41 | Windows 11 | | UBUNTUIT | 客户端 — IT 部 | 10.10.1.42 | Ubuntu 22.04 LTS | | KALI | 攻击机 | 10.10.1.3 | Kali Linux | ![Wazuh agents connected](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/c72de9ec33214558.png) Active Directory 域 (`nec.local`) 设有三个部门 — HR、IT 和 Marketing — 每个部门都有各自的 Organisational Units 和域用户账户。 ## SIEM 设置 **Wazuh v4.7.5** 作为一体化解决方案部署在专用的 Ubuntu 服务器上。它包含三个协同工作的组件: - **Wazuh Manager** — 从 agent 收集事件,运行检测规则,并生成警报 - **Wazuh Indexer** — 存储所有事件 (基于 OpenSearch) - **Wazuh Dashboard** — 用于可视化和调查警报的 Web 界面 (HTTPS,端口 443) ### Agent 部署 Wazuh agent 安装在**所有五个端点**上,并通过端口 1514 (TCP) 连接到 Manager。所有 Linux 机器上的 agent 版本都被锁定为 `4.7.5` 以确保兼容性 — 部署期间的版本不匹配导致了初始注册失败 (参见 [挑战](#challenges))。 ### 日志收集 **Windows 端点 (DC01, WIN10-HR, WIN11-MKT):** - 使用 [SwiftOnSecurity](https://github.com/SwiftOnSecurity/sysmon-config) 规则集安装了 Microsoft Sysmon - 收集进程创建、网络连接和文件事件,超越了标准的 Windows Event Logs - Wazuh agent 配置为从 `Microsoft-Windows-Sysmon/Operational` 以及 Security、System 和 Application 频道拉取日志 **Linux 端点 (MAIL01, UBUNTUIT):** - 安装了 `auditd` 并配置了自定义规则以监控 `/etc/passwd`、`/etc/shadow`、`/etc/sudoers` - 通过 `execve` 系统调用捕获所有执行的命令 - 从 `/var/log/auth.log` 收集认证事件 ## 攻击模拟 ### 攻击 1 — 针对 Active Directory (SMB) 的暴力破解 **工具:** Hydra **目标:** DC01 (10.10.1.10),端口 445 (SMB) **模拟内容:** 威胁行为者试图猜解域账户凭据以获取初始访问权限 ``` hydra -L users.txt -P passwords.txt 10.10.1.10 smb -V ``` **检测:** Wazuh 触发了规则 **60104**,提示多次 Windows 审计失败。Windows Security Log 快速连续记录了事件 ID **4625** (登录失败),并在达到阈值时记录了事件 ID **4740** (账户锁定)。事件的数量和频率使得自动化攻击行为显而易见。 ![Hydra SMB brute force](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/19be7a13e1214603.png) ![Wazuh brute force detection](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/cf22ffe6ec214609.png) ### 攻击 2 — 未经授权的 FTP 访问 **工具:** Hydra **目标:** DC01 FTP 服务 (10.10.1.10),端口 21 **模拟内容:** 攻击者试图访问公司 FTP 服务器上的敏感文件 ``` hydra -L users.txt -P passwords.txt ftp://10.10.1.10 -V ``` **检测:** DC01 上的 Wazuh agent 配置为收集 IIS FTP 日志。在 Security Events 仪表板中出现了重复的认证失败事件,并清楚地标明了攻击者的 IP (`10.10.1.3`)。连续失败的密度证实了自动化的暴力破解。 ![Hydra FTP brute force](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/150e5523bb214614.png) ### 攻击 3 — 钓鱼邮件模拟 **工具:** swaks (Swiss Army Knife for SMTP) **目标:** MAIL01 (10.10.1.20),端口 25 **模拟内容:** 攻击者向企业用户发送欺骗性电子邮件以窃取凭据 ``` swaks --to tamupolo@nec.local \ --from ceo@nec-updates.com \ --server 10.10.1.20 \ --port 25 \ --body 'Your account requires immediate verification. Click here: http://malicious-site.com/verify' \ --header 'Subject: URGENT: Account Security Alert' ``` **Detection:** 该邮件已送达并记录在 Postfix 的 `/var/log/mail.log` 中。日志捕获了伪造的发件人域 (`nec-updates.com`)、源 IP (`10.10.1.3`) 和收件人邮箱 — 提供了清晰的取证证据。Wazuh agent 将这些条目实时转发给了 manager。 ![swaks phishing email sent](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/dec3f3ca08214620.png) ![Phishing email in Roundcube inbox](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/62eada260f214624.png) ## 事件响应 响应遵循了 **NIST SP 800-61** 的四阶段生命周期: ### 阶段 1 — 识别 使用 Wazuh 的 Security Events 仪表板审查警报,识别攻击者 IP、目标服务,并根据关联的日志重建完整的攻击时间线。 ### 阶段 2 — 遏制 攻击者 IP (`10.10.1.3`) 在两个目标上均被阻止: ``` # Windows (DC01) netsh advfirewall firewall add rule name="BLOCK-KALI-ATTACKER" dir=in action=block remoteip=10.10.1.3 # Linux (MAIL01) ufw deny from 10.10.1.3 to any ``` ![Firewall rule blocking attacker](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/ca61398423214629.png) ### 阶段 3 — 根除 - 重新启用被锁定的域账户并重置密码 - 强化账户锁定策略 (尝试 5 次 → 锁定 30 分钟) - 通过 IIS IPv4 限制将 FTP 访问限制在授权的 IP 范围内 - 解决了 Postfix 中 SASL 和中继配置错误的问题 ### 阶段 4 — 恢复 验证了服务运行正常,并监控了 SIEM 以确认被阻止的 IP 没有进一步的攻击活动 — 结果得到了确认。 ![No alerts after containment](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/de4a63a4e5214638.png) ## 关键发现 | 编号 | 严重程度 | 发现 | |---|---|---| | F-01 | 🔴 CRITICAL | DC01 上的 SMB 暴露且没有速率限制 — 允许无限制的暴力破解 | | F-02 | 🟠 HIGH | FTP 在未加密的端口 21 上使用 Basic Auth — 凭据以明文形式发送 | | F-03 | 🟠 HIGH | SMTP 服务器接受来自外部域的未经身份验证的入站电子邮件 | | F-04 | 🟡 MEDIUM | 没有账户锁定策略 — 允许无限制的登录失败尝试 | | F-05 | 🔵 INFO | Wazuh 实时检测到了全部三种攻击类型 | | F-06 | 🔵 INFO | 所有五个 agent 在整个参与过程中保持连接和活跃状态 | ## 建议 **短期 (0–30 天)** - 通过 Group Policy 强制执行账户锁定策略 (尝试 5 次,锁定 30 分钟) - 将 FTP 替换为 SFTP,以加密传输中的凭据 - 配置 Postfix 以拒绝未经身份验证的中继,并实施 SPF/DKIM - 为所有管理员账户启用 MFA - 将 SMB (端口 445) 限制为授权主机;禁用 SMBv1 **中期 (30–90 天)** - 启用 Wazuh Active Response 以自动阻止暴力破解源 IP - 为 Postfix 邮件日志开发自定义 Wazuh 解码器 - 在 MAIL01 上游部署具有网络钓鱼检测功能的电子邮件网关 - 实施网络分段以隔离 DC01 **长期 (90 天以上)** - 将威胁情报源 (AlienVault OTX, AbuseIPDB) 集成到 Wazuh 中 - 建立正式的 SOC 警报分诊和升级程序 - 安排针对生产系统的定期渗透测试 - 向所有员工提供强制性安全意识培训 ## 挑战 真正的实验室工作从来都不是一帆风顺的。以下是出现的问题及其解决方法: **1. SMTP 端口和身份验证不匹配** Roundcube 配置为使用带有 SASL 身份验证的端口 587,但 Postfix 尚未通过 Dovecot 设置 SASL。通过切换到端口 25 (同一主机内的送达无需身份验证) 并纠正了 `smtpd_relay_restrictions` 中的拼写错误 — 将 `permit-mynetworks` (连字符) 改为 `permit_mynetworks` (下划线) — 解决了此问题。 **2. Wazuh agent 版本不匹配** `apt` 解析为最新的 agent 版本 (4.14.5),Manager (4.7.5) 在注册时拒绝了该版本。通过显式锁定版本修复:`apt-get install wazuh-agent=4.7.5-1`。 **3. MANAGER_IP 占位符未被替换** 几个 agent 在 `ossec.conf` 中保留了字面字符串 `MANAGER_IP`,而不是实际的 Manager IP,导致 agent 服务在启动时失败。通过手动编辑每台受影响机器上的 `/var/ossec/etc/ossec.conf` 修复了此问题。 **4. 缺少 Dovecot SASL socket** 在修复 SMTP 后,Postfix 仍然配置为 `smtpd_sasl_auth_enable = yes`,但尚未配置 Dovecot 身份验证 socket,导致所有出站邮件被 451 拒绝。通过禁用 SASL 修复:`postconf -e 'smtpd_sasl_auth_enable = no'`。 ## 工具与技术 `Wazuh v4.7.5` · `Sysmon (SwiftOnSecurity config)` · `auditd` · `Hydra` · `swaks` · `Nmap` · `Postfix` · `Dovecot` · `Roundcube` · `IIS FTP` · `Active Directory DS` · `VMware Workstation Pro` · `Kali Linux` · `Windows Server 2016` · `Ubuntu 22.04 LTS` ## 参考 - Wazuh Documentation v4.7 — https://documentation.wazuh.com - NIST SP 800-61 Rev. 2 (Incident Response) — https://csrc.nist.gov/publications/detail/sp/800-61/rev-2/final - SwiftOnSecurity Sysmon Config — https://github.com/SwiftOnSecurity/sysmon-config - THC-Hydra — https://github.com/vanhauser-thc/thc-hydra - Microsoft Sysmon Docs — https://docs.microsoft.com/en-us/sysinternals/downloads/sysmon *本项目作为纳米比亚科技大学 (NUST) 计算机与信息学院应用道德黑客 (Applied Ethical Hacking, AEH811S) 模块的一部分完成。*
标签:PB级数据处理, Terraform 安全, Wazuh, 安全实验环境, 安全运维, 库, 应急响应, 红队行动, 网页分析工具, 虚拟化网络