Wannacry病毒分析

1样本概况

1.1 样本信息

病毒名称:Wannacry

所属家族:WannaCrypt

MD5值:DB349B97C37D22F5EA1D1841E3C89EB4

SHA1值:E889544AFF85FFAF8B0D0DA705105DEE7C97FE26

CRC32:9FBB1227

病毒行为概述:

1. 创建服务并已服务的方式启动,并释放tasksche.exe文件在系统目录下并启动

2. 设置服务主函数,在局域网,互联网内445端口连接SMB漏洞攻击

3. tasksche.exe创建服务,及注册表项,提取压缩文件资源,使用密码解压到当前目录下,在系统目录下创建目录

4. 读取t.wnry到内存并解密等到dll文件调用导出函数TaskStart

5. 导出函数TaskStart执行,创建加密文件,提权创建弹窗提示进程及帮助文档文件,开机自启,执行脚本等操作

1.2 测试环境及工具

系统环境:win7 Professional 32位(15pb实验环境)

工具:

0. 火绒剑(行为分析)

1. autorun(查看启动项,计划任务,WMI,服务等)

2. PCHunter(文件,进程等管理)

3. WSExplorer(抓包工具,分析流量)

4. OllyDbg(动态调式)

5. IDA(静态分析)

6. PEID(查壳)

7. OllyDbg(动态调试分析)

8. Resource Hacker(查看资源)

9. LordPe(PE文件信息)

1.3 分析目标

分析样本需要完成的目标:

    0. 分析并记录样本产生的恶意行为

    1. 对样本进行详细分析,找出恶意代码及具体实现过程

    2. 对病毒的整个运行过程对应相应执行的恶意代码制作流程图

    3. 提取出样本特征,完成分析报告

2.具体行为分析

2.1 主要行为

2.1.1 病毒行为分析流程图

 

2.1.2 恶意程序对用户造成的危害

在虚拟机中断开网络模拟病毒运行,提取样本信息,等待病毒运行一段时间后,对计算机进行检查

桌面被修改,弹出窗口提示文件被加密了,需要付款解密,弹框会不时地弹出无法结束

创建提示文件

加密的文件添加了WNCRY后缀,无法打开

1. 打开PCHunter(ARK工具)

查看进程,定位到永恒之蓝病毒进程

下面这个应该就是弹窗提示程序,上面的为病毒文件创建出的进程,是弹窗提示的父进程

查看启动项,执行文件为taskexe

服务

网络

2. 使用autorun查看启动项,计划任务,服务,WMI

添加计划任务,启动项

服务

2.1.2 提取病毒样本

将样本中主机中提取出来

定位到病毒样本文件将文件后缀修改为.vir,提取出来

对主机进行手动清理

1. 结束可疑的恶意病毒进程

2. 删除添加的启动项,计划任务及服务

3. 删除病毒创建的文件

4. 被加密的文件无法恢复,分析代码

2.1.3 监控样本行为

打开火绒剑,将病毒样本拖拽进行行为监控,设置监控所有事件

让病毒程序运行一段时间后,查看监控事件

对监控到的事件进行过滤分类详细分析

 

1. 文件监控

主要查看对文件的修改,创建,删除等关键操作

看出频繁对文件的写入修改重命名行为,大致猜测为对文件进行遍历加密操作,

并创建了大量的文件,执行任务?

2. 进程监控

主要查看对内存的写入,创建进程,终止进程等操作

枚举进程窗口,创建进程,跨进程写入内存,打开设备等敏感操作

 

3. 注册表监控

主要关注创建,设置,删除注册表键值的操作

设置与删除注册表键值

 

4. 网络监控

    对局域网内IP的139端口发起连接,外连访问网站

5. 执行监控

6. 行为监控

拷贝自身,释放文件

2.2 恶意代码分析

2.2.1 获取样本信息

1. 使用查壳工具DIE获取样本文件信息,为VC++6.0程序,32位程序

2. PEID分析使用到的加密算法

3. Resource Hacker查看资源

PE文件资源导出

资源中还包含了压缩文件类型资源

2.2.2 IDA + OD分析代码

1. 将样本在IDA中打开

Shift+f5 添加VC++6.0符号,初步分析,查看IDA中程序入口C代码

访问网站 http://www.iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com

从而判断程序的执行

2.2.3 0x408090:判断当前程序运行方式

 

1. 如果是当前程序参数大于1,则打开服务设置服务主函数

2. 如果参数小于等于1,则执行函数0x407F20

1. 0x407F20:如果是不附带参数运行(双击)

则已服务的方式启动当前程序,并获取病毒文件中资源写入C:\Windows\tasksche.exe文件并创建进程运行

0x407C40 已服务的方式附加参数启动

0x407CE0 获取病毒文件PE资源写入文件C:\Windows\tasksche.exe并执行

2. 病毒程序以服务的方式运行

病毒程序路径 -m security 配置服务信息,设置服务主函数 0x408000

2.2.4 0x408000:服务主函数

 

分析函数0x407BD0

创建线程

0x407B90

拷贝数据到内存的操作0x407A20

1. 0x407720:线程1 局域网445端口传播,SMB漏洞攻击

局域网内445端口传播,漏洞攻击

0x409160 获取网卡信息

0x4076B0 局域网内传播

2. 0x407840:线程2 随机外网IP,445端口漏洞攻击

构造随机IP,对服务器尝试445连接,进行漏洞攻击

 

2.2.5 分析释放文件:C:\Windows\tasksche.exe

基本过程:

重要操作:

0x401DAB 获取资源中压缩文件,并使用密码解压得到若干文件

0x4014A6 读取t.wnry文件,解密数据得到 PE类型大小为0x10000字节文件,OD中内存导出,为一个dll文件,包含一个导出函数TaskStart

0x401225 获取随机字符串作为显示名

0x401B5F 使用生成字符串在系统上创建目录

0x401F5D 创建服务,以命令行当前程序路径创建进程

0x401C8E 创建服务

0x401064 创建进程

0x4010FD 创建注册表 设置当前路径为值

0x401DAB 获取资源中压缩文件,并使用密码解压

0x401E9E 打开C.wnry文件写入加密串(钱包地址?)

设置当前目录属性,隐藏,所有人访问

0x401437 导入密钥

0x4014A6 读取t.wnry文件,解密数据得到 PE类型大小为0x10000字节文件

OD中内存导出,为一个dll文件,包含一个导出函数TaskStart

0x4021BD 获取读取到内存中的PE文件中的信息

在OD中动态查看获取到的内存信息,首地址存放PE头地址,基址0x10000000

0x402924 从dll文件中加载导出函数TaskStart

2.2.6 分析解密t.wnry得到的DLL文件

DllMain和TaskStart函数

1. 导出函数:TaskStart

步骤分析:

0x10001000 参数不为0读取c.wnry到缓冲区,否则从缓冲区写入

在OD中动态分析读取文件的步骤

0x100012D0 判断当前进程权限

OD中动态验证

0x10004500 测试加密

0x10003AC0 创建文件 00000000.pky 00000000.eky 并写入数据

文件00000000.pky

文件00000000.eky

1.1 0x10004990 启动进程@WanaDecryptor@.exe

创建进程taskse.exe @WanaDecryptor@.exe,先判断权限提权启动,并将tasksche.exe加入注册表启动项

1.2 0x10004790 创建res文件并写入

1.3 0x100045C0 测试加密

1.4 0x10005730 对文件加密等操作

重要文件操作函数:0x10005680

对文件的操作函数0x10005540

0x100027F0 对文件的加密等操作

遍历文件,进行过滤

拷贝文件

对文件加密操作,排除dll,exe,根据文件类型不同进行操作

0x10001960 对文件加密

1.5 0x100057C0 对文件,进程相关操作

步骤分析:

1. 创建执行提示文档,和提示窗口

2. 终止进程防止文件占用

3. 加密文件 执行cmd命令

4. 填充磁盘空间

0x10005190 创建大文件对磁盘进行填充

 

3.解决方案

3.1 提取病毒的特征

特征包括:

1. 二进制特征 提取一段特殊的二进制数据作为查杀标志

病毒文件结尾44 49 4E 47 50 41 44 44 49 4E 47 58 58 50 41 44

 

2. 也可以使用特殊字符串http://www.iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com等作为病毒特征标识,编写yara规则查找出符合特征的文件

 

3.2 查杀思路

1. 断开网络,关闭445端口

2. 终止病毒主进程,及C:\Windows\tasksche.exe

3. 在注册表中删除主病毒程序创建的服务mssecsvc2.0及tasksche.exe程序创建的服务

4. 删除注册表项HKEY_CURRENT_USER及HKEY_LOCAL_MACHINE下的softeare\Wanacryptor

5. 删除病毒程序文件,及释放出来的所有文件,和生成的占用磁盘空间的大文件

6. 将未加密的文件提取保存,重启验证病毒程序是否清除干净

4.总结

    Wannacry病毒程序运行首先就会判断当前运行环境,将程序以服务的方式运行提升权限,同时利用SMB漏洞在局域网及互联网传播,加强了病毒的危害性,并在系统路径下释放病毒文件运行,隐蔽自身,将一些必要文件数据以资源的方式存储在主文件中,运行过程中在内存中读取释放,使用到了压缩类型的资源,动态解压,同时会创建启动项,服务,添加注册表项等维持程序的持续隐蔽运行。将重要的操作函数放在DLL资源中,以动态加载的方式调用,执行加密,创建文件,填充磁盘空间等操作。

    这次的分析过程,了解了一个病毒程序,最重要的就是运行的权限,及隐蔽性和对自身的保护,通常会重新以服务的方式运行,或者释放文件到系统目录下运行,而且重要数据都以动态加载的形式来获取,拷贝出去,从而清除病毒必须找到释放的主文件进行根除,而且比如这次的dll是读取到内存中解密而来的,就必须使用OD动态的运行提取出来分析。在运行过程中,会进行提权,判断权限的行为,并且许多操作会利用创建临时文件来作为中转,敏感操作调用cmd来执行,在分析的时候要注意有这些操作时,接下来就会执行一些重要的处理。

    在分析过程中IDA的使用还是很强大的,和OD结合起来,将变量参数类型,结构体等补充完全后,对于理清一段杂乱代码逻辑很有帮助,尤其是一些参数数值的具体意义添加枚举后,可以直接猜测函数调用的功能。

    经过了这几个病毒的分析,对这些病毒运行也有了个大致了流程了解,也学习到了一些逆向中的思路和技巧,受益匪浅

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值