美文网首页
GANDCRAB V5.2原理分析

GANDCRAB V5.2原理分析

作者: 陈小帅不帅 | 来源:发表于2019-03-13 09:37 被阅读0次

    (一)准备阶段

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

    2、获取本机信息

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

    获取本机信息

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

    获取信息表

    3、RC4加密本机信息

    关于RC4的Sbox:

    填充有序的Sbox 打乱之后的Sbox

    整体加密算法:

    整体加密算法(C++)

    4、区域豁免

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

    不会被加密的区域

    5、创建唯一的互斥体

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

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

    (1)明文数据:2A8972E8

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

    (2)Sala20加密:

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

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

    Salsa20函数:

    Salsa20函数

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

    6、查杀进程

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

    7、解密生成RSA公钥

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

    Salsa20算法:

    Salsa20的秘钥和初始向量:

    Salsa20的秘钥和初始向量 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公私钥函数:

    生产User公私钥函数

    User公钥:

    User公钥

    User私钥:

    User私钥

    10、加密后的User私钥

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

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

    32字节的key:

    32字节的key

    8字节的向量:

    8字节的向量

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

    Salsa20的密钥:

    Salsa20的密钥 Salsa20的密钥

    Salsa20函数:

    Salsa20函数

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

    RSA公钥

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

    生成随机字符(C)

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

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

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

    Base加密

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

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

    生成付款信息

    (二)加密阶段

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

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

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

    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公钥加密函数:

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

    (3)文本整体加密

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

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

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

    Salsa20加密:

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

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

    (三)、其他阶段

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

    2、传送本机信息

    (1)url的生成如下

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

    ② 拼接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

    例如:

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

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

    3、删除文件备份

    4、设置桌面背景

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

    桌面背景:

    桌面背景 桌面背景

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


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

    相关文章

      网友评论

          本文标题:GANDCRAB V5.2原理分析

          本文链接:https://www.haomeiwen.com/subject/qesnjqtx.html