CTB-LOCKER分析报告

摘     要

  • CTB-Locker是“比特币敲诈者”系列病毒的一个家族,2015年初传入国内,4-5月呈高发趋势。此病毒主要来自英文邮件附件,如果用户不慎运行,系统中的文档、图片、数据库等重要资料会被病毒高强度加密。
  • 病毒在用户桌面显示勒索信息,要求受害者向病毒作者限期支付一定数目的比特币赎金才能够解密还原文件内容,否则电子数据就会被销毁。
  • 为了防止自身被定位到,获取密钥的过程在Tor网络中进行,由于该网络和比特币交易都是匿名的,病毒作者难以被追踪到。
  • 病毒删除文件卷影副本,数据恢复的希望非常渺茫。
  • 病毒解密需要联网通过ECDH协商产生密钥,在没有密钥的情况下,数据无法还原。

值得关注的是,近期在国外暗网出现了CTB-Locker病毒的“傻瓜化”生成工具,利用该工具,只要简单三步就可以制作出病毒,病毒作者则会获得30%的敲诈赎金抽成。这意味着,CTB-Locker很可能会出现新一轮爆发。

对大多数人来说,个人数据的价值远远超过比特币赎金甚至电脑设备的价值。而CTB-Locker病毒作者仍逍遥法外,时刻威胁着我们的数据安全。因此,分析清楚此病毒行为和危害、并真正有效防御尤为关键。

第一章、病毒的运行概况

CTB-Locker病毒运行后伪装成一个文档,显示一个文档资料:

1

然后会在后台静默下载病毒的感染主体部分,感染之后会显示如下的提示:

2

受害者会被要求对一个比特币账户支付比特币否则就会在界面显示的时间结束的时候删除用户的被加密资料,这是要求支付的账户:

3

病毒的后台运行状况如下:

4

联网下载文件,将下载的文件放到临时目录。主要功能文件在下载的文件中。以下是主功能文件的后台运行情况:

5

修改系统进程数据,创建线程,修改系统多个后缀名文件,并且进行加密。然后会调用vssadmin.exe执行vssadmin delete shadows all 删除文件卷影副本,因此数据恢复的希望非常渺茫。

连接国外的ip地址, 但是是Tor网络的, Tor网络是随机匿名并且加密传输的,比特币交易也是匿名的, 难以被追踪到。

第二章 病毒的加密分析

一、配置信息的生成和作用

1、配置信息的来源

首先,病毒会检测虚拟机和杀毒软件,规避杀毒和安全工具的查杀和检测。

6

7

然后遍历%All UsersApplication Data%文件目录主要是查找样本自身的配置文件,这个版本的文件名是固定的fsdbrcn。

8

如果遍历之后没有找到配置文件则生成一个空白的文件。

9

这个配置信息对于病毒来说至关重要,后续的文件加密和预设文件的解密都与此相关,经过分析之后,来源如下:

10

病毒收集用户机器信息当中的隐私信息和系统运行的时间以及病毒自身的代码等信息。这些信息在不同机器不一定会一样,但是相同机器则是一致的,所以被病毒用来作为判断自身是否感染的原始数据。接下来病毒会随机的生成数据并且采集系统文件信息作为sha-256摘要算法的原始数据:

11

然后经过sha-256摘要算法生成一组数据作为加密和解密文件的密钥的一部分。

根据ECDH的密钥协商原理,病毒首先协商产生一个公私钥对。公钥保存在前面说的释放出来的配置文件中,这里我们把这个公钥称为(1)master public key。私钥(4)master private key保存在服务器上。

同时在配置信息中会保存如下的数据:

     1.随机生成的被加密文件的后缀名。

     2.一个固定的比特币的交易网站

     3. 文件全部加密后的文件大小数据

     4. 其他信息

2、配置信息的加密

原始的配置信息在内存生成之后,会被病毒进行一次AES加密。这是被加密的配置数据

12

这是重新读入之后解密的数据,可以看到很多配置信息的原始数据

13

所以即使在拿到配置信息的加密文件没有解密,也是无法理解里面的含义。

3、配置信息的生成

配置信息加密完毕之后就会在%All UsersApplication Data%文件目录下随机的寻找一个目录生成配置文件,然后写入配置信息。同时在检测自身是否已感染的时候也是遍历全部的目录,然后逐个打开指定的文件,文件存在时返回成功,这样就可以定位到自身的配置文件。

14

4、配置信息的作用

病毒主要依据配置文件以及文件被加密文件清单来判断是否已经加密了电脑中的文件,如果是第一次感染,则会保存配置信息,其中配置信息中的文件后缀名作为解密文件时的解密依据,sha-256生成的数据作为密钥的一部分。

二、文件的加密方式

病毒通过遍历查找系统进程注入系统进程的方式来实现加密文件的功能代码。

15

1、文件加密功能的实现

查找指定类型的文件

16

具体类型包括:pwm,kwm,txt,cer,crt,der,pem,doc,cpp,c,php,js,cs,pas,bas,pl,py,docx,rtf,docm,xls,xlsx,safe,groups,xlk,xlsb,xlsm,mdb,mdf,dbf,sql,md,dd,dds,jpe,jpg,jpeg,cr2,raw,rw2,rwl,dwg,dxf,

dxg,psd,3fr,accdb,ai,arw,bay,blend,cdr,crw,dcr,dng,eps,erf,indd,kdc,mef,mrw,nef,nrw,odb,odm,odp,ods,odt,orf,p12,p7b,p7c,pdd,pdf,pef,pfx,ppt,pptm,pptx,pst,ptx,r3d,raf,srf,srw,wb2,vsd,wpd,wps,7z,zip,rar,dbx,gdb,bsdr,bsdu,bdcr,bdcu,bpdr,bpdu,ims,bds,bdd,bdp,gsf,gsd,iss,arp,rik,gdb,fdb,abu,config,rgx。

因为是加密数据必须保证可以解密,所以会保存密钥(但是只保存5个),这个密钥就保存在前0x30个字节当中。为了方便说明我们把可以在本机解密的5个文件称为预设文件,其他被加密文件称为非预设文件。

17

18

首先文件经过zlib压缩,然后会被继续进行AES加密,根据ECDH的密钥协商原理,对每一个文件加密的时候会协商产生一个会话公私钥对,当然使用的是ECDH算法。对于预设文件以上两段就是生成session private key的过程,它的原始数据就是文件最后一次修改时间和系统运行时间,然后进行SHA256计算,这里我们称为(3)session private key,然后使用ECDH算法产生公钥即(2)session public key会话公钥。对于非预设文件是这样处理的:session-public key 会被保存到文件中,同时session-private  key不会被保存。在后面会有5个可以解密的文件,文件加密对应的加密5个文件是这样的:

19

20

21

2、  文件加密中的一些线索

密钥的前0x30个字节当中,跟最后一次文件修改时间有关联,后面的解密过程中我们可以发现被解密文件会还原出文件最后一次修改时间。

三、网络行为概况

在受害者准备支付比特币来解密文件的时候会有联网行为,但是由于通过Tor网络,由于这个网络是匿名的无法追踪来源。但是包具体信息有辅助作用,所以专门的加以分析。

22

1、 对外发包

23

返回包的情况

24

通过上述的分析 我们可以确认的是病毒通过http来实现通讯的。由于网络无法联通,无法获得重要信息。

2、 静态分析

程序通过套接字实现对外通讯,代码部分如下

25

这里是参数拼接

26

发包之前校验长度。复制一串数据。

27

接受的信息是写在内存当中,具体信息如下

28

这里的信息应该是对方的远程端口,和自身机器的信息

四、解密预设文件的过程

病毒会提示自身可以解密预设文件:

29

1、解密的功能部分(预设文件)

第一步:获取配置信息中的文件后缀名

30

第二步:创建一个新文件

31

第三步:获取文件时间

32

第四步:读入文件的前0x30个字节,其中前0x20字节的数据是后面解密需要的,后面的0x10个数据会被修改,并且加了一个标记 固定的有“ctb1,”

33

2、被解密文件的内存格式

不同的文件,前面的0x30的字节的数据是不一样的。因为被加密格式不固定,但是解密的时候会加载到内存,在内存中的数据有一些固定的格式,基本的结构和组成在读入内存后是这样的:

1

 

被解密文件的加密前大小和加密后大小也被保存在其中。

根据ECDH算法,我们知道 sessionshared secret

=ECDH(masterpublic key, session private key)

=ECDH(session public key,master private key).

在计算的时候要使用会话私钥和主公钥计算出sessionshared secret,然后对session shared secret计算sha256作为AES的密钥。虽然我们可以获取到主公钥但是会话私钥是不保存的,唯一的解密方法是通过主私钥和会话公钥计算session shared secret。这里前面的数据KeyData,就是(3)session private key会话私钥。

预设文件的解密,遵照ECDH(masterpublic key, session private key),通过配置文件(1)masterpublic key,和保存在前面的(3)session private key会话私钥,算出来session shared secret,再计算一下sha256能得到AES的KEY,完成解密。

要想解密非预设文件,则要经过这样的过程(在联网之后进行新的协商生成密钥):

generates the pair(master-public, master-private)

每一个文件:

generates the pair(session-public(加密完了保存在文件头), session-private(没保存))

session-shared = ECDH(master-public, session-private)

aes-key = SHA256 (session-shared)

解密需要session-shared,而ECDH(master-public, session-private) = session-shared = (session-public, master-master),因为 session-private已经丢失,所以一定需要master-master。

master-master 上传到服务器。

所以,此时要经过一次联网协商密钥的过程,这个过程可以简单的用描述如下:

network-shared = ECDH(network-client-private, network-server-public)

aes-key = SHA256 (network-shared)

master-master 被aes加密上传到服务器,解密的话,就需要network-shared = ECDH(network-server-private, network-client-public),也就是说解密的过程其实是在联网过程中的EDCH密钥协商,完成协商之后,算出来network-shared,再计算一下sha256能得到AES的KEY,文件就会被逐个的解密。

3、解密后文件的变化

还原文件之后会把文件的原始时间也还原出来

35

36

第三章 防御措施

对付CTB-Locker等“比特币敲诈者”病毒重在预防,否则一旦中招就会蒙受巨大损失,除了交赎金之外几乎没有可能恢复数据。

在此建议广大网民:

①加强安全意识,不接收、下载和点击来历不明的scr、exe等可执行程序;

②养成重要文件资料及时备份的习惯;

③使用专业安全软件防范木马病毒。

为了保护用户数据安全,360安全卫士已升级主动防御规则,独家推出CTB-Locker等“比特币敲诈者”病毒的免疫功能——“文档图片防护”,可以全面拦截此类病毒的加密破坏行为。

a

我们推荐用户开启360安全卫士“文档图片防护”功能,即使不慎手动运行了CTB-Locker等比特币病毒,也能够有效保护电脑里的重要资料安全。

b

关于 “CTB-LOCKER分析报告” 的 2 个意见

  1. 总算有点良心,前期对于这个病毒的分析都不仔细。这个报告虽然分析的比较详细,但是还不是完整的报告。这个病毒的文档加密部分做的事情还是蛮多的。

评论关闭。