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未被检测到,因此能绕过大多组织机构的第一层防御。
该zip文件里面是一个混淆的JavaScript文件,当用户双击后会被WScript执行。
此JavaScript文件通过重新排列内部名为eiculwo的列表中的字符,来消除自身的混淆。
位于JavaScript文件中的变量vhtsxspmssj是一个混淆的PowerShell脚本,攻击者会在稍后的攻击中对其去混淆。
JavaScript文件对变量vhtsxspmssj进行反混淆处理,并将其保存在名为jurhtcbvj.tmp的目录中。
接着脚本会下载二级payload,不是将其嵌入到初始脚本中。
我们遇到的数个恶意样本都是通过此脚本来下载二级payload,而不是将其嵌入到初始脚本中。
文件jurhtcbvj.tmp是一个填充了多个感叹号的PowerShell脚本,JavaScript文件通过启动PowerShell命令来删除其中的感叹号并执行此脚本。
接着jurhtcbvj.tmp解码另一个Base64编码的脚本并执行它。解码后的脚本包含一个.NET模块(也使用Base64编码),再将模块解码并加载到PowerShell进程内存中,一旦加载后,将执行Install1函数。
模块test.dll只是此交付过程的众多层之一。函数Install1里还包含了另一个用Base64编码的模块,Install1会解码此模块并将其加载到内存中。
如果恶意软件无法获得足够高的权限,它将尝试绕过用户访问控制。
加载器第一阶段:UAC绕过
加载到内存中的模块用作恶意软件下一阶段的加载程序。该模块使用CheckTokenMembership来确认进程的权限,如果进程的权限不足,则会尝试绕过用户访问控制(UAC)。为了绕过UAC,恶意软件将自身写入注册表项Software \ Classes \ mscfile \ shell \ open \ command \中,并启动explorer.exe的新实例来执行CompMgmtLauncher.exe。
执行CompMgmtLauncher.exe时,它将执行在注册表项Software \ Classes \ mscfile \ shell \ open \ command \中的任何配置。在本例中,它正在执行前面执行过的相同PowerShell命令,以替换感叹号,并以更高权限执行PowerShell脚本。
加载器模块被加载到内存中,并再次检查权限。在拥有足够的权限后继续发动攻击。加载器的模块资源中有一个经过XOR 加密的可移植可执行文件(PE)。
加载器将PE从资源加载到内存中,使用密钥7B在内存中解密,然后执行
加载器第二阶段:注入AHNLAB
内存中的PE是第二个加载程序模块,用于最终payload的加载工作。在此阶段,恶意软件会尝试将勒索软件的payload注入Ahnlab杀毒软件进程中。
为此,第二个加载器需要检查目标计算机中是否安装了Ahnlab防病毒软件。如果存在Ahnlab V3 Lite的服务,则会检查文件autoup.exe是否可用。autoup.exe位于Ahnlab Updater中,容易受到攻击。
据了解,GandCrab的作者曾对Ahnlab这款产品感到头疼过,可能是出于报复的心态,Sodinokibi才会专门搜索Ahnlab并将其用于攻击。
如果恶意软件能够找到Ahnlab服务和可执行文件,则加载器会自动启动处于挂起状态的autoup.exe进程,并尝试通过process hollowing将Sodinokibi的payload注入其中。
如果计算机上未安装Ahnlab防病毒软件,则加载器将在挂起状态下启动当前PowerShell进程的单独实例,并尝试通过process hollowing将Sodinokibi payload注入其中。
Payload以XOR加密的PE文件的形式存储在模块资源中,密钥为7B。
SODINOKIBI的payload
恶意软件将RC4加密的配置数据存储在.grrr中,此名称在不同的恶意软件变体中会有所不同。
配置文件中包含了要从加密中排除的文件夹、文件和文件扩展名的信息;还包含要杀死哪些进程,删除哪些服务,以及如何使用CVE-2018-8453提权漏洞,与C2通信,展示给用户的勒索票据等相关信息。
Sodinokibi使用GetKeyboardLayoutList识别有哪些键盘语言,通过switch case语句检查主要语言ID。只有配置了下列语言,则恶意软件将关闭,显然作者将这些国家排除在了目标之外。在此Sodinikobi变体中,还添加了对叙利亚语的检查,以及使用GetSystemDefaultUILanguage和GetUserDefaultUILanguage对系统语言的新检查。
语言检查通过后,恶意软件将继续执行,并使用vssadmin.exe从计算机中删除卷影副本,使文件恢复更加困难。
接着勒索软件遍会历机器上的所有文件夹,加密所有文件,并在每个文件夹中植入勒索通知。完成加密后,它会更改桌面壁纸以告知用户。
恶意软件加密目标计算机上的文件后,会尝试与C2服务器建立通信。为了生成C2的URL,它会遍历配置文件中的域列表。
恶意软件使用硬编码和随机生成字符串创建多个随机URL。 Tesorion最近的一份报告里有讲到Sodinokibi和GandCrab在生成随机URL方式上的相似之处,这进一步增强了相同作者的嫌疑。
生成url后,恶意软件将加密的机器信息发送到每个域,包括用户名、机器名、域名、机器语言、操作系统类型和CPU体系结构。
当用户点击赎金票据并输入密钥时,会出现一个页面,列出他们必须以比特币支付的价格,才能检索他们的文件。
结论
在这篇文章中,我们深入探讨了Sodinokibi勒索软件感染过程,并表明,尽管勒索软件作者使用的混淆技术非常简单,但仍被证明在绕过大多数反病毒软件上非常有效。
此外,我们的分析进一步支持了Sodinokibi与GandCrab背后创作人员相同这一点,例如:语言和国家白名单的相似性(俄语国家、叙利亚阿拉伯语),对Ahnlab产品的“复仇”,以及URL生成例程中的相似之处。
自2019年4月以来,Sodinokibi勒索软件出现频繁,并且在首次亮相后不到4个月内成为第四种最常见的勒索软件。它经历了几次小的更新,我们预计,作者会持续开发这款开发勒索软件,增加更多的功能,也提高其逃避检测能力。
安全建议
· 请勿下载可疑来源的文件或点击可疑链接。
· 定期备份云中本地和外部的重要文件。
· 在Cybereason解决方案中启用PowerShell防护。
· 在预防模式下激活Cybearson的反勒索软件,以检测并防止此类威胁和其他类似威胁。