-
-
[原创]微软轻量级系统监控工具sysmon原理与实现------内核事件结构
-
发表于:
2020-11-20 17:10
6669
-
[原创]微软轻量级系统监控工具sysmon原理与实现------内核事件结构
前两次我们分别讲了sysmon的ring3与ring0的实现原理,但是当初使用的版本的是8.X的版本,最新的版本10.X的sysmon功能有所增加,经过分析代码上也有变化。比如增加DNS得功能,这个功能实现也很简单,就是ETW里获取Microsoft-Windows-DNS-Client得数据,但是本篇不讲这个,本续篇主要讲内核里的事件结构。
所有的内核里上报的事件开头基本都是。
下面具体讲解每个事件的结构。
下图是文件上报事件,除了上报上诉三个字段外,还有ProcessPid、EventCreateTime,FileCreateTime、hashVlaue算法id,hashvalue、三组进程相关的数据用户UserSid、进程ImageFileName、文件名FileName
可以看到内核里上报出来的事件类型是根据是否计算hash来判断,分别是10 、11
内核出来的事件Type 值是2
结构体与FileCreate稍微有些不同,少了文件hash的计算的步骤,但是多了一个设置文件改变的时间。
进程创建上报事件内核的事件Type值是4或者1
他的结构体如下(具体不在讲解,名字字面意思都能看懂)
进程退出事件内核的Type值是3
可以看到数据有进程id、 父进程id、事件创建时间、UserSid
内核里的事件类型是7
结构体如下
DllInfo是指线程所在的模块名,DllExportInfo是该模块的导出表信息
内核事件类型是: 9
结构体定义如下:
进程注册表操作事件的Type值是12
结构体如下:
这里要说明的是附加数据段有5个数据
UserSid
RegistryOperateName
进程名带参数
KeyName
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!