8

现代恶意软件技术概述:盘点近十年恶意软件对WMI的滥用

 3 years ago
source link: http://netsecurity.51cto.com/art/202011/631384.htm
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

一、前言

1.1 WMI概述

Windows管理规范(WMI)是用于在Windows操作系统上管理数据和进行操作的基础结构。WMI是微软基于Web的企业管理(WBEM)的实现。WMI使用通用信息模型(CIM)行业标准来表示系统、应用程序、网络、设备和其他托管组件。

WMI可以在所有基于Windows的应用程序中使用,其设计的初衷在于能够与C/C++、VBA或任何Windows上有引擎的脚本语言一起使用,并且可以处理ActiveX对象。有很多Windows功能都具有相关的WMI提供程序,它们实现WMI类、方法和属性定义的功能,以管理相对应的Windows功能。管理用用程序通过各种基于组件对象模型(COM)的接口与WMI通信。

主要的WMI类包括:

1、WMI系统类:WMI核心中,每个命名空间所包含的预定义类,它们提供了许多基本功能,其作用与SQL Server中的系统表类似;

2、MSFT类:提供了操纵操作系统功能的方法,例如远程事件和策略扩展;

3、CIM类:公共信息模型(CIM)类,可以从这些类中继承,Win32类就是从CIM类中继承;

4、标准使用者类:一组WMI事件使用者,它们在收到任意事件后触发操作。

1.2 恶意场景

最早滥用WMI的恶意软件是Stuxnet,它也彻底改变了我们的网络安全环境。时至今日,越来越多的恶意软件都开始滥用WMI(Windows管理规范)。Stuxnet是2010年最为复杂的蠕虫之一,它影响了伊朗纳坦兹的核处理设施,并使用WMI遍历用户,将自身传播到可用的网络共享之中。它还使用了MOF(托管对象格式)文件,这是用于创建和注册WMI提供程序和事件的方法。从ATT&CK的视角来看,该恶意软件在持久化阶段滥用了WMI(T1084)中的WMI事件订阅,在侦查阶段进行了帐户侦查(T1087)和网络共享侦查(T1135),在横向移动阶段进行了远程文件复制(T1105)。

这篇文章将详细盘点使用WMI实现其目标的恶意软件。我们期望通过本文的盘点,可以让安全从业者和决策者了解当前恶意技术。其中的每种技术都与MITER ATT&CK矩阵中的策略对应,由此展示出在防范网络攻击的过程中应当进行适当的WMI监控。

下面的策略可能直接或间接地使用WMI,每种策略都与技术相对应。

1、执行

(1)Windows管理规范技术(T1047);

(2)进程间通信:组件对象模型(T1559.001),与WMI的交互是通过COM完成的;

(3)命令和脚本解释器:PowerShell(T1059.001),例如通过使用Get-WmiObject cmdlet获取WMI类的实例;

(4)远程服务:WMI(T1021.006),WMI为WinRM提供管理数据;

(5)计划任务/作业(T1053),Win32_ScheduledJob WMI类表示使用AT命令创建的作业。

2、持久化

(1)事件触发执行:WMI事件订阅(T1546.003),WMI可用于安装事件过滤器、提供程序、使用者和绑定,它们可以在发生特定事件时执行代码;

(2)外部远程服务(T1133),可以使用WinRM;

(3)启动或登录时自动执行:注册表运行键/启动文件夹(T1547.001),WMI类StdRegProv中包含用于操作注册表运行键的方法。

3、防御逃避

(1)影响防御:禁用或修改工具(T1562.001),可以通过WMI删除注册表项,或使用wmic.exe终止进程来实现该技术;

(2)间接命令执行(T1202),通常情况下为了避免检测,恶意软件可以使用Win32_Process WMI类执行命令,而无需直接调用cmd.exe;

(3)修改注册表(T1112),WMI类StdRegProv包含用于操纵注册表项的方法。

4、侦查

(1)帐户侦查(T1087),Win32_UserAccount WMI类包含有关计算机系统上用户帐户的信息,Win32_LoggedOnUser WMI类将会话和用户帐户相关联;

(2)文件和目录侦查(T1083),Win32_Directory WMI类可以操纵目录,CIM_DataFile WMI类表示数据的命名集合,Win32_ShortcutFile WMI类表示快捷方式文件;

(3)外围设备发现(T1120),有很多关键的WMI类,例如:Win32_CDROMDrive、Win32_DesktopMonitor、Win32_InfraredDevice、Win32_Keyboard、Win32_Printer、Win32_SerialPort、Win32_USBController、Win32_VideoControlleretc等;

(4)权限组侦查(T1069),Win32_Group WMI类提供有关组帐户的信息,Win32_GroupUser关联一个组和组内成员的帐户;

(5)进程侦查(T1057),Win32_Process WMI类可以实现对进程的侦查;

(6)注册表侦查(T1012),可以使用StdRegProv WMI类和Win32_Registry类从注册表中获取数据;

(7)远程系统侦查(T1018),Win32_PingStatus可以获取使用IPv4或IPv6地址计算机的返回数据;

(8)系统信息侦查(T1082),有很多可以使用的类,例如Win32_OperatingSystem、Win32_SystemResourcesetc等;

(9)系统网络配置侦查(T1016),Win32_SystemNetworkConnections WMI类与网络连接有关,MSFT_NetAdapter可以提供有关网络适配器的信息;

(10)系统服务侦查(T1007),Win32_Service WMI类可以表示服务;

(11)系统时间侦查(T1124),使用Win32_TimeZone可以检索时区信息;

(12)虚拟化/沙箱逃逸(T1497),Win32_ComputerSystem WMI类和Win32_BaseBoard可以检测VM。

5、横向移动

(1)进程间通信:组件对象模型(T1559.001),与WMI的交互是通过COM完成的;

(2)远程服务:Windows远程管理(T1021.006),WMI为WinRM提供管理数据;

(3)远程服务(T1021),Win32_Service WMI类表示可以位于远程位置的服务;

(4)入口工具传输(T1105),可以使用Win32_Share WMI类来实现。

6、命令和控制

(1)非标准端口(T1571),WMI调用使用135端口,然后选择一个随机端口;

(2)远程访问硬件(T1219),ManagementScope.Connect方法将目标对象连接到远程计算机上的WMI命名空间。

7、渗出

(1)通过C2通道进行渗出(T1041),可以使用连接到远程计算机上的命名空间的ManagementScope对象来实现渗出。

考虑到WMI的复杂性,上述列表可能并不详尽。WMI滥用还可以通过其它策略和技术,以更具创新性的方式来执行。但是,我们希望对这些技术的总结,能够有助于WMI检测机制的实现和改进。作为对上述内容的补充,我们会盘点一些流行恶意软件的示例,重点揭示它们是如何使用上述技术滥用WMI的。

二、恶意软件技术分析

2.1 Kingminer

Kingminer是自2018年以来一直存在的一种加密劫持恶意软件,至今仍然在持续发展,网络犯罪分子可以通过感染企业环境而获利。Kingminer在改进版本中加入了一些恶意技术,例如暴力破解SQL Server以实现初始访问、类似于WannaCry的内核漏洞利用、用于逃避黑名单的域生成算法、无文件执行等。

这种加密劫持软件滥用了WMI来检查系统上是否安装了特定的Windows Update,并且禁用了对受感染计算机的远程桌面访问。

在执行阶段,它滥用了WMI事件订阅机制,恶意脚本的一部分注册了活跃脚本使用者以实现定期执行。WMI事件使用者通过WMI事件订阅这种事件触发执行的方式(T1546.003)来保证持久性。

如果希望完整分析该恶意软件,包括其中有代表性的恶意代码,可以阅读《Kingminer僵尸网络不断改进》[3]这篇文章。

2.2 Maze勒索软件

在2019年5月底,一个名为Maze的新勒索软件成为了新闻头条,填补了GandCrab消失后的空白。Maze的作者实现了一种渗出机制,利用付款和转账实现数据泄露。利用WMI,Maze可以销毁所有存在的Windows备份,例如卷影副本。

通过查询Win32_ShadowCopy WMI类,可以找到在恶意软件下一阶段中要删除的卷影,该技术称为禁用系统恢复(T1490)。

为了更好地理解Maze勒索软件,建议阅读代码片段,可以参考《恶意软件研究者指南:逆向Maze勒索软件》[4]。

2.3 Emotet

Emotet,也称为Geodo或Mealybug,在2014年首次被发现,此后一直活跃。其第一个版本是银行木马,用于捕获受害者的银行凭据。几年后,该恶意软件从一个面向银行的威胁演变成更为通用的加载程序,可以获取系统访问权限,然后投递其他Payload,而这个Payload可以是可执行文件或脚本。

如今,Emotet的最常见攻击媒介是鱼叉式钓鱼邮件附件(T1566.001)。在电子邮件中,通常包含一个.doc文件。为了诱导用户执行恶意VBA,攻击者通常会使用社会工程学。Emotet目前已经不再局限于对银行进行攻击,还会包含加密货币挖矿和勒索软件的功能。

在策略和技术方面,最新版本的Emotet使用WMI。由于其传播非常广泛,我们在这篇文章中将进行分析,以说明如何借助WMI相关技术来检测该恶意软件。由于恶意软件并没有直接生成PowerShell,而是主要使用间接命令执行(T1202)技术,这里就需要用到Win32_Process WMI类,所以有时会被检测到。

为了配置进程的启动参数,恶意软件还会使用Win32_ProcessStartup抽象WMI类。

Emotet技术分析

VZJZzui.png!mobile

我们捕获到其中一个感染来源,并对文档进行了分析,最终发现其传播依赖于VBA事件过程。在打开文件时(如果已启用宏),将会触发一个调用Document_Open()过程的事件。

作为一种混淆技术,攻击者在所有的存储过程中都使用了与下面类似的代码段,实际上这些代码没有任何作用。

3Y7rI32.png!mobile

下面展示的代码已经去掉了上述所提到的混淆模块,以使其更加具有可读性。Document_Open()从Zgwsfixtdhep调用Rorsxwhelbf()。

BZj6FfF.png!mobile

PowerShell命令行使用Yujnbbunz格式存储,并通过删除“}{”的方式,使用相同的机制进行解码。

NvqeAzi.png!mobile
ie22Qrq.png!mobile

利用WMI,Emotet恶意软件打破了进程树。如果防御者没有正确地对WMI进行监控,通常可以让恶意软件逃避检测。

RVjiY3M.png!mobile

2.4 sLoad

sLoad是一个PowerShell下载程序,其中包含值得关注的WMI侦查功能。微软的研究人员发现了其2.0.1版本[5],Bitdefender发现并隔离了经过改进后的2.7.3版本。之所以我们能如此具体地区分出版本,是因为恶意软件的开发人员将其添加到了恶意脚本的开头。

NNz67nY.png!mobile

当我们分析sLoad时,一些研究人员经常会提到它是如何使用BITS过滤数据的。这次,我们重点分析它滥用WMI的方式。在侦查环节中,sLoad通过WMI类Win32_Processor和Win32_OperatingSystem获取有关系统的信息(T1082,系统信息发现)。此外,它还使用Win32_LogicalDisc类来寻找可能存在的共享。

sLoad技术分析

分析的入口点是使用随机名称的PowerShell脚本,在我们的样本中是JWVrjYXZ.ps1。它是基于几个故意产生异常的try-except块。

正如微软Defender APT团队此前所分析的,恶意软件通过电子邮件中附带的ZIP压缩包附件的方式进入计算机。

随机命名的脚本负责解码在同一目录下找到的“system.ini”文件,并在不接触磁盘的情况下,在内存中执行该文件。

微软团队根据在$starsLord = Split-Path -parent -resolve $MyInvocation.MyCommand.Path;中找到的变量,将2.0.1版本称为“Starslord”。因此,我们可以根据$Sokovia = Split-Path -parent -resolve $MyInvocation.MyCommand.Path;,将2.7.3版本称为“Sokovia”。但最通用的名称还是sLoad。

恶意软件将BITS Admin工具的副本引用为$Ultron。

QzArY32.png!mobile

对于每个C&C地址,$InfinityStones表示BITS传输作业名称的随机8个字符的字符串。

$Wanda指向下载其他文件所需的完整命令,该命令为

URL转换为“< C&C >/main.php?ch=1&i=< MAC地址和计算机名的计算md5连接“

ruQNNz6.png!mobile

如果成功下载了至少一个文件,则使用$ad标志对其进行标记,并将内容另存为$cryptoKey。

Z7jMRb.png!mobile

如果没有成功下载文件,则会对C&C重新加密,并在域名后附加一个计数器。例如:hxxps[:]//nbrwer2[.]eu/topic/ and hxxps[:]//joodfbnm2[.]eu/topic/,它会退出并终止PowerShell。

UrUZjim.png!mobile
VzQR3eI.png!mobile

使用WMI类Win32_processor,$Yoda获取到CPU名称。使用Win32_OperatingSystem,可以获取到操作系统信息。

niyUne.png!mobile

获取当前运行进程中的特定列表,保存到$Pietro列表中。

jE7vIfy.png!mobile

使用带URL参数的BITS admin,可以将捕获的数据经过Base64编码后发送给攻击者。

VJ7nE3.png!mobile

在这种情况下,是使用Download BITS作业来渗出信息,并将信息作为URL参数传递。

如果渗出失败,则会退出并终止PowerShell。在失败的情况下,有三个命令可以使用,分别是:

eval – 运行PowerShell脚本;

iex – 加载并调用PowerShell代码;

run – 运行可执行文件。

2.5 挖矿下载工具

另一个示例是使用StdRegProv WMI类操纵注册表以禁用保护机制的挖矿下载工具(T1112,修改注册表)。在执行初期,首先检查是否有网络连接,下载工具使用Win32_PingStatus类对知名站点进行了ping操作。该挖矿工具的命令行允许指定要连接的IP地址,在一些案例中,它还可以连接到德国合法的基础设施。

挖矿下载工具技术分析

首先,它尝试使用以下命令创建任务,该任务在启动时会以最高特权级别的SYSTEM身份运行。如果不能获得足够的权限,将会出现失败。

ABR7juF.png!mobile

这意味着,为了保证持久性,它需要足够的特权。否则,它仅仅会启动一次附加的Payload。

随后,恶意软件创建防火墙规则,以便将例外添加到cscript.exe或wscript.exe中。

yieaiiJ.png!mobile

BD37D891CD1C4ABD9C8C781是“WindowsIndexCoreUpdate”,并且是cscript或wscript的BFE路径。

使用winmgmts:{impersonationLevel=Impersonate}!\\.\root\CIMV2:Win32_PingStatus.Address=去ping知名网站,如果成功就退出。

7F3Ajy7.png!mobile

使用“winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv”修改注册表,为%TEMP%路径添加排除项,并禁用Windows Defender组件。

Vreqmmf.png!mobile

E16是&H80000002,表示HKEY_LOCAL_MACHINE。

尝试从URL“hxxp[:]//gmfordown[.]com/game[.]log”、“hxxp[:]//tor4games[.]com/steam[.]lock”或“hxxp[:]//dvx2videofr[.]com/pack[.]dll”检索下一阶段恶意软件,并将其另存为%TMP%\\steam.vbe。如果成功,则会运行脚本。如果失败,则退出。

Nnma2e6.png!mobile

每次启动时,恶意软件都会更改变量和函数的名称,删除自身,并将修改后的版本放在%AppData%//

< random_from_guid >/< random_from_guid >.vbs。随机目录被隐藏。

如果文件是.VBE脚本,则副本也是.VBE。然后在内存中重新编码和解码。

三、总结

Windows管理规范为管理员提供了很多方便,但也为恶意行为者提供了很多方便。由于WMI允许实施无文件攻击,因此我们发现在野攻击者越来越关注这些技术。在合法使用和恶意滥用方面,WMI都提供了比较高的灵活性,可以获取有关系统的信息,甚至为远程计算机和应用程序进行配置,安排在特定时间运行进程,启用和禁用日志记录以获取代码执行。

这些特性使其成为恶意行为者的理想组件,特别是在侦查方面。除此之外,WMI对于执行、持久化、横向移动、命令和控制、渗出等环节都有比较大的影响。作为一种不太典型的间接方法,它也可以成为防御逃避的一种方式。

自2018年首次发现以来,Kingminer一直在不断发展,当前版本使用事件触发执行-WMI事件订阅(T1546.003)的技术。更重要的是,WMI处于一个非常微妙的位置,可以检查是否安装了特定的Windows Update,并阻止受感染计算机上的远程桌面访问。对于勒索软件来说,WMI也可以发挥重要的作用。作为其中的典型案例,我们选择了Maze进行介绍,该恶意软件会使用WMI来删除Windows备份。将视线转移到银行领域,我们关注到知名恶意软件Emotet也使用了WMI。利用间接命令执行(T1202)技术,攻击者可以逃避某些安全产品的检测。PowerShell下载工具sLoad经常会滥用BITS,但我们看到,它也并不是唯一的攻击思路。

SLoad在侦查阶段会使用一些WMI类,例如Win32_Processor、Win32_OperatingSystem和Win32_LogicalDisc这些类来获取系统信息。我们选择了比较典型的挖矿下载工具进行分析,在该工具中,通过WMI操纵注册表来禁用保护机制(T1112,修改注册表)。另外,它还会通过Win32_PingStatus类ping知名网站,从而确认是否连接到互联网。

尽管WMI滥用已经持续了近十年,但它仍然在继续发展。如今,它已经可以在多种新型场景中发生,并影响着大量攻击技术。从Stuxnet开始,现代恶意软件结合了基于WMI的逃避技术,遗憾的是,这些看似微小的技术已经能够阻止攻击,或使目标全面沦陷。

【责任编辑:赵宁宁 TEL:(010)68476606】


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK