2016-10-17 10:49:53
来源:安全客 作者:360QVM
阅读:809次
点赞(0)
收藏
从今年3月开始,Cerber敲诈者病毒家族开始在世界各地肆虐。在中国,Cerber3则成为近期敲诈者大军中的“明星成员”,电脑中毒后文件后缀变为cerber3的受害者求助在各大论坛比比皆是。
对贪得无厌的病毒制作者来说,变种更新的速度也是极快的,新一代Cerber病毒——Cerber4又很快涌现出来。但这次它不再使用标志性的Cerber系列后缀,而是把加密文件后缀修改为4个随机字符(数字和字母),例如.w2qt等。
360QVM团队在监测到Cerber4病毒变种后进行深入调查,发现该变种主打网站挂马传播,且更新了多国语言版本的勒索(根据本地语言),将勒索信息存于后缀为hta的进程中。此外,Cerber4还增加了判断本机时间执行恶意操作、关闭数据库进程以加密数据文件(解除文件占用)等新的特性,但是在病毒运作流程上又回归了更传统的傀儡模式。以下是详细技术分析:
一. 传播方式
Cerber4作者使用了一些Exploit工具对有漏洞的网站进行渗透,接着注入EITest脚本,最后执行最主要的payload进行下载cerber4。
二. 病毒运作流程
A.cerber3流程
如上图所示,cerber3本身是一个加载器,加载器使用了各种混淆技术来绕过杀软的特征检测,并通过最外层的loader加载器释放解密后的shellcode_1。Shellocde_1又充当了一层加载器,开始解密并释放shellcode_2。Shellcode_2也是一层加载器,只不过没有再进行解密释放shellcode_3。而是使用UnmapViewOfSection卸载当前的ImageBase。并把shellcode2写入到原ImageBase处。进行PE修复后,将eip设置到进程的入口点。于是乎开始执行勒索软件真正的功能了。
B.cerber4流程
Cerber4去除了Cerber3繁琐的加载流程,取而代之的是更为传统的傀儡模式:CreateProcess-》GetThraedContext-》ZwUnMapViewOfSection》WriteProcessMemory—》SetThreadContext-》ResumeThread。
三. 病毒分析(cerber3)
A.loader加载器
a. 初始化Loader结构体
加载器动态的将初始化的数据存放置此结构中,以此绕过静态扫描
b. 最外层加载器
最外层加载器函数如下:
1.获取data段首4字节中的内容,此数值为shellcode_1需要分配的大小
2.分配该数值大小的内存,用于存储shellcode_1
3.从data段首地址+4处拷贝上述shellcode_1大小的内容到shellcode_1中
4.开始解密(分2步)
第一步:通过简单的加减运算单个字符来实现。
第二步:将shellcode_1+4处的4字节作为亦或运算的key,使用key解密
5.跳转至shellcode_1入口处
c. Shellcode_1充当加载器
Shellcode_1加载器函数如下:
与之前类似,这里只贴一下部分重要函数
1.解密函数:简单的加减和亦或运算
2.跳转shellcode:
d. Shellcode_2充当傀儡进程
1.修复PE
2.UnMapViewOfSection并写入修复好的PE进行傀儡
B.文件加密
加密的配置完全依据病毒内存中的json中的内容来进行操作的。大致上有如下几种:
1. 文件夹黑名单(不能加密的文件/文件夹,如windows文件夹等)
2. 语言地区黑名单(不能加密的地区,如:俄罗斯,乌克兰,比利时等东欧/中欧国家)
3. 需要加密的文件后缀名(主要是一些mdb,db等数据格式的文件)
4. 加密算法以及加密行为的一些配置
分别为:加密分块的最大大小以及加密区域的个数,最小的文件大小,是否开启多线程模式来加密文件,是否加密网络共享盘,加密后的文件名后缀,rc4 key的大小,rsa key的大小以及经过base64加密后的编码。
经过base64解密,我们可以知道这是一个2048位rsa加密的公钥
5. 勒索的html文件以及txt文件中的内容,也是经过base64加密编码过的
经过base64解密后,我们可以很明显的看到html的标题为勒索文件的html内容
6. 行为配置,操作系统判断,端口,C&C服务器等等
分别为:是否移除卷影副本,是否删除自身,操作系统信息,C&C服务器地址,连接成功后发送的标示,C&C服务器端口,是否需要发送,发送超时时间,成功感染后是否需要语音提示,语音提示重复次数以及语音提示的内容。
7. 壁纸配置(是否需要改变壁纸,壁纸内容等),成功加密后将勒索信息显示在桌面上
8. 文件夹白名单(必须要加密的文件/文件夹,如outlook,powerpoint等文件夹)
9. TOR缴费网站经过base64加密后的编码以及解密后的原文
a. 加密前的准备工作(信息收集)
cerber3首先会在加密前判断PC所使用的语言,若存在为json配置中languages列表中的,则不会触发cerber3加密文件的功能
cerber3其次收集PC上相关的信息,并使用UDP单向传输发送到json配置中servers. Statistics.ip的C&C服务器上。 发送内容的格式为json配置中的servers.data_start所包含的信息,大致如下:
下图为一个发送knock的例子:
b. 加密前的准备(遍历满足要求的文件)
首先,cerber3使用双管道技术负责接收cmd的收发命令消息
并使用命令“C:\Windows\system32\wbem\wmic.exe shadowcopy delete”
来删除磁盘卷影,达到无法还原备份的作用。
接着,依据json配置中的multithread来决定是否使用多线程的方式来加密文件,如果multithread为1,则使用多线程加密,达到加速加密文件的效果。总线程的数量等于处理器的个数*2+2
接下来,根据json.network的数值来判断是否需要遍历网络共享文件,若json.network为1,则遍历。典型的有vmware的vmhgfs共享文件。
下图为满足json.network为1的情况下,cerber3判定vmhgfs服务存在的依据
然后,开始遍历文件,加密白名单中的文件(json.whitelist),躲避黑名单中的文件/ 文件夹(json.blacklist)。满足要求的文件将会被存储下来,为下一步文件的加密做好准备。
c. 正式加密文件
首先,将目标加密文件名随机化。
根据原文件名称的长度生成从特定串{a-z,A-Z,0-9,-}中随机组成的字符串来当做文件的名称。
并且将后缀修改成.cerber3
接着,从文件偏移0x200处读取N个字节(N不定,一般地,N的数值为0x36),并对这N个字节做murmurhash处理,最后存储到一个结构体里。
根据Magic:0xCC9E2D51,0x1B873593,0x85EBCA6B
搜索引擎走起,可以得知是murmurhash。
然后,开始从偏移0x200+N处到文件末尾-M个字节处进行RC4加密并写入。
随机生成的16个字节的RC4 key
加密过后的buf如下
这样,头部加密的数据结构如下图所示
尾部追加的数据( 解密块数据)分为3大部分:
1. 第一块经过rc4加密过的数据结构
再未加密前,它的格式是这样的
2. 第二块经过rsa 1024位加密的数据结构
RSA 1024加密
再未加密前,它的格式是这样的
3. global rsa2048加密过的rsa1024(public/private key)
尾部数据块整合格式如下
被加密后的文件格式如下
其中global rsa 2048的公钥在json的配置中存储。
C.勒索方式
创建线程从json配置文件中获取勒索文件(html/txt)的base64加密后的编码,获取私人的TOR地址并解密编码,写入当前被加密的文件夹下。获取json. wallpaper中的壁纸配置,并写入桌面壁纸。最后,获取json. Speaker中的语音次数以及语音内容,最后以一个女声的形式来提示你文件被加密了。大致意思就是:恭喜你,感染了cerber3!您需要掏钱解决问题!
勒索文件(html/txt格式)的线程生成函数
四. 病毒分析(cerber4)
cerber4基本没有什么很大的变化(文件加密)。主要是做了一些优化的工作。
A. loader优化
废除了cerber3繁琐的加载过程,取而代之的是更为传统的傀儡进程模式,当然这里面还有一些适当的字符串混淆为了逃避杀软的静态特征扫描。此法可以有效地增加调试难度。
传统的进程傀儡大致流程如下:
CreateProcess->GetThreadContext->ZwUnMapViewOfSection->WriteProcessMemory->SetThreadContext->ResumeThread
Cerber4还会判断本机时间是否是2016年,如果是2016年,才执行后续恶意操作。
这也就意味着,只要将本机的本地时间修改为非2016年,那么cerber4就不会进行后续的恶意行为。猜测作者可能是为了选择合法/干净的电脑下手。
B. 数据库进程遍历
Cerber4会遍历正在运行数据库,并杀死它们。使得被数据库进程加载的数据库能够正常的被加密,避免了文件被占用(句柄未关闭)的问题。
具体的数据库进程存在于它的json中。和cerber3类似。
不同的是新增了配置项:close_process。当close_process为1时,执行遍历并杀死数据库进程的操作(常见的数据库进程有mysql,sqlserver,oracle等)
C. 拓展名随机化
相对于cerber3(后缀为.cerber3),cerber4将被加密后文件的拓展名更换为4位随机字符(数字/字母)。例如(.qw2g等)。可能是因为影响力太大了。想低调低调。
D. 友好的语言提示
cerber4在json配置中的勒索文件后缀由原来的.html更换成了.hta,并启动此进程显示勒索信息(根据本地语言)。
五. 可预见的解密过程
当勒索者收到赎金后,会提供给受害者RSA2048位的私钥,通过这个私钥可以解锁尾部数据块的第三部分,拿到RSA1024位加密的私钥和公钥。通过RSA1024位的私钥可以解锁尾部数据库的第三部分,拿到rc4的key,从而得到key stream。从而解锁尾部数据库的第一部分,头部数据以及中间主要被RC4加密过的部分。至此,文件解密全部完成。
六. 防护措施
从2015年开始,敲诈者类病毒在中国逐渐成为互联网上的一个重要威胁,病毒与安全软件的对抗也在持续升级,病毒在花样翻新地尝试各种方法发出致命一击,安全软件则需要全天候响应查缺补漏,为用户布设坚固的防线。可以想见,攻防的对抗仍然会持续下去。
在此360QVM团队提醒广大网友:重要数据应定期备份;操作系统和浏览器、Adobe Flash Player等基础软件的漏洞补丁应及时安装,可以免疫绝大多数来自恶意网页或客户端的挂马攻击。此外,系统应设置显示文件后缀,他人发来的可疑程序或脚本(如exe、scr、js等)不要双击运行,这样就能最大限度的避免中招。
360安全卫士也已开通了“反勒索服务”,并向用户公开承诺:使用360安全卫士11.0版本并开启该服务后,如果仍防不住敲诈者病毒,360将提供最高3个比特币(约13000元人民币)的赎金帮助用户恢复数据,全方位保障用户的财产和数据安全。
本文由 安全客 原创发布,如需转载请注明来源及本文地址。
本文地址:http://bobao.360.cn/learning/detail/3108.html