(一)准备阶段
1、获取本机的杀毒软件信息
2、获取本机信息
勒索Id的生成方法和之前版本一样,都是利用RtlComputerCrc32()函数将本机硬件信息生成的CRC32,然后再拼接上 小写的GetVolumeInformationW获取到的卷序列号地址(pVolumeSerialNumber )。
因为包含了GetVolumeInformationW获取到卷序列号的地址(pVolumeSerialNumber ),都保证了每台受感染机器生成的id独一无二。
3、RC4加密本机信息
关于RC4的Sbox:
整体加密算法:
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函数:
加密后:UNICODE "8B5BDDB94369950A5F4C469DD8A7A",然后取加密后的前20个字节8B5BDDB94369950A5F4C,然后拼接成"Global\8B5BDDB94369950A5F4C.luck"作为互斥体的名称。
6、查杀进程
要查杀的进程名单内有71个进程,相比于GandCrab5.0.4(39个),这一版本要查杀的进程完善了很多
7、解密生成RSA公钥
将一段全局数据异或5,然后使用Salsa20进行解密,得到RSA公钥。
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私钥:
![](http://img.e-com-net.com/image/info10/62b7fb9b50034d9384c9f9fae878d38e.png)
10、加密后的User私钥
User私钥被使用Salsa20算法加密,并在其前拼接上被User公钥加密的512个字节。这512个字节中记录加密User私钥的Salsa20密钥。以下是加密流程:
① 两次调用CryptGenRandom,第一次生成32字节随机字符串作为Salsa20的key,记录在数据开头的第一个256字节,第二次生成8字节随机字符串作为Salsa20的向量,记录在数据的第二个256字节。
32字节的key:
8字节的向量:
② User私钥记录在数据的256*2字节后,User私钥用Salsa20加密。
Salsa20的密钥:
Salsa20函数:
③,包含Salsa20 key的256个字节和包含Salsa20初始向量的256个字节分别用RSA算法加密,密钥是RSA公钥。没有攻击者的RSA私钥无法通过解密RSA算法得出Salsa20密钥,因此也就无法获取User私钥。
11、生成随机字符串,这个字符串的作用是作为被加密文件的新后缀名
12、创建\HKEY_LOCAL_MACHINE\SOFTWARE\ex_data\data,记录生成的随机字符串 ,这个字符串将作为被加密文件的新后缀名。
13、在\HKEY_LOCAL_MACHINE\SOFTWARE\keys_data\data,在public上:记录User公钥。private上:记录加密后的User私钥
14、加密后的User私钥和加密后的本机信息被用Base64加密 。这两个信息又被记录在了勒索信中
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。
![](http://img.e-com-net.com/image/info10/3aaa7fbebc114c1287d35d9b64bab061.png)
(2)对文件末尾的540个字节中的进行处理加密:前512字节记录Salsa20秘钥,使用RSA加密;20字节记录文本加密前信息;8字节记录加密后的标识;
① 8字节记录加密后的标识:
赋值加密后的标识给这540字节的末尾:将数据从第532字节开始赋值为0x38281,将数据从536字节开始赋值为为0x93892918。
![](http://img.e-com-net.com/image/info10/5c8dc2dfcdf44396acbed1fa028e6a57.png)
② 前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
桌面背景: