新型勒索软件PureLocker现身,被Cobalt、FIN6等多个威胁组织使用

本文主要是介绍新型勒索软件PureLocker现身,被Cobalt、FIN6等多个威胁组织使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Intezer和IBM X-Force研究团队近期发现了一类新的勒索软件——PureLocker,它由一位资深的恶意软件即服务(MaaS)供应商在暗网上出售,并被Cobalt、FIN6等多个威胁组织使用。攻击者利用它对企业的生产服务器发起定向勒索攻击。

PureLocker与“more_eggs”后门恶意软件密切相关,它由PureBasic编程语言编写,针对的操作系统包括Windows和Linux。

PureLocker逃避检测的技术十分巧妙,出现几个月后才被安全人员发现,奇热下面将介绍PureLocker的一些技术细节。

初步分析

分析的Windows样本是一个32位DLL,伪装成一个名为Crypto ++的C ++加密库:

新型勒索软件PureLocker现身,被Cobalt、FIN6等多个威胁组织使用

在查看“exports ”部分时,我们很快注意到某些异常,因为这个库应该包含与音乐播放相关的功能。

新型勒索软件PureLocker现身,被Cobalt、FIN6等多个威胁组织使用

在VirusTotal中查看扫描结果时,发现该文件已经超过三周没有被检测到,这对于恶意文件而言非常罕见:

新型勒索软件PureLocker现身,被Cobalt、FIN6等多个威胁组织使用

此外,当在多个沙盒环境中执行文件时,它没有表现出任何恶意或可疑的行为。

但是,在Intezer Analyze中对文件进行遗传分析之后,我们得出了三个主要观察结果:

新型勒索软件PureLocker现身,被Cobalt、FIN6等多个威胁组织使用

1.没有Crypto ++代码连接,意味着样本不是Crypto ++库。

2.该文件包含来自多个恶意软件家族的重用代码,主要是来自Cobalt Gang的二进制文件。说明文件是恶意文件,且可能与Cobalt Gang有关。

3.文件中的大部分相关代码都是唯一的,表明它可能是一个新的,或经过高度修改的恶意软件。

进一步观察

仔细研究发现,此勒索软件是用PureBasic编程语言编写的。PureBasic是一种相当不常见的编程语言,这种不寻常的选择也为攻击者带来了优势:反病毒软件供应商在为PureBasic 二进制文件生成检测签名时不那么容易。此外,PureBasic代码可以在Windows、Linux和OS-X之间移植,使得针对不同平台的攻击更加方便。

PureLocker被设计成由regsrv32作为COM服务器DLL执行。它将调用DllRegisterServer导出,恶意软件的代码驻留在导出中。与音乐相关的所有其他导出均不具有功能,包含在勒索软件中仅用于欺骗。

恶意软件的字符串被编码并存储为Unicode十六进制字符串。可以根据需要调用字符串解码函数对每个字符串进行解码。

新型勒索软件PureLocker现身,被Cobalt、FIN6等多个威胁组织使用

恶意软件的代码首先检查它是否按攻击者的意图执行,没有被分析或调试。如果检查失败,恶意软件将立即退出,且不删除自身,这可能作为不引起怀疑的反分析方法。主要功能流程图如下图所示:

新型勒索软件PureLocker现身,被Cobalt、FIN6等多个威胁组织使用

如果执行了恶意软件的有效负载,恶意软件此后将立即删除自身。

目标攻击链的一部分

有几个迹象表明,PureLocker只是一个高针对性、多阶段攻击的部分组成。恶意软件首先检查它是否用“/s /i”参数执行,这指示regsrv32.exe安装DLL组件而不引发任何对话:

新型勒索软件PureLocker现身,被Cobalt、FIN6等多个威胁组织使用

稍后,恶意软件会验证它是否确实由“ regsrv32.exe”执行,验证其文件扩展名是否为“ .dll”或“ .ocx”,计算机上的当前年份是否为2019,是否具有管理员权限。如果上述检查中的任何一项失败,则恶意软件将在不执行任何恶意活动的情况下退出。

这种做法在勒索软件中并不常见,勒索软件通常倾向于感染尽可能多的受害者,以期获得尽可能多的利润。此外,以非常特定的方式执行的DLL文件的行为表明,该勒索软件是多阶段攻击的后期组件。

逃避和反分析技术

与其它勒索软件不同的是,恶意软件通过手动加载另一个“ntdll”副本来使用反挂钩技术,并在此处手动解析API地址。这么做的目的是逃避用户模式下ntdll函数的挂钩。虽然这是一个众所周知的伎俩,但它很少用于勒索软件。

导入本身存储为32位哈希值,勒索软件使用常规的哈希解析方法获取函数地址。

新型勒索软件PureLocker现身,被Cobalt、FIN6等多个威胁组织使用

同样值得注意的是,恶意软件在ntdll.dll中使用低级别的Windows API函数来实现它的大部分功能(kernel32.dll和advapi32.dll除外),尤其是用于文件操作。除了利用advapi32.dll(RtlGenRandom)的SystemFunction036进行伪随机数生成外,恶意软件不使用Windows Crypto API函数,而是依赖于内置的purebasic加密库来满足其加密需求。

加密和勒索通知

如果恶意软件执行的所有反分析和完整性测试都得到了满足,它将继续使用硬编码的RSA密钥,通过标准AES + RSA组合对受害者计算机上的文件进行加密。勒索软件为每个加密文件添加“ .CR1”扩展名。它主要加密数据文件,根据特定文件的扩展名跳过对可执行文件的加密。然后勒索软件会安全删除原始文件,以防止恢复。恶意软件完成加密后,会在用户桌面上留下一个名为YOUR_FILES.txt的勒索通知。

新型勒索软件PureLocker现身,被Cobalt、FIN6等多个威胁组织使用

值得注意的是,赎金通知并没有要求支付类型或勒索金额,而是指示受害者通过电子邮件联系攻击者。攻击者使用匿名和加密的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加载器样本进行比较后发现,它们极有可能是同一作者创建的。相似之处显而易见:

  • COM Server DLL组件都由用PureBasic编写

  • 载入payload前,功能和代码几乎相同,具有相同的逃避和反分析方法

  • 相同的字符串编码和解码方法

新型勒索软件PureLocker现身,被Cobalt、FIN6等多个威胁组织使用

这些发现能表明,“ more_eggs”的MaaS提供商将“ more_eggs”加载器的payload从JScript后门修改为了勒索软件,为其产品添加了新的恶意软件工具包。

虽然我们对恶意软件的来源有很好的认识,但目前还不清楚使用这种勒索软件进行有针对性攻击的“CR1”组织是MaaS供应商以前的客户(如Cobalt Gang和FIN6),还是一个新团伙。

结论

PureLocker是一个非正统的勒索软件。它没有试图感染尽可能多的受害者,而是旨在隐藏其意图和功能,除非以预定的方式执行。这种方法对于成功地将其用于定向攻击的攻击者非常有效,而几个月以来一直未被发现。

值得注意的是,本文中描述的逃避和反分析功能的代码是直接从“more_eggs”后门加载程序中复制的,其中一些重复的功能使得勒索软件能够避开自动分析系统而不被发现。这个案例说明代码重用分析对恶意软件检测和分类的重要性。它将任何以前使用过的代码,甚至有效的规避和反分析代码的使用,转化为一个可靠的检测指标。

PureLocker勒索软件更详细指标请在此处查看。

这篇关于新型勒索软件PureLocker现身,被Cobalt、FIN6等多个威胁组织使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/779035

相关文章

Java中使用Java Mail实现邮件服务功能示例

《Java中使用JavaMail实现邮件服务功能示例》:本文主要介绍Java中使用JavaMail实现邮件服务功能的相关资料,文章还提供了一个发送邮件的示例代码,包括创建参数类、邮件类和执行结... 目录前言一、历史背景二编程、pom依赖三、API说明(一)Session (会话)(二)Message编程客

C++中使用vector存储并遍历数据的基本步骤

《C++中使用vector存储并遍历数据的基本步骤》C++标准模板库(STL)提供了多种容器类型,包括顺序容器、关联容器、无序关联容器和容器适配器,每种容器都有其特定的用途和特性,:本文主要介绍C... 目录(1)容器及简要描述‌php顺序容器‌‌关联容器‌‌无序关联容器‌(基于哈希表):‌容器适配器‌:(

使用Python实现高效的端口扫描器

《使用Python实现高效的端口扫描器》在网络安全领域,端口扫描是一项基本而重要的技能,通过端口扫描,可以发现目标主机上开放的服务和端口,这对于安全评估、渗透测试等有着不可忽视的作用,本文将介绍如何使... 目录1. 端口扫描的基本原理2. 使用python实现端口扫描2.1 安装必要的库2.2 编写端口扫

使用Python实现操作mongodb详解

《使用Python实现操作mongodb详解》这篇文章主要为大家详细介绍了使用Python实现操作mongodb的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、示例二、常用指令三、遇到的问题一、示例from pymongo import MongoClientf

SQL Server使用SELECT INTO实现表备份的代码示例

《SQLServer使用SELECTINTO实现表备份的代码示例》在数据库管理过程中,有时我们需要对表进行备份,以防数据丢失或修改错误,在SQLServer中,可以使用SELECTINT... 在数据库管理过程中,有时我们需要对表进行备份,以防数据丢失或修改错误。在 SQL Server 中,可以使用 SE

使用Python合并 Excel单元格指定行列或单元格范围

《使用Python合并Excel单元格指定行列或单元格范围》合并Excel单元格是Excel数据处理和表格设计中的一项常用操作,本文将介绍如何通过Python合并Excel中的指定行列或单... 目录python Excel库安装Python合并Excel 中的指定行Python合并Excel 中的指定列P

浅析Rust多线程中如何安全的使用变量

《浅析Rust多线程中如何安全的使用变量》这篇文章主要为大家详细介绍了Rust如何在线程的闭包中安全的使用变量,包括共享变量和修改变量,文中的示例代码讲解详细,有需要的小伙伴可以参考下... 目录1. 向线程传递变量2. 多线程共享变量引用3. 多线程中修改变量4. 总结在Rust语言中,一个既引人入胜又可

golang1.23版本之前 Timer Reset方法无法正确使用

《golang1.23版本之前TimerReset方法无法正确使用》在Go1.23之前,使用`time.Reset`函数时需要先调用`Stop`并明确从timer的channel中抽取出东西,以避... 目录golang1.23 之前 Reset ​到底有什么问题golang1.23 之前到底应该如何正确的

详解Vue如何使用xlsx库导出Excel文件

《详解Vue如何使用xlsx库导出Excel文件》第三方库xlsx提供了强大的功能来处理Excel文件,它可以简化导出Excel文件这个过程,本文将为大家详细介绍一下它的具体使用,需要的小伙伴可以了解... 目录1. 安装依赖2. 创建vue组件3. 解释代码在Vue.js项目中导出Excel文件,使用第三

Linux alias的三种使用场景方式

《Linuxalias的三种使用场景方式》文章介绍了Linux中`alias`命令的三种使用场景:临时别名、用户级别别名和系统级别别名,临时别名仅在当前终端有效,用户级别别名在当前用户下所有终端有效... 目录linux alias三种使用场景一次性适用于当前用户全局生效,所有用户都可调用删除总结Linux