魔窟(WannaCry)病毒简单分析

 

样本基本信息

云沙箱跑一下

很明显是个病毒

 

样本逆向分析

拖进ida

 

1、sub_401225

我们注意到,DisplayName是没有声明的,也就是说它是一个全局变量。我们看一下在其他地方的调用(x)

第一个:

这里是把DisplayName变成宽字节,并写入到widecharstr中

第二处

开启一个服务然后关掉,如果没有DisplayName这个程序先运行在开服务

接下来我们进401225看看

所以此函数的作用是给传过来的参数位置填充字母和数字

 

接着向下看,是一堆if判断,进入判断后先看文件名最后是不是\,如果是换成0,然后进入下一个函数看看

 

2、sub_4010FD

先是Destination被拼接成了Software\\WanaCrypt0r,然后进入特定目录创建注册表的值,所以这第二个函数的作用应该是把自己写进注册表

 

3、sub_401DAB

先加载资源然后锁定资源,再跟一下sub_4075AD

先分配了一段内存,又进入了一个407527函数,是把str写进分配的内存。接着跟406b8e

先判断v5是不是/和\,如果不是,就和asc拼在一块

跟一下405bae

可以看到这里是返回文件偏移指针的一个地方

接着看405fe2

这里看着很烦,其实主要目的是分配内存空间,检查内存空间上是否正常,如果不正常则将内存初始化指针为-1。

回到4074a4,跟进407572

释放一些空间,回退到401dab

4075c4也是在分配内存,退出401dab

 

4、sub_401E9E

跟进401000

a2为1,以读写的方式打开str2,其中str2为c.wnry。在成功打开文件以后由于

a2=1,那么就是以读的方式将从 c.wnry 文件中向 DstBuf 中读取 780 个字节的数据。如果读

取成功那么返回 1,并关闭流文件。

退出到 sub_401E9E 函数中。进入到 if 函数中,将 source 中的随机一个复制到 Dest 中,之

后再次调用 sub_401000 函数,将数据从缓冲区写回 c.wnry 中。返回 result 的值。

退回主函数中(winmain)。

 

5、sub_401064

通过在 winmain 函数中点击此函数的第一个参数可以获得第一个参数传入值为:attrib +h .

即增加文件隐藏属性。此函数主要作用即为创建一个进程并将其隐藏。

下面又是一个相同的函数,但是传入的参数不同

通过此属性来赋予所有用户完全访问权限。

 

6、sub_40170A

此函数的主要作用即判断对 dll 函数是否具备,创建文件,写文件,读文件,移动文件,移

动外部文件,删除文件以及关闭句柄的功能,具体的 dll 文件为:kernel32.dll,使用

LoadLibraryA 函数进行调用。

如果判断对 kernel32.dll 函数具有以上功能那么则进入 if 函数中

 

7、sub_4012FD

前两个sub都是在初始化临界资源

此函数主要功能为初始化临街资源并将内存中指定的位置数据置 0

401437是在堆中分配内存,我们直接往下看

 

8、sub_4014A6

第八个函数主要作用是创建 t.wnry 文件并在堆内为其分配内存。

 

9、sub_4021BD

此函数主要作用即为调用进程虚地址空间并检索指定的 dl 输出函数位置,作为参数在函数

内部获取堆内存地址以及设定异常机制。

 

10、sub_402924

这里的作用是开启进程,string1为TaskStart

 

11、sub_40137A

释放全局内存块和临界资源

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值