原文链接:OilRig’s persistent attacks using cloud service-powered downloaders
译者:知道创宇404实验室翻译组
前言
ESET 的研究人员发现了一批新的 OilRig 下载器,其中包括 SampleCheck5000(SC5k v1-v3)、OilCheck、ODAgent 和 OilBooster。这些下载器的特点在于它们使用各种合法的云服务 API 进行 C&C 通信和数据窃取,包括 Microsoft Graph OneDrive 或 Outlook API,以及 Microsoft Office Exchange Web Services(EWS)API。
这些下载器通常利用由 OilRig 运营的共享账户,该账户可能是电子邮件或云存储账户,以与 OilRig 运营人员进行信息交流。一般而言,多个受害者可能共享同一个账户。下载器通过访问该账户,下载运营人员存储的命令和其他有效载荷,并上传命令输出和存储的文件。
ESET 在 2021 年 11 月发现了该系列中最早的 SC5k (v1)下载器,当时它被用于 OilRig 的 Outer Space 攻击活动。
SC5k 下载器每隔几个月就会发布一个新的版本,在本文中,我们将集中讨论 OilRig 在 2022 年开发的所有版本,并详细研究这些下载器的操作方式。此外,我们还将这些下载器与其他使用电子邮件 C&C 协议的 OilRig 后门程序进行比较。最后,本文深入研究了 OilRig 如何保持对特定以色列组织的访问。
需要注意的是,本文研究的所有下载器都安装在已受多个 OilRig 工具影响的网络中。这进一步证明了 OilRig 在持续针对同一组织的事实,并显示出他们决心在已受感染的网络中持续行动。
本文的要点:
- 在整个 2022 年,OilRig 积极开发和使用了一系列具有类似逻辑的下载器:包括三个新的下载器(ODAgent、OilCheck、OilBooster)和更新版本的 SC5k 下载器。
- 这些下载器使用了多个合法的云服务 API,用于 C&C 通信和数据泄漏:包括 Microsoft Graph OneDrive API、Microsoft Graph Outlook API 和 Microsoft Office EWS API。
- 目标全部位于以色列,包括医疗行业的组织、制造公司、地方政府组织以及其他组织。
- 所有目标先前都受到过多次 OilRig 攻击活动的影响。
1 归因
OilRig,也称为 APT34、Lyceum、Crambus 或 Siamesekitten,是一个自 2014 年以来一直活跃的网络间谍组织。该组织主要针对中东国家的政府机构以及化学、能源、金融和电信等各行业。
OilRig 在 2018 年和 2019 年开展了针对黎巴嫩和阿拉酋的 DNSpionage 攻击活动。2019 年和 2020 年,OilRig 通过 HardPass 继续进行其攻击活动,利用 LinkedIn 针对中东地区的能源和政府部门发起攻击。2021 年,OilRig 更新了其 DanBot 后门,并开始部署 Shark、Milan 和 Marlin 等后门,这些情况在 ESET Threat Report 2021年度第三季度中有提及。
在 2022 年和 2023 年,该组织利用其新的后门 Solar 和 Mango 对以色列的地方政府实体和医疗组织进行了多次攻击。2023 年,OilRig 通过 PowerExchange 和 MrPerfectionManager 后门对中东地区的组织进行攻击,并使用相关工具收集内部邮箱账户凭据,然后利用这些账户进行信息渗透。
我们高度确信将 SC5k(v1-v3)、ODAgent、OilCheck 和 OilBooster 下载器归因给 OilRig,原因如下:
- 目标相似: 这些下载器是专门针对以色列组织部署的,符合 OilRig 典型的攻击目标。受害者的行业垂直领域也与 OilRig 的兴趣相符,例如,我们曾看到 OilRig 之前针对以色列医疗行业以及以色列地方政府部门。
- 代码相似: SC5k v2 和 v3 下载器是从最初版本自然演变而来的,该版本之前用于 OilRig 的 Outer Space 攻击活动。ODAgent、OilCheck 和 OilBooster 都是相似的逻辑,并且都使用各种云服务提供商进行 C&C 通信,与 SC5k、Marlin、PowerExchange 和 MrPerfectionManager 相同。 虽然这些下载器并非 OilRig 独有,但它们的复杂性较低,在系统上通常产生不必要的噪音,这是我们在其 Out to Sea 攻击活动中先前观察到的做法。
2 概述
2022 年 2 月,我们检测到一个新的 OilRig 下载器,并根据其文件名将其命名为 ODAgent:ODAgent.exe。ODAgent 是一个 .NET 下载器,类似于 OilRig 的 Marlin 后门,它使用 Microsoft OneDrive API 进行 C&C 通信。与支持全面后门命令列表的 Marlin 不同,ODAgent 的狭隘功能仅限于下载和执行有效负载,以及泄露暂存文件。
ODAgent 是在以色列一家制造公司的网络中被检测到的,有趣的是,同一组织此前曾受到 OilRig 的 SC5k 下载器的影响,并在 2022 年 4 月至 6 月之间受到另一个新的下载器 OilCheck 的影响。SC5k 和 OilCheck 具有与 ODAgent 相似的功能,但它们使用基于云的电子邮件服务进行 C&C 通信。
在 2022 年全年,我们观察到相同的模式在多个场合被重复使用,新的下载器部署在先前 OilRig 目标的网络中:例如,在 2022 年 6 月至 8 月之间,我们在以色列一家地方政府组织的网络中检测到了 OilBooster、SC5k v1 和SC5k v2 下载器以及 Shark 后门。后来,我们在以色列一家医疗机构的网络中检测到了另一个 SC5k 版本(v3),这也是先前的 OilRig 受害者。
SC5k 是一个 .NET 应用程序,其目的是使用 Office Exchange Web 服务 (EWS) API 下载并执行其他 OilRig 工具。新版本引入了一些变化,使分析人员更难检索和分析恶意负载 (SC5k v2) 和新的外泄功能 (SC5k v3)。
图 1 中总结的所有下载器都具有相似的逻辑,但具有不同的实现,并且随着时间的推移显示出越来越复杂的特征,将 .NET 二进制文件与 C/C++ 应用程序交替使用,改变滥用于 C&C 通信的云服务提供商,以及其他细节。
OilRig 仅对位于以色列的一小部分目标使用了这些下载器,根据 ESET 遥测数据,所有这些目标在数月前曾受到其他 OilRig 工具的持续攻击。由于组织通常访问 Office 365 资源,因此 OilRig 的云服务驱动的下载器更容易融入常规的网络流量中,显然这也是攻击者选择将这些下载器部署到一小群特别有趣、反复受害的目标的原因。
截至目前,有这些组织(仅位于以色列)受到了影响:制造公司(SC5k v1、ODAgent 和 OilCheck)、地方政府组织(SC5k v1、OilBooster 和 SC5k v2)、医疗保健组织 (SC5k v3)与以色列其他身份不明的组织 (SC5k v1)。
遗憾的是,我们没有关于初始攻击的信息,无法确认攻击者是否能够重复成功地破坏相同的组织,或者他们是否以某种方式设法在部署各种工具之间保持他们在网络中的行动。
3 技术分析
在本节中,我们对 OilRig 在 2022 年全年使用的下载器进行了技术分析,并详细介绍了他们如何滥用各种云存储服务和基于云的电子邮件提供商进行 C&C 通信。所有这些下载器都遵循类似的逻辑。
- 他们使用共享(电子邮件或云存储)帐户与 OilRig 操作员交换信息;同一个帐户可用于多个受害者。
- 他们访问此帐户以下载操作员暂存的命令和其他有效负载,并上传命令输出和暂存文件。
在我们的分析中,我们重点关注下载器的这些特征:
- 网络通信协议的细节(例如,Microsoft Graph API 与 Microsoft Office EWS API)。
- 用于区分共享帐户中不同攻击者暂存的信息和下载程序上传的信息的机制,包括区分从各种受害者上传的信息的机制。
- 下载程序如何处理从共享帐户下载的命令和有效负载的细节。
表 1 总结并比较了各个下载器如何实现这些特征;然后,我们详细分析了第一个(SC5k)和最复杂的(OilBooster)下载器,分别作为滥用基于云的电子邮件服务和云存储服务的工具示例。
机制 | SC5k v1 | SC5k v2 | SC5k v3 | OilCheck | OilBooster | ODAgent |
---|---|---|---|---|---|---|
C&C协议 | 共享的 Microsoft Exchange 电子邮件帐户,C&C 通信嵌入到草稿邮件中。 | 共享的 OneDrive 帐户;文件具有各种扩展名以区分操作类型。 | Microsoft Office EWS API | Microsoft Graph(Outlook)API | Microsoft Graph(OneDrive)API | |
网络通信 | Microsoft Office EWS API | Microsoft Graph(Outlook)API | Microsoft Graph(OneDrive)API | |||
受害者识别机制 | 电子邮件草稿的 sg 扩展属性设置为<victimID> 。 |
未知的扩展电子邮件属性设置为<victimID> 。 |
电子邮件草稿的 From 字段设置为<victimID> @yahoo.com;电子邮件正文中包含当前的 GMT 时间。 |
电子邮件草稿的 zigorat 扩展属性设置为<victimID> 。 |
所有与特定受害者相关的通信上传到名为 <victimID> 的特定受害者子目录中。 |
电子邮件草稿的 From 字段设置为<victimID> @yahoo.com;电子邮件正文中包含当前的 GMT 时间。 |
保持活动消息 | 电子邮件草稿的 type 扩展属性设置为 3;电子邮件正文中包含当前的 GMT 时间。 | 未知的电子邮件草稿的扩展属性设置为 0;电子邮件正文为空。 | 电子邮件草稿的 From 字段设置为<victimID> @yahoo.com;电子邮件正文中包含当前的 GMT 时间。 |
电子邮件草稿的 type 扩展属性设置为 3;电子邮件正文中包含当前的 GMT 时间。 | 一个名为<victimID> /setting.ini的文件。 |
一个名为<victimID> /info.ini的文件。 |
下载文件 | 电子邮件草稿的 type 扩展属性设置为 1;附加文件具有除.json 之外的任何扩展名。 | 未知的电子邮件草稿的扩展属性设置为 1;附加文件具有除.bin 之外的任何扩展名。 | 电子邮件草稿的 From 字段设置为<victimID> @outlook.com,消息类别设置为文件。 |
电子邮件草稿的 type 扩展属性设置为 1;附加文件具有.biz 扩展名。 | 一个在<victimID> /items 子目录中的扩展名为.docx的文件。 |
一个在<victimID> /o子目录中的非 JSON 文件。 |
泄露文件 | 电子邮件草稿的 type 扩展属性设置为 2;附加文件具有.tmp1 扩展名。 | 未知的电子邮件草稿的扩展属性设置为 2;附加文件具有.tmp 扩展名。 | 电子邮件草稿的 From 字段设置为<victimID> @aol.com,文件类别。 |
电子邮件草稿的 type 扩展属性设置为 2;附加文件具有.biz 扩展名。 | 一个在<victimID> /items子目录中的扩展名为.xlsx 的文件。 |
一个在<victimID> /i子目录中的非 JSON 文件。 |
执行命令 | 电子邮件草稿的 type 扩展属性设置为 1;附加文件具有.json 扩展名。 | 未知的电子邮件草稿的扩展属性设置为 1;附加文件具有.bin 扩展名。 | 电子邮件草稿的 From 字段设置为<victimID> @outlook.com,没有文件类别。 |
电子邮件草稿的 type 扩展属性设置为 1;附加文件具有.biz 扩展名。 | 一个在<victimID> /items子目录中的扩展名为.doc 的文件。 |
一个在<victimID> /o 子目录中的 JSON 文件。 |
命令输出 | 电子邮件草稿的 type 扩展属性设置为 2;附加文件具有.json 扩展名。 | 未知的电子邮件草稿的扩展属性设置为 2;附加文件具有.bin 扩展名。 | 电子邮件草稿的From字段设置为<victimID> @aol.com,文本类别。 |
电子邮件草稿的 type 扩展属性设置为 2。 | 一个在<victimID> /items子目录中的扩展名为.xls 的文件。 |
一个在<victimID> /i子目录中的 JSON 文件。 |
3.1 SC5k 下载器
SampleCheck5000(或SC5k)下载器是一个 .NET 应用程序,也是 OilRig 系列轻量级下载器中的第一个,我们之后发现了两个较新的变体。
所有 SC5k 变体都使用 Microsoft Office EWS API 与共享 Exchange 邮件帐户进行交互,作为下载其他有效负载和命令以及上传数据的一种方式。在所有这些下载器版本中,电子邮件草稿及其附件是 C&C 流量的主要载体,但较新的版本增加了 C&C 协议的复杂性(SC5k v3)和检测规避功能(SC5k v2)。本节重点介绍这些差异。
3.1.1 用于 C&C 通信的 Exchange 帐户
在运行时,SC5k 通过 EWS API 连接到远程 Exchange 服务器,从与攻击者(通常还有其他受害者)共享的电子邮件帐户中获取附加的载荷和执行命令。默认情况下,通过硬编码的凭据访问 Microsoft Office 365 Outlook 帐户使用URL,但是某些 SC5k 版本如果有一个硬编码名称的配置文件(setting.key、set.idl)和相应的凭据时,还具有连接到其他远程 Exchange 服务器的能力。
我们已经看到 SC5k 版本使用了以下电子邮件地址进行 C&C 通信,其中第一个为下载器命名:
在 SC5k v2 中,默认的 Microsoft Exchange URL、电子邮件地址和密码不包含在主模块中,而是将下载器的代码拆分成多个模块。我们仅检测到主应用程序的变体,该应用程序登录到远程 Exchange 服务器,遍历 Drafts 目录中的电子邮件,并从其附件中提取其他有效负载。但是,此应用程序依赖于检测到的样本中不存在的两个外部类,并且可能是在缺失的模块中实现的:
- class init 应提供一个接口,用于获取登录远程 Exchange 帐户所需的电子邮件地址、用户名和密码,以及来自其他模块的其他配置值。
- class structure 应实现用于加密、压缩、执行下载的有效负载和其他辅助函数的函数。
引入这些更改可能是为了让分析人员更难检索和分析恶意负载,因为缺少的两个类对于识别用于恶意软件分发的 Exchange 帐户至关重要。
3.1.2 C&C 和外泄协议
在所有版本中,SC5k 下载器重复使用 Microsoft.Exchange.WebServices.Data 命名空间中的 ExchangeService .NET 类,通过 EWS API 与远程 Exchange 服务器连接。连接后,SC5k 读取 Drafts 目录中带附件的电子邮件,以提取攻击者的命令和附加的载荷。相反,在每次连接中,SC5k 通过在同一电子邮件帐户中创建新的电子邮件草稿来从本地分级目录中渗透文件。样本间的分级目录路径有所不同。
有趣的是,这个下载器的运营商和各种实例都可以区分共享电子邮件帐户中不同类型的草稿。首先,每个电子邮件草稿都有一个包含<victimID>
,它允许将同一个 Exchange 帐户用于多个 OilRig 受害者:
- 对于 v1 和 v2,下载程序通过 SetExtendedProperty 方法将
<victimID>
作为电子邮件草稿的自定义属性传输。 - 对于 v3,下载器将
<victimID>
合并到电子邮件草稿的 From 字段中。
<victimID>
通常使用受感染系统的信息(如系统卷 ID 或计算机名称)生成,如图 2 所示。
此外,各种电子邮件属性可用于区分操作员创建的消息(命令、附加有效负载)和恶意软件实例创建的消息(命令输出、泄露的文件)。SC5k v1 和 v2 使用(草稿附件的)文件扩展名来区分,而 SC5k v3 使用电子邮件草稿的 From 和 MailItem.Categories 字段来区分各种操作。在每个阶段,共享电子邮件帐户中的电子邮件草稿都可以用于各种用途,如表 2 中总结阐述的那样。请注意,From 字段中使用的电子邮件地址不是真实的;由于 SC5k 从不发送任何实际的电子邮件,因此这些属性仅用于区分不同的恶意操作。
From | MailItem.Categories | Created by | Details |
---|---|---|---|
<victimID> @yahoo.com |
N/A | SC5k v3 instance | 用于向 C&C 服务器注册受害者,并定期更新以指示恶意软件仍然活跃。 |
<victimID> @outlook.com |
file | C&C server | 附件被解密、解压缩并转储到受害者的计算机上。 |
<victimID> @outlook.com |
Other than file | C&C server | 附加的命令被解密、解压缩,然后作为参数传递给受感染机器上已经存在的文件,可能是命令解释器。 |
<victimID> @aol.com |
file | SC5k v3 instance | 用于从暂存目录中泄露文件。 |
<victimID> @aol.com |
text | SC5k v3 instance | 用于将命令输出发送到 C&C 服务器。 |
更具体地说,SC5k v3 会处理(然后删除)那些在共享 Exchange 账户中 From 字段设置为<victimID>
@outlook.com 的电子邮件消息,并按邮件类别 (MailItem.Categories) 区分命令和其他有效负载:
- 对于有效负载,附加文件将使用硬编码密钥 &5z 进行 XOR 解密,然后进行 gzip 解压缩并倾倒到工作目录中。
- 对于 shell 命令,草案附件将进行 base64 解码,XOR 解密,然后在本地使用 cmd.exe 执行,或者在 SC5k v3 的情况下,使用位于名称
<baseDirectory>
Ext.dll 下的自定义命令解释器执行。然后,通过 Assembly.LoadFrom 加载该文件,并使用作为参数传递的命令调用其扩展方法。
为了与攻击者通信,SC5k v3 使用不同的 From 字段创建草稿消息:<victimID>
@aol.com。这些消息附带的是以前收到的命令的输出或本地暂存目录的内容。文件在上传到共享邮箱之前始终经过 gzip 压缩和 XOR 加密,而 shell 命令和命令输出则经过 XOR 加密和 base64 编码。
最后,SC5k v3 在共享 Exchange 帐户上重复创建一个新草稿,并将 From 字段设置为<victimID>
@yahoo.com,以向攻击者指示此下载程序实例仍处于活动状态。这个构造如图 3 所示,它没有附件,并且每次连接到远程 Exchange 服务器时都会更新。
3.2 其他使用 C&C 协议的 OilRig 工具
除了 SC5k 之外,随后在2022 年和 2023 年还发现了其他显著的 OilRig 工具,这些工具滥用合法的云电子邮件服务的 API 进行渗透和双向 C&C 通信。
OilCheck 是 2022 年 4 月发现的 .NET 下载器,它也使用在共享电子邮件帐户中创建的草稿消息进行 C&C 双向通信。与 SC5k 不同,OilCheck 使用基于 REST 的 Microsoft Graph API 来访问共享的 Microsoft Office 365 Outlook 电子邮件帐户,而不是基于 SOAP 的 Microsoft Office EWS API。SC5k 使用内置的 ExchangeService.NET 类以透明方式创建 API 请求,而 OilCheck 则手动构建 API 请求。上表1 总结了 OilCheck 的主要特点。
2023 年初,另外两个 OilRig 后门被公开记录:MrPerfectionManager 和 PowerExchang,两者都使用基于电子邮件的 C&C 协议来泄露数据。这些工具与本文中研究的 OilRig 下载器之间的一个显着区别是,前者使用受害组织的 Exchange 服务器在攻击者的电子邮件帐户之间传输电子邮件。相反,对于 SC5k 和 OilCheck 而言,恶意软件和操作员都访问了同一个 Exchange 帐户,并通过创建电子邮件草稿进行通信,从不发送实际消息。
无论如何,新的发现证实了 OilRig 从以前使用的基于 HTTP / DNS 的协议转向使用合法的云服务提供商的趋势,以隐藏其恶意通信并掩盖该组织的网络基础设施,同时仍在尝试各种类型的替代协议。
3.3 OilBooster 下载器
OilBooster 是一个 64 位可执行文件(PE),使用 Microsoft Visual C/C++ 编写,静态链接了 OpenSSL 和 Boost库(因此得名)。与 OilCheck 一样,它使用 Microsoft Graph API连接到 MicrosoftOffice 365 帐户。不同的是,它使用此 API 与攻击者控制的 OneDrive(非 Outlook)帐户进行交互,以进行 C&C 通信和外泄。OilBooster 可以从远程服务器下载文件,执行文件和 shell 命令,并泄露结果。
3.3.1概述
执行时,OilBooster 会隐藏其控制台窗口(通过 ShowWindow API),并验证它是否使用命令行参数执行;否则,它将立即终止。
然后,OilBooster 通过组合受感染计算机的主机名和用户名来构建<victimID>
:<hostname>-<username>
。这个标识符后来被用于 C&C 通信:OilBooster 在共享的 OneDrive 帐户上为每个受害者创建一个特定的子目录,然后用于存储后门命令和其他有效负载(由操作员上传),命令结果和泄露的数据(由恶意软件上传)。这样,同一个 OneDrive 帐户可以由多个受害者共享。
图 4 显示了共享 OneDrive 帐户和本地工作目录的结构,并总结了 C&C 协议。
如图 4 所示,OilRig 操作员将后门命令和附加有效载荷分别以 .doc 和 .docx 扩展名的文件上传到 OneDrive 上的特定于受害者的目录。在 C&C 协议的另一端,OilBooster 将命令结果和泄漏的数据上传为分别具有 .xls 和 .xlsx 扩展名的文件。请注意,这些不是真正的 Microsoft Office 文件,而是具有 XOR 加密和 base64 编码值的 JSON 文件。
图 5 显示了 OilBooster 在一个无限循环中生成两个线程实例,每次迭代后休眠 153,123 毫秒:
两个线程都与共享的 OneDrive 帐户交互:
- 下载器线程处理 C&C 通信并执行下载的有效负载。
- 外泄线程从本地暂存目录中泄露数据。
下载器线程连接到攻击者控制的 OneDrive 帐户,并循环访问具有 .doc 和 .docx 扩展名的所有文件,然后下载、解密和分析这些文件,以便在受感染的主机上提取和执行其他有效负载。当前工作目录(部署了 OilBooster 的地方)中名为 items 的本地子目录用于存储下载的文件。如图 6 所示,每次连接尝试都在一个单独的线程实例中处理,每 53,123 毫秒启动一次。
外泄线程循环访问另一个名为 tempFiles 的本地子目录,并将其内容外泄到共享的 OneDrive 帐户,以单独的带有 .xlsx 扩展名的文件上传到那里。在如图6所示,分级目录以每 43,123 毫秒一次的频率在单独的线程实例中清除。
3.3.2 网络通信
对于 C&C 通信和外泄,OilBooster 使用 Microsoft Graph API 访问共享的 OneDrive 帐户,使用各种 HTTP GET、POST、PUT 和 DELETE 请求通过标准 443 端口向 graph.microsoft.com 主机发送。为简洁起见,我们还将这些请求称为 OneDrive API 请求。加密通信由静态链接的 OpenSSL 库实现,该库处理 SSL 通信。
若要使用 OneDrive 帐户进行身份验证,OilBooster 首先通过端口 443 向 login.microsoftonline.com/common/oauth2/v2.0/token
发送具有以下正文的 POST 请求,使用硬编码凭据从 Microsoft 标识平台(授权服务器)获取 OAuth2 访问令牌:
client_id=860b23a7-d484-481d-9fea-d3e6e129e249
&redirect_uri=https://login.live.com/oauth20_desktop.srf
&client_secret=<redacted>
&refresh_token=<redacted>
&grant_type=refresh_token
OilBooster 以这种方式获取新的访问令牌,该令牌将与新的刷新令牌一起用于后续 OneDrive API 请求的 Authorization 标头中。OilBooster 还有一个备份通道,当连续 10 次与 OneDrive 服务器连接失败后,可以从其 C&C 服务器请求新的刷新令牌。如图 7 所示,可以通过在端口 80 上向 host1[.]com/rt.ovf(一个合法但可能被攻击的网站)发送简单的 HTTP GET 请求来获取新的令牌,该请求应在 HTTP 响应中以明文形式包含新的刷新令牌。
图 8 总结了 OilBooster 建立的各种网络连接。
3.3.3 下载器循环
在下载器循环中,OilBooster 重复连接到共享的 OneDrive 帐户,通过在端口 443 上向以下 URL 发送 HTTP GET请求来获取以 .doc 和 .docx 为扩展名的文件列表,这些文件位于名为<victimID>
/items/ 的特定于受害者的子目录中:
graph.microsoft.com/v1.0/me/drive/root:/
/items:/children?$filter=endsWith(name,'.doc')%20or%20endsWith(name,'.docx')&$select=id,name,file
如果 10 次尝试连接后不成功(HTTP_STATUS_DENIED 响应状态),OilBooster 将连接到其后备 C&C 服务器 host1[.]com/rt.ovf,以获取新的刷新令牌,如前所述。
或者,如果指定的目录尚不存在 (HTTP_STATUS_NOT_FOUND),则 OilBooster 首先通过端口 443 向以下 URL 发送 HTTP POST 请求,在共享的 OneDrive 帐户上注册受害者:graph.microsoft.com/v1.0/me/drive/items/root:/
:/children,
并将 JSON 字符串 {“name”: “items”,“folder”:{}} 作为请求正文,如图 9 所示。此请求同时创建整个目录结构<victimID>
/items,攻击者稍后将使用它来存储伪装成 .doc 和 .docx 文件的命令和其他有效负载。
在后续连接(与HTTP_STATUS_OK)中,OilBooster 会处理这些文件以提取和执行有效负载。OilBooster 首先从 OneDrive 帐户下载每个文件,并在处理文件后将其从 OneDrive 中删除。
最后,在浏览了从 OneDrive 子目录下载的所有 .doc 和 .docx 文件后,OilBooster 通过在受害者的 OneDrive 子目录中创建一个名为 setting.ini 的新文件来记录上次连接时间戳(当前 GMT 时间),通过对以下 URL 发出的端口 443 上的 HTTP PUT 请求:graph.microsoft.com/v1.0/me/drive/root:/
/setting.ini:/content
。
- 处理 .doc 文件
从共享 OneDrive 帐户下载的扩展名为 .doc 的文件实际上是 JSON 文件,其中包含要在受感染主机上执行的加密命令。下载<文件名>.doc后,OilBooster 会从文件内容中解析名为 s(解密密钥的一部分)和 c(加密命令)的值。它首先对 c 值进行 base64 解码,然后对 c 值进行异或解密,该密钥是通过将 s 值的最后两个字符附加到 <filename>
的最后两个字符而创建的。
解密后,OilBooster 使用 CreateProcessW API 在新线程中执行命令行,并通过连接到进程的未命名管道读取命令结果。然后,OilBooster 通过端口 443 向 graph.microsoft.com/v1.0/me/drive/root:/
items/<filename:/content
发送 HTTP PUT 请求,将命令结果作为名为 .xls 的新文件上传到共享的 OneDrive 帐户>.xls:/content
。
- 处理 .docx 文件
从共享 OneDrive 帐户下载的扩展名为 .docx 的文件实际上是名为 <filename>.<original extension>
.docx 的压缩和加密文件,这些文件将在受感染的系统上删除和解压缩。OilBooster 首先使用原始完整文件名将加密文件下载到名为 \items 的本地目录。
在下一步中,它使用扩展名为 .<original
的 XOR 密码>作为解密密钥读取和解密文件内容,并将其放入同一目录中的名为 <filename>.<original extension>
.doc 的文件中,同时删除第一个文件。最后,OilBooster 读取并 gzip 解压缩解密的文件,将结果放在与名为<filename>.<original extension>
的文件相同的目录中,并删除另一个文件。
请注意,在此过程中创建了一些不必要的文件,这是 OilRig 的典型特征。我们之前在其 Out to Sea 活动中描述了该组织对受感染主机的嘈杂操作。
3.3.4 外泄循环
在外泄线程中,OilBooster 循环访问名为<currentdir>
\tempFiles 的本地目录的内容,并将文件内容上传到共享 OneDrive 帐户上的受害者文件夹。每个文件都按以下方式处理:
- OilBooster gzip 将原始文件<文件名>.<原始扩展名>并将结果写入同一目录中名为
<filename>.<original extension>
.xlsx 的文件。 - 然后,它使用 XOR 密码和 .
<original 扩展名>
作为密钥对压缩文件进行加密。如果没有文件扩展名,则使用 4cx 作为默认键。
最后,将加密文件上传到 OneDrive 帐户,并删除本地文件。
3.4 ODAgent 下载器
ODAgent 是一个 .NET 应用程序,它使用 Microsoft Graph API 访问攻击者控制的 OneDrive 帐户,以进行 C&C 通信和外泄。简而言之,ODAgent 是 OilBooster 的 .NET 前身。与 OilBooster 类似,ODAgent 会重复连接到共享的 OneDrive 帐户,并列出特定于受害者的文件夹的内容,以获取其他有效负载和后门命令。
如图 10 所示,ODAgent 随后分析每个远程文件的元数据。随后,它使用与文件关联的 mimeType 键的值来区分后门命令(格式化为 JSON 文件)和加密有效负载——这与 OilBooster 不同,后者使用文件扩展名进行区分。在本地处理文件后,ODAgent 会通过 OneDrive API 从远程 OneDrive 目录中删除原始文件。
如果下载的文件是 JSON 文件,ODAgent 将分析 a1(命令 ID)、a2(加密的后门命令)和 a3(机密)参数。它首先通过使用硬编码值 15a49w@] 对提供的密钥进行异运来派生会话密钥。然后,它使用此会话密钥对后门命令进行 base64 解码和 XOR 解密。表 3 列出了 ODAgent 支持的所有后门命令。
后门命令 | 描述 |
---|---|
ODT> | 返回当前工作目录的路径。 |
dly><delaytime> |
将每次连接后等待的秒数配置为 <delaytime> 。 |
<commandline> |
通过本机 API 执行指定的 <commandline> ,并返回命令输出。 |
从共享 OneDrive 帐户下载的其他(非 JSON)文件是文件和其他有效负载,两者都已加密。ODAgent XOR 使用硬编码密钥 15a49w@] 解密这些文件,并将它们放在本地<currentdir>
\o 目录中的相同文件名下。如果原始文件的扩展名为 .c,则其内容也会被 gzip 解压缩(然后从文件名中删除扩展名)。
在每个连接结束时,ODAgent 会将本地目录 <currentdir>
\i 的内容上传到共享 OneDrive 帐户上的 <victimID>
/i 目录,并保留具有添加的 .c 扩展名的原始文件名。
4 结论
在整个 2022 年,OilRig 开发了一系列新的下载器,所有下载器都使用合法的云存储和基于云的电子邮件服务作为他们的 C&C 和数据泄露渠道。这些下载器通常是在几个月内针对相同的以色列目标。由于所有这些目标之前都受到其他 OilRig 工具的影响,因此我们得出结论,OilRig 使用这类轻量但有效的下载器作为其维持对目标网络访问的首选工具。
这些下载器与 MrPerfectionManager 和 PowerExchange 后门有相似之处,这是 OilRig 工具集的最新补充,它们使用基于电子邮件的 C&C 协议。除了 SC5k、OilBooster、ODAgent 和 OilCheck 使用攻击者控制的云服务帐户,而不是受害者的内部基础设施。所有这些活动都证实了 OilRig 正在转向使用合法的云服务提供商进行 C&C 通信,以隐藏恶意通信并掩盖该组织的网络基础设施。
与 OilRig 的其他工具集一样,这些下载器并不特别复杂,而且在系统上也显得不必要的嘈杂。然而,对新变种的持续开发和测试,对各种云服务和不同编程语言的实验,以及对同一目标的反复重新入侵的执着,使得 OilRig 成为一个值得关注的组织。
5 文件
SHA-1 | Filename | Detection | Description |
---|---|---|---|
0F164894DC7D8256B66D0EBAA7AFEDCF5462F881 | CCLibrary.exe | MSIL/OilRig.A | OilRig downloader – SC5k v1. |
2236D4DCF68C65A822FF0A2AD48D4DF99761AD07 | acrotray.exe | MSIL/OilRig.D | OilRig downloader – SC5k v1. |
35E0E78EC35B68D3EE1805EECEEA352C5FE62EB6 | mscom.exe | MSIL/OilRig.D | OilRig downloader – SC5k v1. |
51B6EC5DE852025F63740826B8EDF1C8D22F9261 | CCLibrary.exe | MSIL/OilRig.A | OilRig downloader – SC5k v1. |
6001A008A3D3A0C672E80960387F4B10C0A7BD9B | acrotray.exe | MSIL/OilRig.D | OilRig downloader – SC5k v1. |
7AD4DCDA1C65ACCC9EF1E168162DE7559D2FDF60 | AdobeCE.exe | MSIL/OilRig.D | OilRig downloader – SC5k v1. |
BA439D2FC3298675F197C8B17B79F34485271498 | AGSService.exe | MSIL/OilRig.D | OilRig downloader – SC5k v1. |
BE9B6ACA8A175DF61F2C75932E029F19789FD7E3 | CCXProcess.exe | MSIL/OilRig.A | OilRig downloader – SC5k v1. |
C04F874430C261AABD413F27953D30303C382953 | AdobeCE.exe | MSIL/OilRig.A | OilRig downloader – SC5k v1. |
C225E0B256EDB9A2EA919BACC62F29319DE6CB11 | mscom.exe | MSIL/OilRig.A | OilRig downloader – SC5k v1. |
E78830384FF14A58DF36303602BC9A2C0334A2A4 | armsvc.exe | MSIL/OilRig.D | OilRig downloader – SC5k v1. |
EA8C3E9F418DCF92412EB01FCDCDC81FDD591BF1 | node.exe | MSIL/OilRig.D | OilRig downloader – SC5k v1. |
1B2FEDD5F2A37A0152231AE4099A13C8D4B73C9E | consoleapp.exe | Win64/OilBooster.A | OilRig downloader – OilBooster. |
3BF19AE7FB24FCE2509623E7E0D03B5A872456D4 | owa.service.exe | MSIL/OilRig.D | OilRig downloader – SC5k v2. |
AEF3140CD0EE6F49BFCC41F086B7051908B91BDD | owa.service.exe | MSIL/OilRig.D | OilRig downloader – SC5k v2. |
A56622A6EF926568D0BDD56FEDBFF14BD218AD37 | owa.service.exe | MSIL/OilRig.D | OilRig downloader – SC5k v2. |
AAE958960657C52B848A7377B170886A34F4AE99 | LinkSync.exe | MSIL/OilRig.F | OilRig downloader – SC5k v3. |
8D84D32DF5768B0D4D2AB8B1327C43F17F182001 | AppLoader.exe | MSIL/OilRig.M | OilRig downloader – OilCheck. |
DDF0B7B509B240AAB6D4AB096284A21D9A3CB910 | CheckUpdate.exe | MSIL/OilRig.M | OilRig downloader – OilCheck. |
7E498B3366F54E936CB0AF767BFC3D1F92D80687 | ODAgent.exe | MSIL/OilRig.B | OilRig downloader – ODAgent. |
A97F4B4519947785F66285B546E13E52661A6E6F | N/A | MSIL/OilRig.N | Help utility used by OilRig’s OilCheck downloader – CmEx. |
6 网络
IP | Domain | Hosting provider | First seen | Details |
---|---|---|---|---|
188.114.96[.]2 | host1[.]com | Cloudflare, Inc. | 2017-11-30 | 一个合法的、可能被 OilRig 滥用为后备 C&C 服务器的网站。 |
7 MITRE ATT&CK 技术
此表是使用 MITRE ATT&CK 框架版本 14构建的。
策略 | 编号 | 名字 | 描述 |
---|---|---|---|
资源开发 | 编号:T1583.004 | 获取基础结构:服务器 | OilRig 已获取了一台服务器,用作 OilBooster 下载器的备份通道。 |
编号:T1583.006 | 获取基础结构:Web 服务 | OilRig 已经设置了 Microsoft Office 365 OneDrive 和 Outlook帐户,可能还有其他用于 C&C 通信的 Exchange 帐户。 | |
编号: T1587.001 | 开发功能:恶意软件 | OilRig 开发了各种用于其运营的自定义下载器:SC5k 版本、OilCheck、ODAgent 和 OilBooster。 | |
编号: T1583.001 | 获取基础结构:域 | OilRig 已经注册了一个用于 C&C 通信的域名。 | |
编号:T1585.003 | 建立帐户:云帐户 | OilRig 运营商已经创建了新的 OneDrive 帐户,用于他们的 C&C通信。 | |
编号:T1585.002 | 建立帐户:电子邮件帐户 | OilRig 运营商已经注册了新的 Outlook,可能还有其他电子邮件地址,用于他们的 C&C 通信。 | |
T1608型 | 阶段性能 | OilRig 运营商在合法的 Microsoft Office 365 OneDrive 和 Outlook 以及其他 Microsoft Exchange 帐户中暂存了恶意组件和后门命令。 | |
执行 | 编号:T1059.003 | 命令和脚本解释器:Windows 命令行界面 | SC5k v1 和 v2 使用 cmd.exe 在受感染的主机上执行命令。 |
编号:T1106 | 原生 API | OilBooster 使用 CreateProcessW API 函数执行。 | |
防御规避 | T1140型 | 对文件或信息进行反混淆/解码 | OilRig 的下载器使用字符串堆叠来混淆嵌入的字符串,并使用 XOR 密码来加密后门命令和有效载荷。 |
T1480型 | 执行护栏 | OilRig 的 OilBooster 需要任意命令行参数来执行恶意负载。 | |
编号:T1564.003 | 隐藏物:隐藏窗口 | 执行时,OilBooster 会隐藏其控制台窗口。 | |
编号:T1070.004 | 指标删除:文件删除 | OilRig 的下载程序在成功泄露后删除本地文件,并在受感染的系统上处理文件或电子邮件草稿,并从远程云服务帐户中删除这些文件或电子邮件草稿。 | |
T1202型 | 间接命令执行 | SC5k v3 和 OilCheck 使用自定义命令解释器在受感染的系统上执行文件和命令。 | |
编号:T1036.005 | 伪装:匹配合法名称或位置 | OilBooster 模仿合法路径。 | |
T1027型 | 混淆文件或信息 | OilRig 使用了各种方法来混淆嵌入在其下载器中的字符串和有效载荷。 | |
发现 | T1082型 | 系统信息发现 | OilRig 的下载器获取受感染的计算机名称。 |
T1033型 | 系统所有者/用户发现 | OilRig 的下载器获取受害者的用户名。 | |
收集 | 编号:T1560.003 | 存档收集的数据:通过自定义方法存档 | OilRig 的下载器 gzip 在泄露之前压缩数据。 |
编号:T1074.001 | 数据暂存:本地数据暂存 | OilRig 的下载器创建中央暂存目录,供其他 OilRig 工具和命令使用。 | |
命令与控制 | 编号:T1132.001 | 数据编码:标准编码 | OilRig 的下载器 base64 在将数据发送到 C&C 服务器之前对其进行解码。 |
编号:T1573.001 | 加密通道:对称加密 | OilRig 的下载器使用 XOR 密码来加密 C&C 通信中的数据。 | |
T1008型 | 回退通道 | OilBooster 可以使用辅助通道获取新的刷新令牌以访问共享的 OneDrive 帐户。 | |
T1105型 | Ingress 工具转移 | OilRig 的下载器能够从 C&C 服务器下载其他文件以供本地执行。 | |
编号:T1102.002 | Web 服务:双向通信 | OilRig 的下载器使用合法的云服务提供商进行C&C(命令与控制)通信。 | |
外泄 | T1020型 | 自动外泄 | OilRig 的下载器会自动将暂存文件泄露到 C&C 服务器。 |
T1041型 | 通过 C2 通道外泄 | OilRig 的下载器使用他们的 C&C 频道进行渗透。 | |
编号:T1567.002 | 通过 Web 服务外泄:外泄到云存储 | OilBooster 和 ODAgent 将数据泄露到共享的 OneDrive 帐户。 | |
T1567型 | 通过 Web 服务外泄 | SC5k 和 OilCheck 将数据泄露到共享的 Exchange 和 Outlook 帐户。 |
原文始发于Seebug(知道创宇404实验室翻译组):OilRig APT 攻击行为分析