尊龙凯官网入口ADLab:Crysis家族勒索病毒最新变种剖析

宣布时间 2018-06-18
一、事务先容


近期,尊龙凯官网入口ADLab收到客户反�。河捎诓幻髟倒试�,电脑中的文件被加密,无法翻开。在得知这一新闻后,尊龙凯官网入口ADLab迅速派遣手艺职员赶往客户现场。通过对现场熏染机勘验后,我们发明加密后的文件被统一冠以“.bip”后缀名,另外我们还发明被加密的文件目录中有一个勒索提醒文件“FILES ENCRYPTED.txt”,它是由勒索病毒建设的,目的是通知受害者其数据已经被加密,若是想要解密文件,需凭证攻击者提供的联系方法支付赎金。被加密的文件和“FILES ENCRYPTED.txt”内容如下:


尊龙凯时 - 人生就是搏!
被加密的文件和“FILES ENCRYPTED.txt”内容

受熏染的电脑在加密完成后或电脑重启后会弹出两个提醒框,提醒框是由mshta.exe挪用Info.hta天生的勒索信息。熏染机械的两个Info.hta文件存放路径划分为:

%windir%\System32\Info.hta

%AppData\Romaing\Info.hta

它的主要功效是提醒受害人怎样联系黑客、怎样获得比特币、怎样完成支付等信息,提醒框内容如下图所示:


尊龙凯时 - 人生就是搏!
勒索提醒框

经由现场对受熏染机械的手艺剖析后,我们找到了该勒索病毒的样本程序,样内情关信息如下表所示:


尊龙凯时 - 人生就是搏!


在对该勒索病毒的行为和二进制代码举行深入剖析并与已知勒索病毒家族举行横向比对后,我们判断该勒索病毒属于Crysis家族的一个新变种。该家族主要通过垂纶邮件和使用RDP(Remote Desktop Protocol)爆破举行撒播。

二、攻击历史


尊龙凯时 - 人生就是搏!


2016年6月,外洋清静专家发明,能够通过Java Applet撒播的跨平台(Windows、MacOS)恶意软件Crysis最先加入勒索功效,并于8月份被发明用于攻击澳大利亚和新西兰的企业。Crysis恶意软件不但能够熏染VMware虚拟机,还能够周全网络受害者的系统用户名密码、键盘纪录、系统信息、屏幕截屏、谈天信息,控制麦克风和摄像头,现在又加入了加密勒索功效,其威胁性大有取代TeslaCrypt和Locky勒索软件的趋势。它主要通过暴力破解远程桌面(RDP)协议撒播,支持185种文件类型加密。


2016年11月12日,勒索病毒 Crysis解密密钥被果真,Crysis2及3的受害者可通过这个密钥恢复丧失的文件。

2017年5月下旬,Crysis/Dharma病毒泛起了一个新的变种.cesar,中国境内有部分小我私家和企业最先受到攻击。

2017年8月30日,ID-Ransomware的Michael Gillespie发明了Crysis/Dharma 勒索软件一个新的变种, 文件被追加 .arena 扩展名。中国境内小我私家和企业受到攻击数目显著增多。东莞某手机代工厂中病毒后所有的服务器文件后缀酿成了.arena,工厂凭证提醒信息的地址给黑客付款,付款后黑客就消逝了,三天后黑客发来信息称自己在出差,并发来了一个解密工具,工厂解密后发明黑客只解密了部分文件,需要再支付一次才华继续解密。下图的勒索邮件图片来自网络:


尊龙凯时 - 人生就是搏!
被二次勒索

2018年3月, Crysis/Dharma 勒索软件泛起一个新的变种, 文件被追加.java 扩展名。

2018年5月16日, Crysis/Dharma 勒索软件泛起一个新的变种, 文件被追加.bip 扩展名。尊龙凯官网入口ADLab第一时间发明该变种,并对其举行了深入的剖析,由于使用了RSA+AES加密,以是现在尚无法被解密。它支持343种文件名堂的加密,比最初增添了1.85倍。

三、勒索病毒手艺剖析

该勒索病毒使用加密的shellcode,在shellcode中使用换体手艺对程序地址空间举行修改,以抵达滋扰杀毒软件的查杀和对抗二进制剖析的目的。加密算法实现上并没有使用常见的加密开源库,以是给逆向职员在算法识别上带来一定的难题。我们在做二进制剖析的时间,没有发明勒索软件有网络数据爆发,推测是黑客的C&C服务器已经关闭了。

3.1 勒索病毒母体执行

3.1.1 勒索病毒执行流程

勒索病毒运行后,首先使用TEA算法解密shellcode,shellcode解密完成后,便最先执行。shellcode的功效是改写勒索病毒自身内存地址空间,对勒索病毒举行换体。流程图如下:


尊龙凯时 - 人生就是搏!


3.1.2 解密shellcode


勒索病毒运行后,首先通过LoadLibraryA函数加载Kernel32.dll,然后使用GetProcAddress动态获取LocalAlloc和VirtualProtect的函数地址,再使用LocalAlloc分派0x11C98巨细的内存地址作为shellcode数据的存储空间,通过sub_4011D5函数把数据段中的数据赋值给dw_shellcode地址,使用TEA算法解密dw_shellcode地址的数据,解密完成后挪用VirtualProtect函数给shellcode添加执行权限,然后执行shellcode代码,相关代码如下图所示:


尊龙凯时 - 人生就是搏!


在剖析shellcode解密代码的时间,凭证TEA的魔数特征0xC6EF3720,识别出解密代码的算法是TEA算法,代码如下所示:


尊龙凯时 - 人生就是搏!


3.2 Shellcode执行


勒索病毒母体执行完毕后,最先执行shellcode代码。在shellcode中动态挪用VirtualAlloc分派内存,把新的变体内容拷贝到内存中;挪用VirtualProctect修改内存属性,把源程序地址空间清零;使用新的变体内容填充,最后挪用VirtualFree释放前面分派的内存。相关代码如下图所示:


尊龙凯时 - 人生就是搏!


3.3 换体子女码执行


换体完成后,勒索病毒便最先执行变体代码。变体代码首先建设一个互斥,避免自身被多次执行;其次,变体代码建设一个线程,用于监控熏染机上指定的历程或服务,该线程每隔500毫秒对熏染机上的目的历程或服务举行一次关闭操作;再次,变体代码建设开机自启动注册表项,拷贝自身到注册表项所在目录,以抵达开机自启动的目的,然后变体代码删除磁盘卷影,避免受害人恢复数据;最后,变体代码建设一个线程,用于扫描局域网共享目录并对扫描到的文件举行加密。遍历逻辑驱动器,每个驱动器建设一个文件加密线程,对逻辑驱动器下的文件举行加密。该变体代码的执行流程图如下所示:


尊龙凯时 - 人生就是搏!


3.3.1 建设互斥


勒索病毒的字符串都是使用RC4算法加密的,通过内置的一个128字节密钥举行解密。我们用Ollydbg对字符串解密历程举行动态跟踪,获得了RC4的128字节的密钥,如下所示:


尊龙凯时 - 人生就是搏!


互斥体的名称由三部分组成,第一部分是RC4解密出来的字符串“Global\syncronize_”,第二部分是RC4解密出来的字符串“45STKM”,第三部分是凭证参数选择,若是参数为1就是“A”,不然是“U”。


最终,勒索病毒会建设两个互斥体 "Global\syncronize_45STKMA"和"Global\syncronize_45STKMU",相关代码如下:


尊龙凯时 - 人生就是搏!


3.3.2 解锁文件占用


勒索病毒不但会杀死指定的正在运行的历程并且还会阻止指定的正在运行的服务,这样做的利益是解锁对应历程的文件占用,从而包管文件加密乐成。勒索病毒会使用上文中的RC4算法解密获得要杀死的历程名称和服务名称。相关代码如下图所示:


尊龙凯时 - 人生就是搏!


历程名和服务名列表如下:


尊龙凯时 - 人生就是搏!


勒索病毒在完成字符串解密后,建设一个线程,在线程中遍历系统历程,判断目的历程是否保存,若是保存,就杀死目的历程。响应代码如下所示:


尊龙凯时 - 人生就是搏!


遍历系统服务名称,判断服务名称是否保存,若是保存就阻止服务。相关代码如下所示:


尊龙凯时 - 人生就是搏!


该勒索病毒建设一个线程,每隔500毫秒循环一次,判断响应的历程和服务是否保存,若是保存就杀死,反汇编代码如下所示:


尊龙凯时 - 人生就是搏!


3.3.3 添加开机自启动


勒索病毒先拷贝设置到以下目录:


尊龙凯时 - 人生就是搏!


拷贝完成后在注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run下新建3个注册表项,注册表内容如下图所示。


尊龙凯时 - 人生就是搏!


“%AppData\Romaing\Info.hta”是勒索病毒提醒用户解锁的提醒文件。通过注册表我们可以看到“Info.hta”文件被拷贝了两份,另外一份是在“%System32%”路径下,可能是黑客为了确保这个提醒框被受害人能看到,以是特意写了两个路径。


“load_.exe”文件是勒索病毒程序自身的拷贝,这样就可以实现每次开机启动后执行加密逻辑,把受害人新增的文件加密。相关代码如下:


尊龙凯时 - 人生就是搏!

拷贝文件添加注册表开机自启动


尊龙凯时 - 人生就是搏!

%sh(Startup)%目录下的开机自启动程序


尊龙凯时 - 人生就是搏!

%sh(Common Startup)%目录下的开机自启动程序


尊龙凯时 - 人生就是搏!

%Appdata%目录下支付勒索的提醒程序


尊龙凯时 - 人生就是搏!
%windir%\System32目录下的开机自启动程序

3.3.4 删除磁盘卷影

卷影副本功效可提供网络共享上的文件的即时点副本。使用共享文件夹的卷影副本,用户可以审查网络文件夹在已往某一时间点的内容。

勒索病毒会删除磁盘卷影,以避免受害人通过磁盘还原方法对文件举行恢复,删除磁盘卷影的下令为“mode con cp select=1251 vssadmin delete shadows /all /quiet Exit”,该下令是用上文中的RC4算法解密出来的。勒索病毒通过挪用CreateProcess启动“C:\Windows\system32\cmd.exe”挪用删除下令来删除磁盘卷影,相关代码如下图所示:


尊龙凯时 - 人生就是搏!


3.3.5 枚举局域网的共享目录,对共享目录文件举行加密


该勒索病毒建设一个线程,对局域网中共享的文件举行加密。


尊龙凯时 - 人生就是搏!
建设加密共享磁盘线程

线程中遍历局域网共享资源,加密文件的焦点代码如下:


尊龙凯时 - 人生就是搏!


3.3.6 遍历外地磁盘,对磁盘目录文件举行加密


该勒索病毒先用上文中的RC4算法解密一段数据,解密后的效果为 “ABCDEFGHIJKLMNOPQRSTUVWXYZ”,通过GetLogicalDrives函数获取磁盘驱动器,然后遍历执行文件加密,相关反汇编代码如下所示:


尊龙凯时 - 人生就是搏!


为了包管电脑系统正常启动,勒索病毒对包管操作系统正常运行的文件不加密,并把这些文件的文件名加密存储在程序中。通过上文中的RC4算法解密后的文件名列表如下:


尊龙凯时 - 人生就是搏!


3.3.7 文件加密


勒索病毒支持343种类型文件的加密,文件类型(文件的后缀名)是以分号支解并通过上文中的RC4算法加密存储的,运行时动态解密,解密后的字符串在Ollydbg内存中如下图所示: 


尊龙凯时 - 人生就是搏!


支持加密的文档扩展名如下:


.1cd;.3ds;.3fr;.3g2;.3gp;.7z;.accda;.accdb;.accdc;.accde;.accdt;.accdw;.adb;.adp;.ai;.ai3;.ai4;.ai5;.ai6;.ai7;.ai8;.anim;.arw;.as;.asa;.asc;.ascx;.asm;.asmx;.asp;.aspx;.asr;.asx;.avi;.avs;.backup;.bak;.bay;.bd;.bin;.bmp;.bz2;.c;.cdr;.cer;.cf;.cfc;.cfm;.cfml;.cfu;.chm;.cin;.class;.clx;.config;.cpp;.cr2;.crt;.crw;.cs;.css;.csv;.cub;.dae;.dat;.db;.dbf;.dbx;.dc3;.dcm;.dcr;.der;.dib;.dic;.dif;.divx;.djvu;.dng;.doc;.docm;.docx;.dot;.dotm;.dotx;.dpx;.dqy;.dsn;.dt;.dtd;.dwg;.dwt;.dx;.dxf;.edml;.efd;.elf;.emf;.emz;.epf;.eps;.epsf;.epsp;.erf;.exr;.f4v;.fido;.flm;.flv;.frm;.fxg;.geo;.gif;.grs;.gz;.h;.hdr;.hpp;.hta;.htc;.htm;.html;.icb;.ics;.iff;.inc;.indd;.ini;.iqy;.j2c;.j2k;.java;.jp2;.jpc;.jpe;.jpeg;.jpf;.jpg;.jpx;.js;.jsf;.json;.jsp;.kdc;.kmz;.kwm;.lasso;.lbi;.lgf;.lgp;.log;.m1v;.m4a;.m4v;.max;.md;.mda;.mdb;.mde;.mdf;.mdw;.mef;.mft;.mfw;.mht;.mhtml;.mka;.mkidx;.mkv;.mos;.mov;.mp3;.mp4;.mpeg;.mpg;.mpv;.mrw;.msg;.mxl;.myd;.myi;.nef;.nrw;.obj;.odb;.odc;.odm;.odp;.ods;.oft;.one;.onepkg;.onetoc2;.opt;.oqy;.orf;.p12;.p7b;.p7c;.pam;.pbm;.pct;.pcx;.pdd;.pdf;.pdp;.pef;.pem;.pff;.pfm;.pfx;.pgm;.php;.php3;.php4;.php5;.phtml;.pict;.pl;.pls;.pm;.png;.pnm;.pot;.potm;.potx;.ppa;.ppam;.ppm;.pps;.ppsm;.ppt;.pptm;.pptx;.prn;.ps;.psb;.psd;.pst;.ptx;.pub;.pwm;.pxr;.py;.qt;.r3d;.raf;.rar;.raw;.rdf;.rgbe;.rle;.rqy;.rss;.rtf;.rw2;.rwl;.safe;.sct;.sdpx;.shtm;.shtml;.slk;.sln;.sql;.sr2;.srf;.srw;.ssi;.st;.stm;.svg;.svgz;.swf;.tab;.tar;.tbb;.tbi;.tbk;.tdi;.tga;.thmx;.tif;.tiff;.tld;.torrent;.tpl;.txt;.u3d;.udl;.uxdc;.vb;.vbs;.vcs;.vda;.vdr;.vdw;.vdx;.vrp;.vsd;.vss;.vst;.vsw;.vsx;.vtm;.vtml;.vtx;.wb2;.wav;.wbm;.wbmp;.wim;.wmf;.wml;.wmv;.wpd;.wps;.x3f;.xl;.xla;.xlam;.xlk;.xlm;.xls;.xlsb;.xlsm;.xlsx;.xlt;.xltm;.xltx;.xlw;.xml;.xps;.xsd;.xsf;.xsl;.xslt;.xsn;.xtp;.xtp2;.xyze;.xz;.zip

文件加密功效是在线程函数中执行的,在加密前,它先举行CRC32校验,确保加密乐成,并结构加密后文件名的命名,该恶意程序加密后的文件凭证{原始文件名}+{.id-}+{C盘序列号}+{.[filedec@tuta.io] .bip}方法举行重命名。以“test.txt”为例,加密后的文件名为“test.txt .id-B05844B5.[filedec@tuta.io].bip”。每个文件都随机天生一个0x16字节的IV,从而包管加密的随机性,线程函数焦点代码如下:


尊龙凯时 - 人生就是搏!


在加密文件前,勒索病毒先去掉目的文件的只读属性,待加密完成后再还原其原有的文件属性,相关代码如下所示:


尊龙凯时 - 人生就是搏!


3.3.8 加密算法剖析


勒索病毒加密文件,使用内置的一段加密的RSA公钥对随机天生的AES密钥举行加密,并将加密后的内容发给黑客,黑客使用RSA私钥举行解密,获得加密文件的AES密钥。为了包管随机性,黑客对每个文件举行加密的时间都使用随机的IV,被加密后的文件凭证特定的文件名堂举行存储,文件加密算法流程图如下所示:


尊龙凯时 - 人生就是搏!


在加密算法中有一个很是主要的结构体,如下图所示:


尊龙凯时 - 人生就是搏!


这个结构体的初始化历程是:首先使用上文中的RC4算法解密一段内置的0x80字节的数据,解密后的效果作为RSA的公钥;然后对RSA的公钥举行SHA1求值,将其SHA1效果赋值给encrypt-> rsa_pub_sha1。RSA公钥如下图所示:


尊龙凯时 - 人生就是搏!


盘算RSA公钥的SHA1效果为“23 A0 55 82 B9 C1 12 1E FE 56 71 CE 45 87 38 1D BA 95 B7 F9”,相关代码如下图所示:


尊龙凯时 - 人生就是搏!


勒索病毒使用GetVolumeSerialNumber函数获取C盘序列号,并填充encrypt->disk_id字段,通过rdtsc获取CPU自从启动以来的时钟周期数(也就是一个随机数);使用RC4加密,RC4加密的效果作为后面临文件加密的AES密钥,填充encrypt->aes_key字段。代码如下图所示:


尊龙凯时 - 人生就是搏!


勒索病毒使用RSA公钥加密encrypt->aes_key,加密后的效果填充encrypt->rsa_encrypt_key字段,通过上文的RC4算法解密获得黑客联系邮箱“.[filedec@tuta.io]”和文件后缀名“.bip”,代码如下图所示:


尊龙凯时 - 人生就是搏!


初始化完加密结构体,勒索病毒会建设线程对文件举行加密,在对文件举行加密的时间,该勒索病毒会判断文件巨细是否大于0x180000,若是大于就使用大文件加密要领,不然就使用小文件加密函数。相关代码如下:


尊龙凯时 - 人生就是搏!


(1)小于即是0x180000的文件处置惩罚要领


加密完成后,勒索病毒把AES加密的效果写入文件中,然后再追加一段数据。假设这段数据的起始地址为0,将这段地址所有初始化为0:

1)   在第0x04字节后依次写入0x00000002和0x417AFE0C;


2)   在第0x18字节后写入0x00000020;


3)   在第0x20字节处写入文件名;


4)   在文件名后面追加6字节的encrypt->str_45STKM;


5)   在encrypt->str_45STKM后面追加20字节的encrypt->rsa_pub_sha1;

6)   在encrypt-> rsa_pub_sha1后面追加16字节的IV;

7)   在IV后面追加4字节的PadingLen,(对AES明文缺乏16字节的补齐长度);

8)   在PadingLen后面再追加128字节的encrypt->rsa_encrypt_key;

9)   在encrypt-> rsa_encrypt_key后面写入4字节的偏移(0x20+文件名长度)。

至此,文件加密完成,关闭文件,相关代码如下:


尊龙凯时 - 人生就是搏!


(2)大于0x180000的文件处置惩罚要领


加密完成后,勒索病毒把AES加密的效果写入文件中,然后再追加一段数据。假设这段数据的起始地址为0,将这段地址所有初始化为0:

1)   在第0x0字节处写入文件名;

2)   在文件名后面追加6字节的encrypt-> str_45STKM;

3)   在encrypt-> str_45STKM后面追加20字节的encrypt-> rsa_pub_sha1;

4)   在encrypt-> rsa_pub_sha1后面追加16字节的IV(用于AES加密);

5)   在IV后面追加4字节的0x00(这里可能是为了与小文件名堂兼容);

6)   在PadingLen后面再追加128字节的encrypt-> rsa_encrypt_key;

7)   在encrypt-> rsa_encrypt_key后面写入4字节的文件名长度。

相关代码如下图所示:


尊龙凯时 - 人生就是搏!


四、总结及建议


勒索病毒已经成为了一种越来越普遍和有用的攻击方法,小我私家用户和企事业组织受害者居多,并且一旦熏染勒索病毒,数据被加密就很难还原。由于勒索病毒都接纳成熟的密码学算法,使用高强度的对称和非对称加密算法对文件举行加密,以是在通常情形下只能支付高额的赎金。有些勒索病毒在加密历程中使用Windows Crypto API天生密钥并举行加密,但此API在某些操作系统上并未将天生密钥时爆发的素数从内存中删除,因此若该内存块尚未被笼罩,我们就可以通过截取素数天生出同样的密钥,使用该密钥实现对已被加密的文件举行解密。Crysis勒索病毒没有使用这个API,以是不保存此误差。现在互联网上撒播的一些勒索病毒的解密工具大多是使用了勒索病毒功效或逻辑上的误差或私钥泄露实现的。

勒索病毒的几点提防建议:

1)   对主要的数据文件按期举行非外地备份。

2)   不要点击泉源不明的邮件以及附件。

3)   重命名vssadmin.exe历程,避免勒索病毒使用它一次性扫除文件的卷影副本。


4)   开启防火墙,并升级到最新版本,阻止勒索病毒与其C&C服务器通讯。


5)   实时给电脑打补丁,修复误差。


6)   使用长度大于10位的重大密码,禁用GUEST来宾帐户。


7)   只管不要使用局域网共享,或把共享磁盘设置为只读属性,不允许局域网用户改写文件。


8)   关闭不须要的端口,如:445、135、139、3389等。