0x01 背景:
1.1 GandCrab勒索病毒介绍
GandCrab勒索病毒堪称2018年勒索病毒界的“新星”,该勒索家族于2018年01月面世,短短几个月的时间,历经三大版本更迭。第一版本的GandCrab勒索病毒因C&C被安全公司与警方合作后控制而登上各大科技媒体头条,两个月后GandCrab V2勒索病毒出现,在V2家族的样本中,病毒作者使用极具挑衅意味的C&C地址(C&C地址中包含针对警方和安全公司的字符内容),又一次登上科技新闻版面。 最近,腾讯安全反病毒实验室截获GandCrab勒索病毒的V3版本,V3版本结合了V1版本与V2版本的代码隐藏技术,更加隐蔽。GandCrab V3勒索病毒使用CVE-2017-8570漏洞进行传播,漏洞触发后会释放包含“ 안녕하세요”(韩语” 你好”)字样的诱饵文档。与以往版本的该家族的勒索病毒相比,该版本并没有直接指明赎金金额,而是要求用户使用Tor网络或者Jabber即时通讯软件获得。 GandCrab勒索感染后,显示的勒索界面如下所示: 在每个文件夹下都会释放GDCB-DECRYPT.txt,用来描述解密过程。勒索说明文件如下: 文件被加密后缀名被修改变为.CRAB,如下所示。
1.2. GandCrab勒索病毒版本演化
据统计,GandCrab已经成为2018第三大流行的勒索软件家族,受害者大部分集中在巴西、美国、印度、印度尼西亚和巴基斯坦等国家。截止目前,该勒索病毒经过三次版本迭代,下表为对该勒索病毒三次版本的比较。 从加密方式来看,该勒索家族的加密方式代码保持了高度的一致性,均使用了RSA+AES相结合的方式,从算法解密难度较大。但由于国外的安全公司与警方合作取得了V1版本的C&C服务器的权限,这使得部分V1版本的加密文件可以解密。但对于V2版本及V3版本的加密文件,现在还没有解密方法。 有趣的是,勒索软件作者为了报复安全公司与警方控制了其V1版本的C&C服务器,在V2版本中直接使用了带有安全公司与警方相关的字符做为其V2版本的C&C服务器,以示挑衅。 各个版本最大的进化之处主要表现在勒索主体的加载流程上,具体如下: l GandCrab V1版本的勒索家族执行流程为:使用Tea算法解码出SHELLCODE后,SHELLCODE解压缩就直接得到了勒索主体程序。 l GandCrab V2版本的勒索家族则引入了反射型DLL的技术手段。主体exe程序使用固定的解码KEY直接解码出反射型DLL,并从该反射型DLL的首字节处直接运行。 l GandCrab V3版本的勒索家族则是将V1版本与V2版本进行了结合,既包含了V1版本中使用的SHELLCODE与解压缩过程,也包含了V2版本中的固定的解码KEY直接解码出反射型DLL。 各版本勒索主体的加载流程对比图:
由于最新的GandCrab V3版本结合了V1版本与V2版本的技术特点,腾讯安全反病毒实验室将在下面的章节中对GandCrab V3版本的样本进行详细分析,在样本传播、加载、感染流程上为安全分析人员提供参考。 0x02. GandCrab V3勒索软件样本分析GandCrab V3勒索软件通过邮件进行传播,在邮件的附件中包含有漏洞利用文档,使用的漏洞为CVE-2017-8570。在用户打开附件中的漏洞文档后,触发漏洞,利用成功后会在temp目录释放2nd.bat、Task.bat、decoy.doc、exe.exe等文件。这些文件的功能分别如下: 下图显示了包含漏洞的OLE2Link对象在利用CVE-2017-8570漏洞时,使用Composite Moniker来绑定File Monike对象并最终通过COM接口加载执行sct脚本文件。
2.1 诱饵文档
诱饵文档显示韩语内容“안녕하세요”,对应着中文为“你好”的含义。显示如下: 查看decoy.doc的元数据可以看到,decoy.doc的作者和最近修改者分别为User和admin,文档的公司属性显示为:KOMP。 2.2 inteldriverupd1.sct
漏洞利用成功后执行该文件,该文件会加载task.bat执行。该文件内容如下: 2.3 TasK.BaT
主要功能为:确保2nd.bat只被加载运行一次,防止2nd.bat的重复加载。实现的方式为:首次运行时在临时目录下创建block.txt文件并加载2nd.bat执行;在非首次运行时,检测block.txt文件是否存在,如果已经存在则退出运行。 2.4 2nd.bat
主要实现了两个功能:一是加载exe.exe(勒索软件主体);二是使用winword打开decoy.doc(诱饵文档)。该文件的内容如下: 2.5 EXE勒索样本详细分析
该EXE最终会解码勒索程序并加载其执行加密过程,该EXE解码出勒索主体的过程如下所示: 2.5.1 解码SHELLCODE
使用Tea算法解码出第一段的shellcde,并到SHELLCODE处执行,使用的key十六进制表示为: “BB 75 1E 79 2B BF E8 C2 CC F3 5D BD 55 ED AD 9F 72 7F 18 EF 21 BF 6C 2D 4A 87 BB 20 D9 67 00 00”,并到解码后的数据处执行。 解码函数如下: 数据解码前后对比:
2.5.2 SHELLCODE
来到经过TEA算法解码后的地方执行,如下所示。 该段SHELLCODE的功能为:解压缩PE文件,并在内存中展开解压缩出的PE文件,最终到PE入口点执行。 在解压缩完成时,可以通过内存工具将解出的PE文件保存出来,留做后面分析。
2.5.3 内存LOADER
该PE文件的主要功能为使用内置的KEY,解码出反射型dll,并到反射型Dll的PE头处开始执行。 相关的解码反射型dll的代码片段如下: 并随后加载加载dll执行
2.5.4 反射型dll(模块名:encryption.dll) 该反射型DLL为最终的加载模块,其导出模块名:encryption.dll。 1. 开启线程检测是否有安全软件运行 检测的安全软件列表如下: 如果检测到上面文件的存在,则退出加密过程。 2. 加密文档之前,结束下面的活动进程,以解除对某些文件的占用。要结束的进程如下: 进程名 3. 检测安全软件进程,将安全软件进程的存在情况回传CC 检测安全软件进程的代码片段如下: 4. 使用RSA算法生成公私钥,并将公私钥使用Base64编码后发送到CC 生成公私钥的代码片段: 使用BASE64编码公私钥的代码片段: 5. 与C&C通信格式 勒索软件与carder.bit进行通信,通信的内容使用BASE64编码。通信过程如下所示。如果是在断网情况下,GandCrab与C&C通信不成功的情况下,不会启动加密过程。 6. 在遍历系统文件时,会跳过包含下面字符串的特殊路径 ProgramData IETldCache Boot Program Files Tor Browser Ransomware All Users Local Settings Windows 7. 为防止加密后破坏系统的可用性,在加密过程中会跳过包含带有下面特征字符的文件。 8. 具体的文件加密算法过程在3B54070函数中。对文件的加密使用的是AES算法,AES的密钥使用上面生成的RSA加密后保存在了密文文件中。
0x03 防护建议
文章对GandCrab勒索病毒家族的各个版本进行了对比分析,同时对最新版本的勒索样本的执行流程进行了详细分析,建议广大用户可以从下面几个方面做好勒索病毒的防预工作。 1. 及时备份重要文件,对重要数据等进行非本地备份; 2. 对来源不明的邮件保持高度警惕,企业用户可以使用腾讯御界防APT邮件网关进行拦截。 3. 及时安装更新补丁,定期用专业的反病毒软件进行安全查杀,目前腾讯电脑管家可以完美查杀该勒索软件及包含该勒索软件的漏洞文档。
|