首页
社区
课程
招聘
[原创]WannaCry深度详细分析报告(偏重策略)
发表于: 2017-5-26 09:55 7161

[原创]WannaCry深度详细分析报告(偏重策略)

2017-5-26 09:55
7161

说明一下,本来应该一周前就发出来,由于某些自己的功利心作祟,导致晚了几天,惭愧!

最近,WannaCry是火了一把,到处都是分析文章,报告,解决方案等等。

趁着这个热度,我也来跟风一把。

前前后后把WannaCry详细分析了一遍。

从文件释放、启动加密器、文件加密策略、加密算法、到解密过程中所有细节进行了详尽深入的分析。

由于没有拿到初始样本,没有包含漏洞利用部分的分析。

样本信息:

MD5: 84C82835A5D21BBCF75A61706D8AB549

SHA1: 5FF465AFAABCBF0150D1A3AB2C2E74F3A4426467

CRC32: 4022FCAA

无壳 / Visual C++ 6.0

下面具体看分析内容。

大致流程图如图:

img

下面开始详细分析各个部分细节。

设置当前目录为工作目录,然后查找PE中资源(XIA)。

img

直接用资源工具看一下,发现是PK开头的,多半是个压缩文件了,导出来试试。

img

解压还要密码,看代码密码是WNcry@2ol7,解压成功。

img

读取资源数据后,解压释放文件到当前目录。

在三个比特币交易地址中随机选择一个,写入c.wnry

img

然后设置当前目录为隐藏属性,且设置为everyone可访问

img

然后初始化Crypt相关函数,用于后面的解密操作。

开始操作文件t.wnry,看看内容,应该是个加密文件。

img

然后通过crypt API将t.wnry解密之后(解密后是个DLL模块,dump数据后可以用于分析),映射到内存(自己loaddll),然后找到导出接口函数TaskStart调用,开始加密工作。

img

TaskStart一进来,通过MsWinZonesCacheCounterMutexA的Mutex进行单示例检查,有则退出,没有继续工作。

然后是设置工作目录,读取c.wnry信息。

检查是否是SYSTEM账户。

img

初始化Crypt相关函数,以及文件操作函数(增加一点分析成本)。

imgimg

检查Global\MsWinZonesCacheCounterMutexW,Global\MsWinZonesCacheCounterMutexA\0是否存在,

存在则表示加密相关准备工作已经完成,不在进行,没有则创建Global\MsWinZonesCacheCounterMutexA\0

检查00000000.dky和00000000.pky是否存在,存在是否配对的密钥,是则加密相关准备工作已经完成,不在进行,没有则进行后续工作。

img

如果加密相关准备工作已经完成,创建一个线程,完成如下工作(记为工作A):

        img

       img

如果加密准备未完成,初始化密钥,保存到00000000.pky, 00000000.eky。

由于时间关系,具体加密密钥产生过程不再详述,很多分析文章说的很清楚了,本文重点不在此。

然后是如果00000000.res不存在,通过CryptGenRandom产生8字节随机值,后续会写入00000000.res

接着创建5个工作线程,完成不同的工作。

       img

      img

       img

线程4每30秒启动taskdl.exe清除所有磁盘的回收站文件

线程5完成的也是前面提到的工作A的内容,不再详述

然后就是重点了,加密文件部分了。

拷贝u.wnry为@WanaDecryptor@.exe,通过写一个bat创建@WanaDecryptor@.exe.lnk快捷方式。

img

img

读取r.wnry内容,生成@Please_Read_Me@.txt文件。

枚举当前用户桌面和文档目录文件,进行加密(没有设置不复写标记,删除前会复写)。

枚举All Users\Desktop和All Users\Documents,找到非当前用户目录进行加密(没有设置不复写标记,删除前会复写)。

下面记为工作B:

通过taskkill强删Microsoft.Exchange、sql和mysql进程(加密其数据)

加密磁盘中文件,每个分区重复两次(会设置不复写标记,删除前不会复写)。

枚举All Users\Desktop目录,复制b.wnry到目录中为@WanaDecryptor@.bmp,设置桌面背景为@WanaDecryptor@.bmp,

执行@WanaDecryptor@.exe co

更新00000000.res

cmd.exe /c start /b @WanaDecryptor@.exe vs

每个磁盘(fixed)创建x:/$Recycle/hibsys.WNCRYT(系统盘写在temp目录,x:/$Recycle被设置为系统隐藏属性),读取分区可用空间大小,大于0x40000000(1GB)的话,每10微秒循环写入0xa00000个字节的'U',写20次,然后删除该文件,并且设置了重启后删除。

每隔60s重复工作B,直到退出标志为真。

枚举文件采用方式为:

枚举当前目录中所有文件(排除文件看下文),加入文件链表,记录所有子目录(排除目录看下文)到目录链表。

本目录文件有加密操作(具体看下文)

分析目录层级,少于等于6层的,拷贝lease_Read_Me@.txt到目录,5-6层的拷贝@WanaDecryptor@.exe.lnk,1-4层拷贝@WanaDecryptor@.exe到目录。

然后遍历目录链表,枚举子目录,重复1操作。

子目录枚举完成,所有文件记录到链表,进行后续操作。

目录和文件采用相同的链表结果,总结如下:

枚举子目录时,会跳过如下目录(保证系统正常工作):

枚举文件时,首先跳过 @Please_Read_Me@.txt,@WanaDecryptor@.exe.lnk, @WanaDecryptor@.bmp

然后检查文件类型,跳过0,1,6类型文件,其他文件加入链表。

具体类型如下:


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 1
支持
分享
打赏 + 5.00雪花
打赏次数 4 雪花 + 5.00
 
赞赏  土豆粉   +1.00 2017/06/05
赞赏  orz1ruo   +2.00 2017/05/26
赞赏  CCkicker   +1.00 2017/05/26
赞赏  Editor   +1.00 2017/05/26
最新回复 (9)
雪    币: 26205
活跃值: (63302)
能力值: (RANK:135 )
在线值:
发帖
回帖
粉丝
2
说明一下,本来应该一周前就发出来,由于某些自己的功利心作祟,导致晚了几天,惭愧!

为什么呢?按理说一周前发出来效果更好呀

2017-5-26 10:05
0
雪    币: 10072
活跃值: (3008)
能力值: ( LV15,RANK:515 )
在线值:
发帖
回帖
粉丝
3
Editor 说明一下,本来应该一周前就发出来,由于某些自己的功利心作祟,导致晚了几天,惭愧!为什么呢?按理说一周前发出来效果更好呀
想发某些平台拿点m,可以人家不搭理,汗颜
2017-5-26 10:08
0
雪    币: 7016
活跃值: (4227)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
感谢分享,
2017-5-26 10:11
0
雪    币: 49
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
Angelxf 想发某些平台拿点m,可以人家不搭理,汗颜
我觉得哇,您拿看雪的五篇精华,然后去找bat的hr聊天,应聘机会没问题。你去其它平台发个贴拿个钱,没啥用。您去hr那边,他们都不认你的。
2017-5-26 10:13
0
雪    币: 10072
活跃值: (3008)
能力值: ( LV15,RANK:515 )
在线值:
发帖
回帖
粉丝
6
土豆粉 我觉得哇,您拿看雪的五篇精华,然后去找bat的hr聊天,应聘机会没问题。你去其它平台发个贴拿个钱,没啥用。您去hr那边,他们都不认你的。
感谢指导
2017-5-26 10:16
0
雪    币: 47147
活跃值: (20460)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
7

是有许多公司招人,将看雪精华数,当成一个考核指标。
看雪很多会员都因为精华分享而受益:
1)与他人分享知识,让其他人学到新知识,为人师;
2)认识更多的人,融入进安全圈子,精华就起到一张身份名片作用;
3)求职工作,精华就是HR薪资定级一个很好的参考指标;
4)看雪建站17年了,太多人在看雪求知或入职的,在社会和公司里,你们会因为有着这一同样背景,会接近彼此距离,更有利于你的人脉发展。


另外,看雪正在加强会员荣誉体系建设,敬请期待。

2017-5-26 10:42
0
雪    币: 1535
活跃值: (695)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
LZ  分析的不错,点个赞
2017-5-26 10:58
0
雪    币: 1985
活跃值: (1831)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
Editor 说明一下,本来应该一周前就发出来,由于某些自己的功利心作祟,导致晚了几天,惭愧!为什么呢?按理说一周前发出来效果更好呀
图片失效了。可以修复一下https://zhuanlan.zhihu.com/p/27130429
2021-5-22 20:01
0
游客
登录 | 注册 方可回帖
返回
//