Intezer和IBM X-Force研究团队近期发现了一类新的勒索软件——PureLocker,它由一位资深的恶意软件即服务(MaaS)供应商在暗网上出售,并被Cobalt、FIN6等多个威胁组织使用。攻击者利用它对企业的生产服务器发起定向勒索攻击。
PureLocker与“more_eggs”后门恶意软件密切相关,它由PureBasic编程语言编写,针对的操作系统包括Windows和Linux。
PureLocker逃避检测的技术十分巧妙,出现几个月后才被安全人员发现,下面将介绍PureLocker的一些技术细节。
初步分析
分析的Windows样本是一个32位DLL,伪装成一个名为Crypto ++的C ++加密库:
在查看“exports ”部分时,我们很快注意到某些异常,因为这个库应该包含与音乐播放相关的功能。
在VirusTotal中查看扫描结果时,发现该文件已经超过三周没有被检测到,这对于恶意文件而言非常罕见:
此外,当在多个沙盒环境中执行文件时,它没有表现出任何恶意或可疑的行为。
但是,在Intezer Analyze中对文件进行遗传分析之后,奇热我们得出了三个主要观察结果:
1.没有Crypto ++代码连接,意味着样本不是Crypto ++库。
2.该文件包含来自多个恶意软件家族的重用代码,主要是来自Cobalt Gang的二进制文件。说明文件是恶意文件,且可能与Cobalt Gang有关。
3.文件中的大部分相关代码都是唯一的,表明它可能是一个新的,或经过高度修改的恶意软件。
进一步观察
仔细研究发现,此勒索软件是用PureBasic编程语言编写的。PureBasic是一种相当不常见的编程语言,这种不寻常的选择也为攻击者带来了优势:反病毒软件供应商在为PureBasic 二进制文件生成检测签名时不那么容易。此外,PureBasic代码可以在Windows、Linux和OS-X之间移植,使得针对不同平台的攻击更加方便。
PureLocker被设计成由regsrv32作为COM服务器DLL执行。它将调用DllRegisterServer导出,恶意软件的代码驻留在导出中。与音乐相关的所有其他导出均不具有功能,包含在勒索软件中仅用于欺骗。
恶意软件的字符串被编码并存储为Unicode十六进制字符串。可以根据需要调用字符串解码函数对每个字符串进行解码。
恶意软件的代码首先检查它是否按攻击者的意图执行,没有被分析或调试。如果检查失败,恶意软件将立即退出,且不删除自身,这可能作为不引起怀疑的反分析方法。主要功能流程图如下图所示:
如果执行了恶意软件的有效负载,恶意软件此后将立即删除自身。
目标攻击链的一部分
有几个迹象表明,PureLocker只是一个高针对性、多阶段攻击的部分组成。恶意软件首先检查它是否用“/s /i”参数执行,这指示regsrv32.exe安装DLL组件而不引发任何对话:
稍后,恶意软件会验证它是否确实由“ regsrv32.exe”执行,验证其文件扩展名是否为“ .dll”或“ .ocx”,计算机上的当前年份是否为2019,是否具有管理员权限。如果上述检查中的任何一项失败,则恶意软件将在不执行任何恶意活动的情况下退出。
这种做法在勒索软件中并不常见,勒索软件通常倾向于感染尽可能多的受害者,以期获得尽可能多的利润。此外,以非常特定的方式执行的DLL文件的行为表明,该勒索软件是多阶段攻击的后期组件。
逃避和反分析技术
与其它勒索软件不同的是,恶意软件通过手动加载另一个“ntdll”副本来使用反挂钩技术,并在此处手动解析API地址。这么做的目的是逃避用户模式下ntdll函数的挂钩。虽然这是一个众所周知的伎俩,但它很少用于勒索软件。
导入本身存储为32位哈希值,勒索软件使用常规的哈希解析方法获取函数地址。
同样值得注意的是,恶意软件在ntdll.dll中使用低级别的Windows API函数来实现它的大部分功能(kernel32.dll和advapi32.dll除外),尤其是用于文件操作。除了利用advapi32.dll(RtlGenRandom)的SystemFunction036进行伪随机数生成外,恶意软件不使用Windows Crypto API函数,而是依赖于内置的purebasic加密库来满足其加密需求。
加密和勒索通知
如果恶意软件执行的所有反分析和完整性测试都得到了满足,它将继续使用硬编码的RSA密钥,通过标准AES + RSA组合对受害者计算机上的文件进行加密。勒索软件为每个加密文件添加“ .CR1”扩展名。它主要加密数据文件,根据特定文件的扩展名跳过对可执行文件的加密。然后勒索软件会安全删除原始文件,以防止恢复。恶意软件完成加密后,会在用户桌面上留下一个名为YOUR_FILES.txt的勒索通知。
值得注意的是,赎金通知并没有要求支付类型或勒索金额,而是指示受害者通过电子邮件联系攻击者。攻击者使用匿名和加密的Proton电子邮件服务。我们分析的每个样本都包含一个不同的电子邮件地址,这可能是攻击者在不同的受害者和解密密钥之间建立链接的一种方式,即每个电子邮件对应一个特定的RSA密钥对。这进一步证明这种威胁不同于典型的勒索软件。
另一个需要注意的元素是“CR1”字符串,它出现在攻击者的电子邮件地址、加密的文件扩展名和赎金通知中。由于这是一个RaaS,我们认为这个字符串很可能是操作这些特定样本组的标识符。
代码的关联和追溯
对恶意软件遗传分析的结果表明,PureLocker与Cobalt Gang在其攻击链中使用的特定组件相关,此组件是“ more_eggs” JScript后门(也称为“ SpicyOmelette”)的加载器部分。
去年,QuoScient安全团队观察到Cobalt Gang一直在地下网络犯罪论坛上从恶意软件即服务(MaaS)供应商那里购买恶意软件组件。QuoScient还观察到有另外两个威胁组织使用了相同的MaaS组件,包括“ more_eggs”后门。
最近,IBM X-Force发现FIN6的几起行动中也大量使用了“ more_eggs”恶意软件工具包。
将PureLocker勒索软件样本与最近的more_eggs加载器样本进行比较后发现,xise它们极有可能是同一作者创建的。相似之处显而易见:
COM Server DLL组件都由用PureBasic编写
载入payload前,功能和代码几乎相同,具有相同的逃避和反分析方法
相同的字符串编码和解码方法
这些发现能表明,“ more_eggs”的MaaS提供商将“ more_eggs”加载器的payload从JScript后门修改为了勒索软件,为其产品添加了新的恶意软件工具包。
虽然我们对恶意软件的来源有很好的认识,但目前还不清楚使用这种勒索软件进行有针对性攻击的“CR1”组织是MaaS供应商以前的客户(如Cobalt Gang和FIN6),还是一个新团伙。
结论
PureLocker是一个非正统的勒索软件。它没有试图感染尽可能多的受害者,而是旨在隐藏其意图和功能,除非以预定的方式执行。这种方法对于成功地将其用于定向攻击的攻击者非常有效,而几个月以来一直未被发现。
值得注意的是,本文中描述的逃避和反分析功能的代码是直接从“more_eggs”后门加载程序中复制的,其中一些重复的功能使得勒索软件能够避开自动分析系统而不被发现。这个案例说明代码重用分析对恶意软件检测和分类的重要性。它将任何以前使用过的代码,甚至有效的规避和反分析代码的使用,转化为一个可靠的检测指标。
PureLocker勒索软件更详细指标请在此处查看。