事情是这个样子滴,几天前,团队的小伙伴去做了一个溯源取证,给我带回来了一个勒索病毒样本,心情不错,逆向走一波附在报告里面送客户,当彩蛋惊喜了[手工狗头.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病毒,该变种取消了内网横向等功能,预计多台感染应该是手工感染,并非病毒自动自我复制感染。
------可爱的分割线------
最后附在报告后面,完结撒花,顺便提醒一下小伙伴们注意安全~~~~~~
------可爱的分割线------
注:文章原创蓝极战队,转载请注明出处~~~~