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

栏目: 数据库 · 发布时间: 7年前

内容简介:概述WMI(Windows Management Instrumentation)事件订阅(Event Subscription)是一种非常流行的终端持久化技术。我们针对Empire的WMI模块(“WMI事件订阅”在MITRE ATT&CK技术中的编号为T1084,详情请参见:

概述

WMI(Windows Management Instrumentation)事件订阅(Event Subscription)是一种非常流行的终端持久化技术。我们针对Empire的WMI模块( https://github.com/EmpireProject/Empire )进行了尝试,并对其模块进行分析,同时还汇总了可用于查看和删除WMI事件订阅的PowerShell命令。本文将主要阐述如何检测WMI持久化后门并进行移除。

“WMI事件订阅”在MITRE ATT&CK技术中的编号为T1084,详情请参见: https://attack.mitre.org/wiki/Technique/T1084

攻击者可以利用WMI的事件订阅功能,在特定事件发生时执行任意代码,从而保证其恶意软件的持久性。

关于WMI

WMI是微软实施的WBEM(基于Web的企业管理,Web-Based Enterprise Management),WBEM是一项行业计划,旨在开发用于访问企业环境中管理信息的标准技术。WMI使用通用信息模型(Common Information Model)行业标准来表示系统、应用程序、设备和其他可管理的组件。

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

配置Sysmon日志记录

在Sysmon中,可以通过配置,开启对WmiEventFilter、WmiEventConsumer和WmiEventConsumerToFilter活动的记录,同时能够启用WMI滥用检测。

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

在Roberto Rodriguez(@Cyb3rWard0g)发布的Sysmon配置文件中,还支持捕获上述事件ID的功能。

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

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

建立持久性

接下来,我们尝试使用Empire是的Invoke-WMI模块,来创建一个永久的WMI订阅,从而在目标用户的终端上建立持久性。

查看Empire中与WMI相关的模块:

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

查看Empire中Invoke-WMI模块的选项:

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

运行模块:

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

检测方法

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

1、已经注册的WMI事件过滤器(Event Filter)

2、已经注册的WMI事件使用者(Event Consumer)

3、将事件使用者绑定到事件过滤器

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

WMI事件过滤器设置执行阶段的条件,包括对系统正常运行时间的引用。

ID为19的Sysmon事件 – WmiEvent(检测到WmiEventFilter活动):

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

在WMI事件使用者(Event Consumer)中,可以看到由Empire创建的条目,其内容进行了Base64编码。并且,使用了看似合法的名称Updater进行注册。

ID为20的Sysmon事件 – WmiEvent(检测到WmiEventConsumer活动):

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

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

ID为21的Sysmon事件 – WmiEvent(检测到WmiEventConsumerToFilter活动):

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

现在,事件使用者已经被成功绑定到事件过滤器。如果满足事件过滤的条件,那么就会触发事件使用者(Stager)。

彻底清除WMI持久化后门

如果想要从WMI数据库中删除特定条目,最简单的方法就是使用Autoruns。我们以管理员身份启动Autoruns,并选择WMI选项卡,以查看与WMI相关的持久性。

使用Autoruns查看WMI数据库条目:

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

使用Autoruns查看WMI数据库中内容:

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

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

或者,我们也可以从命令行中删除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

删除WMI事件订阅:

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

再次运行Autoruns,以验证WMI持久化后门是否已成功清除:

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


以上所述就是小编给大家介绍的《如何检测并清除WMI持久化后门》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Python 3面向对象编程

Python 3面向对象编程

[加]Dusty Phillips(达斯帝•菲利普斯) / 肖鹏、常贺、石琳 / 电子工业出版社 / 2015-6 / 79.00元

Python 是一种面向对象的解释型语言,面向对象是其非常重要的特性。《Python 3面向对象编程》通过Python 的数据结构、语法、设计模式,从简单到复杂,从初级到高级,一步步通过例子来展示了Python 中面向对象的概念和原则。 《Python 3面向对象编程》不是Python 的入门书籍,适合具有Python 基础经验的开发人员阅读。如果你拥有其他面向对象语言的经验,你会更容易理解......一起来看看 《Python 3面向对象编程》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

SHA 加密
SHA 加密

SHA 加密工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具