勒索病毒那点事(二)mallox变种
2023-6-6 15:22:27 Author: 蓝极战队(查看原文) 阅读量:11 收藏

事情是这个样子滴,几天前,团队的小伙伴去做了一个溯源取证,给我带回来了一个勒索病毒样本,心情不错,逆向走一波附在报告里面送客户,当彩蛋惊喜了[手工狗头.jpg]

------可爱的分割线------

0x01 基本结构

啧啧啧~~~

32位PE程序

0x02 逻辑梳理

直接拖到IDA里面,开始分析

1、首先调用GetUserDefaultLangID函数获取当前计算机的语言地区ID,如果与内置的5个语言地区ID不匹配,则进行以下的恶意操作,否则结束程序。妥妥的地区保护啊~~~~

2、启用SeTakeOwnershipPrivilege和SeDebugPrivilege权限

3、创建线程执行sub_4068F4()函数删除指定的反勒索软件Raccine相关注册表从而躲避检查。

4、创建线程执行sub_4069D3()函数调用vssadmin和bcdedit删除卷影和开机自动修复的禁用。

5、创建线程执行sub_4069F1()函数,调用cmd执行命令结束数据库等若干软件进程。

6、以下是加密的时候避过的文件夹路径(位于rdata段:0x41E1EC-0x41E284)

7、以下是加密时候避过的后缀名文件(位于rdata段:0x41E7C8-0x41E894)

8、以下是加密的时候避过的文件(位于rdata段:0x41E0B4-0x41E0E4)

9、核心加密函数sub_40465A()

根据历史资料对比,该病毒为mallox的变种,加密方式非公开通用,自定义程度较高。

9.1 在函数sub_401495()中,通过攻击者的内置的公钥dword_41DF98与随机生成的32位字符串byte_424969及特定字符串byte_41E098计算出新的加密密钥。

内置的公钥:

特定字符串(…exp and 32_bytes…):

9.2 在sub_401630()函数中,还会进行通过公钥进行两次次运算,通过公钥计算出a1和a2,然后再带入函数sub_40156D()进行第三次运算,返回最终结果result,应该是后续的偏移。

9.3 遍历所有存储设备包括远程网络磁盘(DRIVE_REMOTE)、可移动磁盘(DRIVE_REMOVABLE)、固定磁盘(DRIVE_FIXED)等然后遍历文件进行加密。

加密目标文件时,每次跳过一个上面计算出来的偏移量,均匀地从文件头部读至文件尾部进行加密,并写回原偏移,每次读取0x1000字节(4KB)。将包括生成的公钥在内的解密所需信息被写于文件尾部。

9.4 最后goto到label62,将加密过的文件增加后缀名 . malox。

10、修改注册表启动terminal service终端服务,该服务允许多位用户连接并控制一台机器,且在远程计算机上显示桌面和应用程序,并且执行RCM行为保持长期运行。

0x03 总结

该病毒为原始mallox的变种,其中由原来的ECDH(基于椭圆曲线的Diffie-Hellman 密钥交换)+ChaCha20(salsa20流加密变种算法)的加密方式自定义了很多地方,但与勒索病毒通常原理一致,理论上需要解密被加密的文件,必须需要得到攻击者的私钥,否则通过逆向算法+已知公钥去进行爆破的话,几乎是不可能的。

相较于传统的mallox病毒,该变种取消了内网横向等功能,预计多台感染应该是手工感染,并非病毒自动自我复制感染。

------可爱的分割线------

最后附在报告后面,完结撒花,顺便提醒一下小伙伴们注意安全~~~~~~

------可爱的分割线------

注:文章原创蓝极战队,转载请注明出处~~~~


文章来源: http://mp.weixin.qq.com/s?__biz=MzkwMDMyOTA1OA==&mid=2247484168&idx=1&sn=705247f2b8a2dc9ae65b0d04610f2282&chksm=c044f805f7337113b7d9bb75564fc9dcbfb26f46cc2bb271b12d3fb7437c7c3a4192af0b0e40#rd
如有侵权请联系:admin#unsafe.sh