mathievx/wazuh-sysmon-detection-rules
GitHub: mathievx/wazuh-sysmon-detection-rules
基于 Sysmon 遥测数据为 Wazuh 构建自定义检测规则,通过结构化字段匹配和行为分析识别 Windows 端点可疑活动。
Stars: 0 | Forks: 0
## 利用 Sysmon 遥测在 Wazuh 中构建自定义检测规则
本项目探讨了如何利用来自 Sysmon 的端点遥测数据,在 Wazuh 中构建自定义检测逻辑。重点在于构建能够分析 Windows 进程、网络、文件和注册表事件的规则,并通过结构化条件和上下文过滤将其转化为有意义的告警。
测试环境包括:
- 运行 Sysmon 并采用 **SwiftOnSecurity 配置** 的 Windows 端点
- 负责转发 **Sysmon Operational 通道** 事件的 Wazuh agents
- 负责评估自定义检测规则的中央 Wazuh manager
在此环境中,Sysmon 生成的事件经过摄取、解码,并通过 Wazuh 规则逻辑进行评估。目标是设计基于特定事件属性和行为模式的检测,而非简单的关键字匹配。
这种方法通过结合事件字段匹配、上下文条件和基于频率的升级,将原始 Windows 遥测数据解释为可操作的安全信号。
## 遥测基础:Sysmon 集成
Sysmon 使用 SwiftOnSecurity 配置进行部署,以提供跨以下领域的细粒度遥测:
- Event ID 1 – 进程创建 (Process Creation)
- Event ID 3 – 网络连接 (Network Connection)
- Event ID 11 – 文件创建 (File Creation)
- Event ID 12/13/14 – 注册表操作 (Registry Operations)
Wazuh agent 被配置为摄取:
```
Microsoft-Windows-Sysmon/Operational
```
Wazuh 通过从事件 XML 中提取的解码字段(例如 `win.eventdata.image`、`win.eventdata.parentImage` 和 `win.eventdata.commandLine`)来评估 Sysmon 遥测数据。本项目中的所有检测均基于这些解码字段构建,以确保规则逻辑保持一致且可测试。

*图 1. Sysmon 配置已加载(片段显示了活跃规则)。*

*图 2. 启动 Wazuh 服务并修改配置*
Wazuh 不直接解释原始 Windows 事件语义;它依赖解码器从 Sysmon 的 XML 输出中提取结构化字段。如果这些字段未被正确解析,规则条件将失败或表现出不可预测的行为。本项目中的所有检测都严格依赖于解码字段的匹配,而非原始 XML 字符串的检查。
## 检测工程用例
以下每个用例都被视为一个独立的检测问题。
重点在于:
- 行为推理
- 事件语义
- 误报控制
- 基于重复性的升级
## 用例 1:Microsoft Management Console (MMC) 滥用
### 威胁背景
`mmc.exe` 是一个经过签名的 Microsoft 二进制文件,用于启动管理单元(`.msc` 文件),例如事件查看器、服务和计算机管理。在企业环境中,它通常由管理员交互式执行。二进制文件本身并不可疑,信号在于执行模式和上下文。
在短时间间隔内重复执行 `mmc.exe` 可能表明在入侵后操作期间发生了脚本化枚举、权限验证或自动检查活动。攻击者经常利用原生管理工具,以避免将新的二进制文件引入磁盘。
### 检测策略
基础规则监控 Sysmon Event ID 1 (进程创建),其中:
```
Image = mmc.exe
```
这将捕获每次执行实例,无论单元类型如何。
告警描述包括:
```
$(win.eventdata.commandLine)
```
这是有意为之。命令行揭示了启动了哪个 `.msc` 单元(例如 `eventvwr.msc`、`services.msc`)。如果不嵌入此字段,分析师将需要深入原始事件以确定意图。嵌入解码后的命令行可减少分类步骤,并允许立即区分常规管理访问和潜在的广泛系统检查。

*图 3. 检测 Microsoft Management Console 启动的 Wazuh 规则*

*图 4. Wazuh Web 界面中包含命令行详细信息的 MMC 启动告警。*
### 基于频率的升级
在大多数环境中,孤立的 MMC 执行是预期行为。对每个实例都发出告警会产生噪音。
为了解决这个问题,使用以下方式链式连接了一个辅助规则:
```
frequency="5"
timeframe="120"
```
当在两分钟窗口内发生五次 MMC 执行时,该规则会触发。
选择此阈值是为了检测与脚本或自动活动一致的快速连续调用,而不是手动管理使用。手动交互通常涉及执行之间较长的间隔。
升级规则仅在重复次数超过定义的阈值时提高严重性。单次执行生成低优先级的可见性。重复执行将事件转移到异常行为领域。

*图 5. 检测 2 分钟内多个 MMC 进程创建的 Wazuh 规则*

*图 6. 显示检测到多个 MMC 进程的告警。*
其意图不是标记二进制文件本身,而是检测随时间推移出现的异常执行密度。
## 用例 2:通过未授权解析器进行的 DNS 规避
### 威胁背景
端点恶意软件通常通过直接向公共解析器发送查询来绕过内部 DNS 基础设施,例如:
- 8.8.8.8
- 1.1.1.1
这种技术允许解析命令与控制 (C2) 域,而无需经过企业 DNS 日志记录基础设施。当 DNS 查询绕过内部解析器时,安全团队将失去对可能表明信标或恶意软件暂存的域解析模式的可见性。
在预期端点使用指定内部 DNS 服务器的环境中,直接查询外部解析器代表偏离了正常的网络行为。
### 检测构建
该规则针对 **Sysmon Event ID 3 (网络连接)**,该事件记录主机上进程发起的出站网络连接。
检测逻辑评估三个条件:
- `Protocol = udp`
- `DestinationPort = 53`
- `DestinationIp != 172.16.3.100`
`172.16.3.100` 代表环境中授权的内部 DNS 解析器。任何不以该解析器为目标的端口 53 的 UDP 连接都被视为可疑。
所有三个条件必须同时满足。
此结构防止规则针对以下情况生成告警:
- 合法的内部 DNS 查询
- 非 DNS UDP 流量
- 端口 53 用于不相关服务的连接

*图 7. 检测到目标不是 172.16.3.100 的端口 53 出站 UDP 连接的规则*

*图 8. 告警 - 检测到端口 53 的出站 UDP 连接*
告警描述包含解码字段:
```
$(win.eventdata.destinationIp)
```
包含此字段使分析师能够立即看到端点联系了哪个解析器,而无需手动检查原始 Sysmon 事件。
此检测依赖于解码的 Sysmon 字段,而不是原始 XML 中的模式匹配,确保规则条件基于结构化的网络遥测数据运行。
在生产环境中,静态 IP 过滤通常会被替换为包含组织使用的所有批准 DNS 解析器的允许列表。
## 用例 3:预期父进程之外的可疑命令执行
### 威胁背景
诸如以下实用程序:
- `ipconfig`
- `net`
- `net1`
- `ping`
- `nslookup`
- `netsh`
通常在系统和网络侦察期间使用。它们公开有关网络配置、域关系、活动连接和路由行为的信息。管理员和普通用户也经常使用这些命令。因此,命令名称本身不是一个可靠的检测信号。
执行上下文提供了有意义的指标。在正常条件下,这些实用程序从交互式 shell(例如 `cmd.exe` 或 `powershell.exe`)启动。当它们作为不相关应用程序(例如文档查看器、浏览器或自定义二进制文件)的子进程出现时,该行为变得可疑。当恶意软件通过进程注入、宏执行或滥用合法二进制文件执行侦察命令时,可能会出现这种模式。
### 检测逻辑
检测规则评估 **Sysmon Event ID 1 (进程创建)**。
应用了三个条件:
- `Image` 匹配受监控的实用程序之一(`ipconfig`、`net`、`net1`、`ping`、`nslookup`、`netsh`)
- `ParentImage` **不等于** `cmd.exe`
- `ParentImage` **不等于** `powershell.exe`
此逻辑隔离了由意外父进程启动这些命令的执行情况。

*图 9. 检测可疑命令的规则*

*图 10. 可疑命令执行告警*
使用否定式父进程匹配消除了大多数合法的管理活动,同时保留了对通过异常进程链执行的命令的可见性。因此,规则关注的是执行上下文,而不是简单地检测命令本身的存在。
## 用例 4:通过 PowerShell 进行的可疑可执行文件暂存
### 威胁背景
PowerShell 经常被攻击者在入侵早期阶段用于下载或生成 Payload。一种常见的模式涉及在启动可执行文件之前将其写入用户可访问的目录。
单个可执行文件的创建本质上并不可疑。管理脚本、软件安装程序和开发工作流可以合法地生成可执行文件。
当 PowerShell 在短时间内重复写入可执行文件时,风险会增加。此模式与自动 Payload 暂存、下载并执行工作流或将多个二进制文件解包到磁盘的投放器一致。
### 基础规则
基础规则监控 **Sysmon Event ID 11 (文件创建)**。
应用了两个条件:
- `ParentImage = powershell.exe`
- `TargetFilename` 以 `.exe` 结尾
这将捕获 PowerShell 直接将可执行文件写入磁盘的情况。

*图 11. 检测单个和多个可疑文件活动的规则*

*图 12. 可疑文件活动告警。*
该告警提供了对由 PowerShell 启动的单个可执行文件创建的可见性,而不会立即分配高严重性。
### 升级规则
第二个规则应用频率阈值,以识别短时间内重复的可执行文件创建事件。当在定义的间隔内由 PowerShell 创建多个 `.exe` 文件时,此升级规则会触发。

*图 13. 多个可疑文件活动告警。*
其意图是将孤立的文件创建事件与重复的暂存活动区分开来,后者更符合自动 Payload 部署的特征。
## 用例 5:注册表删除爆发检测
### 威胁背景
注册表修改和删除在正常系统和应用程序活动期间定期发生。软件安装程序、卸载程序和配置更新通常作为其生命周期的一部分删除注册表项。但是,在短时间内发生大量注册表删除可能表明异常活动。攻击者可能会在移除持久化机制、禁用防御控制或执行恶意代码后清理痕迹时删除注册表项。
示例包括移除 **Run/RunOnce 持久化键**、删除安全配置值或清除先前执行的 Payload 的痕迹。
由于孤立的注册表删除很常见,因此检测必须关注异常数量而不是单个事件。
### 规则架构
检测逻辑使用两阶段规则结构:
基础规则监控 **Sysmon 注册表删除事件**,并生成低严重性告警以提供可见性。这提供了对单个注册表删除的感知,而无需假设恶意意图。

*图 14. 检测注册表键删除的规则*

*图 15. 显示注册表键删除的告警(包括合法和可疑的)*
第二个规则应用 **频率阈值**,当在定义的时间范围内发生多个注册表删除事件时触发。

*图 16. 显示多个注册表键删除的告警*
此升级模型区分了常规注册表清理和可能表明持久化移除或利用后活动的快速删除模式。
## 展示的检测工程原则
在实施的用例中,构建 Wazuh 规则时应用了几个检测设计原则。
#### **字段级匹配**
所有规则条件都对解码的 Sysmon 字段(例如 `win.eventdata.image`、`parentImage` 和 `destinationIp`)进行操作。与搜索原始 XML 事件内容相比,匹配结构化字段更可靠,并允许规则评估事件的特定属性。
#### **告警中的动态上下文**
相关的解码字段直接嵌入到告警描述中。这使分析师能够看到重要细节,例如命令行参数或目标 IP 地址,而无需打开原始日志条目。在告警中提供上下文信息可减少分类期间的调查步骤。
#### **进程关系分析**
一些检测依赖于父子进程关系。评估父进程提供了有关命令如何启动的附加上下文,允许规则区分正常的交互式使用和由不相关应用程序触发的执行。
#### **多条件规则逻辑**
大多数检测结合了多个事件属性,而不是依赖单个指标。例如,网络检测同时协议、目标端口和目标 IP。这通过确保仅当满足多个行为条件时才生成告警来减少误报。
#### **基于频率的行为阈值**
某些行为仅在短时间内重复时才可疑。频率阈值用于检测活动爆发,例如重复的管理工具启动或快速文件创建事件。
#### **严重性升级**
基础规则提供对单个事件的可见性。当事件频率超过定义的阈值时,升级规则会增加告警严重性。此结构有助于将常规活动与可能表明自动或脚本行为的模式区分开来。
通过执行良性和可疑场景来验证规则行为。测试了合法的管理活动以确认不会不必要地生成告警,而脚本化或重复的操作用于触发升级条件。
## 局限性
用于测试的环境并未反映生产企业网络中通常存在的遥测多样性。
应考虑几个限制:
- DNS 检测依赖于 **静态解析器允许列表**,这在具有多个内部 DNS 服务器的环境中无法很好地扩展
- 端点软件多样性有限,这限制了评估由合法应用程序引起的误报的能力
- 测试是在少量主机上进行的,而不是跨大容量端点遥测进行的
- 检测作为独立规则运行,未与额外的主机或网络遥测源相关联
在生产部署中,需要进行一些调整:
- 跨端点建立基线行为模式
- 为 DNS 等基础设施服务维护动态允许列表
- 基于真实遥测量调整告警严重性和阈值
- 评估高日志摄取率下的规则性能
## 结论
本项目侧重于使用 Sysmon 遥测作为主要数据源构建自定义 Wazuh 检测规则。规则不是依赖预构建的检测内容,而是围绕端点活动中观察到的特定行为模式设计的。每个规则评估结构化事件字段,在适当的情况下应用上下文过滤,并使用频率阈值来识别异常重复。
由此产生的检测说明了如何将端点遥测转化为可操作的告警,同时通过规则逻辑和上下文条件控制噪音。
标签:AMSI绕过, Beacon Object File, CISA项目, Conpot, CSV导出, DNS 反向解析, DNS 解析, EDR, HTTP工具, IP 地址批量处理, Modbus, Mr. Robot, PE 加载器, StruQ, SwiftOnSecurity, Sysmon, Wazuh, Web报告查看器, Windows安全, Windows 调试器, 主机入侵检测, 后渗透, 威胁检测, 安全运营, 安全遥测, 工具集, 开源软件, 扫描框架, 插件系统, 数据包嗅探, 数据集, 文档安全, 无线安全, 模拟器, 注册表监控, 流量嗅探, 端点安全, 网络信息收集, 网络安全, 网络安全审计, 网络连接监控, 脆弱性评估, 补丁管理, 规则编写, 进程创建, 隐私保护