本篇文章由ChaMd5安全团逆向样本小组投稿
IOC
病毒名称:voyager勒索病毒
来源:https://github.com/AirEvan/Virus/tree/master/voyager_en
作用:加密受害者的用户文件以此勒索。
SHA256:6d64566df10a5eb7fd765e3e29dbd9d8901a52ef84b85b0d212959d5e639c7f5
SHA1:efd505a94b2b467e3f68d131d99051e4502a0936
MD5:22df2e6ae1b2d1500fa020d89dde71fe
一、行为概述
Voyager 是Hermes837 勒索软件的新变种,发现于2020年3月 1日。感染此恶意软件的系统会经历数据加密,用户会收到解密赎金要求。在加密过程中,所有受影响的文件都会附加“ .voyager ”扩展名。
该勒索病毒在C:ProgramData目录下释放一个文本文件cdbf12f9ce6547423ad6c30dc08da035f48d08692a16d77db58c72cb815d047a,对所有的用户目录进行遍历,加密所有的文件(以.voyager结尾)。
在每个加密的 目录下创建一个README.txt文件告诉受害者如何联系攻击者解密文件,以此向受害者勒索。
打开cdbf12f9ce6547423ad6c30dc08da035f48d08692a16d77db58c72cb815d047a文件发现里面是一段base64编码的内容,解密后是二进制信息(非ASCII字符集)。
病毒在HKLMSOFTWAREWow6432NodeMicrosoftWindowsCurrentVersionRun和HKCUSoftwareMicrosoftWindowsCurrentVersionRun中添加b84cbc1d290253fbb35d441ad34aebcdffea13ec5e6072cb2491feda8d1a5054项,其 值为该病毒文件,使其在用户每次登录时运行。
病毒在加密任务结束后,通过cmd命令行删除病毒自身。
二、分析
使用Exeinfo查壳,发现有upx壳。
使用UPX tool来脱壳。
脱壳后的恶意文件拥有将近7800个函数,而且大多数函数通过函数指针来调用,所以通过常规的静态分析是难以分析出该病毒的逻辑。通过字符串搜索也没有找到如“.voyager”这样的字符串,所以应该是对要使用的数据加密了。到这里基本上没有办法通过交叉引用分析出更多的东西了。
在虚拟机中,打好快照,使用ida调试该样本。根据之前的procom得到的执行行为,知道该样本会对自身进行文件访问,以及后续加密过程也要访问文件系统,所以对CreateFileW函数下断点,F9运行。成功断下来,样本首先打开一个对自己的文件句柄。
接着,对ReadFile函数下断点。样本读取出解密出来的内容(之前应该加密了),里面有大量与病毒行为相关的字符串,其中就包括要加密的文件类型的后缀,以及“.voyager”这样的字符串。
再次在CreateFileW函数断下来,创建C:ProgramDatacdbf12f9ce6547423ad6c30dc08da035f48d08692a16d77db58c72cb815d047a文件。
在函数sub_4208FF中,获取当前进程名,也就是样本的名字。
通过sha1的常量以及交叉引用,再通过调试时跟踪,成功找到sha1加密的位置0x4A22B0。在函数sub_4A22B0处,对初值(00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00h)使用魔改的sha1算法进行加密,并将结果作为下一轮sha1加密的输入,共进行64轮。每一轮加密的加密结果在进行下一轮加密前,会在函数在函数sub_4A19F0中,对上面结果进行翻转。在函数sub_4F2670中,对每4个字节进行加4。
经过几天的调试,终于发现整个样本的核心位置,也就是函数sub_42113C。样本除开初始化的部分,大体上主要行为都在这里。在函数sub_42113C中,样本首先会访问样本所在的目录里是否存在!READ_ME.txt文件,没有就创建。通过函数sub_42107A得到下一个要访问的文件路径,也就是遍历其他目录以及其下的文件。其他细节,如下图所示。
在sub_4A1830函数中,每次取要加密文件的前16个字节进行异或一组固定的数据(由样本的初始化过程生成,应该与时间有关,因为每次运行样本都不一样,而且没有使用随机数生成函数。这部分由于时间关系,没有深入,前面的sha1加密应该与这个有关)。在函数sub_4BF1B0中调用sub_4F2670来实现写到新文件中。
通过sub_4C6ECF搜寻目录下的文件。
通过函数memmove将加密的内容写入到带有“.voyager”后缀的新文件中。
下面是该样本的加密逻辑:
读出要加密文件的开头16个字节,分成四组,每组与初始化的数据进行异或,最后写回去(内存中原来的缓存位置)。下图中v15就是原文数据。V12是那组初始化后得到的16字节数据。
在函数sub_4C58D0中,从要加密的文件偏移0x10处开始,将16个字节的内容与前16字节的内容异或,所得结果写回原处,然后作为下一组要异或的数据。偏移移动16个字节,该处的16个字节的内容与上面的结果异或,所得结果写回原处。以此反复,直到所有的文件内容都被加密。而最开始的偏移为0的16个字节则是与一组样本初始化生成的数据异或得到。
最后,补充一下,通过字符串搜索可以知道,这个样本是使用了sha1,sha256,以及RSA三种加密。其中sha1和sha256都通过常量以及调试确认存在执行,而RSA因为定位难度大没有确认。但是,经过分析发现sub_4B7C10是RSA的可能性较大。另外,该样本的初始化部分并未分析完,有兴趣的大佬可以继续。
三、总结
这个勒索病毒并未做持久化操作,甚至是在加密完受害者电脑上所有要加密的文件后就会自动清除,中间也无任何网络行为。勒索软件可能是通过木马、垃圾邮件活动、非法激活工具(“破解”)、虚假更新程序和不受信任的下载渠道传播。
目前,如果中了该病毒,只能寻求专业人士的帮助下载对应的解密工具(未在www.nomoreransom.org中找到解密工具),或者向黑客缴纳赎金。
end
招新小广告
ChaMd5 Venom 招收大佬入圈
新成立组IOT+工控+样本分析 长期招新