Gandcrab 5.2分析过程

今天分析的是GandCrab 5.2勒索病毒,虽然已经有人分析过了,但是抱着学习的态度,自己还是来分析一遍。

一、样本详情

PE: packer: UPX(3.95)[NRV,best]
PE: compiler: Microsoft Visual C/C++(2008)[-]
PE: linker: Microsoft Linker(9.0)[EXE32]

二、行为分析

遍历目录创建勒索信,加密文件,删除卷影卷轴还原点。
Gandcrab 5.2分析过程
后缀被改成 .khxrp
Gandcrab 5.2分析过程

三、详细分析

外层loader分析

Gandcrab 5.2分析过程Gandcrab 5.2分析过程
接着申请内存空间,写进去shellcode,并执行
Gandcrab 5.2分析过程
内存的shellcode代码dump出来后,静态分析感觉还是申请内存写入什么东西,代码如下图。因此在VirtualAlloc下断点,发现果然申请内存后写入一个exe,并覆盖自身内存空间并执行,根据后续分析这才是勒索本体。
Gandcrab 5.2分析过程

勒索本体分析

每个要用到的字符串都是内存解密出来再调用,api都是动态解密调用,对抗静态查杀。
Gandcrab 5.2分析过程
遍历进程查找杀软
Gandcrab 5.2分析过程
Gandcrab 5.2分析过程
获取用户电脑个人信息
Gandcrab 5.2分析过程
将得到的信息用RC4算法进行加密,密匙:.oj=294~!z3)9n-1,8^)o((q22)lb$
pc_user=xxxxxxxx&pc_name=DESKTOP-xxxxxxx&pc_group=WORKGROUP&av=avp.exe&pc_lang=zh-CN&pc_keyb=0&os_major=Windows 10 Pro&os_bit=x64&ransom_id=xxxxxxxxxxx&hdd=C:FIXED_64078475264/14028754944&id=302&sub_id=1620&version=5.2&action=call
Gandcrab 5.2分析过程
判断系统版本,利用CVE_2018_8120(win7)和CVE_2018_8440(win10) 给程序提权,调用Wmic.exe执行自己。

Gandcrab 5.2分析过程
获取操作系统语言版本 如果是以下语言时则退出加密,并删除程序
419(俄罗斯)422(乌克兰) 423(比利时) 428(塔吉克) 42B(亚美尼亚)42c(阿塞拜疆) 437(格鲁吉亚) 43f(吉尔吉斯坦) 440(吉尔吉斯斯坦) 442(土库曼) 443(乌兹别克斯坦) 444(鞑靼斯坦) 818(未知) 819(未知) 82c(阿塞拜疆) 843(乌兹别克)45A 叙利亚语(叙利亚) 2801 阿拉伯语(叙利亚)
Gandcrab 5.2分析过程
创建互斥体:AversSucksForever
Gandcrab 5.2分析过程
解密出一堆进程名,循环判断是否存在,存在就将其结束,防止加密的时候占用文件,以至于加密失败。

Gandcrab 5.2分析过程
Salsa20算法
Gandcrab 5.2分析过程
解出hack RSA公匙
Gandcrab 5.2分析过程
计算加密后文件的后缀
Gandcrab 5.2分析过程
从内存中解密出相应的后缀信息,如下后缀文件名,不进行加密,如下所示:

Gandcrab 5.2分析过程
从内存中解密出相应的后缀信息,如下后缀文件名,进行加密,如下所示:
Gandcrab 5.2分析过程
生成User公匙私匙
Gandcrab 5.2分析过程
Gandcrab 5.2分析过程
用Salsa20解出hack的公匙,用Salsa20加密user的私匙,用hack的公匙加密那个加密user私匙的Salsa20的向量和key
将加密后的salsa20的key和向量和用户的私匙,加密后的用户电脑的信息用base64加密,写入勒索信
Gandcrab 5.2分析过程
Gandcrab 5.2分析过程
加密局域网共享目录下的文件
排除特定文件夹
\ProgramData\, \IETldCache\, \Boot\, \Program Files\,\Tor Browser\,\All Users\, \Local Settings\,\windows\, C:\Program Files on RISC, C:\Program Files\Common,\Local Settings\Applicaiton Data (non roaming)
排除特定文件
thumbs.db,netuser.dat.log,boot.ini, bootsect.bak,iconcache.db,ntuser.dat,autorun.inf,desktop.ini,bootfont.bin, NTDETECT.com
读取要加密文件的后540个字节,比较532位93892918h,和536位38281h,是否相等,相等就退出函数,不相等就加密,
先写入要加密文件的后540位中的,532位93892918h,和536位38281h,加密标识
被加密文件的后540个字节,开头32字节被覆盖写入Salsa20的key,再将前256字节用ras加密,密匙是user公匙,接着被rsa加密的的256字节数据,写入Salsa20的8字节的向量,接着在用rsa加密256个字节。
Gandcrab 5.2分析过程
用Salsa20加密被加密文件的所有内容,在将上面用RSA加密后的Salsa20的key和向量拼接到加密文本的后面。
Gandcrab 5.2分析过程
删除卷影副本
Gandcrab 5.2分析过程
设置勒索提示壁纸
Gandcrab 5.2分析过程
将加密后的user信息,base64加密发送到服务器kakaocorp[。]link
最后自我删除

防护建议

1、及时给电脑打补丁,修复漏洞。
2、对重要的数据文件定期进行非本地备份。
3、不要点击来源不明的邮件附件,不从不明网站下载软件。
4、尽量关闭不必要的文件共享权限。
5、更改账户密码,设置强密码,避免使用统一的密码,因为统一的密码会导致一台被攻破,多台遭殃。
6、如果业务上无需使用RDP的,建议关闭RDP。当出现此类事件时,推荐使用防火墙,或者终端检测响应平台(EDR)的微隔离功能对3389等端口进行封堵,防止扩散!