译者:知道创宇404实验室翻译组
原文链接:https://labs.sentinelone.com/an-inside-look-at-how-ryuk-evolved-its-encryption-and-evasion-techniques/

前言

在过去的三个月里,勒索软件上升了50%,在一系列高调攻击之后,Ryuk勒索软件获得了最多的关注。上个月,有报道称,Ryuk攻击了UHS的医院网络,攻击范围为美国各海岸之间UHS的医疗设施。这一攻击使得许多医院工作人员无法正常使用实验室、放射检查和患者记录,这导致工作人员不得不使用纸笔对患者进行分类。目前,Ryuk每周攻击大约20个组织,这个数字可能会不断扩大。

Ryuk利用了TrickBotEmotet等其他工具,快速响应了Zerologon等新暴露的漏洞。我们还看到,Ryuk自出现以来一直在进行迭代以逃避检测,显著提高了从执行到完全加密所需的时间,这使得我们的防范变得越发艰难。

这篇文章介绍了Ryuk自2018年以来的发展历程,并探索了Ryuk加密速度和规避技术的改进。我们详细介绍了一种可以用来从内存中提取Ryuk可执行文件并将其转储到文件中以进行进一步检查的方法。

概述

当Ryuk出现时,人们最初以为它是由开发Hermes勒索软件的同一攻击者开发的。后来,Hermes在黑市上出售,攻击者购买了该框架,并将其转换为我们今天所知的Ryuk。

目前的攻击使用了Emotet、Trickbot和Ryuk的组合。最近几周,有人甚至观察到了Ryuk背后的攻击者使用ZeroLogon来扩大他们的影响范围并扩大勒索软件的有效载荷。虽然Ryuk有效负载并不特别包含ZeroLogon功能,但该漏洞在攻击链的早期阶段被利用。攻击者可以利用Cobalt Strike和类似框架中的现有功能来实现权限提升。很快,ZeroLogon将成为攻击者工具中的一个主要部分。

Ryuk 2018 - 2020

如果我们将早期版本的Ryuk与最新版本进行比较,我们可以注意到一些有趣的变化。在最新版本中,Ryuk混淆了其硬编码字符串,使AV供应商更难检测到:

图1:Ryuk 2018 vs 2020

Ryuk 2020也通过复制自身来提高加密速度,我们将在下面详细讨论。

勒索软件使用RSA和AES加密扩展名为.ryk的文件,为加密的每个文件创建一个新线程。Ryuk还使用了CryptGenRandom API,该API使用随机字节填充缓冲区以生成数据加密密钥。

图2:随机生成字节

新一代的BCOMRandom API可能会在下一代的CNOMRANSWARE API中提供相同的结果:新一代的BCOMRANTARES API可能会被弃用。

早期的Ryuk二进制文件与我们最近的示例之间的一个显著区别是完全加密本地磁盘所需的时间。2018年的二进制文件加密本地磁盘需要将近一个小时,而2020年版本只需要不到10分钟。

图3:2018 Ryuk慢加密

更新的Ryuk变种加快了加密速度,这给企业安全工作增加了额外的负担。在造成重大破坏之前,检测、减轻和根除Ryuk的反应时间非常有限,许多组织都无法及时控制勒索软件。这种攻击如果发生在UHS的网络中,就要求医院工作人员立即关闭计算机系统,以防止更多的机器受到Ryuk的感染。

Ryuk 2020

这个特定的Ryuk样本(f8bc1638ec3b04412f708233e8586e1d91f18f6715d68cba1a491d4a7f457da0)具有已签名的数字证书,该证书已被其颁发者明确吊销。

  • Serial Number: 0a 1d c9 9e 4d 52 64 c4 5a 50 90 f9 32 42 a3 0a
  • Subject: CN = K & D KOMPANI d.o.o

图4:证书吊销

当Ryuk开始执行时,它会复制自身并将这个副本转储到同一个目录中,其中包含一个随机生成的8个字符的名称。但是,文件名总是以“…lan.exe”. 这些重复文件有助于启动多个线程。Ryuk使用硬编码字符串列表来搜索和停止特定运行的进程(图1)。然后,它尝试将自身注入到其他进程中。

图5:Droppers

Ryuk下一步开始执行某些命令行工具来实现一些破坏性的效果。它试图通过利用cmd.exe /c 'WMIC.exe shadowcopy delete'来阻止用户恢复。接下来是cmd.exe /c 'vssadmin.exe Shadows /all /quiet”cmd.exe /c 'bcdedit /set {default} recoveryenabled No & bcdedit /set {default}'

图6:未停止的服务

在Windows WoW目录中创建了一个icacs .exe,它赋予系统上的驱动器的完全权限,这样Ryuk就有了加密所有驱动器所需的一切。

图7-1:授予权限

图7-2:授予icacls权限

从内存中提取可执行文件

为了避免被发现,恶意软件使用了各种各样的逃避技术,比如自我注入。Ryuk通过分配内存来使用这项技术来写入PE文件。在此之后,它调用VirtualProtect来更改节的执行权限。

从内存中提取可执行文件的一种快速方法是在调试器中运行二进制文件,并在分配的内存位置设置断点。为此,我们使用x32dbg,并在VirtualAlloc上设置一个断点。需要注意的是,在为VirtualAlloc设置断点时,应该按照jmp例程进入Kernelbase,以获取新分配区域的基址,并在返回时设置断点。调试器运行后,将命中断点。按照EAX寄存器到内存转储部分查看MZ是否存在。

图8:转储二进制文件

当进程运行时,它将到达断点VirtualAlloc,在EAX中是新分配的虚拟内存部分,开始将其自身的副本加载到此部分。在EAX到内存转储之后,显示内存已被分配用于加载。当继续该过程时,dump窗口在到达多次设置的断点时开始填充数据。一旦确认二进制文件已完全加载到此部分,就可以转储二进制数据以供检查。

图9:将内存转储到文件

下一步是右键单击内存转储并在内存映射中跟踪转储。这样就可以看到转储在内存中的分配位置,然后可以从这里将内存转储到文件中。但是,如图9所示,注意转储内存没有有效的PE头文件。我们必须修改头部,以便PE(图10)可以在您选择的工具中工作。

图10:修复Headers

这个特殊的二进制文件很容易修改。打开你最喜欢的Hex编辑器,加载文件,高亮显示MZ之前的所有内容并删除它。有时,如果一个内存块损坏了magic字节,那么仅仅删除多余的字节是行不通的。在这种情况下,您可以复制一个已知良好的header,并将其添加到损坏的PE标头中,以生成有效的PE。

图11:三个内存转储文件

如果从一开始就遵循该过程,则断点将额外命中VirtualAlloc。我用上面显示的技术转储了内存,以说明为什么Ryuk在系统上的加密速度如此之快:

图12:Ryuk 2020的速度

结论

联邦调查局表示,Ryuk勒索软件的演员已经获得了6100多万美元。随着Ryuk攻击导致组织瘫痪,这个数字将很快超过1亿。

这些攻击者使用的技术很容易理解,也相对简单。他们利用的弱点是组织无法迅速发现和补救,但这是一个可以解决的问题。因此,我们可以采用适当的保护措施来防范勒索软件。

在SentinelOne,我们跟踪不断变化的Ryuk变种,以了解这个勒索软件家族添加的最新功能。在这篇文章中,我们详细介绍了Ryuk是如何提高加密速度的,以及它使用的逃避方法。在以后的文章中,我们将介绍Ryuk的网络层以及在分析过程中收集到的其他信息。

Samples

SHA256: f8bc1638ec3b04412f708233e8586e1d91f18f6715d68cba1a491d4a7f457da0
SHA1: c3fa91438850c88c81c0712204a273e382d8fa7b

SHA256: 7e28426e89e79e20a6d9b1913ca323f112868e597fcaf6b9e073102e73407b47
SHA1: 5767653494d05b3f3f38f1662a63335d09ae6489

MITRE ATT&CK

Command and Scripting Interpreter T1059
Native API T1106
Application Shimming T1546.011
Process Injection T1055
Masquerading T1036
Virtualization/Sandbox Evasion T1497.001
Deobfuscate/ Decode Files T1140
Obfuscated Files or Information T1027
System Time Discovery T1124
Security Software Discovery T1518.001
Process Discovery T1057
File and Directory Discovery T1083
System Information Discovery T1082
Archive Collected Data T1560
Encrypted Channel T1573


Paper 本文由 Seebug Paper 发布,如需转载请注明来源。本文地址:https://paper.seebug.org/1380/