-
-
[原创] 从无解到破解:Mallox家族linux版本的分析以及解密器的制作
-
发表于: 2024-10-24 17:22 3961
-
Mallox勒索软件首次出现于2021年5月,并在2021年10月扩展到中国市场。截至2024年,它仍然活跃。Mallox通过加密受害者文件并要求支付赎金来恢复数据,使用唯一的加密密钥加密文件,受害者的文件通常会添加“.mallox”或“.malox”等扩展名。同时,它会在每个受感染的文件夹中生成勒索信,命名为“FILE RECOVERY.txt”,要求受害者通过比特币或门罗币支付赎金以获得解密工具。
Mallox勒索软件的加密算法通常是ChaCha20或AES,具体取决于攻击的目标系统。它会生成唯一的密钥和IV(初始化向量)来控制文件加密过程。此外,Mallox通过多种方式规避检测,例如使用MSBuild注入恶意代码,从而绕过杀毒软件的监控。它还利用反射加载技术,直接将恶意代码注入内存中,避免在磁盘上留下明显的痕迹。Mallox专门针对Microsoft SQL Server等数据库系统,通过终止关键数据库进程如sqlserv.exe
和mysql.exe
,并加密备份文件。
在对Mallox勒索家族的信息收集中,我们发现该家族的勒索信通常提供多种联系方式,包括早期的邮箱地址mallox.resurrection@onionmail.org,而近期则更改为mallox@onionmail.org。除了电子邮件,Mallox主要通过自建的暗网网站(TOR)进行联系。该暗网平台包含三个页面:登录页、谈判页和数据泄露页。
常见的加密文件后缀包括**.mallox**、.rmallox、.lmallox和**.malloxx**,这些后缀随着不同变种的演进而使用。
登录页
谈判页
数据泄露页
READ_THIS_NOW.txt
分析的样本中加密器与解密器不配套,但patch部分数据后即可搭配使用,后文将详细解释
加密的测试文件为sierting.txt
,具体内容如下
经过lmallox勒索病毒加密器
加密之后如下
文件的大小固定增加了16Byte,经过多次实验结果仍然相同,因为其加密算法原因,会有涉及填充问题,所以会不定长再增加0~15Byte。
整体执行流程图:
该程序在入口函数处就会调用unlink函数实现对自身的删除
1.程序在入口函数处,首先会先执行init_config函数,来实现对加密所需的配置信息的初始化等操作
2.深入分析init_config函数,发现存在多处异或函数,分别都是与0X9B进行异或,还有base64解码与aes解密等操作。
3.通过对内容进行分析,发现off_开头的硬编码的内容中保存着所有的配置所需的信息
4.基本流程就比较清晰了,首先该函数会对两端数据进行异或,即获得对应AES的KEY和IV,之后对Base的数据进行Base64_Decode,再进行xor_0x9b,最后利用刚才解密的Key和Iv对xor后的数据进行解密即可。
5.这里可以手动的去编写一个脚本来实现对这部分数据的解密,这里选择最长的那一串内容。
可以看到最长的这一串被解密出来了,是勒索信的内容。
之后其他的数据有依旧如此。
1.该程序只会遍历运行系统中指定的目录
2.一共十个路径,之后启动多线程,创建十个进程,来调用start_routine函数,实现遍历每一个指定路径下的内容,遍历通过find_deep_path函数实现。
3.在遍历时,会先判断该路径是否可写
4.读取该路径的子目录后,如果遇上子目录中有'.'或者'..'的,则不处理
5.在读取到一个子路径后,会对其进行绝对路径的完整拼接,然后对其进行校验,如果路径中存在如下内容则不处理。
4.完成校验通过之后,则会对当前路径的类型进入判断,如果是目录的话则进行递归遍历,如果是文件的话,则会检查,是否有可写权限,并且还会检查文件的末尾是否是.lmallox结尾,如果都符合则加入到v14这个待加密列表中,用于后续的加密函数的使用。
因为采用了AES加密,需要满足每次加密的数据块的大小最小为16字节,故需要填充,所以就会有下面的填充字节。
1.当完成了前面对于指定目录的遍历后,获得了完整的可加密的文件内容列表,之后则开启多线程,调用encrypto_thread函数对其中的文件进行加密。