适用场景
Sysmon 安全监控适用于:Windows 服务器日常安全审计;恶意软件行为分析与应急响应取证;蓝队需要还原攻击者进程链、网络外连行为时;以及将 Windows 主机行为日志接入 SIEM 平台(如 Wazuh、Splunk)做关联分析。Sysmon 运行在内核驱动层,记录粒度远超系统自带的安全日志,是 Windows 端点安全监控的事实标准组件。
前置条件
- Windows 10 / Windows Server 2016 及以上版本,具备管理员权限
- 从微软 Sysinternals 官网下载 Sysmon 最新版
- Windows 事件日志服务(Event Log)正常运行
原理说明
Sysmon 通过内核驱动捕获系统调用级行为,并写入 Windows 事件日志(Operational 日志),核心事件 ID 包括:1 进程创建(含命令行、父进程)、3 网络连接(源/目的 IP 与端口)、11 文件创建、13 注册表值变更、22 DNS 查询、23 文件删除等。默认安装只记录事件,行为判定与过滤完全由配置文件(XML 规则)控制,可通过 Include/Exclude 规则精准定义需要关注的行为,兼顾信息量与性能。
操作步骤
1. 下载并安装 Sysmon
# 管理员 PowerShell 中执行
# 先下载 Sysmon 与配置文件(此处使用社区广泛采用的 SwiftOnSecurity 配置)
Invoke-WebRequest -Uri https://download.sysinternals.com/files/Sysmon.zip -OutFile Sysmon.zip
Expand-Archive Sysmon.zip -DestinationPath .\sysmon
cd .\sysmon
# 安装并加载默认配置
.\sysmon64.exe -accepteula -i ..\sysmon-config.xml
2. 验证安装与配置
# 查看当前配置摘要
.\sysmon64.exe -c
# 在事件查看器中查看 Sysmon 日志
# 路径:事件查看器 - 应用程序和服务日志 - Microsoft - Windows - Sysmon - Operational
3. 核心事件查询(PowerShell)
# 查询最近的进程创建事件(Event ID 1)
Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-Sysmon/Operational'; Id=1} -MaxEvents 20 |
Select-Object TimeCreated, @{n='Process';e={$_.Properties[4].Value}},
@{n='CmdLine';e={$_.Properties[5].Value}},
@{n='Parent';e={$_.Properties[15].Value}} | Format-List
# 查询可疑外连事件(Event ID 3),按目的端口过滤
Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-Sysmon/Operational'; Id=3} -MaxEvents 50 |
Where-Object { $_.Message -match 'DestPort: 4444|DestPort: 3389' }
4. 常用配置规则示例
<!-- 记录所有进程创建,排除系统自带进程 -->
<ProcessCreate onmatch="exclude">
<Image condition="is">C:\Windows\System32\conhost.exe</Image>
</ProcessCreate>
<!-- 重点关注 PowerShell 与网络外连 -->
<NetworkConnect onmatch="include">
<Image condition="contains">powershell.exe</Image>
</NetworkConnect>
配置验证
# 重新加载修改后的配置
.\sysmon64.exe -c ..\sysmon-config.xml
# 主动触发一条事件验证记录生效:启动一次 cmd 再退出
cmd /c echo sysmon-test
# 然后查询 Event ID 1,确认命令行包含 sysmon-test
验证要点:确认事件日志中存在新记录;-c 输出显示配置加载成功;若需排查写入性能,可监控事件日志增长速率,规则过宽时可收紧 onmatch 条件。
常见问题
Q1:Sysmon 是否会影响服务器性能?
Sysmon 本身开销较低,但事件量大时会增加事件日志写入压力。建议使用社区成熟配置(如 SwiftOnSecurity)作为起点,再按业务裁剪 exclude 规则;对高频路径(如临时目录文件写入)可单独限制,避免日志爆炸。
Q2:事件日志中的命令行信息被截断怎么办?
事件查看器默认截断显示,可用 Get-WinEvent 通过 Properties 数组读取完整字段,或使用 wevtutil qe Microsoft-Windows-Sysmon/Operational /f:xml 导出 XML 查看原始数据。SIEM 接入时也建议直接消费 XML 格式保证字段完整。
总结
Sysmon 以极低成本补齐了 Windows 原生日志在行为审计上的短板,进程链、网络连接、DNS 查询等关键事件均可完整追溯。配合合理裁剪的配置规则与 SIEM 集中采集,可显著提升 Windows 环境的威胁发现与应急响应能力。安装后务必定期复核规则与日志量,保持监控持续有效。