Krishna-Mali1/wazuh-siem-homelab

GitHub: Krishna-Mali1/wazuh-siem-homelab

一个基于 Wazuh 搭建的 SIEM 家庭实验室项目,演示了如何配置自定义检测规则来监控 PowerShell 混淆攻击和文件完整性篡改。

Stars: 0 | Forks: 0

# Wazuh SIEM 家庭实验室项目 # 关于本项目 我构建这个项目是为了学习 SIEM 工具在真实环境中的工作原理。我一直在学习网络安全,并希望获得日志监控、自定义规则编写和威胁检测的实战经验。我选择 Wazuh 是因为它是开源的且在业界被广泛使用。 这个想法很简单,即在 Ubuntu 虚拟机上设置 Wazuh,将一台 Windows 虚拟机作为 agent 连接,然后检测真实的攻击技术,如 PowerShell 混淆和未经授权的文件更改。 ## 环境配置 我使用 VirtualBox 在同一台宿主机上创建了两台虚拟机: | 机器 | 操作系统 | 角色 | |--------|-----|------| | 虚拟机 1 | Ubuntu | Wazuh Manager + Indexer + Dashboard | | 虚拟机 2 | Windows | Wazuh Agent | 两台虚拟机都连接到 VirtualBox 中的同一个内部网络,以便它们能够相互通信。 ## Wazuh 组件如何协同工作 | 组件 | 角色 | |-----------|------| | Wazuh Manager | 接收来自 agent 的日志,应用规则,生成警报 | | Wazuh Indexer | 存储所有日志和警报数据 | | Wazuh Dashboard | 可视化界面,可在浏览器中查看警报和事件 | | Wazuh Agent | 安装在 Windows 虚拟机上 — 收集日志并发送给 Manager | 工作流程如下: ``` Windows VM (Agent) │ │ Sends logs to Manager Ubuntu VM (Wazuh Manager) │ │ Applies rules, generates alerts Wazuh Indexer stores data │ Wazuh Dashboard displays alerts ``` ## 在 Ubuntu 虚拟机上安装 Wazuh 我遵循官方的 Wazuh 4.14.5 文档,使用安装脚本将所有三个组件安装在一起: ``` curl -sO https://packages.wazuh.com/4.14/wazuh-install.sh curl -sO https://packages.wazuh.com/4.14/config.yml ``` 在 config.yml 中添加了我的 Ubuntu 虚拟机 IP 地址,然后运行: ``` sudo bash wazuh-install.sh -a ``` 安装完成后,终端在最后显示了自动生成的登录凭据: ``` INFO: --- Summary --- INFO: You can access the web interface https:// User: admin Password: ``` 我使用这些凭据登录到 Wazuh Dashboard,并在首次登录后更改了密码。 ![Wazuh Dashboard](https://static.pigsec.cn/wp-content/uploads/repos/cas/f0/f03f40b179ad1003fc1e7997cbb733b640eca997b428c07f38f59e896b213708.png) ## 在 Windows 虚拟机上设置 Wazuh Agent ### 步骤 1 - 下载 Wazuh Agent ``` Invoke-WebRequest -Uri https://packages.wazuh.com/4.x/windows/wazuh-agent-4.14.5-1.msi -OutFile wazuh-agent.msi ``` 然后运行 MSI 安装程序,并在设置过程中输入 Ubuntu 虚拟机的 IP 地址作为 Manager IP。 ### 步骤 2 - 安装 Sysmon 以获得更好的可见性 Sysmon 是一个 Windows 系统监控工具,它提供的日志比单独的 Windows 详细得多,即包括进程创建、网络连接和文件更改。如果没有 Sysmon,对 Windows 机器上发生情况的可见性将非常有限。 我从 Microsoft Sysinternals 网站下载了 Sysmon zip 文件,并使用了 SwiftOnSecurity config,这是安全社区中最广泛使用的 Sysmon 配置。 ``` .\Sysmon64.exe -accepteula -i sysmonconfig.xml ``` ### 步骤 3 - 启动 Wazuh Agent 在 Windows 上打开 services.msc,找到 Wazuh 服务并启动它。一分钟后,该 agent 在 Wazuh Dashboard 中显示为 Active 状态。 ![Windows Agent Connected](https://static.pigsec.cn/wp-content/uploads/repos/cas/4f/4fa3e9849afc8eaaa98816f321d13013acb8532764e297f52ccd73293edf6289.png) ![Agent Overview Vulnerabilities](https://static.pigsec.cn/wp-content/uploads/repos/cas/fa/fa1ad240a1767f675f27e62cde9cc1f4c399a78af4a50f1cd3739d01f51cf9f5.png) ## 用例 1 - PowerShell 编码命令检测 ### 为什么选择这个 PowerShell 的 -EncodedCommand 标志是一项功能,攻击者滥用它将恶意脚本/代码隐藏在 Base64 字符串中,从而有效地绕过基本的基于特征的检测机制。 ### 步骤 1 - 在 Windows 上启用 Script Block Logging 通过 Windows 注册表启用 PowerShell Script Block Logging,以记录事件 ID 4104 下的所有 PowerShell 活动: ``` Path: HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging Value: EnableScriptBlockLogging = 1 ``` ### 步骤 2 - 配置 Agent 以收集 PowerShell 日志 在 Windows 虚拟机上打开 ossec.conf,路径为: ``` C:\Program Files (x86)\ossec-agent\ossec.conf ``` 添加此代码块以收集 PowerShell 事件日志,并将其转发到 Ubuntu 上的 Wazuh Manager: ``` Microsoft-Windows-PowerShell/Operational eventchannel ``` 通过 services.msc 重启 Wazuh 服务。 ### 步骤 3 - 在 Ubuntu 上编写自定义检测规则 在 Ubuntu 上打开自定义规则文件: ``` sudo nano /var/ossec/etc/rules/local_rules.xml ``` 添加此规则以检测 base64 编码的 PowerShell 命令: ``` windows (?i)(-enc|-encodedcommand) PowerShell encoded command detected - possible obfuscation attempt T1059.001 T1027 ``` ![Custom PowerShell Rule](https://static.pigsec.cn/wp-content/uploads/repos/cas/34/345659ce56c8898d6bcd6006f5954e173a39f068a081ff8e11ab345641c15254.png) 重启 Wazuh Manager: ``` sudo systemctl restart wazuh-manager ``` ### 步骤 4 - 测试与警报 在 Windows 虚拟机上运行了一个安全的编码 PowerShell 测试命令。该警报在 Wazuh Security Events 仪表板中触发,规则 ID 为 100010。 ![PowerShell Test Command](https://static.pigsec.cn/wp-content/uploads/repos/cas/e3/e3084251dd73e9c2c08618f6c3ee86316a42747636f3d98b2fbaf689a17e5f68.png) ![PowerShell Alert Dashboard](https://static.pigsec.cn/wp-content/uploads/repos/cas/d7/d74d848cefbd9cd76600ec4d0549c6ce23931e49c41e94c674833d6926cdb1e4.png) ## 在此 PowerShell 编码命令检测警报触发后,我会怎么做 当规则 100010 触发时,我不会立即阻止或杀死任何东西。首先我会进行调查,即: 1. 我会在 Wazuh 中查看警报详细信息,以确切了解运行了什么命令。 2. 我会尝试解码该命令,因为 PowerShell 的 -EncodedCommand 标志仅接受 UTF-16LE Base64 字符串。 3. 我会检查是哪个用户账户在什么时间运行了该命令,还会检查该用户是否应该运行此命令。 4. 我还会尝试检查是哪个进程生成了该 PowerShell 实例。 5. 如果该命令看起来是恶意的,我会隔离该机器并升级此事件。 6. 如果该命令是真实的,这意味着它是为某些合法工作而运行的,那么我会调整规则以减少误报。 **注意:** 这是我基于目前所学知识的个人思考过程。这可能不是真实 SOC 环境中遵循的确切流程。 ## 用例 2 - File Integrity Monitoring (FIM) ### 为什么选择这个 攻击者经常将恶意软件投放到特定的 Windows 文件夹中,以修改系统文件、维持持久性或重定向流量。FIM 会实时检测这些更改。 ### 步骤 1 - 在 Windows 上配置受监控目录 在 ossec.conf 的 syscheck 块中添加了攻击者常用的目录: ``` 43200 no C:\Windows\Temp C:\Windows\System32\drivers\etc C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup C:\Users\Public ``` | 文件夹 | 攻击者为何使用它 | |--------|---------------------| | C:\Windows\Temp | 这是投放恶意软件的常见位置 | | C:\Windows\System32\drivers\etc | Hosts 文件,攻击者修改它以进行 DNS 劫持 | | Startup folder | 用于持久化,例如恶意软件在每次重启时运行 | | C:\Users\Public | 共享文件夹滥用 | ![ossec.conf Syscheck Directories](https://static.pigsec.cn/wp-content/uploads/repos/cas/d6/d634d7d38da03867f348194fd445ef71cd3de7ff83005bee1d8118b940111191.png) ### 步骤 2 - 在 Ubuntu 上编写自定义 FIM 规则 将 FIM 检测规则添加到 local_rules.xml: ``` 554 FIM - New file created in suspicious location: $(syscheck.path) T1565 550 FIM - File modified in suspicious location: $(syscheck.path) T1565 553 FIM - File deleted in suspicious location: $(syscheck.path) T1565 ``` ![Custom FIM Rule](https://static.pigsec.cn/wp-content/uploads/repos/cas/52/52dd8fc8d9ef424991337088b9cd1cae37e8399e2fa4f3b5df327788d64dafd6.png) 重启 Wazuh Manager: ``` sudo systemctl restart wazuh-manager ``` ### 步骤 3 - 测试与警报 我在受监控目录中创建、修改并删除了一个测试文件,以检查检测规则是否有效。这三个事件均作为警报出现在 Wazuh Threat Hunting 部分。 ![FIM Test Command](https://static.pigsec.cn/wp-content/uploads/repos/cas/4a/4ad2e90da4a3f410078ca830551be124c66d347d8f341b37ac9b94fb4e38a083.png) ![FIM Alert Dashboard](https://static.pigsec.cn/wp-content/uploads/repos/cas/12/1212d6c882149074b5e20e9dbcc203950d455ed27e36ee21af6715044226dd2b.png) ![Threat Hunting Events](https://static.pigsec.cn/wp-content/uploads/repos/cas/5f/5f9c1fa606cb31ead20ad5a1f700ad74f8b7161e7852aac9ac0c3f8b92973db8.png) ## 在 FIM(File Integrity Monitoring) 警报被检测到后,我会怎么做 由于自定义检测规则专门监控攻击者常用的目录,因此当在这些文件夹中创建、修改或删除文件时,这本身似乎就已经很可疑了。因此,如果触发了此警报,我会: 1. 检查是哪个特定目录触发了警报以及具体发生了什么,即文件是被创建、修改还是删除。 2. 检查是哪个用户在什么时间进行了更改。 3. 检查同一台机器在同一时间前后是否有任何其他警报。 4. 在 VirusTotal 等平台上检查文件哈希值。 5. 如果确认是恶意的,我会隔离该机器并升级事件。 6. 如果是真实的,我会将其标记为误报,并调整规则以减少误报。 **注意:** 这是我基于目前所学知识的个人思考过程。这可能不是真实 SOC 环境中遵循的确切流程。 ## MITRE ATT&CK 覆盖范围 | 技术 ID | 技术名称 | 检测者 | |-------------|---------------|------------| | T1059.001 | PowerShell | 规则 100010 | | T1027 | Obfuscated Files or Information | 规则 100010 | | T1565 | Data Manipulation | 规则 100020, 100021, 100022 | ![MITRE ATT&CK Dashboard](https://static.pigsec.cn/wp-content/uploads/repos/cas/50/503d6ca059331ec2020b46675246b0d829a4d9b6378a6ccb5f4f661dd1e049da.png) ## 我学到了什么 - 如何使用 VirtualBox 从头开始在 Ubuntu 上设置 Wazuh SIEM - Wazuh Manager、Indexer 和 Dashboard 如何作为一个完整的 SIEM 平台协同工作 - 如何将 Windows agent 连接到 Wazuh manager - 如何使用 Wazuh 规则语法和 PCRE2 正则表达式编写自定义检测规则 - FIM 的工作原理以及为什么监控特定目录很重要 - 如何将检测映射到 MITRE ATT&CK 框架 - 如何调查警报 ## 使用的工具 | 工具 | 用途 | |------|---------| | VirtualBox | 虚拟化平台 | | Wazuh 4.14.5 | SIEM 平台 | | Ubuntu | Wazuh Manager、Indexer 和 Dashboard | | Windows | Wazuh Agent | | Sysmon + SwiftOnSecurity Config | 增强 Windows 可见性 | | OpenSearch | 日志索引和仪表板后端 | | PowerShell | 攻击模拟 | ## 参考 - Wazuh 文档 — https://documentation.wazuh.com - MITRE ATT&CK 框架 — https://attack.mitre.org - Sysmon — https://learn.microsoft.com/en-us/sysinternals/downloads/sysmon - SwiftOnSecurity Sysmon 配置 — https://github.com/SwiftOnSecurity/sysmon-config ## 作者 - Krishna Mali [有志成为 SOC Analyst]
标签:AI合规, AMSI绕过, DNS 反向解析, PB级数据处理, Wazuh, x64dbg, 威胁检测, 子域名变形, 安全运维