GANDCRAB V5.2原理分析

(一)准备阶段

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,546评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,224评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,911评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,737评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,753评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,598评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,338评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,249评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,696评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,888评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,013评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,731评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,348评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,929评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,048评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,203评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,960评论 2 355

推荐阅读更多精彩内容