在网络技术不断发展的同时,一系列的网络恶意软件也在不断衍生。勒索软件是黑客用来劫持用户资产或资源并以此为条件向用户勒索钱财的一种恶意软件。最近非常火热的CryptXXX又有了变种,新版CryptXXX变得更加凶悍了。
新版CryptXXX勒索软件不仅能够加密目标用户电脑和网络上的所有文件,用户还还无法用数据备份来恢复文件——这是新版CryptXXX的重要功能升级之一。
卡巴斯基实验室的安全研究人员一直都在与CryptXXX作斗争:先前研究人员曾发布过一个解密工具,受害者不需要支付赎金就能恢复自己的文件;要是没有解密工具的话,受害者至少需要支付500美元才能解密文件。CryptXXX的开发者发现卡巴斯基的这一举动后,也开始调整程序代码使得破解过程变成更加困难。最近开发者就发布了一个新版本的CryptXXX。安全公司SentinelOne本周一的一篇博客中提到,在6月4日-6月21日之间,新版本的赎金总数已经达到45228美元,当然这不包括前面版本的收入。
实际早在5月21日的时候,CryptXXX的开发者就将该恶意软件的代码更新至3.0版本。此次更新的目的就是为了防止卡巴斯基推出的RannohDecryptor解密程序,免费解锁被加密的文件。
新版本CryptXXX仍旧支持对单个文件进行加密,不过文件尺寸限定在512KB。新版本的主要改进在于破解难度加大了不少。其他改进还包括,相较之前.crypz和.crypt后缀,新版CryptXXX生成加密文件的后缀统一为.crypt1;还有就是前面提到的,针对系统shadow volume卷备份的删除,防止数据可从备份恢复。另外,其传播是通过垃圾邮件进行的,但SentinelOne表示,黑客可能还用到了其他传播途经。
查看恶意DLL文件属性,发现它的文件属性细节其实来自某个名为_BigBang.dll的合法文件,两者的细节信息基本上是一样的。
其实从这样的文件细节信息,根本看不出什么异样,令其看起来就像一般程序。先前的CryptXXX样本还会伪装成微软的合法DLL文件。从unpacker的imports来看,绝大部分内容也好像问题不大,偶尔有一些跟crypto加密相关的词汇出现。从imports和exports列表的情况来看,很多函数是相关图像处理的(和上面提到合法的_BigBang.dll肯定是完全不一样了),似乎并没有什么卵用,这些应该是用来妨碍分析的。
Unpack过程是通过VirtualAlloc为加密payload分配内存,然后复制加密字节。随后payload解密,但仍旧是压缩过的。
根据上一版本的经验在这里可以寻找“MZ”头,但却找到了“M8ZP8”以及一部分可读的字符串“This ? progr3am…”,其实这对Windows可执行文件而言是很正常的。M8ZP8头与aPLiB压缩PE文件相符。
点击这里查看Python脚本,里面有其压缩具体的算法实施,和运行的技术描述详情。首先dump包含压缩payload的内存片段,修剪null字节,用上述Python脚本成功解压。得到的文件再用IDA进行分析,实际上并不完整,而且也不包含有效的导入表(import table)。
payload解密之后,unpacker创建文件C:\PROGRA~2\Z (c:\ProgramData\Z),该文件会通过kernel32.GetFileType来核查,检查是否为FILE_TYPE_CHAR。如果是的话,在不执行恶意payload的情况下,代码结束。随后,当前时间、文件名,外加\r\n,写入到Z文件中。像下面这样:
这些字符串写入文件后不久,这个文件就会被删除。不清楚为什么要这么做,可能是用来干扰分析过程的。
然后unpaker通过查询注册表来确认Startup的位置:
SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Startup
C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup(Win7环境下的路径)
这个位置的作用其实很明确,Unpack代码会在里面放入HTML勒索信,这也算是勒索过程的重点嘛。
从分析的样本来看,是从某个.Ink快捷方式执行,该快捷方式指向rundll32.exe F0F3.tmp.dll,MSX3。此处,后面的,MSX3是个附加参数,这句命令就是加载F0F3.tmp.dll,随后执行MSX3函数。实际上unpacker里面并不存在MSX3函数,所以应该是payload的一部分。
所以也就很有可能是通过调用VirtualProtect来转储unpack过后的payload。既然需要确认MSX3函数的地址,我就在GetProcAddress建立一个断点。
取回MSX3的地址之后,执行跳往该地址,文件加密、勒索行为也就开始了。
似乎payload使用Delphi编译的,通过如下信息可知。从下面这个列表来看,部分imports似乎还用到了DNS、POP3以及SMTP协议。不过这些函数相较MSX3,应该是通过不同的入口点来调用的。
最终,被勒索软件锁定的文件使用RSA和RC4混合加密,加密之后的文件扩展名为.cryp1,之前版本的扩展名为.crypt。如前面提到的,前一版本可以通过解密工具进行解密,但是新版本就无法实现了。
被加密过的文件所在的每个文件夹里面都会有勒索信。其中一封是文本文件,另一封就是HTML格式了。文本形式的勒索信是下面这样的:
如前文提到的新版CryptXXX加入的新特性:文件完成加密后,磁盘上所有的备份文件都会被删除,防止用户用文件恢复这一招。
显示在屏幕上的勒索信息是这个样子的:
为了进一步警告用户问题的严重性,CryptXXX还会在
路径下,创建<RANSOM ID>.html以及<RANSOM ID>.bmp两个文件。其实也是勒索信,不过跟前面提到的略有不同,重启计算机之后就会出现:
点击进入支付页面,页面会让受害者填写相应信息,就是勒索软件分配的ID:
用这个ID登录之后,就会显示如下页面:
如果受害者都没听过比特币,或者不会用比特币支付,那么也不要紧,下面这个页面会教你怎么做的。
为了证明他们的确能够提供解密服务,下面这个页面主要是供受害者进行解密服务的试用(服务很贴心),但这个所谓的试用服务,解密文件的大小限定在512KB之内。
其实要避免勒索软件感染,就如同避免其他恶意软件一样。保持Windows 和浏览器相关的组件(Java, Adobe等)获得最新的更新。此外,也要保持浏览器干净,注意预防能导致恶意感染的广告软件的侵入,还有不轻易打开来源不明的邮件附件。这次新版的CryptXXX具备删除磁盘shadow volume备份文件的能力,那么其实也可以考虑将重要的文件备份到其他位置。
雷锋网注:本文参考来源:arstechnica、sentinelone,由饭团君编译,FreeBuf独家文章授权雷锋网发布,转载请注明出处(FreeBuf黑客与极客FreeBuf.COM)。