损耗数据分析(5.1样本详细分析)
作者:360企业安全华南基地
概述
最近国外安全研究人员发现了GandCrab勒索病毒的V5.1最新版变种,360企业安全华南基地团队马上对此事进行了相关跟进,获取到了相应的变种样本,确认此样本为GandCrab勒索家族的最新的变种,新版本增加了大量花指令,大部分关键功能都是动态获取 API,并且所有关键字符串也都被加密了。文件加密算法采用RSA-2048 salsa20,并且加密共享目录中的文件, 并使用漏洞进程提权还将系统中指定的文档和文件加密为随机字符后缀,然后对用户进行勒索。天擎已能对该勒索者进行查杀
技术细节详细分析
前期准备
首先GandCrab会遍历当前系统进程列表,如果匹配到指定的进程后则结束该进程。防止文件被占用,要结束的进程列表如下总共71个进程名字
msftesql.exe、sqlagent.exe、sqlbrowser.exe、sqlwriter.exe、oracle.exe、ocssd.exe、dbsnmp.exe、synctime.exe、agntsvc.exe、isqlplussvc.exe、xfssvccon.exe、sqlservr.exe、mydesktopservice.exe、ocautoupds.exe、encsvc.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、thebat.exe、thebat64.exe、thunderbird.exe、visio.exe、winword.exe、wordpad.exe、synctime.exe、dbsnmp.exe、oracle.exe、sqlwriter.exe、ocomm.exe、sqlbrowser.exe、sqlagent.exe、thebat.exe、isqlplussvc.exe、msftesql.exe、agntsvc.exe、xfssvccon.exe、sqlservr.exe、mydesktopservice.exe、ocautoupds.exe、encsvc.exe、firefoxconfig.exe、tbirdconfig.exe、mydesktopqos.exe、ocssd.exe、mysqld.exe、mysqld-nt.exe、mysqld-opt.exe、dbeng50.exe、sqbcoreservice.exe、excel.exe、mspub.exe、infopath.exe、msaccess.exe、onenote.exe、outlook.exe、powerpnt.exe、steam.exe
然后动态获取Kernel32模块地址,获取导出函数名称,并计算hash后与硬编码的hash比较获取函数地址如下:
0xC930EA1E = Process32Next
0x6C544060 = SetErrorMode
0x99A4299D = OpenProcess
通过预先设置好的硬编码做为RC4解密算法的key做进行解密,然后还原出每个字符串的原始内容,根据内容判断,是连接C2时使用的请求参数名。
参数名pc_userpc_namepc_groupavpc_langpc_keybos_majoros_bitransom_idhddipSub_idversion
最后将获取到的系统信息,再次使用RC4进行加密,使用的加密key值为 :
.oj=294~!z3)9n-1,8^)o((q22)lb$
加密后的:
然后获取Windows版本信息
获取当前运行进程权限等级
然后判断当前自身进程权限,如果是低权限,则使用CVE-2018-8440 和 CVE-2018-8120进行提权,如下代码
然后使用WMI 将自身以管理员权限进行重启
获取操作系统语言版本 如果是以下语言时则退出加密,并删除程序
419(俄罗斯)422(乌克兰) 423(比利时) 428(塔吉克) 42B(亚美尼亚)42c(阿塞拜疆) 437(格鲁吉亚) 43f(吉尔吉斯坦) 440(吉尔吉斯斯坦) 442(土库曼) 443(乌兹别克斯坦) 444(鞑靼斯坦) 818(未知) 819(未知) 82c(阿塞拜疆) 843(乌兹别克)45A 叙利亚语(叙利亚) 2801 阿拉伯语(叙利亚)
使用磁盘序列号计算hash后,创建名为GLobal\<hash>.fuck 互斥体,防止多次运行
在这个版本中仍就点名安全研究员 @hashbreaker Daniel J. Bernstein
开始加密
做完上文中说的事情后,开始进入加密文件的流程,通过两层解密后得到RSA-2048公钥:
首先使用硬编码的RC4算法进行解密,然后再进行xor算法得到密文
然后再使用下图解密出来的KEY再次去解密,最终得到RSA的公钥明文
解密后的RSA-2048 公钥:
不进行加密的文件后缀:
不加密的后缀列表如下:
.cab .cpl .cur .diagcab .diagpkg .dll .drv .lock .hlp .ldf .icl .icns .ico .ics .lnk .key .idx .mod .mpa.msc .msp .msstyles .msu .nomedia .ocx .prf .rom .rtp .scr .shs.spl .sys .theme .themepack .exe .bat .cmd .gandcrab .KRAB .CRAB .zerophage_i_like_your_pictures
要加密的文件后缀列表如下:
随机生成字符串作为加密后的文件扩展名,写入到注册表
HKEY_LOCAL_MACHINE\SOFTWARE\ex_data\data[ext],该字符串作为被加密文件后缀,如下图所示:
然后生成一对RSA-2048密钥,并导出PUBLICKEYBLOB和PRIVATEKEYBLOB 用于加密salsa20 算法的key(用于加密文件的key)
创建注册表SOFTWARE\keys_data\data
写入注册表前生成的RSA-2048公钥
- 导入硬编码公钥
sub_2040EC函数导入硬编码的RSA2048公钥来加密生成的8位随机数和32位随机数
使用硬编码的公钥加密8位、32位随机字符串,以及生成的RSA-2048私钥,随后将加密的信息写入注册表
写入加密后的私钥大小 32位随机字符 8位随机字符 加密后的私钥
- 解密勒索字符串信息
使用Base64加密之前的key以及收集的pc信息,拼接到勒索提示文件中
解密勒索提示文本内容,如下图所示
最终写入的勒索提示文件,如下图所示:
- 加密文件
加密可用局域网共享目录下的文件
加密磁盘目录下的文件
写入勒索提示文本JBKJFFEII-DECRYPT.txt
写入.lock文件
排除特定文件
加密文件内容
追加加密信息到文件末尾
创建勒索桌面壁纸文件到C:\Users\<USERNAME> \AppData\Local\Temp\bxmeoengtf.bmp
通过修改注册表HKCU\Control Panel\Desktop\Wallpaper设置壁纸
- 删除卷影拷贝
检测如果WMI可用,则使用WMI命令删除卷影拷贝:
C:\Windows\system32\wbem\wmic.exe shadowcopy delete
否则使用CMD命令删除:
C:\Windows\system32cmd.exe /c vssadmin delete shadows /all /quiet
查杀、防御技术方案
- 不要打开来历不明的邮件附件
- 在Windows中禁用U盘的“自动运行”功能
- 打齐操作系统安全补丁,及时升级Web、数据库等服务程序,防止病毒利用漏洞传播
- 避免使用弱口令,采用复杂密码,设置登录失败次数限制,防止暴力破解攻击
- 安装杀毒软件,定期扫描电脑,及时升级更新病毒库保持杀毒软件的良好运行
- 提高安全意识,保持良好的上网习惯,重要数据做好备份
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com