wannacry攻击原理wannacry病毒补丁

文章目录病毒简介示例信息病毒行为分析静态分析使用LoadPE显示分析资源动态分析可视行为过程显示注册表操作文件操作网络监控详细分析wcry.exe示例程序分析WinMain函数setregeditfreeresourcefileweress cwnrystartcommandgeta icinitsectionkeyimportandmemallocdecryptfilegetfunaddrt _ wnry.dll模块, 分析TaskStartCanCreateMutex的几个前面分析的基础函数createmutexandcheckcheckcheckkcheckckckckck的几个回调函数是proccreateresfileprocheckdkyffkck 分析了ocruntaskdlprocrunexeandsetregeditsetexerunregedit加密算法分析了encodefirstmakekekeeeeeedit

病毒概述

WannaCry勒索病毒是2017年袭击世界的勒索王,利用着高危漏洞“永恒的蓝色”。 作为免冠之王,WannaCry会被面试官问是否仔细分析过,所以在乘坐冠状病毒肆虐的时候我也会分析一下,增加一些经验

样本信息我使用的分析样本信息如下。 文件: C:\vir\wcry.exe大小: 3514368 bytes文件版本:6.1.7601.17514 win 7sp1_ RTM.101119-1850 ) 2:21336023 MD 5336084 c 82835 a5d 21 bbcf 75 a 61706 D8 ab 549 sha 1:5 ff 465 afaabcbf 0150 D1 a3 a B2C 2e 74 F3 a 4426467 CRC 3233604022 fcaa病毒分析环境分析谨慎的高跟鞋Pro、Hash、PEID、010Editor、防火墙电暖器、PcHunter等用PEID检查外壳。 病毒是用VC 6.0写的,没有外壳

病毒行为分析静态分析静态分析主要是根据样本导入表的敏感函数、资源等进行病毒行为的预分析

使用LoadPE进行分析

发现有文件操作的函数。 当然,恐吓病毒一定是加密文件。

在处理资源时,可能会释放资源,如图像、加密文件和某些进程文件

时间转换函数正好能够应对病毒的时间功能

对注册表执行各种操作的函数是病毒所必需的

查看资源

可以将该部分的资源PK的开头初步判断为zip形式的压缩文件,并能够提取文件进行分析

上图是提取的资源,这些资源用于后续病毒的操作

打开天鹅绒剑监测运行病毒样本,病毒样本基本运行后,分析监测日志,主要观察以下几种行为:

进程操作:检查与病毒相关的进程注册表操作:检查是否存在注册表设置、创建等操作文件操作:创建、修改文件、 确认是否存在删除等操作网络操作:确认是否存在网络通信等操作动作监视:确认病毒动作是否可动作且正在运行病毒,在包含示例的目录下创建以下文件,具体起什么作用

但是,可以看到msg目录中有语言包资源

运行后,一个名为Wana Decrypt0r 2.0的恐吓界面弹出,它替换了桌面背景,并在桌面上创建了部分新文件:

在过程审查中,使用天鹅绒剑和Process Explorer进行过程审查,发现病毒过程定期创建这样的过程。

由上图可见,病毒指向taskdl.exe、@WanaDecryptor@.exe和taskse.exe进程taskhsvc.exe,它们不在进程树中,但路径为病毒路径

过滤和查看进程可以创建许多进程、打开进程、

使用注册表进行过滤分析,以查看有关创建和设置注册表的所有项目

[外部链接图像的导出失败。 源站可能有防盗链机制。 建议保存图像并直接上传。 img-1yMZukVn-1582536970282 ) E:\)病毒漏洞分析)病毒分析报告永恒蓝WannaCry分析报告WannaCry恐吓病毒分析. assets

病毒示例程序向SOFTWARE添加新密钥并设置当前病毒示例的路径

发布的病毒程序@WanaDecryptor@.exe更改了与IE浏览器相关的键值

通过分析文件操作病毒显示的信息,可以看到对几个重要文件进行了加密操作。 具体的加密算法和解密分析将在后面进行

然后,通过对天鹅绒剑的过滤分析,可以得出以下结果。

首先在每个目录下创建了两个文件@WanaDecryptor@.exe和@Please_Re

ad_Me@.txt,其中一个为病毒程序,一个为提示信息告诉怎么解密和付钱)

在病毒样本所在目录下生成了一堆文件,也就是前面研究过的资源文件,并启动其中的一部分程序,如taskdl.exe、taskse.exe、u.wnry等

网络监控

查看网络监控,发现病毒会对两个端口进行监听,同时进行了一部分网络的链接操作,初步判断是进行局域网内的一些ip地址进行蠕虫攻击

详细分析

接下来使用OD和谨慎的高跟鞋对病毒进行详细的分析,彻底剖析其行为

wcry.exe样本程序分析

通过谨慎的高跟鞋找到WinMain函数地址,同时在OD中找到WinMain函数,接下来进行正式分析:

WinMain函数

首先是WinMain函数,分析如下:

在WinMain函数中完成了对病毒的准备工作,是WannaCry勒索病毒的大致主体代码,下面将一些重要的函数的细节分析贴出来:

SetRegedit

首先进行了注册表操作,病毒在\HKEY_LOCAL_MACHINE\SOFTWARE\下创建了一个注册表项WanaCrypt@,并将当前程序所在目录的路径添加到这个项下

FreeResourceFile

函数用来在当前目录下释放所有的资源,资源中的文件在之前已经见到过

WriteFileCwnry

函数向文件c.wncry中写入了比特币账户信息,具体分析如下:

这里的比特币账户信息刚好会出现在勒索软件界面上的支付账户框中,会被用于支付比特币

StartCommand

函数用来运行cmd命令,在上述代码中进行了两次命令行操作:

使用了命令attrib +h .进行了目录隐藏,但是在我的电脑上似乎没起到隐藏的作用,后面分析发现在这句命令后面多了一个.,所以隐藏失败了使用命令icacls . /grant Everyone:F /T /C /Q来给系统添加一个叫Everyone的用户,且给与这个用户所有的权限 GetApi

函数对于一些需要的API地址进行了获取

CInitSection

函数初始化了两个临界区对象

KeyImportAndMemAlloc

函数用于导入RSA的私钥,用于后面的解密文件,同时申请了两块大小为0x100000的内存空间

DecryptFile

函数大致内容如下:

实现的功能是对释放出的t.wnry文件进行解密,解密后的文件其实是一个PE结构的文件,在OD中运行函数执行完毕后查看eax中的内存空间中存储的内容如下:

可以看出这是一个PE格式的文件,将其提取出来提取0x10000字节,OD使用Ctrl+Shift+X复制,010使用Ctrl+Shift+V粘贴)使用010保存为exe文件然后使用PEiD查看,发现解密后其实是一个dll文件,并且从后面的分析中可以知道这个模块中进行了病毒的一些重要操作,可以说是病毒的核心模块,后面需要具体分析

GetFunAddr

此函数解析了之前解密后的PE数据,从导出表中找到了函数TaskStart的地址,这个地址就用于之后的调用,可以认为它是t_wnry.dll的一个接口,通过这个函数就开始运行病毒的主要功能

FF,t_70)

t_wnry.dll模块分析

这个模块是病毒做坏事的核心部分,主要进行了包括加密文件、显示勒索册程序、蠕虫传播等一些列操作

首先开始是TaskStart函数,使用谨慎的高跟鞋加载t_wnry.dll模块进行分析,从Export导出表中找到TaskStart函数进入分析

TaskStart

![在这里插入图片描述]https://img-blog.csdnimg.cn/20200224174420336.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1MTU2NTk2,size_16,color_FFFF

下面详细叙述一些没被谨慎的高跟鞋分析出来的一些重要函数:

CanCreateMutex

创建一个指定名称的互斥体,用来判断是否多开

一些前面分析过的基础函数 ReadFileCwnry

函数用来读取c.wnry文件中的内容,这里面存储的是密钥,这个函数前面分析过

2. CheckKey

函数用来检查读取到的密钥

GetApi

函数用来读取一些需要的API

CreateMutexAndCheck

函数打开前面创建的互斥体,不能打开就新建一个新的互斥体

CheckFileExist

函数用来检查00000000.dky是否存在,第一次没有释放,所以是不存在的

CreateKeyFile

几个回调函数分析 ProcCreateResFile

函数用于创建一个00000000.res文件,并向其中写入数据,写入的数据是一串大小为0x8个字节的随机数和大小为0小字节的时间数据

ProcCheckDkyFile

函数用来一直检测00000000.dky文件是否存在

ProcCheckNewDisc

函数用来检测是否有新的磁盘产生,若有就对其文件进行加密操作,加密函数稍后进行分析

ProcRunTaskdl

以隐藏的方式运行taskdl.exe程序,这个程序被每个三秒启动一次,绝对有特殊作用,待会进行分析

ProcRunExeAndSetRegedit

函数用来运行两个程序taskse.exe和@WanaDecryptor@.exe,运行程序函数较为简单不再分析,同时也设置了一个注册表启动项

SetExeRunRegedit

通过命令行的形式设置注册表启动项,命令行格式为:

‘reg add %s /v “%s” /t REG_SZ /d “\”%s\”” /f’

加密算法分析

老实说这个加密函数的分析是在是折磨人,东西多而且复杂,在这里参考了部分其它大佬的分析过程,万望勿怪。

函数太多,以下只详细贴一些比较重要的函数分析。

EncodeFirst

首先就是EncodeFirst函数分析,这是总体加密过程的入口函数,也可以称为是第一层函数,函数进入后是一串特别特别长的代码,具体多复杂就像图示一样:

函数具体分析如下:

MakeKeyFile

函数在内部进行判断@WanaDecryptor@.exe文件是否存在,不存在就创建并拷贝u.wnry中的内容到其中,同时也会创建一个@WanaDecryptor@.exe.ink快捷方式,这个程序和快捷方式就是桌面上的那个,他就是勒索程序的主界面

CreateReadMe

函数创建了@Please_Read_Me@.txt提示文件,文件中具体内容如下所示:

主要就是提醒用户,你被加密了,你该交钱了,不交钱没得搞哦

EncodeSecond

加密函数的第二层,经过分析发现内部实现了对桌面和文档中的文件进行加密,然后有查找了其他用户,也对其中的文件进行了加密操作

EncodeThread

加密函数第三层,进行了申请空间和一系列初始化操作,然后调用加密函数第四层进行了加密的开始

EncodeFourth

函数内部进行了递归遍历,在遍历的过程中分析文件后缀是否为需要的,是的话就进行加密操作

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注