GANDCRAB V5.2原理分析

(一)准备阶段

1、获取本机的杀毒软件信息

GANDCRAB V5.2原理分析_第1张图片

2、获取本机信息

勒索Id的生成方法和之前版本一样,都是利用RtlComputerCrc32()函数将本机硬件信息生成的CRC32,然后再拼接上 小写的GetVolumeInformationW获取到的卷序列号地址(pVolumeSerialNumber )。

GANDCRAB V5.2原理分析_第2张图片
获取本机信息

因为包含了GetVolumeInformationW获取到卷序列号的地址(pVolumeSerialNumber ),都保证了每台受感染机器生成的id独一无二。

GANDCRAB V5.2原理分析_第3张图片
获取信息表

3、RC4加密本机信息

关于RC4的Sbox:

GANDCRAB V5.2原理分析_第4张图片
填充有序的Sbox
GANDCRAB V5.2原理分析_第5张图片
打乱之后的Sbox

整体加密算法:

GANDCRAB V5.2原理分析_第6张图片
整体加密算法(C++)

4、区域豁免

获取本机使用的语言信息,如果属于以下语言之一,就不对此电脑进行加密。

GANDCRAB V5.2原理分析_第7张图片
不会被加密的区域

5、创建唯一的互斥体

创建为"Global\8B5BDDB94369950A5F4C.luck"  的互斥体,防止多个实例相互干扰。因为用到了卷序列号的地址,因此每台电脑上的互斥体名称都是唯一的。

(1),(2)是互斥体"Global\8B5BDDB94369950A5F4C.lock"名称产生的详细流程。

(1)明文数据:2A8972E8

通过GetVolumeInformationW获取到卷序列号的地址(pVolumeSerialNumber )是AA25CBA3,然后将卷序列号的地址右移2位,得到2A8972E8。

(2)Sala20加密:

64字节的输入数据(4个常量词的选取是由expand 32-byte k得来):

GANDCRAB V5.2原理分析_第8张图片
核心函数输入规则


Salsa20的key和初始向量(对照输入规则)


Salsa20函数:

GANDCRAB V5.2原理分析_第9张图片
Salsa20函数


加密后:UNICODE "8B5BDDB94369950A5F4C469DD8A7A",然后取加密后的前20个字节8B5BDDB94369950A5F4C,然后拼接成"Global\8B5BDDB94369950A5F4C.luck"作为互斥体的名称。

6、查杀进程

要查杀的进程名单内有71个进程,相比于GandCrab5.0.4(39个),这一版本要查杀的进程完善了很多

GANDCRAB V5.2原理分析_第10张图片
GANDCRAB V5.2原理分析_第11张图片
GANDCRAB V5.2原理分析_第12张图片

7、解密生成RSA公钥

将一段全局数据异或5,然后使用Salsa20进行解密,得到RSA公钥。

GANDCRAB V5.2原理分析_第13张图片

Salsa20算法:

Salsa20的秘钥和初始向量:

GANDCRAB V5.2原理分析_第14张图片
Salsa20的秘钥和初始向量
GANDCRAB V5.2原理分析_第15张图片
Salsa20的初始向量

Salsa20函数:

Salsa20函数(汇编)

8、指定要加密文件的后缀名

...a.n.i. ...c.a.b. ...c.p.l. ...c.u.r. ...d.i.a.g.c.a.b. ...d.i.a.g.p.k.g.  ...d.l.l. ...d.r.v. ...l.o.c.k. ...h.l.p. ...l.d.f. ...i.c.l. ...i.c.n.s. ...i.c.o. ...i.c.s. ...l.n.k. ...k.e.y....i.d.x. ...m.o.d. ...m.p.a. ...m.s.c. ...m.s.p. ...m.s.s.t.y.l.e.s. ...m.s.u. ...n.o.m.e.d.i.a. ...o.c.x. ...p.r.f. ...r.o.m....r.t.p. ...s.c.r. ...s.h.s. ...s.p.l. ...s.y.s. ...t.h.e.m.e. ...t.h.e.m.e.p.a.c.k. ...e.x.e. ...b.a.t. ...c.m.d. ...g.a.n.d.c.r.a.b. ...K.R.A.B. ...C.R.A.B. ...z.e.r.o.p.h.a.g.e._.i._.l.i.k.e._.y.o.u.r._.p.i.c.t.u.r.e.s.. ...r.a.r. ...z.i.p. ...c.a.b. ...a.r.j. ...l.z.h. ...t.a.r. ...7.z. ...g.z.i.p. ...i.s.o.  ...z. ...7.-.z.i.p. ...l.z.m.a. ...v.m.x. ...v.m.d.k. ...v.m.e.m. ...v.d.i. . ...v.b.o.x .  ...1.s.t. ...6.0.2. ...d.o.c.b. ...x.l.m. ...x.l.s.x....x.l.s.m. ...x.l.t.x. ...x.l.t.m. ...x.l.s.b. ...x.l.a. ...x.l.a.m. ...x.l.l. ...x.l.w. ...p.p.t. ...p.o.t. ...p.p.s. ...p.p.t.x. ...p.p.t.m. ...p.o.t.x. ...p.o.t.m. ...p.p.a.m. ...p.p.s.x. ...p.p.s.m. ...s.l.d.x. ...s.l.d.m. ...x.p.s. ...x.l.s. ...x.l.t..._.d.o.c. ...d.o.t.m.  ..._.d.o.c.x. ...a.b.w. ...a.c.t. ...a.d.o.c. ...a.i.m. ...a.n.s. ...a.p.k.g. ...a.p.t.  ...a.s.c. ...a.s.c. ...a.s.c.i.i. ...a.s.e. ...a.t.y. ...a.w.p. ...a.w.t. ...a.w.w.  ...b.a.d. ...b.b.s. ...b.d.p. ...b.d.r. ...b.e.a.n. ...b.i.b. ...b.i.b. ...b.i.b.t.e.x. ...b.m.l. ...b.n.a. ...b.o.c. ...b.r.x. ...b.t.d. ...b.z.a.b.w. ...c.a.l.c.a. ...c.h.a.r.s.e.t. ...c.h.a.r.t. ...c.h.o.r.d. ...c.n.m. ...c.o.d. ...c.r.w.l. ...c.w.s. ...c.y.i. ...d.c.a. ...d.f.t.i. ...d.g.s. ...d.i.z. ...d.n.e. ...d.o.t. ...d.o.c. ...d.o.c.m. ...d.o.t.x. ...d.o.c.x. ...d.o.c.x.m.l. ...d.o.c.z. ...d.o.x. ...d.r.o.p.b.o.x. ...d.s.c. ...d.v.i. ...d.w.d. ...d.x. ...d.x.b. ...d.x.p. ...e.i.o. ...e.i.t. ...e.m.f. ...e.m.l. ...e.m.l.x. ...e.m.u.l.e.c.o.l.l.e.c.t.i.o.n . ...e.p.p. ...e.r.r. ...e.r.r. ...e.t.f. ...e.t.x. ...e.u.c. ...f.a.d.e.i.n...t.e.m.p.l.a.t.e. ...f.a.q. ...f.b.l. ...f.c.f. ...f.d.f. ...f.d.r. ...f.d.s. ...f.d.t. ...f.d.x. ...f.d.x.t.  ...f.f.t. ...f.g.s. ...f.l.r. ...f.o.d.t. ...f.o.u.n.t.a.i.n. ...f.p.t. ...f.r.t. ...f.w.d. ...f.w.d.n. ...g.m.d. ...g.p.d. ...g.p.n. ...g.s.d. ...g.t.h.r. ...g.v. ...h.b.k. ...h.h.t. ...h.s. ...h.w.p. ...h.w.p. ...h.z. ...i.d.x. ...i.i.l. ...i.p.f. ...i.p.s.p.o.t. ...j.a.r.v.i.s. ...j.i.s. ...j.n.p. ...j.o.e. ...j.p.1. ...j.r.t.f. ...j.t.d. ...k.e.s. ...k.l.g. ...k.l.g. ...k.n.t. ...k.o.n. ...k.w.d. ...l.a.t.e.x. ...l.b.t. ...l.i.s. ...l.n.t. ...l.o.g. ...l.p.2. ...l.s.t. ...l.s.t. ...l.t.r. ...l.t.x. ...l.u.e. ...l.u.f. ...l.w.p. ...l.x.f.m.l. ...l.y.t. ...l.y.x. ...m.a.n. ...m.b.o.x.  ...m.c.w. ...m.d.5. ...m.e. ...m.e.l.l. ...m.e.l.l.e.l. ...m.i.n. ...m.n.t. ...m.s.g. ...m.w. ...m.w.d. ...m.w.p....n.b. ...n.d.o.c. ...n.f.o. ...n.g.l.o.s.s. ...n.j.x. ...n.o.t.e. ...n.o.t.e.s. ...n.o.w. ...n.w.c.t.x.t. ...n.w.m. ...n.w.p....o.c.r. ...o.d.i.f. ...o.d.m. ...o.d.o. ...o.d.t. ...o.f.l. ...o.p.e.i.c.o. ...o.p.e.n.b.s.d. ...o.r.t. ...o.t.t. ...p.7.s.  ...p.a.g.e.s. ...p.a.g.e.s.-.t.e.f. ...p.d.p.c.m.d. ...p.f.x. ...p.j.t. ...p.l.a.i.n. ...p.l.a.n.t.u.m.l. ...p.m.o. ...p.r.t. ...p.r.t. ...p.s.w. ...p.u. ...p.v.j. ...p.v.m. ...p.w.d. ...p.w.d.p . ...p.w.d.p.l. ...p.w.i. ...p.w.r. ...q.d.l. ...q.p.f. ...r.a.d. ...r.e.a.d.m.e. ...r.f.t  ...r.i.s. ...r.p.t. ...r.s.t. ...r.t.d. ...r.t.f. ...r.t.f.d. ...r.t.x. ...r.u.n. ...r.v.f. ...r.z.k. ...r.z.n. ...s.a.f. ...s.a.f.e.t.e.x.t. ...s.a.m. ...s.a.m. .. .s.a.v.e. ...s.c.c.  ...s.c.m. ...s.c.r.i.v. ...s.c.r.i.v.x. ...s.c.t. ...s.c.w. ...s.d.m. ...s.d.o.c. ...s.d.w. ...s.e. ...s.e.s.s.i.o.n. ...s.g.m. ...s.i.g. ...s.k.c.a.r.d. ...s.l.a. ...s.l.a...g.z. ...s.m.f. ...s.m.s. ...s.s.a. ...s.t.o.r.y. ...s.t.r.i.n.g.s. ...s.t.w. ...s.t.y. ...s.u.b.l.i.m.e.-.p.r.o.j.e.c.t. ...s.u.b.l.i.m.e.-.w.o.r.k.s.p.a.c.e. ...s.x.g. ...s.x.w. ...t.a.b. ...t.a.b. ...t.d.f. ...t.d.f. ...t.e.m.p.l.a.t.e. ...t.e.x. ...t.e.x.t. ...t.e.x.t.c.l.i.p.p.i.n.g. ...t.h.p. ...t.l.b. ...t.m....t.m.d. ...t.m.d.x. ...t.m.v. ...t.m.v.x. ...t.p.c. ...t.r.e.l.b.y. ...t.v.j. ...t.x.t. ...u.3.i. ...u.n.a.u.t.h. ...u.n.x. ...u.o.f. ...u.o.t. ...u.p.d. ...u.t.f.8. ...u.t.x.t. ...v.c.t. ...v.n.t. ...v.w. ...w.b.k. ...w.e.b.d.o.c. ...w.n.  ...w.p. ...w.p.4. ...w.p.5. ...w.p.6. ...w.p.7. ...w.p.a. ...w.p.d. ...w.p.d....w.p.d. ...w.p.l. ...w.p.s. ...w.p.s. ...w.p.t. ...w.p.t. ...w.p.w. ...w.r.i. ...w.s.d. ...w.t.t  ...w.t.x. ...x.b.d.o.c. ...x.b.p.l.a.t.e. ...x.d.l. ...x.d.l. ...x.w.p. ...x.w.p. ...x.w.p. ...x.y. ...x.y.3. ...x.y.p. ...x.y.w. ...z.a.b.w. ...z.r.t.f. ...z.w.

9、生成User公私钥

生产User公私钥函数:

GANDCRAB V5.2原理分析_第16张图片
生产User公私钥函数

User公钥:

GANDCRAB V5.2原理分析_第17张图片
User公钥

User私钥:

User私钥

10、加密后的User私钥

User私钥被使用Salsa20算法加密,并在其前拼接上被User公钥加密的512个字节。这512个字节中记录加密User私钥的Salsa20密钥。以下是加密流程:

① 两次调用CryptGenRandom,第一次生成32字节随机字符串作为Salsa20的key,记录在数据开头的第一个256字节,第二次生成8字节随机字符串作为Salsa20的向量,记录在数据的第二个256字节。

32字节的key:

GANDCRAB V5.2原理分析_第18张图片
32字节的key

8字节的向量:

GANDCRAB V5.2原理分析_第19张图片
8字节的向量

② User私钥记录在数据的256*2字节后,User私钥用Salsa20加密。

Salsa20的密钥:

GANDCRAB V5.2原理分析_第20张图片
Salsa20的密钥
Salsa20的密钥

Salsa20函数:

GANDCRAB V5.2原理分析_第21张图片
Salsa20函数

③,包含Salsa20 key的256个字节和包含Salsa20初始向量的256个字节分别用RSA算法加密,密钥是RSA公钥。没有攻击者的RSA私钥无法通过解密RSA算法得出Salsa20密钥,因此也就无法获取User私钥。

RSA公钥

11、生成随机字符串,这个字符串的作用是作为被加密文件的新后缀名

GANDCRAB V5.2原理分析_第22张图片
生成随机字符(C)

12、创建\HKEY_LOCAL_MACHINE\SOFTWARE\ex_data\data,记录生成的随机字符串 ,这个字符串将作为被加密文件的新后缀名。

GANDCRAB V5.2原理分析_第23张图片

13、在\HKEY_LOCAL_MACHINE\SOFTWARE\keys_data\data,在public上:记录User公钥。private上:记录加密后的User私钥

14、加密后的User私钥和加密后的本机信息被用Base64加密 。这两个信息又被记录在了勒索信中

GANDCRAB V5.2原理分析_第24张图片
Base加密


15、在C盘下创建勒索信,勒索信的命名方式是:“注册表中记录的后缀名-DECRYPT.txt“。

勒索信中记录了缴纳赎金的详细步骤,RSA加密的User私钥和RC4加密的本机信息的base64

GANDCRAB V5.2原理分析_第25张图片
生成付款信息


(二)加密阶段

1、在要加密文件的同级目录下创建勒索信,勒索信的命名方式是:“勒索后缀名-DECRYPT.txt“。

勒索信中记录了缴纳赎金的详细步骤,RSA加密的User私钥和RC4加密的本机信息的base64

GANDCRAB V5.2原理分析_第26张图片


2、 排除以下文件,文件夹,不对其进行加密。以防对操作系统进行损害和误将勒索信进行加密。

GANDCRAB V5.2原理分析_第27张图片
GANDCRAB V5.2原理分析_第28张图片
GANDCRAB V5.2原理分析_第29张图片

3、遍历磁盘,对文件进行加密。

加密的文本过程分为:加密文本整体User公钥;加密带有Salsa20秘钥的540个字节;最后将这两部分进行拼接:加密的文本=Salsa20加密后的文本整体 拼接上 RSA加密后的文件末尾540个字节

以下是加密的具体步骤:

(1)判断文件是否有加密的标识

① 文件的后缀名是不是和注册表中记录的后缀名一样

② 取文件末尾的540个字节,判断这540个字节中倒数第一个4字节是不是 0x38281,倒数第二个4字节是不是0x93892918。


(2)对文件末尾的540个字节中的进行处理加密:前512字节记录Salsa20秘钥,使用RSA加密;20字节记录文本加密前信息;8字节记录加密后的标识;

① 8字节记录加密后的标识:

赋值加密后的标识给这540字节的末尾:将数据从第532字节开始赋值为0x38281,将数据从536字节开始赋值为为0x93892918。


② 前512字节记录Salsa20秘钥,RSA算法加密,密钥是User公钥:

调用两次CryptGenRandom,第一次产生32字节的随机字符串作为Salsa20的key。第二次产生8字节的随机字符串作为Salsa20的向量

32字节的key:

8字节的向量:

③ 在这540字节中存储Salsa20的密钥,然后用User公钥加密:分为两步

a),将第一个256个字节中的前32字节替换成Salsa20的key。再将256字节数据使用RSA算法加密,密钥是User公钥。

b),将第二个256个字节中的前8个字节替换成Salsa20的向量。再将256字节数据使用RSA算法加密,密钥是User公钥。

User公钥加密函数:

GANDCRAB V5.2原理分析_第30张图片
GANDCRAB V5.2原理分析_第31张图片

④ 20字节中记录文本加密前总大小,每次加密文本字节数和加密的次数

GANDCRAB V5.2原理分析_第32张图片

(3)文本整体加密

① 每次读取文件0x10 0000(1M)的字节数据进行加密

② 加密:加密算法是Salsa20加密

带key(32字节的随机字符串)和向量(8字节的随机字符串)的64字节的数据:

GANDCRAB V5.2原理分析_第33张图片

Salsa20加密:

GANDCRAB V5.2原理分析_第34张图片

(4)拼接构成加密后的文本:加密的文本=加密后的文本整体 拼接上 加密后的本身末尾的540个字节

(5)在加密后的文本名称后添加上注册表中记录的后缀名。至此加密文本完结。

(三)、其他阶段

1、加密局域网中共享目录下的文件

GANDCRAB V5.2原理分析_第35张图片

2、传送本机信息

(1)url的生成如下

① 遍历网址,每个网址之间是用分号隔开的。

GANDCRAB V5.2原理分析_第36张图片
GANDCRAB V5.2原理分析_第37张图片

② 拼接URL:从a),b),c),d)中选取字符进行url拼接。

a):wp-content、static、content、includes、data、uploads、news

b):images、pictures、image、graphic、assets、pics、imgs、tmp

c):im、de、ka、ke、am、es、so、fu、se、da、he、ru、me、mo、th、zu

d):jpg、png、gif、bmp

例如:


GANDCRAB V5.2原理分析_第38张图片

(2)发送数据:发送数据到拼接出的url

GANDCRAB V5.2原理分析_第39张图片

数据标头"Content-Type: multipart/form-data"要传送的数据是已经加密的本机信息的base64

GANDCRAB V5.2原理分析_第40张图片

3、删除文件备份

GANDCRAB V5.2原理分析_第41张图片

4、设置桌面背景

图片位置:C:\Users\15pb-win7\AppData\Local\Temp\bxmeoengtf.bmp

桌面背景:

GANDCRAB V5.2原理分析_第42张图片
桌面背景
桌面背景

5、病毒加密完成后,删除自身。退出进程。

GANDCRAB V5.2原理分析_第43张图片


注:转自http://it.rising.com.cn/fanglesuo/19523.html

你可能感兴趣的:(GANDCRAB V5.2原理分析)