如何检测并移除WMI持久化后门?

前言

Windows Management Instrumentation(WMI)事件订阅,是一种常被攻击者利用来在端点上建立持久性的技术。因此,我决定花一些时间研究下Empire的WMI模块,看看有没有可能检测并移除这些WMI持久化后门。此外,文中我还回顾了一些用于查看和移除WMI事件订阅的PowerShell命令。这些命令在实际测试当中都非常的有用,因此我也希望你们能记录它们。

有关更多“Windows Management Instrumentation事件订阅”的内容,请参考MITRE ATT&CK Technique T1084。

攻击者可以使用WMI的功能订阅事件,并在事件发生时执行任意代码,从而在目标系统上建立一个持久化后门。

WMI 介绍

WMI是微软基于Web的企业管理(WBEM)的实现版本,这是一项行业计划,旨在开发用于访问企业环境中管理信息的标准技术。WMI使用公共信息模型(CIM)行业标准来表示系统,应用程序,网络,设备和其他托管组件。

事件过滤器(event filter )是一个WMI类,用于描述WMI向事件使用者传递的事件。此外,事件过滤器还描述了WMI传递事件的条件。

配置Sysmon日志记录

我们可以将Sysmon配置为记录WmiEventFilter,WmiEventConsumer和WmiEventConsumerToFilter活动,并启用WMI滥用检测。

Roberto Rodriguez 的(@Cyb3rWard0g)Sysmon配置文件将捕获上述事件ID。

执行以下命令安装Sysmon,并应用配置文件。

sysmon.exe -i -c .\config_file.xml

建立持久化后门

下面,我们使用Empire的Invoke-WMI模块,在受害者端点上创建一个永久的WMI订阅。

检测

查看Sysmon日志,我们可以看到Empire模块:

注册了一个WMI事件过滤器; 注册了一个WMI事件使用者; 将事件使用者绑定到事件过滤器。

WMI事件过滤器为stager设置了相应执行条件,其中包括对系统正常运行时间的引用。

WMI事件使用者包含了以Base64编码形式的Empire stager,并使用了一个不易引起人们怀疑的名称Updater进行注册。

WMI事件使用者CommandLineEventConsumer.Name=\”Updater\”,被绑定到了事件过滤器__EventFilter.Name=\”Updater\”

现在,事件使用者被绑定到了事件过滤器。如果事件过滤条件为真,那么将会触发相应的事件使用者(stager)。

后门移除

最简单的办法就是,使用Autoruns从WMI数据库中删除条目。以管理员身份启动Autoruns,并选择WMI选项卡查看与WMI相关的持久性后门。

右键单击恶意WMI数据库条目,然后选择“Delete”删除即可。

或者,你也可以从命令行中删除WMI事件订阅。

在PowerShell中,我们使用Get-WMIObject命令来查看事件过滤器绑定的WMI事件过滤器,事件使用者和使用者过滤器。这里我要感谢Boe Prox(@proxb)在他的博客上详细解释了这些命令。

# Reviewing WMI Subscriptions using Get-WMIObject
# Event Filter
Get-WMIObject -Namespace root\Subscription -Class __EventFilter -Filter “Name=’Updater’”

# Event Consumer
Get-WMIObject -Namespace root\Subscription -Class CommandLineEventConsumer -Filter “Name=’Updater’”

# Binding
Get-WMIObject -Namespace root\Subscription -Class __FilterToConsumerBinding -Filter “__Path LIKE ‘%Updater%’”

使用Remove-WMIObject命令,移除WMI持久性后门的所有组件。

# Removing WMI Subscriptions using Remove-WMIObject
# Event Filter
Get-WMIObject -Namespace root\Subscription -Class __EventFilter -Filter “Name=’Updater’” | Remove-WmiObject -Verbose

# Event Consumer
Get-WMIObject -Namespace root\Subscription -Class CommandLineEventConsumer -Filter “Name=’Updater’” | Remove-WmiObject -Verbose

# Binding
Get-WMIObject -Namespace root\Subscription -Class __FilterToConsumerBinding -Filter “__Path LIKE ‘%Updater%’” | Remove-WmiObject -Verbose

完成后我们再次运行Autoruns,以验证持久化后门是否已被我们成功清除。

*参考来源:medium ,FB小编secist编译,转载请注明来自FreeBuf.COM

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2018-11-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张戈的专栏

安装完Win7之后推荐做的一些设置

前言:不知道写什么,就总结一下我个人安装完成 windows7 之后要做的一些设置吧!以下全文均为个人回忆总结,文章也很冗长,难免有纰漏或者不符合你个人习惯的内...

1K14
来自专栏云加头条

云+社区开发者大会TechWork技术工作坊学员准备——智能钛机器学习平台应用实践

3. 需要提前申请开通TI-ONE平台(申请中备注“参加开发者大会工作坊”),并开通COS服务

4927
来自专栏Android's Track

当我们按下电源键,Android 究竟做了些什么?

我们会否好奇过,如此复杂的 Android 究竟是怎么运作起来的呢?

1.2K14
来自专栏沃趣科技

PostgreSQL中删除的数据能否恢复

问题的提出 有人问PostgreSQL数据库中刚刚删除的数据能否被恢复? 或更进一步,如果如要在一个事务中做了一系列的更新、删除、插入的操作后,把这个事务提交之...

5317
来自专栏Albert陈凯

2018-10-09 lombok 生产环境报错SEVERE: Unable to process Jar entry [module-info.class] from Jar [jar:fil...

老师您好,课程里面用的lombok,感觉很方便,我就在我写的一个测试项目里面也用的这个。在idea里面用tomcat是可以正常运行的。但是打好包以后,放到服务器...

3.1K2
来自专栏菩提树下的杨过

IIS7上部署Asp.Net4.0时UrlRouting的若干问题

今天把公司的一个小web项目从Asp.Net3.5升级到Asp.Net4.0,结果在UrlRouting上遇到一系列很纠结的问题.(注:Url路由是Asp.Ne...

22110
来自专栏三木的博客

基于Linux与lpc3250开发板的交叉开发环境搭建

###一、Bootloader的安装(在windows下进行) 1、什么是Bootloader: 要想弄明白什么是Bootloader,我们先从PC上的boot...

2028
来自专栏自由而无用的灵魂的碎碎念

实战解决使用ghost安装系统出现的各种问题

昨天使用ghost给人安装系统时,把另一个分区的数据都搞没了,安装完也只剩下一个分区,相信了解的同志们知道是什么原因。

1383
来自专栏.NET技术

winserver的consul部署实践与.net core客户端使用(附demo源码)

随着微服务兴起,服务的管理显得极其重要。都知道微服务就是”拆“,把臃肿的单块应用,拆分成多个轻量级的服务,每个服务可以在短周期内重构、迭代、交付。随着微服务的数...

1312
来自专栏黑白安全

如何检测并清除WMI持久性后门

当前,Windows Management Instrumentation(WMI)事件订阅已经变成了一种非常流行的在端点上建立持久性后门的技术。于是,我决定鼓...

4792

扫码关注云+社区

领取腾讯云代金券