首页 资讯 版块

GandCrab V5.2勒索病毒样本分析报告

x-encounter
2019-11-19 16:41:57

样本信息

文件名

b24dc3dff7e30ef6bec03377cd32d296ce4c7451ebcd2397b5c8778d30e63f1c

MD5

8cfb12b46a940947594c1662b7c8bdf2

SHA1

65ef340962ab97306743209a8b2da4d2736fbb51

文件大小/Byte

355328

功能简介

勒索程序

样本特点

GandCrab历代主流版本执行流程:

1、外层loader解密shellcode

2、执行shellcode内存加载真正的勒索程序

3、勒索程序初始化之后执行勒索流程

其勒索程序也有通过VB MFCautoit进行释放的,这里只介绍由VC编译的最新版本,外层loader依旧使用静态混淆,用来增强提取外层特征的难度,通过调用一些无用的函数可以在某种程度上对抗基于虚拟化的杀软,加密完成之后显示的勒索信息如下

加密磁盘上的指定类型的文件,被样本加密后的文件后缀为随机字符串。

样本使用RSA+salsa算法,先使用salsa算法解密出黑客RSA公钥,接着生成用户RSA公钥和私钥,使用salsa算法对用户RSA私钥进行加密,使用黑客RSA公钥加密salsa算法的key_IV

样本被加密文件类型如下

样本执行细节

外层loader分析


静态混淆如下图所示。


通过TEA算法解密shellcode



之后执行shellcode



Shellcode分析


shellcode主要功能是解密勒索程序



解密完成之后内存加载



执行勒索程序

勒索样本分析

样本概述


样本运行后首先会进行初始化,获取用户信息。判断杀软,生成ransom_id,获取键盘输入法及其键值判断是否属于相关地区,如果属于则退出,将VolumeSerialNumber右移两位的值进行salsa20加密用于生成互斥量,遍历进程,如果进程中出现符合条件的,则结束进程向远程服务器发送本机相关信息(服务器已经关闭)。接着,开始遍历磁盘文件,及网络共享文件,开始加密文件。具体排序看下文。加密完成后,修改桌面背景,提示用户交赎金获取解密密钥。解密文件。

样本详情

最新版的勒索程序对字符串和API都做了动态调用,字符串解密函数如下



API是通过序号和hash进行动态调用


在勒索初始化阶段会收集受害方的相关信息,之后会访问C2发送用户信息

Hdd(磁盘类型和空间)

os_bit(操作系统位数)

pc_user(用户名)

pc_name(主机名)

pc_lang(操作系统语言)

pc_keyb(键盘主键)

pc_group(工作组)

os_major(操作系统版本)

ransom_id(勒索ID

av(杀软信息)

id(会员编号)

Sub_id(会员下属的分发组织和机构)

Version(病毒版本号)

action

还会判断杀软


读取注册表键值HKEY_LOCAL_MACHINEHARDWAREDESCRIPTIONSystemCentralProcessorProcessorNameString获取处理器名称,通过将VolumeSerialNumberProcessorNameString拼接到一起计算CRC32的方式来生成ransom_id

通过读取注册表键值HKEY_CURRENT_USERKeyboard LayoutPreload1获取键盘输入法主键以及其键值如果对比符合下列区域中的一项则不进行加密

419(俄罗斯语),423(比利时语),428(塔吉克语),42B(亚美尼亚语),42C(阿塞里语-拉丁文)437(格鲁吉亚语),43F(哈萨克语),843(乌兹别克语-西里尔文),45A(叙利亚),422(乌克兰语),440(吉尔吉斯语),442(土库曼语),443(乌兹别克语-拉丁文),444(塔但语),818(罗马尼亚语),819(摩尔多瓦),82C(阿塞里语-西里尔文)。

 使用RC4算法对之前获取的所有本机信息进行加密。   


VolumeSerialNumber右移两位的值进行salsa20加密,拼接成

"Global"+sala加密后的数据+".luck"创建互斥量


遍历进程,如果存在如下进程,则结束该进程


加密算法分析

通过对一段加密后的数据进行异或操作,之后再通过salsa算法进行解密得到内置的黑客RSA公钥



解密需要勒索的文件后缀



接着生成用户RSA公钥和私钥



使用Salsa算法对用户RSA私钥进行加密,使用黑客内置的RSA公钥加密salsa算法的key_IV进行加密



RSACrypt_salsaKey_IV函数如下


生成随机字符串作为加密后文件的后缀,将其记录在注册表HKEY_LOCAL_MACHINESOFTWAREex_datadataext中,同时将用户RSA公钥和加密后的RSA私钥存放在HKEY_LOCAL_MACHINESOFTWAREkeys_datadatapublicprivate

遍历磁盘,对文件进行加密,排除特定目录特定文件,对文件加密流程如下

使用salsa算法和RSA算法对文件数据进行加密,最终将两种算法加密后的数据进行拼接   



GetSalsaKey_IV_And_RSACrypt函数中调用CryptGenRandom_随机生成salsa算法的Key_IV,使用用户RSA公钥对Key_IV进行加密



使用Salsa算法对整个文件进行加密,将Salsa加密后的数据与之前RSA加密后的数据进行拼接拼成最终的加密后的文件。

样本小结


通过对加密流程的分析可以了解到,勒索程序使用RSA非对称加密和salsa流加密两种算法对文件进行加密,想要解密文件需要获得salsakey_IV,而key_IV被用户RSA公钥加密存放在了加密后的文件里,解密key_IV就要得到用户RSA私钥,而用户RSA私钥被salsa加密了,所以要获得加密用户RSA私钥的salsa算法的Key_IV,但是该Key_IV被黑客RSA公钥加密了,想要得到必须支付赎金获得黑客RSA私钥才能解密


用户评论