今天分析的是GandCrab 5.2勒索病毒,虽然已经有人分析过了,但是抱着学习的态度,自己还是来分析一遍。
一、样本详情
PE: packer: UPX(3.95)[NRV,best]
PE: compiler: Microsoft Visual C/C++(2008)[-]
PE: linker: Microsoft Linker(9.0)[EXE32]
二、行为分析
遍历目录创建勒索信,加密文件,删除卷影卷轴还原点。
后缀被改成 .khxrp
三、详细分析
外层loader分析
接着申请内存空间,写进去shellcode,并执行
内存的shellcode代码dump出来后,静态分析感觉还是申请内存写入什么东西,代码如下图。因此在VirtualAlloc下断点,发现果然申请内存后写入一个exe,并覆盖自身内存空间并执行,根据后续分析这才是勒索本体。
勒索本体分析
每个要用到的字符串都是内存解密出来再调用,api都是动态解密调用,对抗静态查杀。
遍历进程查找杀软
获取用户电脑个人信息
将得到的信息用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
判断系统版本,利用CVE_2018_8120(win7)和CVE_2018_8440(win10) 给程序提权,调用Wmic.exe执行自己。
获取操作系统语言版本 如果是以下语言时则退出加密,并删除程序
419(俄罗斯)422(乌克兰) 423(比利时) 428(塔吉克) 42B(亚美尼亚)42c(阿塞拜疆) 437(格鲁吉亚) 43f(吉尔吉斯坦) 440(吉尔吉斯斯坦) 442(土库曼) 443(乌兹别克斯坦) 444(鞑靼斯坦) 818(未知) 819(未知) 82c(阿塞拜疆) 843(乌兹别克)45A 叙利亚语(叙利亚) 2801 阿拉伯语(叙利亚)
创建互斥体:AversSucksForever
解密出一堆进程名,循环判断是否存在,存在就将其结束,防止加密的时候占用文件,以至于加密失败。
Salsa20算法
解出hack RSA公匙
计算加密后文件的后缀
从内存中解密出相应的后缀信息,如下后缀文件名,不进行加密,如下所示:
从内存中解密出相应的后缀信息,如下后缀文件名,进行加密,如下所示:
生成User公匙私匙
用Salsa20解出hack的公匙,用Salsa20加密user的私匙,用hack的公匙加密那个加密user私匙的Salsa20的向量和key
将加密后的salsa20的key和向量和用户的私匙,加密后的用户电脑的信息用base64加密,写入勒索信
加密局域网共享目录下的文件
排除特定文件夹
\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个字节。
用Salsa20加密被加密文件的所有内容,在将上面用RSA加密后的Salsa20的key和向量拼接到加密文本的后面。
删除卷影副本
设置勒索提示壁纸
将加密后的user信息,base64加密发送到服务器kakaocorp[。]link
最后自我删除
防护建议
1、及时给电脑打补丁,修复漏洞。
2、对重要的数据文件定期进行非本地备份。
3、不要点击来源不明的邮件附件,不从不明网站下载软件。
4、尽量关闭不必要的文件共享权限。
5、更改账户密码,设置强密码,避免使用统一的密码,因为统一的密码会导致一台被攻破,多台遭殃。
6、如果业务上无需使用RDP的,建议关闭RDP。当出现此类事件时,推荐使用防火墙,或者终端检测响应平台(EDR)的微隔离功能对3389等端口进行封堵,防止扩散!