一、样本简介

GandCrab勒索病毒于2018年1月首次出现,在半年的时候之内,迅速发展,短短几个月时间里就出现了V1.0,V2.0,V3.0,V4.0等几个大的版本的更新,V4.0之后又出现了V4.1,V4.2,V4.3,V4.4等几个小版本的变种更新样本,非常活跃,目前此勒索病毒最新的变种样本均无法解密。
GandCrab的感染方式主要是通过以下几种方式:
(1)RDP爆破
(2)垃圾邮件,带有恶意链接或附件
(3)下载捆绑有恶意程序的正常软件
(4)利用RigEK漏洞利用工具包

二、样本分析

1.样本前期进行解密操作,先解密出里面的shellcode代码,如下所示:

修改shellcode代码的属性,如下所示:

转跳到相应的内存地址,执行shellcode代码,如下所示:

定位kernel32.dll,如下所示:

获取GetProcAddress函数的地址,如下所示:

然后再获取内存操作VirtualAlloc,VirtualProtect,VirtualFree,GetVersionExA,
TerminateProcess等函数地址,如下所示:

分配相应的内存地址,如下所示:

进行内存解密出payload代码,如下所示:

进行内存块拷贝操作,将003B0000的内存数据payload拷贝到00400000内存地址处,如下所示:

再将003B0400处的数据,拷贝到00401000处,如下所示:

循环拷贝003B0000处的相关数据到00400000,重建PE文件数据,如下所示:

重建输入表操作,如下所示:

输入表重建完成之后,如下所示:

获取atexit函数地址,并执行atexit,如下所示:

最后跳转到相应的payload加密操作代码入口,执行payload代码,如下所示:

2.样本跳转到了入口点,相应的反汇编代码,如下所示:

3.使用了静态对抗反汇编的方式,去混淆之后,如下所示:

4.跳转到入口函数之后,同样使用了相同的对抗反汇编的方式,如下所示:

5.获取Windows操作系统版本,如下所示:

6.获取当前运行进程权限,如下所示:

7.遍历相关进程,如下所示:

然后结束相关的进程,如下所示:

相关的进程列表如下:

msftesql.exe、sqlagent.exe、sqlbrowser.exe、sqlwriter.exe、oracle.exe、ocssd.exe、dbsnmp.exe、     synctime.exe、agntsvc.exeisqlplussvc.exe、xfssvccon.exe
    sqlservr.exe、mydesktopservice.exe、ocautoupds.exe、agntsvc.exeagntsvc.exe
    agntsvc.exeencsvc.exe、firefoxconfig.exe、tbirdconfig.exe、mydesktopqos.exe
    ocomm.exe、mysqld.exe、mysqld-nt.exe、mysqld-opt.exe、dbeng50.exe
    sqbcoreservice.exe、excel.exe、infopath.exe、msaccess.exe、mspub.exe
    onenote.exe、outlook.exe、powerpnt.exe、steam.exe、sqlservr.exe、thebat.exe
    thebat64.exe、thunderbird.exe、visio.exe、winword.exe、wordpad.exe

8.查询操作系统安装的输入法,如下所示:

比较操作系统输入法是否为Russian,如下所示:

如果操作系统为输入法为Russian,则不进行加密操作,执行后面的自删除操作,如下所示:

9.获取操作系统的语言版本,如下所示:

当操作系统语言为如下国家时,则不进行加密,执行自删除操作,相应的国家列表如下:
419(LANG_RUSSIAN俄语) 422(LANG_UKRAINIAN乌克兰)
423(LANG_BELARUSIAN白俄罗斯) 428(LANG_TAJIK塔吉克)
42B(LANG_ARMENIAN亚美尼亚) 42C(阿塞拜疆,拉丁美洲(AZ))
437(LANG_GEORGIAN格鲁吉亚人) 43F(LANG_KAZAK哈萨克族)
440(LANG_KYRGYZ吉尔吉斯) 442(LANG_TURKMEN土库曼)
443(乌兹别克斯坦,拉丁语(UZ)) 444(LANG_TATAR俄罗斯(RU))
818(未知) 819(未知)
82C(LANG_AZERI阿塞拜疆,西里尔(亚利桑那州)) 843(LANG_UZBEK乌兹别克)
10.创建一个随机名称的互斥变量,防止重复感染,如下所示:

11.利用程序中硬编码的数据,内存加密生成RSA公钥public_key,如下所示:

动态调试,得到的RSA公钥数据,如下所示:

RSA公钥,如下:

06 02 00 00 00 A4 00 00 52 53 41 31 00 08 00 00 01 00 01 00 BB EF 02 46 0B 5E 8C 72 8E A0 A0    31 AE 95 33 82 D6 67 89 32 B2 ED 92 A8 16 0A BC 28 C1 4D 3E 00 A3 DC 48 47 3D E9 9A C1 31 AE    41 C5 E8 22 70 6A 7F 75 98 8F C6 EB EE 65 9B 1B 96 D3 4D AA 3F 75 0B A5 75 E7 71 CD 88 A0 77    E0 CB 2F 33 A2 0D AB E4 E3 40 82 3F D9 95 50 A4 92 56 AA 77 61 05 75 F2 25 81 DA A1 BE 30 A7    CB DA 2B A39E 85 AB 03 8D BB D3 F0 BB 9C 71 9A D4 98 CF C6 C2 A8 62 84 32 85 4C 1B 2C FF E4 D8    D9 E5 2A BB 18 06 08 6A F4 D8 D1 8D 00 E3 41 FC E7 C5 20 25 D2 DD 47 FF 27 09 1F 6D 34 6C 8A      0A EB AB 13 48 09 F6 24 24 98 84 22 DD C1 A1 1C 60 63 06 71 EE 00 4A 21 BA 1F AF 4C 03 D2 C7      3F BA 64 39 35 B4 44 0B 17 5F B5 2C 8C 4E B2 E6 61 B2 23 21 4D AD FB D4 1D 96 4B A1 FC 7F BF      98 78 BB D3 72 F1 E3 46 1F 03 4C 05 18 96 C1 47 C0 A0 6F 17 07 11 10 2B 2D D4 C8

12.获取主机相关信息,如下所示:

获取的相关信息列表如下:

用户名
    主机名
    工作组
    操作系统语言
    操作系统键盘输入法
    操作系统版本类型信息
    CPU类型及型号信息
    安全软件信息
    磁盘类型及空间信息

遍历主机上的安全软件,收集安全软件相关信息,如下:

相关的安全软件列表如下:

AVP.EXE、ekrn.exe、avgnt.exe、ashDisp.exe、NortonAntiBot.exe、Mcshield.exe
    avengine.exe、cmdagent.exe、smc.exe、persfw.exe、pccpfw.exe、fsguiexe.exe
    cfp.exe、msmpeng.exe

得到的相关信息,如下所示:

相应的反汇编代码,如下所示:

13.获取到主机的相关信息,拼接字符串信息,如下所示:

然后对拼接出来的字符串进行加密处理,如下所示:

相应的反汇编代码,如下所示:

可以看到此GandCrab勒索样本的版本信息version=4.3
14.获取相应的网站域名链接地址,如下所示:

相应的域名地址列表如下:

勒索软件从上面的域名地址列表中选择一个域,并使用以下单词之一创建随机的路径,如下所示:

随机的路径列表如下:
wp-content、static、content、includes、data、uploads、news
然后再选择一个单词添加后URL后面,如下所示:

相关的单词列表如下:
images、pictures、image、graphic、assets、pics、imgs、tmp
再从下面的文件名列表中随机选择几个组合成文件名,如下所示:

相应的文件名组合列表如下:
im、de、ka、ke、am、es、so、fu、se、da、he、ru、me、mo、th、zu
最后再把前面的URL与随机选择的扩展名连接起来,如下所示:

随机的扩展名列表如下:
jpg、png、gif、bmp
使用POST的方式发送HTTP请求到之前拼接出来的网站,如下所示:

15.利用程序中的硬编码数据作为Key,然后生成RSA公钥和私钥,并导出公钥,如下所示:

16.将生成的RSA私钥和硬编码生成的RSA公钥设置到注册表项中,如下所示:

设置完成之后,注册表键值如下:

相应的注册表项:
HKEY_CURRENT_USER\SOFTWARE\keys_data\data
17.生成勒索信息文件加密Key的相关信息,如下所示:

生成的勒索信息加密Key,如下所示:

18.内存拼接生成勒索信息,如下所示:

19.遍历磁盘,创建线程,加密磁盘文件,如下所示:

20.创建线程,加密局域网共享目录文件夹下的文件,如下所示:

21.遍历主机或网络共享文件夹目录,如果是以下文件目录,则不进行加密操作,如下所示:

相应的文件目录列表如下:
\ProgramData\
\IEIldCache\
\Boot\
\Program Files\
\Tor Browser\
\All Users\
\Local Settings\
\Windows\
22.遍历磁盘目录下的文件,如果为以下文件,则不进行加密操作,如下所示:

相应的文件名称列表如下:
desktop.ini
autorun.inf
ntuser.dat
iconcache.db
bootsect.bak
boot.ini
ntuser.dat.log
thumbs.db
KRAB-DECRYPT.html
KRAB-DECRYPT.txt
CRAB-DECRYPT.txt
ntldr
NTDETECT.COM
Bootfont.bin
23.将之前生成的勒索信息写入到每个加密后的文件夹下的勒索信息文本文件KRAB-DECRYPT.txt中,如下所示:

写入相应的勒索信息,如下所示:

24.生成随机的lock文件,保存感染时间,如下所示:

25.加密文件,生成以KRAB为后缀的加密文件,如下所示:

26.加密完成之后,通过ShellExecuteW函数调用wmic.exe程序,删除磁盘卷影操作,如下所示:

27.对抗杀毒软件,对杀毒软件的相关驱动进行攻击DeviceIoControl请求,如下所示:


28.相应的勒索信息文本文件,如下所示:

29.加密后的文件,如下所示:

30.通过勒索信息,打开相应的暗网网站,如下所示:

三、总结

此勒索病毒V4.3版本主要利用了对抗静态反汇编的方式,防止安全分析人员对样本进行静态分析,增大了样本静态分析的难度。
对抗反汇编的方式,如下所示:

源链接

Hacking more

...