首页
社区
课程
招聘
[原创]【病毒分析】全网首发!袭扰国内top1家族Mallox家族破解思路及技术分享
发表于: 2024-12-18 17:56 4137

[原创]【病毒分析】全网首发!袭扰国内top1家族Mallox家族破解思路及技术分享

2024-12-18 17:56
4137

引言:根据360安全卫士官方论坛的最新统计数据,本月国内勒索软件受害者设备所中病毒家族中Mallox家族占比22.38%居首位。ceeK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4k6h3W2K6K9r3W2Q4x3X3f1K6y4U0m8Q4x3X3g2U0L8W2)9J5c8X3c8F1P5Y4y4Q4x3V1j5I4x3U0j5@1x3q4)9J5k6h3S2@1L8h3H3`.

Mallox家族的加密器是solar团队处理的众多案例中,分析次数最多的家族之一。本次分析的对象是2022年10月时间段的mallox后缀加密器。通过对样本的深入分析,我们捕获到了一些关键线索,这些线索为破解提供了重要思路。在下文中,我们将详细分享这些发现和分析过程,基于本篇思路制作的恢复工具会在下一篇工具分享中进行发布,敬请期待!

关于Mallox家族信息可参考本篇文章【病毒分析】Mallox勒索家族新版本:加密算法全面解析,详情内容部分可移步solar官网处介绍f57K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2K6L8$3I4S2M7Y4y4W2j5%4g2J5K9i4c8&6i4K6u0W2j5$3&6Q4x3V1k6X3j5h3#2A6L8s2W2Q4x3@1k6A6k6q4)9K6c8o6x3`.

基于本篇文章提到的破解思路,针对Mallox家族的不同版本后缀,可以通过逆向分析获取相关密钥和算法进行恢复:

在分析如何破解之前,需要先提前了解一点mallox东西。

mallox家族最为显眼的就是这部分,采用CryptGenRandom函数的方式获取随机数种子,那怕最近的一些变种版本,都是沿用此类函数来进行密钥生成。

在获取到了4个字节的随机数之后,就会将该随机数当做是梅森旋转算法的随机数种子

接着会初始化一个public_key,然后与后面的一组55个字节大小的内容(C盘序列号+CPUID+固定内容+计算机名称)的sha256进行一个cure25519算法的密钥生成。这里命名public_key和55字节大小的数据的sha256产生的share_keyuser_private_key

这里命名public_key和55字节大小的数据的sha256产生的share_keyuser_private_key,接着再利用这个生产的私钥产生一个对应的公钥,然后再用这个私钥和黑客的hack_public_key生成一个共享密钥share_key。

这里具体可以参考Babyk家族分析中的算法分析那部分的内容【病毒分析】BabyK加密器分析-Windows篇

OK,到了目前为止,我们大致上了解了整体的流程如下:

(注意:这里我并未将梅森算法和下面的流程连到一起,因为他们其实并不相干)

接下来,我们去掉mallox章节的算法分析部分的内容,直接来看看,加密文件所使用的key到底是怎么生成的?

(注意:这里如果看不懂,请看上一章节mallox算法分析部分的内容【病毒分析】Mallox勒索家族新版本:加密算法全面解析)

首先,文件的加密函数在StarAddress函数中,并且梅森旋转算法中,生成随机数的部分也在这里,其中这个v9就是我们利用上面的梅森算法生成的256组每组4字节大小随机数,至于这个sub_E43C34、sub_E4142B和sub_E434函数,在这里就是对随机数进行变形的,所以就先不提,继续向下看。

进入到enc_file函数,来看文件加密的具体过程。首先会先获取一下后续AES加密算法IV,获取方法就是从传入的256组随机数中,取后4组数据,然后一组数据是4个字节组成,一共16个字节。

然后继续接着上面的v7的位置从后往前再取10组数据,一共40个字节,当做ChaCha20加密算法的KeyNonce

接着就是开始初始化一下ChaCha20KeyNonce还有AESIV

调用AES-128-CTR加密算法,来对40个字节的ChaCha20KeyNonce数据进行加密。

到此,我们再做一次总结:

但是这里有个问题,AES的KEY去哪里了???

其实AES的KEY在AES_init函数中才会被用到,这里看一下具体内容

aes_init函数的初始化部分可以看到key的部分,主要取了上面密钥生成部分,最后share_keysha256的前16个字节的内容。

好了,我们将此过程补充完整:

最后,我们将要用Cha20Cha20的密钥去加密文件了。当然了,遵循传统勒索软件的加密规则“既要加密的牢,还要加密的快”,依然会采用根据文件大小来进行加密部分的计算:

1 文件大小 < 0x2710 字节,文件不加密

2 文件大小>=0x2710字节并且<= 0x19000字节,文件全部加密

3 文件大小>0x19000字节采用条状加密。

这里也补充一下条状加密的部分的规则,因为mallox算法分析那篇确实漏掉了。

首先会将待加密的文件分成10个块,每块大小这里我称之为block_size。之后,循环十次,每次只加密每个块的前enc_size大小的内容,如图所示:

了解了加密的结构以后,这里就将这个enc_size和block_size的计算公式放出来:


[招生]科锐逆向工程师培训(2025年3月11日实地,远程教学同时开班, 第52期)!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回