最近,Intezer和IBM X-Force IRIS研究团队发现了一种此前从未被公开披露过的新型勒索软件——PureLocker,能够同时攻击windows和linux操作系统。
据称,PureLocker与后门恶意软件“more_eggs”存在部分代码重叠,并且已经被Cobalt Gang和FIN6等多个黑客组织使用过。
这里分析的PureLocker样本是一个适用于Windows操作系统的版本,伪装成一个名为“Crypto++”的C++加密库:
分析表明,该文件并不是一个C++加密库,而是一个可能与Cobalt Gang有关存在关联的恶意二进制文件,但代码经过了大幅修改。
样本是采用PureBasic编写的,这是一种不太常用的编程语言,也就导致恶意软件能够顺利绕过某些杀毒软件的检测。此外,PureBasic代码还可以在Windows、Linux和OS-X之间移植,这就使得开发适用于不同平台的恶意软件更加容易。
PureLocker被设计为由regsrv32.exe作为COM服务器DLL执行,它将调用DllRegisterServer导出,恶意软件的代码驻留在导出中。
字符串被编码并存储为Unicode十六进制字符串,通过调用字符串解码函数,可以根据需要对每个字符串进行解码。
代码首先会检查它是否正在按照攻击者的意图执行,以及是否正在被分析或调试。有任何一项检查不符,恶意软件就会立即退出,但不会删除自身:
一旦有效载荷执行,恶意软件就会立即删除自身。
有几个迹象表明,PureLocker很有可能只是一个高针对性、多阶段攻击的一部分。恶意软件首先会检查其自身是否是使用“/s/i”参数执行的,这个参数的作用是指示regsrv32.exe安装DLL组件而不引发任何对话(静默):
稍后,恶意软件会验证它是否确实由“regsrv32.exe”执行,并验证其文件扩展名是否为“.dll”或“.ocx”、计算机上的当前年份是否为“2019”,以及是否具有管理员权限。有任何一项检查不符,恶意软件就将在不执行任何恶意活动的情况下退出。
这种行为在勒索软件中并不常见,勒索软件通常倾向于感染尽可能多的受害者,以便获取得尽可能多的收益。此外,被设计为以非常规方式执行的DLL文件的行为也表明,该勒索软件是多阶段攻击的后期组件。
与其他勒索软件不同,该恶意软件通过手动加载“ ntdll.dll”的另一个副本来使用反钩挂技术,并从此处手动解析API地址,这么做的目的是逃避用户模式下ntdll函数的挂钩。尽管这是一个已知的技巧,但很少在勒索软件中使用。
导入本身被存储为32位哈希值,PureLocker使用了常规的哈希解析方法来获取函数地址。
同样值得注意的是,PureLocker使用的是ntdll.dll中的低级别Windows API函数来实现其大部分功能(kernel32.dll和advapi32.dll除外),尤其是用于文件操作。
除了利用advapi32.dll(RtlGenRandom)的SystemFunction036进行伪随机数生成外,它并不使用Windows Crypto API函数,而是依赖于内置的purebasic加密库来满足其加密需求。
在完成了所有的反分析和完整性测试之后,PureLocker将继续使用硬编码的RSA密钥,通过标准AES + RSA组合对受害者计算机上的文件进行加密并添加“.CR1”扩展名。(主要加密数据文件,并会根据特定文件的扩展名跳过对可执行文件的加密。)
然后,它会删除原始文件,以防止恢复。
完成加密后,PureLocker会在用户桌面上留下一个名为“YOUR_FILES.txt”的赎金票据。
对代码的分析表明,PureLocker与Cobalt Gang在其攻击链中使用的特定组件存在代码重叠——“more_eggs”JScript后门(也称为“SpicyOmelette”)的加载器组件。
不仅如此,“more_eggs”还被其他两个黑客组织使用过,包括黑客组织FIN6。
研究人员再将PureLocker与最近的“more_eggs”加载器组件样本进行对比后发现,它们极有可能是同一伙人创建的,因为它们存在很多相似之处:
PureLocker并不是一种常规的勒索软件,它没有试图感染尽可能多的受害者,而是尽可能地隐藏其意图和功能。用于实现逃避和反分析的代码似乎是直接从“more_eggs”加载器组件中复制过来的,这使得它能够避开自动分析系统而不被发现。
由于PureLocker是作为一种恶意软件即服务(MaaS)出售的,基于目前掌握的线索,还很难判定它是出自Cobalt Gang或FIN6,还是一个新的黑客组织之手。