这篇文章主要分析一下Cryptoshield,来自于RITEST RIG EK的一个勒索病毒。病毒样本可以从这里得到:
http://www.malware-traffic-analysis.net/2017/01/31/index2.html
首先,给病毒脱壳。在Ollydbg中打开病毒,调试设置处设置在每个新的dll处下断。按F9直到我们看到内存视图中出现了两个新的节。这个时候如果我们点击这两个节就会发现是PE格式的内容。猜测应该是payload,后面分析验证了这个猜测。
将这部分内容存储起来,然后在IDA中打开进行分析。
在最初,我们可以看到两个函数 sub_402A10 和sub_402980。
第一个函数获得了磁盘的序列号(serial number)。如果我们进入这个函数,我们可以发现他从’A’循环到’Z’,当它循环到’C’的时候,GetVolumeInformation 这个API成功获得了C盘的序列号并且跳出了循环。在我的虚拟机里面,’C’盘的序列号是EC4EBD1D。在第二个函数里面,它用了GetUserName这个API并且用用户名称来计算出一个数字。
分析一下大致的算法就是,把每个字母的ascii值乘以128然后加下一个字母,一直循环下去。所以我的用户名’sam’就得到了1CF0ED。
在此之后,我们看到两个API分别是CreateMutex和WaitForSingleObject。他们是用来保证不重复感染的。Mutex的名字就是我们先前那两个函数获得的数字链接在一起。
在函数sub_403180这个地方,它创建了一个文件C://Users/sam/AppData/Roaming/1FAAXB2.tmp 但是失败了。在此之后,是函数sub_4024D0。这是病毒用来永驻系统的。它复制了自身,并且通过设置注册表来达到这个目的。看下注册表的改变。
好了,我们继续。
我划了红线那个函数就是加密函数了。双击进入。
这个病毒检测了磁盘的类型。我虚拟机C盘就是DRIVE_FIXED。如果我们用了虚拟机的sharefolder就应该是DRIVE_REMOTE,所以这个病毒会把共享文件夹也给加密了。在检查了磁盘的类型后,它开始了加密。实际的加密函数很长,这里看下重点位置。
我们可以看到一些加密用的API。
这里是加密开始的地方。我们可以看到它把文件内容读了进去。我这里C盘病毒查找到的一个文件是python安装包里面的一个,所以可以看到python字样。
大家可以看到,加密之后内容发生了改变。
为了让整个过程更加清晰,我画了一个图来表示整个过程。
大致就是这个流程。
有不足之处,欢迎邮件指正!
xudong_shao@hotmail.com