看雪论坛
发新帖
1

[原创]蠕虫勒索软件WannaCrypt0r的行为分析

白小菜 2017-5-15 14:28 9238

来科锐学习一年出头,x86平台刚好学完,这个周末遇到这个病毒爆发,花了点时间分析了下这个样本,发出来与看雪坛友分享.

一)样本大致行为预览

该样本执行后会随机向互联网计算机发送EternalBlue漏洞溢出程序,并释放勒索加密程序,加密计算机上.doc .ppt.jpg.sqlite3.mdb.bat.der等多种类型的文件,修改文件后缀为.WNCRY类型,弹出窗口勒索用户,要求一定时间内交出赎金,才能恢复文件。

二)样本行为分析

2.1原始样本分析

定位到WinMain后,可以发现在WinMain入口处发现,原始样本会尝试连接一个非常没有规律的域名:http://www.iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com

 

样本会通过是否能成功连接该域名,来决定是否展开后续行为。

如上图所示,若能够成功链接,则程序不展开相关行为,直接退出。否则,展开相关行为。

 

其中的sub_408090函数内部,在一个条件判断中分了两个功能模块:

其中,条件成立的代码块是启动服务功能等行为展开,程序第一轮并不会进入;当程序第一次启动时,执行的是条件不成立时的模块(上图中的sub_407f20),其功能主要为创建服务、释放并执行勒索的主体程序tasksche.exe /i

创建服务过程:

该样本创建一个服务名为"mssecsvc2.0",服务说明为"Microsoft Security Center (2.0) Service"的服务。

并在后续的行为中启动自身。

该服务的功能为:随机扫描互联网IP,利用SMB的内核级漏洞(CVE-2017-0143~CVE-2017-0148),传播自身。这个漏洞的利用我自己还在分析,分析出来后会放在后续文章中。

 

原始样本,会从资源中加载、释放一个名为tasksche.exe的文件,并且以tasksche.exe /i的方式启动。

接着,我分析了tasksche.exe,它的行为如下

 

2.2 tasksche.exe的行为分析

tasksche.exe启动后,首先,会将自身拷贝到C:\intel\lgxbrzjmuzoytl531

接着,tasksche.exe会创建服务,服务名及说明均为"lgxbrzjmuzoyt1531",然后以服务的方式再启动自身。

 


以服务的方式启动后,tasksche.exe会以创建进程的方式执行命令:

attrib.exe +h

icacls.exe . /grant Everyone:F /T /C /Q

这两个命令用于修改文件属性相关的权限。

接着,会读取前期释放的一个名为t.wnry文件,并对其中的内容进行解密,解密后的内容为一个Dll文件,但是该dll文件并不会被写入磁盘中,而是在内存中直接执行。

 


我将该dll从内存中dump(取名为crypt.dll),发现包含了勒索软件的加密功能。对其进行了分析。

 

2.3 crypt.dll样本分析

crypt.dll只有一个自定义的导出函数TaskStart,该导出函数是其行为展开的入口。

 

进入TaskStart后,该样本会先加载Kernel32,动态获取后续需要的API

创建互斥体"MsWinZonesCacheCounterMutex",用于判断自身重入问题。

接着,该样本连续创建了多个线程,

他们的功能分别为:

tasksc.exe加入到HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run项,用于开机自启动

遍历驱动器,并检查是否有U盘等移动存储插入

循环调用taskdl.exe,暂未详细分析

写入并执行vbs脚本,暂未详细分析

 

遍历磁盘并加密文件。

该样本不会加密所有的文件或文件夹(否则可能会破坏系统导致系统无法启动,或者有些文件的价值并不大)。其将要感染的文件,以后缀名判断,集中放在程序中,以下是部分截图:

过滤掉特定的文件夹及非指定后缀名的文件之后,程序会对文件进行加密。其加密流程如下,它的加密思路并不是直接用长密钥的RSA进行全部加密,可能处于效率的考虑,它的加密思路如下:

1. 被感染用户的文件,被AES加密,AES加密所使用的KEY,是根据每个文件随机生成的。随机生成的KEY,之后会被下一步的RSA 2048加密。

2. 样本在针对每一台机器上,会随机生成一对RSA 2048密钥,其中公钥(保存在00000000.pky)用于加密上一步的AES KEY,私钥将被加密后存在文件(00000000.eky)中,具体加密方式见下一步。

3. 上一步的RSA私钥,会被另一个RSA 2048公钥加密(记作 RSA2),该RSA2的私钥仅勒索者本人知道。

 

知道以上思路后,就比较容易理解该样本的加密流程了:

1. 新建文件,新文件名为原始文件名.WANACRYTT表示临时文件,用于临时处理文件加密)

2. 在新的文件头部先写入8字节的WANACRY!加密标志

3. 写入4字节的长度标识,表示后面紧跟的加密后的文件加密密钥的长度

4. 写入256字节长度的加密后的文件加密密钥(该密钥解密后为16字节长度的字符串,使用该字符串AES加密文件)

5. 写入4字节长度的 勒索者作者定义的类型,不为4的文件类型记录到f.wnry文件中,用于后期免费解密。

6. 写入8字节长度的原始文件长度

7. 使用随机生成的16位字节的密钥利用AES加密算法进行加密,并写到上述内容之后。

8. 修改新文件的文件时间为源文件的时间。

9. 删除原文件,并将新文件重命名为WANACRY

10. 若文件为可免费恢复的文件,则将文件名记录到f.wnry文件中。

因为涉及到的代码量较多,不方便截图,感兴趣的可以去看我附带的idb文件。我自己也对该样本的算法进行了还原,写成了cpp文件,供大家参考。

 


上传的附件:
本主题帖已收到 2 次赞赏,累计¥2.00
最新回复 (44)
1
没图你说个图 2017-5-15 14:40
2
先留个名,等会去班上问下是谁
土豆粉 2017-5-15 14:43
3
支持,好文。
gotope 2017-5-15 15:12
4
期待后续是否有技巧突破解密?
1
xacker 2017-5-15 15:19
5
      有基础吧,没基础1年能学成这样      就厉害了。
palkiver 2017-5-15 15:41
6
学长强!
BeMaverick 2017-5-15 15:43
7
不错  不错!!谢谢分享!!!
gotope 2017-5-15 15:52
8
是否可以用一串数字解开所有加密, 
还是有的文章说的每台电脑的解密都不同?
叮叮猫 2017-5-15 17:02
9
厉害666
8
kanxue 2017-5-15 18:31
10
感谢分享,今天公众号转发了这一文章。
1
RichardE 2017-5-15 18:42
11
谢谢分享
wyfe 2017-5-15 18:43
12
一些细节再详细些就好了
4
Vsbat 2017-5-15 18:45
13
赞你,分析的好
5
QEver 2017-5-15 18:56
14

随机生成的KEY

这是重点啊,但好像说的不够清楚。是根据文件内容生成的KEY?

最好能把KEY生成这一段的相关代码补充上来。

1
holing 2017-5-15 19:11
15
gotope 期待后续是否有技巧突破解密?
rsa加密啊,公认的不对称加密。。。
bambooqj 2017-5-15 19:50
16
其他的都是行文分析..一点文件结构啊.加密流程啊.给的都很模糊..这个很好.
话说  他加密之后加入  我未对  计算机进行任何操作  包括重启  能否从内存痕迹中还原私钥和公钥    它里边有调用释放.但是  我不清楚.微软那套加密API的释放之后.他是否还能在内存中  遗留痕迹.
xingskyer 2017-5-15 20:42
17
来学习下,谢谢分享,能再详细点就更好  了。
ugvjewxf 2017-5-15 21:01
18
就没人分析下这个漏洞是怎么传播的吗?    这个漏洞是怎么形成的,病毒是怎么进入电脑的,这才是关键呀?
Rookietp 2017-5-15 21:55
19
病毒行为似乎没什么特别的,主要是怎么传播的,这个特别感兴趣。
lotpe 2017-5-15 21:56
20
谢谢分享,学习了
xingthx 2017-5-15 22:18
21
好文,支持。。学习了
vaguem 2017-5-15 22:23
22
Rookietp 病毒行为似乎没什么特别的,主要是怎么传播的,这个特别感兴趣。
传播用的eternalblue~发现这漏洞的人真是牛逼爆炸
2
dododo 2017-5-15 22:28
23
厉害了,这都能分析出来
altmanx 2017-5-15 22:50
24
666.

想起一句话:  加VMP是对分析人员最基本的尊重.
哈哈哈
1
holing 2017-5-15 22:58
25
Rookietp 病毒行为似乎没什么特别的,主要是怎么传播的,这个特别感兴趣。
是一个已知漏洞,方程式那会爆出来的,不是病毒作者自己挖的0day,在这之前已经在metasploit框架上了
12
netwind 2017-5-15 23:22
26

分析的很好  赞!
不过同样 
被AES加密,AES加密所使用的KEY,是根据每个文件随机生成的    这个随机生成是完全一个随机算法  还是跟文件有关?
  还有RSA密钥也是根据机器随机生成    是完全随机还是跟机器有关?
如果作者有空可以补充一下

另外科普一下
  这个漏洞  原本是NSA攻击用的  秘密武器,后来被某黑客组织入侵  拿到了数据
起初黑客组织在网络叫卖这套武器  可能要上百万美元,后来可能没有人买
该组织就陆续公开了这些武器

其中有个工具利用WINDOWS系统SMB协议漏洞  进行攻击的,基本开了445端口的大部分都中招
然后勒索软件作者利用这个漏洞开发了目前这个臭名昭著的蠕虫勒索病毒。

表述可能不完全正确,但大概是这个情况。

12
netwind 2017-5-15 23:24
27
今天新闻联播  还报道:微软总裁表示,政府发现漏洞应该报告给他们  以便及时修复。
DBinEx 2017-5-15 23:46
28
厉害了。。。膜拜
YoungBai 2017-5-16 02:41
29
膜拜中.楼主分析的很好.
seebug 2017-5-16 10:27
30
Hello  ,  作者  and  管理员  ,  paper.seebug.org    想收录这篇优秀的原创分析文章,  能否授权?  谢谢!
dmxcr 2017-5-16 11:25
31
我觉得对称加密密钥是否相同不好分析,因为它被非对称算法加了密,我个人认为如果黑客答应解密,则密钥一定与电脑某项uid值绑定,当然也并不排除密钥都一样,因为那些人也可能是为了让出名“(不能用常理思考他们)。。。
dmxcr 2017-5-16 11:25
32
文章很棒,期待作者的后续分析
默然的风 2017-5-16 13:31
33
强大。学习了
只是来打酱油 2017-5-17 11:39
34
你这分析有个毛用?加密必然要有key才能加密的,key如果在本地,那他危害性不会这么大
很明显key是从其他服务器远程获取的   
该服务器地址能获取到么?或者ddos他     
熊仔lie 2017-5-17 14:21
35
二层密钥(RSA密钥)和三层密钥(AES128文件加密密钥)应该都是直接调用CSP借口获取的吧
landius 2017-5-17 18:05
36
请问生成的    .pky    和    .eky    文件是写入到那个路径?
wdmmyddzyj 2017-5-17 22:42
37
是否有人可以分析一下具体的漏洞利用过程。
在网上查到一个:  http://bobao.360.cn/learning/detail/3738.html
是否有人可以分析一下,文中说:“0xffdff1f1处为shellcode.最后在接收完成后,最终调到srvnet!SrvNetWskReceiveComplete.在这个函数中会调用最终的shellcode。”      那么这个0xffdff1f1  这个地址是怎么控制的,让程序到这个地址执行?
柒柒 2017-5-17 22:44
38
很强势,学习了!
haiguaiyf 2017-5-17 23:28
39
等待量子计算机来解密RSA吧
atompure 2017-5-18 05:04
40
厉害,谢谢分享。
wangyongj 2017-5-18 09:05
41
赞你,分析的好
我要学 2017-5-18 09:35
42
太厉害了,怎么解密呢
空白即是正义 2017-5-18 11:08
43
思路很清晰~
猎鹰Falcon 2017-5-18 12:58
44
B不错
qiucx 2017-5-18 20:31
45
根据文中的加密步骤,解密文件必须有作者口袋里的私钥,现在网上不是已经能恢复文件了,有人知道怎么恢复的吗?
返回



©2000-2017 看雪学院 | Based on Xiuno BBS | 域名 加速乐 保护 | SSL证书 又拍云 提供 | 微信公众号:ikanxue
Time: 0.020, SQL: 20 / 京ICP备10040895号-17