VirLock敲诈者新变种分析及解密方法

发表于:2016-07-24 10:30:00 来源:  黑客与极客 阅读数(0人)

前言


2016年6月开始,360研究人员发现VirLock的新变种的查杀量呈现上升趋势,通过分析,发现其新变种采用了多种手段来对抗杀软。


基本信息


MD5:D832508B53BB3B55C2288F23B4FB6C2C


大小:850944字节




行为简述


1.在%UserProfile%与%AllUsersProfile%释放文件,文件名为随机生成,使用CreateProcessW创建进程。




2.第一个被启动的进程会再次生成一个随机文件名的文件,这三个文件互为守护进程,当其中任何一个被杀死之后,都会被其他“兄弟”创建,病毒以此手段避免进程被杀死。




3.设置注册表,使隐藏文件,文件扩展名不可见。




4.加密文件,被加密的文件变为EXE,图标和加密前一致。


5.感染文件类型,包括但不限于:


文档:DOC、XLS、PDF、PPT等;

图片:PNG、GIF、BMP、JPG等;

压缩文件:RAR、ZIP、7z等;

可执行文件:EXE、SCR等。

6.弹出勒索提示,需要支付价值约$250的比特币作为赎金。


病毒发作之后截图




图:告警信息,提示用户使用了盗版软件,需要支付罚金。恫吓用户,若不支付赎金,可能会被判处5年徒刑。



图:向用户介绍支付流程。

图:附近ATM的位置


相对上一版本的亮点


亮点之一:代码执行


新变种相对老变种相比,变化最大的就在于代码执行方式。


病毒体在解密之后,执行方式就不是顺序执行,而是采取一种特殊的方式来执行,以此来对抗杀毒虚拟机,增加分析难度。


流程大致如下:


(A)新申请一块新的内存区域,作为STUB,以供病毒体执行;

(B)将公共代码放入STUB中,公共代码中间以NOP填充;

(C)解密另一区域的数据,按照格式,将代码复制到公共代码的NOP位置;

(D)执行STUB,清空STUB;

(E)循环执行(B)。

其中STUB的代码如下:


结构如下,STUB主要由三部分组成:




这样一来,每执行一条“核心指令”,就要多执行上百条负责解密,循环控制的指令。


增加了病毒体积,与执行步数,也给调试带来一些不便。


填充的指令由指令表与跳转表组成。


指令表:


通过XOR算法,可解密出指令表。




解密之后的数据如下(蓝色数据部分):




整理之后可以看出,数据由数据前缀与指令组成:


指令前缀由两部分组成:代码标志与代码长度,代码标志为00表示普通指令。




顺序表:


代码的执行按照此顺序执行,包括条件跳转;


解密方式也是XOR。




部分数据如下:




其中D5到E9解密后如下,标志位为(01,表示跳转),跳转条件均为JNZ,后面的数值表示跳转相对偏移:




亮点之二:数据解密


随着程序的执行,病毒会主动将文件解密后落地,因此被VirLock加密的数据,在逆向其基本算法后,是可以恢复数据的。数据解密主要分为三个部分。


第一部分解密:


第一部分的解密方式为XOR,位置为ESI,密钥为EDX,长度为ECX:




第二部分解密:


这部分解密的位置信息,位于代码表中:




第三部分解密:


在执行完第二部分解密之后,开始第三部分解密,这层解密主要针对被加密文件。


解密方式:XOR,ROR




恢复文件




图:解密之后的数据,红色部分表示原始文件名,蓝色部分表示原始数据。


针对VirLock系列敲诈者病毒,360杀毒独家提供文件恢复功能。如果用户不慎中招,可以使用360杀毒扫描恢复原文件。


扫描病毒:




修复文件:




文件恢复效果示例:




亮点之三:勒索金额的变化


在2015年1月,360安全中心发布的第一版VirLock的分析报告(http://bobao.360.cn/learning/detail/227.html)显示,当时勒索的金额,为价值150美元的比特币,当时约0.71BTC:




而新版本勒索的金额,为价值250美元左右的BTC,按现在的价格,约0.392BTC:





相关新闻

大家都在学

课程详情

恶意代码原理

课程详情

逆向破解-CrackMe系列

课程详情

Ollydbg使用教程