首页
社区
课程
招聘
[翻译]常见的WMI攻击检测方法
发表于: 2019-8-25 17:48 9664

[翻译]常见的WMI攻击检测方法

2019-8-25 17:48
9664


安装Sysmon以后,可以捕获到进程创建的相关事件,例如下面的案例中,powershell,创建了一个mofcomp.exe,参数是一个./config.mof


Mofcomp.exe是系统自带的一个工具,用来编译mof文件,并将mof文件中的信息添加到WMI数据库中。



假如我们没有发现上面的Sysmon创建mofcomp.exe进程事件,但是稍后3分钟,应该也会看到一个WMI消费者相关的事件,下面就是Sysmon发现了WMI消费者事件




WMI支持以下几种类型的事件消费者,比如前两个类型的消费者,运行在特定事件发生时,执行一个可执行文件,或者vb、js脚本文件。


甚至我们看到最下面有一种Costom,自定义类型的时间消费者。 虽然目前还没见到有任何恶意样本在使用这中类型的消费者。


但是我们正在一步一步的,迫使攻击者去研究使用这些其类型的事件消费者,这也同时给我们带来更多的挑战!!


攻击者通过powershell来使用WMI,可以很轻松的来绑定、添加针对某种类型的事件消费者函数,同时Powershell也给防御者提供了方便的功能,来检测可疑的WMI事件。


通过下面ps命令,就可以检测当前系统上正在运行的消费者事件、事件过滤器、以及过滤器和消费者之间的绑定关系

攻击者通过powershell来使用WMI,可以很轻松的来绑定、添加针对某种类型的事件消费者函数,同时Powershell也给防御者提供了方便的功能,来检测可疑的WMI事件。


通过下面ps命令,就可以检测当前系统上正在运行的消费者事件、事件过滤器、以及过滤器和消费者之间的绑定关系




查看系统上注册的WMI事件消费者


查看系统上注册的事件过滤器


查看系统上已经绑定的过滤器和消费者


一般来讲,我们会先检查有没有可疑的Consumer,消费者,下图中,就显示了一个Consumer名字为"wmi",在触发某种特定过滤事件的时候,就会执行Consumer中CommandLineTemplate中的命令行


通过查看命令行,我们可以发现,当事件被触发的时候,就会执行powershell.exe 并且会执行后面base64加密过的恶意ps代码,只要解密那段base64加密过的字符串,就可以搞清楚攻击者想要干什么,或者将要干什么。


通过上面介绍的方法,我们可以很轻易就可以检查单台机器上的可疑WMI攻击,但是如果要排查整个内网环境,有上百上千台机器时,怎么办?


可以通过域控或者其他方式,给内网的机器下发指令,执行上面的查询WMI消费者的命令,并将结果提交到后台数据库中,


我们可以通过检索数据库来筛选中可疑的wmi consumer,排除正常的consumer, 下面例子中,前两个是正常的consumer,最后一个是可疑的





下面例子中是Windows Server 2012 R2服务器环境,事实上,在Server 2012后面的系统,都默认支持WMI事件审计,我们只需要寻找事件ID为5861的就行


事件5861代表新创建的consumer,这一点很重要,因为在装完系统以后一般不会有新增的consumer,如果发现此类事件,应该高度警惕!!


系统默认的Event功能除了可以记录Consumer以外,还可以记录Filter



开始以为存储在注册表里面,实际独立存放在磁盘上\Windows\System32\wbem\Repository目录下的,里面的文件都是二进制数据库文件。


直接查看这些二进制数据库文件几乎是不可能的,那么在一些应急响应取证的场景下,如何从客户机器上提取这些Repository中的数据库文件回来,


在线下审计WMI呢?比较幸运的是国外的著名安全公司Firere发布了一个py脚本工具,可以读取这些WMI二进制数据库文件,可以看到熟悉的WMI事件信息。


取证必备的工具!!

另一款工具,可以读取Repository下的数据库的类和实例的创建时间来排序,这样我们可以更直观的找到最近被创建的消费者

下面例子中,找到了大概20000+条在同一时间创建的记录,但是通过排序后,立马发现了最新的一条记录,时间跨度长达一年。


立马就可以引起你的怀疑,到底这个consumer在是做什么用的?


当然了,攻击者也会利用WMI仓库的特性,专门来隐藏一些可以的脚本代码或其他东西,这点也需要我们注意。

ok上面介绍的大部分在WMI仓库目录下的Objects.data文件中




上面介绍了几种方法可以找到wmi相关的数据,在拿到数据以后如何来找到数据中恶意的东西呢?



我比较推荐先检查WMI消费者,在消费者数据中,一般会发现一些可疑的脚本代码、Powershell命令行、可疑命名的可执行文件、陌生的文件夹等都是危险的特征。


下图中的


 Intersting Search Terms 中代表是一些可疑的特征,


Connom False positives 代表的是一些常见正常的WMI消费者,我们需要在识别数据时,排除这些正常的WMI事件。


当然了,下图中最下面一行,Note,说明了一些攻击者也会把创建的消费者取名和正常的一样,来混淆取证人员分析,隐藏自己。


[招生]系统0day安全班,企业级设备固件漏洞挖掘,Linux平台漏洞挖掘!

最后于 2019-8-26 15:13 被Adventure编辑 ,原因:
收藏
免费 4
支持
分享
最新回复 (2)
雪    币: 1213
活跃值: (4031)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
2
赞!!!
2019-8-26 12:07
0
雪    币: 8233
活跃值: (2736)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢了,学习一下
2019-9-10 11:18
0
游客
登录 | 注册 方可回帖
返回
//