作者: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_user |
pc_name |
pc_group |
av |
pc_lang |
pc_keyb |
os_major |
os_bit |
ransom_id |
hdd |
ip |
Sub_id |
version |
最后将获取到的系统信息,再次使用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
360天擎新一代终端安全管理系统是360企业安全集团为解决政企机构终端安全问题而推出的一体化解决方案,是中国政企客户3300万终端的信赖之选。系统以功能一体化、平台一体化、数据一体化为设计理念,以安全防护为核心,以运维管控为重点,以可视化管理为支撑,以可靠服务为保障,能够帮助政企客户构建终端防病毒、入侵防御、安全管理、软件分发、补丁管理、安全U盘、服务器加固、安全准入、非法外联、运维管控、主机审计、移动设备管理、资产发现、身份认证、数据加密、数据防泄露等十六大基础安全能力,帮助政企客户构建终端威胁检测、终端威胁响应、终端威胁鉴定等高级威胁对抗能力,为政企客户提供安全规划、战略分析和安全决策等终端安全治理能力。