Magniber一款只以韩国为攻击目标的勒索软件

来源:TVB影视大全人气:169更新:2023-03-20 02:56:02

Magnitude攻击工具包在过去几个月里并没有出什么新的幺蛾子,除了以几个亚洲国家为攻击目标的Cerber勒索软件。奇怪的是,Magnitude EK(攻击工具包)在今年9月下旬突然消失,人们猜测这只是在这个急剧收缩的工具包市场中的又一个阵亡者而已,不足为奇。

但是,就在本月中旬,Magnitude EK带着一个新的payload重现江湖。新的恶意程序又是一个全新的勒索软件,被称为Magniber。

外部IP、软件所用语言等信息都显示着这个新型的勒索软件攻击目标的准确性——韩国。以单个国家为攻击目标已经不同寻常,通过多种检查方式保证攻击的准确性更是勒索软件史上的首创。

已分析样本

9bb96afdce48fcf9ba9d6dda2e23c936c661212e8a74114e7813082841667508 -来自Magnitude EK

8968c1b7a7aa95931fcd9b72cdde8416063da27565d5308c818fdaafddfa3b51 -解压的payload

旧样本

ef70f414106ab23358c6734c434cb7dd -主样本(已压缩)

aa8f077a5feeb9fa9dcffd3c69724c942d5ce173519c1c9df838804c9444bd30 -解压的payload

传播方式

到目前为止,我们只发现了Magnitude EK这一种传播途径:

行为分析

如果该恶意程序在非韩国的系统上执行,它会进行自我删除,运行ping命令时会带来一定的延迟:

在沙箱中运行该程序可看到如下界面;

恶意软件以%TEMP%的身份复制,并通过任务调度程序(task scheduler)完成部署:

在同一个文件夹中,我们还可以看到赎金说明和另一个文件。其名称与特定用户生成的域名中的部分内容相同,扩展名与加密文件的扩展名相同:

每个加密文件都被添加了一个包含拉丁文字符的扩展名,每个Magniber样本的扩展名均相同。

相同的纯文本采用的都是相同的加密文本。也就是说,每个文件加密使用的都是同一个密钥。

下图是样本BMP文件被Magniber加密前后的对比图(上边为加密前,下边为加密后)。

在加密文件中看不到任何规律性图像,这表明其中已经使用了一些强大的算法,例如CBC模式的AES。

在每个加密文件的开头,我们发现了一个16位的标识符,每个Magniber的样本也都是相同的:

在完成所有能找到文件的加密以后,勒索软件会自动打开记事本,显示赎金勒索的界面:

文档结构非常简单,其中给出了多个支付赎金的页面。

赎金支付

赎金支付页面是全英文的,格式与Cerber类似(这是这些勒索软件唯一的相似之处,内部机制完全不同):

网络通信

我们发现Magniber连接的是由内部算法生成的域。用于CnC的域随后也被用在受害者的个人网站中(只是调用了不同的参数)。调用URL举例:

将赎金界面的URL与相应运行进行比较:

程序执行开始时,ransomware向以new1(或new0)结尾的URL发送一个请求。执行结束时,请求end1(或end0)。这些URL的含义将在本文的下一部分中详细解释。

比较有意思的是,如果该受害者的公共IP属于韩国,则服务器响应。否则,响应文本为空。初始请求与响应的例子如下图(请求是从某个韩国IP发起的):

从上图可以看到,我们得到了一个16个字符长的随机字符串:ce2KPIak3cl6JKm6。新的随机URL只能被请求一次。如果我们尝试重复请求,则响应文本为空。

另一个请求(结尾)也给出了一个16个字符长的随机字符串。但与第一个不同的是,它会对每个请求都作出响应(每次都有一个不同的随机字符串)。示例如下:

代码研究

很多时候要想了解恶意攻击事件的本质,我们都要对程序代码进行深入的研究。

Magniber的代码被多个加密器进行了压缩,解压需要通过加密器的功能展开。下面这个视频中可以看到当前样本的解压过程。

youtube视频地址:https://www.youtube.com/watch?v=VGOgZ1BXTRE&feature=youtu.be

解开第一层后可以得到一个PE文件:恶意程序的核心。编程人员仅通过按照单个字符的方式把它们加载到内存中,稍微增加了字符串被找到的难度:

程序执行流程

仔细观察解压的payload,我们可以清楚地看到为什么它不能在大多数系统上运行。开始时,程序员就编写了一个语言检测的命令(使用API函数GetSystemDefaultUILanguage):

它唯一接受的UI语言就是韩语(代码1042)。如果检测到其它语言,样本就会执行删除动作,不对系统产生危害。这个语言检测功能只在最近的Magniber样本中出现,早期版本中均没有,例如:aa8f077a5feeb9fa9dcffd3c69724c942d5ce173519c1c9df838804c9444bd30。

通过语言检测后,Magniber就开始执行一般勒索软件惯用的步骤。过程如下:

1. 创建互斥量对象(Creates mutex)

2. 如果标记文件已被删除,检查temp(临时)文件夹

3. 将自己%TEMP%形式的副本删除并添加任务

4. 查询生成的子域名来检索AES密钥(如果检索到密钥失败,加载硬编码的密钥)

5. 使用所选的扩展名对文件机型枚举和加密

6. 将任务完成的消息传递至CnC

7. 显示勒索页面

8. 自行删除

什么文件或数据会遭到攻击?

Magniber的攻击文件类型非常多,包括文档、源代码文件等等。完整列表如下:

该列表在文件加密功能启动前就加载完成了:

当然,还是会有一些被排除在外的目录:

Magniber如何实现文件加密?

Magniber利用CBC模式下的AES 128位进行文件加密,需借助Windows Crypto API的帮助。

DGA与受害者ID

通常情况下,恶意软件会尝试通过查询伪随机子域从CnC中检索AES密钥:

伪随机部分只用于识别受害者,由以下简单算法生成:

每个字符都按照Tick Count计数,被转换为给定的字符集:

数字0或1是否添加到URL中取决于样本是否在调试器下运行(根据时间检测)。

下面对四个域进行了密钥查询:

如果其中任何一个域给出长16个字节的响应内容,那么就表明有效的密钥被复制到缓冲区并进一步使用。否则,它将返回至硬编码密钥。

默认的AES密钥和IV

有意思的是每个样本都带有硬编码的AES密钥。但是这个只作备份用,例如,如果由于某些原因突然无法从CnC下载密钥(如果公共IP不来自韩国也会发生这样的情况)。每个样本密钥都是唯一的。当前分析样本的密钥是:S25943n9Gt099y4K:

如果其中任何一个域给出长16个字节的响应内容,那么就表明有效的密钥被复制到缓冲区并进一步使用。否则,它将返回至硬编码密钥。

类似地,初始化向量(IV)在样本中始终为硬编码(但未下载)。文件开头也保存了同样16个字符的长字符串。在当前分析的样本中是EP866p5M93wDS513:

算法

首先,密码初始化。恶意软件利用函数CryptImportKey和CryptSetKeyParam导入密钥和初始化向量:

文件加密:

第一个写入完成文件开头16字节长字符串的存储。然后,按区块读取文件,并使用Windows Crypto API完成加密。

总结

Magniber正在取代Cerber,通过同一个工具包发布,具有相同的攻击对象。但从内部机制来看又与Cerber相去甚远,更为简化。它最大的特点就是对攻击对象的挑剔程度,不是韩文系统不攻击。这也算勒索软件历史上的一个奇葩了。

从这个事件也能看出,勒索软件开发者并没有停下脚步,还是在勤勤恳恳地开发着这些邪恶的东西。

最新资讯


Copyright © 2010-2022