师出同门,勒索不休:GandCrab退役后SODINOKIBI登场

2019年4月,Cybereason Nocturnus团队遇到了一种名为Sodinokibi(又名Sodin、REvil)的新型勒索软件。Sobinokibi具有很强的隐蔽性,采取了多种措施来防止检测。

Sodinokibi的作者疑似与另一勒索软件的作者——GandCrab有关。GandCrab是一款于近退役的勒索软件,因为其幕后团队称自己“已赚到了足够多的钱”。在过去的勒索软件事件中,全球有近40%的感染是由GandCrab造成的。如果这种关联是准确的,那么Sodinokibi可能有朝GandCrab为目标发展的潜质。

勒索软件对许多组织机构来说仍然是一个巨大的商业隐患,像Sodinokibi和GandCrab这样的高规避性勒索软件每年都会对它们造成高额的损失。

在本文中,我们将对Sodinokibi勒索软件进行深入的技术分析,重点关注它的传递方法以及为避免AV检测而采取的防御机制。

要点

· 大多Sodinokibi早期袭击事件都发生在亚洲,最近攻击有转移到欧洲的趋势。

· Sodinokibi早期利用的是中小企业服务器或是其它一些基础设施中的漏洞,随着时间的推移,我们还看到了其它的感染媒介,比如网络钓鱼和漏洞利用工具包。

· 调查过程中我们还发现:Sodinokibi会在受感染的机器中搜索由韩国安全供应商“Ahnlab”制作的AV产品,并注入其payload。

· 在这项研究中,有证据表明Sodinokibi勒索软件是由GandCrab团队开发的。

介绍

Sodinokibi于今年4月底首次发现,当时是通过利用Oracle WebLogic漏洞(CVE-2019-2725)安装在目标计算机上的,随后才开始通过漏洞利用工具包和垃圾邮件进行传播。

Sodinokibi能阻止用户对目标机器数据的访问,使公司机构完全丧失业务能力。到目前为止,它还没有自我传播的能力,但一旦实现,其影响可能会扩展到整个网络。

这个恶意软件也显示了勒索软件的复苏迹象,虽然有报告说明,当前勒索软件的攻击事件正在减少,但我们看到这个局面还是不容忽视的,而且在今年第二季度,勒索软件平均赎金的额度已经翻了一番。公司机构都需要强大的安全产品,在面对此类攻击时才能从容不迫。

威胁分析

Sodinokibi幕后黑手使用的初始感染媒介是带有恶意链接的钓鱼邮件。点击后,会下载一个看似合法的zip文件。VirusTotal对该zip文件的检测率非常低,表明大多数安全厂商都没有将其初始payload标记。由于Sodinokibi的初始payload未被检测到,因此能绕过大多组织机构的第一层防御。

图1.VirusTotal上,Sodinokibi对该zip文件检测率

该zip文件里面是一个混淆的JavaScript文件,当用户双击后会被WScript执行。

图2.WScript执行恶意JavaScript 
图3.Cybereason解决方案中所示的第一阶段流程

此JavaScript文件通过重新排列内部名为eiculwo的列表中的字符,来消除自身的混淆。

图4.混淆的JavaScript文件的前半部分

位于JavaScript文件中的变量vhtsxspmssj是一个混淆的PowerShell脚本,攻击者会在稍后的攻击中对其去混淆。

图5.去混淆的JavaScript文件

JavaScript文件对变量vhtsxspmssj进行反混淆处理,并将其保存在名为jurhtcbvj.tmp的目录中。

接着脚本会下载二级payload,不是将其嵌入到初始脚本中。

我们遇到的数个恶意样本都是通过此脚本来下载二级payload,而不是将其嵌入到初始脚本中。

文件jurhtcbvj.tmp是一个填充了多个感叹号的PowerShell脚本,JavaScript文件通过启动PowerShell命令来删除其中的感叹号并执行此脚本。

图6.混淆的PowerShell脚本jurhtcbvj.tmp
图7.用于替换感叹号并执行PowerShell脚本的命令

接着jurhtcbvj.tmp解码另一个Base64编码的脚本并执行它。解码后的脚本包含一个.NET模块(也使用Base64编码),再将模块解码并加载到PowerShell进程内存中,一旦加载后,将执行Install1函数。 

图8.模块test.dll加载到内存中

模块test.dll只是此交付过程的众多层之一。函数Install1里还包含了另一个用Base64编码的模块,Install1会解码此模块并将其加载到内存中。 

图9.Base64编码模块Install1
图10.将模块Install1加载到内存中

如果恶意软件无法获得足够高的权限,它将尝试绕过用户访问控制。

加载器第一阶段:UAC绕过

加载到内存中的模块用作恶意软件下一阶段的加载程序。该模块使用CheckTokenMembership来确认进程的权限,如果进程的权限不足,则会尝试绕过用户访问控制(UAC)。为了绕过UAC,恶意软件将自身写入注册表项Software \ Classes \ mscfile \ shell \ open \ command \中,并启动explorer.exe的新实例来执行CompMgmtLauncher.exe。

图11.创建注册表项并启动CompMgmtLauncher.exe
图12.Explorer.exe用于启动ComMgmtLauncher.exe

执行CompMgmtLauncher.exe时,它将执行在注册表项Software \ Classes \ mscfile \ shell \ open \ command \中的任何配置。在本例中,它正在执行前面执行过的相同PowerShell命令,以替换感叹号,并以更高权限执行PowerShell脚本。

图13.创建注册表项以绕过UAC
图14.Cybereason解决方案中所示的UAC 绕过后的过程

加载器模块被加载到内存中,并再次检查权限。在拥有足够的权限后继续发动攻击。加载器的模块资源中有一个经过XOR 加密的可移植可执行文件(PE)。

图15.XOR 加密的的PE

加载器将PE从资源加载到内存中,使用密钥7B在内存中解密,然后执行

图16.XOR解密之前的内存中的PE
图17.XOR解密之后的内存中的PE

加载器第二阶段:注入AHNLAB

内存中的PE是第二个加载程序模块,用于最终payload的加载工作。在此阶段,恶意软件会尝试将勒索软件的payload注入Ahnlab杀毒软件进程中。

为此,第二个加载器需要检查目标计算机中是否安装了Ahnlab防病毒软件。如果存在Ahnlab V3 Lite的服务,则会检查文件autoup.exe是否可用。autoup.exe位于Ahnlab Updater中,容易受到攻击。

据了解,GandCrab的作者曾对Ahnlab这款产品感到头疼过,可能是出于报复的心态,Sodinokibi才会专门搜索Ahnlab并将其用于攻击。

图19.autoup.exe的路径字符串

如果恶意软件能够找到Ahnlab服务和可执行文件,则加载器会自动启动处于挂起状态的autoup.exe进程,并尝试通过process hollowing将Sodinokibi的payload注入其中。

如果计算机上未安装Ahnlab防病毒软件,则加载器将在挂起状态下启动当前PowerShell进程的单独实例,并尝试通过process hollowing将Sodinokibi payload注入其中。

Payload以XOR加密的PE文件的形式存储在模块资源中,密钥为7B。

图20.XOR加密的可移植可执行文件

SODINOKIBI的payload

恶意软件将RC4加密的配置数据存储在.grrr中,此名称在不同的恶意软件变体中会有所不同。

图21.Sodinokibi的payload

配置文件中包含了要从加密中排除的文件夹、文件和文件扩展名的信息;还包含要杀死哪些进程,删除哪些服务,以及如何使用CVE-2018-8453提权漏洞,与C2通信,展示给用户的勒索票据等相关信息。

图22.Sodinokibi的配置文件

Sodinokibi使用GetKeyboardLayoutList识别有哪些键盘语言,通过switch case语句检查主要语言ID。只有配置了下列语言,则恶意软件将关闭,显然作者将这些国家排除在了目标之外。在此Sodinikobi变体中,还添加了对叙利亚语的检查,以及使用GetSystemDefaultUILanguage和GetUserDefaultUILanguage对系统语言的新检查。

图23.主要语言的筛选

语言检查通过后,恶意软件将继续执行,并使用vssadmin.exe从计算机中删除卷影副本,使文件恢复更加困难。

图24.使用vssadmin.exe删除卷影副本

接着勒索软件遍会历机器上的所有文件夹,加密所有文件,并在每个文件夹中植入勒索通知。完成加密后,它会更改桌面壁纸以告知用户。

图25.勒索软件加密文件后的新壁纸
图26.勒索软件的赎金票据

恶意软件加密目标计算机上的文件后,会尝试与C2服务器建立通信。为了生成C2的URL,它会遍历配置文件中的域列表。

图27.配置文件中的域列表

恶意软件使用硬编码和随机生成字符串创建多个随机URL。 Tesorion最近的一份报告里有讲到Sodinokibi和GandCrab在生成随机URL方式上的相似之处,这进一步增强了相同作者的嫌疑。

图28.用于生成随机URL的硬编码字符串

生成url后,恶意软件将加密的机器信息发送到每个域,包括用户名、机器名、域名、机器语言、操作系统类型和CPU体系结构。

图29.加密前发送到C2服务器的数据

当用户点击赎金票据并输入密钥时,会出现一个页面,列出他们必须以比特币支付的价格,才能检索他们的文件。

图30.Tor浏览器勒索赎金

结论

在这篇文章中,我们深入探讨了Sodinokibi勒索软件感染过程,并表明,尽管勒索软件作者使用的混淆技术非常简单,但仍被证明在绕过大多数反病毒软件上非常有效。

此外,我们的分析进一步支持了Sodinokibi与GandCrab背后创作人员相同这一点,例如:语言和国家白名单的相似性(俄语国家、叙利亚阿拉伯语),对Ahnlab产品的“复仇”,以及URL生成例程中的相似之处。

自2019年4月以来,Sodinokibi勒索软件出现频繁,并且在首次亮相后不到4个月内成为第四种最常见的勒索软件。它经历了几次小的更新,我们预计,作者会持续开发这款开发勒索软件,增加更多的功能,也提高其逃避检测能力。

安全建议

· 请勿下载可疑来源的文件或点击可疑链接。

· 定期备份云中本地和外部的重要文件。

· 在Cybereason解决方案中启用PowerShell防护。

· 在预防模式下激活Cybearson的反勒索软件,以检测并防止此类威胁和其他类似威胁。