WannaCry 样本分析

综述

WannaCry是于2017年5月12日爆发的,勒索病毒WannaCry借助高危漏洞“永恒之蓝”(EternalBlue)在世界范围内爆发,并迅速在公网上进行传播,造成了极大的危害。正如其名勒索病毒会对文件进行加密,需要受害者进行支付比特币进行解密。

外部分析

导入导出表

我们先从外部入手,观察其对应的导入导出表,我们可以观察到导入了文件创建、文件读取、获取路径等文件操作,以及创建了互斥体,防止多开。同时还有对注册表进行修改、网络链接的相关函数。

Kernel32.dll加载表

ADVAPI32.dll加载项

资源

在资源部分我们可以观察到有压缩包的特征

资源段信息

进行提取,我们打开可以发现勒索程序运行后会解压的东西在此压缩包中,同时压缩包设有密码,目前信息无法进行解压,猜测程序中有部分代码进行对其解压进行释放,然后执行内部的两个.exe,随后对.wnry文件进行解密,读入内存

提取出的压缩包内容

逆向分析 —— wcry.exe

WinMain

WinMain

注册表写入

注册表修改项

文件释放

通过调试以及猜测我们可以得到对应资源段压缩包的解压密码WNcry@2ol7

文件释放 - 1

我们可以通过xdug进行调试,可以释放出以下文件

文件释放 - 2

比特币地址写入

c.wnry写入一个随机的比特币钱包地址,随后在调用破环程序时读入,要求用户打款

使用010进行查看对应写入前后对比

可以明显的发现已经写入了是哪个地址中的随机一个,同时可以注意到下面存在有洋葱路由的网址以及对应组件的压缩包。表明病毒作者将勒索服务器搭建在暗网上,需要通过tor.exe来对其进行通信

线程创建

不难看出其创建了多个线程,将wcry.exe执行的目录设置为隐藏,同时通过命令行修改所有文件的权限为完全访问权限

执行命令如下:

1
2
attrib +h
icacls . /grant Everyone:F /T /C /Q

t.wnry 解密

dump下来对应的内存,我们用010进行搜索MZ文件头,可以发现其对t.wnry解密出了个PE文件,将其拖入PE查询可以得到其为一个Dll

通过在堆上分配空间,然后在堆上进行加载,因为是在堆上加载的,所以没有符号信息,显得较难看。同时其遍历解密后的dll的导出表,返回TaskStart函数的地址

总结

Wcry.exe总体上没有进行太多的操作,更多的是做为初始化程序将文件进行释放,随后加载dll并调用内部函数,大致可以猜测到核心在dll中,接下来的主要工作便是对dll的分析工作

逆向分析 —— t.wnry.dll

TaskStart

t.wnry.dll中的TaskStart函数才是真实的加密函数,其核心功能都在里面

TaskStart -1

TaskStart - 2

在创建bat脚本中将释放的文件进行了再次解析,创建了@WanaDecryptor@.exe的快捷方式、对@Please_Read_Me@.txt写入支付比特币数以及对应地址等信息、同时加密其他用户文件等等

sub_10003AC0

sub_10003AC0 - 1

创建00000000.pky并保存对应的公钥,同时创建私钥文件00000000.eky,同时在加密过程中可以看到有RSA以及AES相关字段,大致猜测采用了两种加密进行混合。

sub_100057C0

sub_100057C0 - 1

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

sub_100057C0 - 2

sub_10004F20

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

image-20230406000503162.png

sub_10004CD0

sub_10004CD0

sub_10004DF0

image-20230405231837600.png

sub_10005480

image-20230405232028856.png

逆向分析 —— taskse.exe

WinMain

sub_401000 - 1

sub_401000 - 2

通过上述代码可以大致了解到其大致是通过伪造令牌来进行达到提升权限

逆向分析 —— taskdl.exe

taskdl.exe - 1

taskdl.exe - 2

其作用为遍历路径找到有.WNCRYT的文件,并将其进行删除

逆向分析 —— u.wnry

sub_4064D0

image-20230406234213230.png

其启动时会检测参数的个数,当启动时没有参数时,仅释放@WanaDecryptor@.bmp,并设置为桌面背景,同时启动勒索主界面,不构成实际危害

如果参数为ficovs中的一个时将会分别执行以下操作

fi:
检查系统是否已经被加密,如果是,则显示勒索界面
co:
在 127.0.0.1:9050 上开始监听
从 s.wnry 中解压Tor到安装目录
如果 s.wnry 不存在或损坏,就从配置文件中指定的 URL 下载 Tor
将 TaskData\Tor\tor.exe 复制为 TaskData\Tor\taskhsvc.exe 并运行
vs:
静默删除操作系统上的所有卷影副本、禁用操作系统启动状态策略以及恢复功能同时删除备份目录
上述操作会根据用户的权限进行来通过不同方式进行执行

总结

文件释放

msg 病毒的语言包
c.wnry 存储了比特币账户 一个下载链接 跟勒索相关
t.wnry 隐藏了一个dll 文件 dll 的导出函数是病毒的核心代码
u.wnry 解密器,勒索病毒主界面
r.wrny 勒索文档
@WanaDecryptor@.exe 解密器,从 u.wnry 中拷贝而来
taskse.exe 提权部分
taskdl.exe 删除临时文件和回收站的.WNCRY文件
00000000.pky 公钥
00000000.eky 被加密的私钥
00000000.res 八个字节的随机数和当前时间
.bat为解密器创建快捷方式

行为总结

外部信息收集

逆向信息收集

参考资料

对WannaCry的深度分析_wannacry 分析_鬼手56的博客

勒索病毒WannaCry深度技术分析——详解传播、感染和危害细节

对WannaCry的深度分析 - 知乎 (zhihu.com)

WannaCry深度详细分析报告(偏重策略) - 知乎 (zhihu.com)


WannaCry 样本分析
https://equinox-shame.github.io/2023/04/07/WannaCry 分析报告/
作者
梓曰
发布于
2023年4月7日
许可协议