1、前言

系统监视器(Sysmon)是一种Windows系统服务和设备驱动程序,一旦安装在系统上,就会在系统重新启动时保持驻留状态,以监视和记录系统活动到Windows事件日志中。

2、下载

https://docs.microsoft.com/zh-cn/sysinternals/downloads/sysmon

3、使用场景

1、捕捉系统日志,例如一些发现DNS恶意域名解析,但是找不到进程以及落地文件等场景。
2、在杀软不能查杀的情况下,用户也没有相关经验去找到解析恶意域名所对应的进程文件时;
3、某些恶意样本对远控域名的请求并不是持续的,有可能是一小时一次、一天一次或者几天一次,可以利用Sysmon来查看事件日志并定为进程文件

4、配置文件

Sysmon 提供了xml 格式的配置文件来让用户自定义过滤规则,配置文件的东西比较多,这里提供一个“使用预制的Sysmon配置文件来检测恶意流量和威胁”
可参考https://github.com/SwiftOnSecurity/sysmon-config
全流量的监控config.xml

  1. <Sysmon schemaversion = "4.21">
  2. <EventFiltering>
  3. <ProcessCreate onmatch="exclude"/>
  4. <FileCreateTime onmatch="exclude"/>
  5. <NetworkConnect onmatch="exclude"/>
  6. <ProcessTerminate onmatch="exclude"/>
  7. <DriverLoad onmatch="exclude"/>
  8. <ImageLoad onmatch="exclude"/>
  9. <CrateRemoteThread onmatch="exclude"/>
  10. <RawAccessRead onmatch="exclude"/>
  11. <ProcessAccess onmatch="exclude"/>
  12. <FileCrate onmatch="exclude"/>
  13. <RegistryEvent onmatch="exclude"/>
  14. <FileCreateStreamHash onmatch="exclude"/>
  15. <PipeEvent onmatch="exclude"/>
  16. <WmiEvent onmatch="exclude"/>
  17. <DnsQuery onmatch="exclude"/>
  18. </EventFiltering>
  19. </Sysmon>

另外一个写好的config.xml配置文件
https://github.com/SwiftOnSecurity/sysmon-config/blob/master/sysmonconfig-export.xml
或者sysmon.exe -c- 使用默认模板

5、过滤器标签(事件ID)

1 ProcessCreate 进程创建
2 FileCreateTime 文件创建时间更改
3 NetworkConnect 检测到网络连接
5 ProcessTerminate 进程终止
6 DriverLoad 驱动程序已加载
7 ImageLoad 镜像加载
8 CreateRemoteThread 已检测到创建远程线程
9 RawAccessRead 检测到原始访问读取
10 ProcessAccess 已访问的进程
11 FileCreate 文件创建
12 RegistryEvent 添加或删除注册表对象
13 RegistryEvent 注册表值设置
14 RegistryEvent 注册表对象已重命名
15 FileCreateStreamHash 已创建文件流
17 PipeEvent 管道创建
18 PipeEvent 管道已连接
19 WmiEvent 检测到WmiEventFilter活动 — WmiEventFilter activity detected
20 WmiEvent 检测到WmiEventConsumer活动 — WmiEventConsumer activity detected
21 WmiEvent 检测到WmiEventConsumerToFilter活动 — WmiEventConsumerToFilter activity
22 DnsQuery DNS查询
23 FileDelete 文件删除

其中每个事件ID的分析都在下面,可以看下飞鸟大佬的总结,写的非常全
https://www.yuque.com/feiniao112/rq5bav/xzvru4
官方给出的实际上有22个事件ID,但是有两个事件ID我们在应急响应中无需关注分别为ID4和ID16,这两个都是关于sysmon程序在运行本身的日志监控

6、使用与测试

安装-4.50版本(win10可用,win7不行)

这里我用的config.xml为sysmonconfig-export.xml下载后重命名
如果尚未安装sysmon,则可以使用sysmon64.exe -i config.xml安装此配置文件
image.png
如果已运行,则使用sysmon64.exe -c config.xml安装。
sysmon -c config.xml 更新xml文件
image.png

查看日志路径

GUI界面路径
image.png
sysmon捕捉日志放在windows日志中,存放路径为:%SystemRoot%\System32\Winevt\Logs\Microsoft-Windows-Sysmon%4Operational.evtx

测试结果1

使用nslookup解析下恶意域名
image.png
筛选事件ID为22的日志后,直接使用ctrl+F来查找关键域名接口
image.png

测试结果2

这里我用了免杀的mimikatz来dump——hash,来看看能不能成功检测到
image.png
dump_hash相关的事件ID为10,发现并没有监控到,也不知道为什么
这里有一个问题,win7和win10的config.xml和sysmon的版本一样,监控出来的问题不一样,win10能够成功检测到DNS,而WIN7不行,待填坑

sysmon view

日志太多了,直接使用ctrl+f来寻找太慢
使用命令行直接导出日志的xml格式

  1. WEVTUtil query-events "Microsoft-Windows-Sysmon/Operational" /format:xml /e:sysmonview > eventlog.xml

下载地址

  1. https://github.com/nshalabi/SysmonTools

主要的功能在下面,感觉还是以进程和ID为主,相对感觉在一定程度上还不如ctrl+F
image.png

sysmon shell

这里用win10系统和Win7系统做了个测试,发现win7由于版本太低,现有的config.xml文件怎么改都用不了,因此可以使用sysmonshell来简单生成一个模板,更详细的内容可以去百度找使用教程
image.png
没使用它生成模板config.xml之前
image.png
简单生成了一个4.0的模板config.xml后
image.png
后来发现低版本的没有dnsquery功能TnT

最后win7的服务器使用了sysmon64.exe 而不是sysmon.exe 就可以运行了4.50版本的sysmon了。

一个分析实例

本段分析实例来源rebellious_sheep大佬
sysmon实验.pdf