逆向分析-IDA动态调试WanaCrypt0r的wcry.exe程序

0x00 前言

2017年5月12日全球爆发大规模蠕虫勒索软件WanaCrypt0r感染事件,各大厂商对该软件做了深入分析,但针对初学者的分析教程还比较少,复现过程需要解决的问题有很多,而且没有文章具体介绍勒索软件的实际运行流程,所以我写了这篇面向初学者的教程,希望帮助大家。

0x01 简介

本文将要介绍以下内容:

样本实际运行流程

IDA动态调试方法

具体调试wcry.exe的过程

0x02 样本分析

测试环境: Win 7 x86

测试工具: IDA 6.8

样本下载地址: http://bbs.pediy.com/thread-217586-1.htm

样本流程分析:

通过逆向分析,样本流程如下图

逆向分析-IDA动态调试WanaCrypt0r的wcry.exe程序

0x03 实际测试

1、启动IDA,加载样本文件wcry.exe

在IDA View-A窗口右键选着Graph view查看程序的整体流程图。该程序函数你比较多,为了快速定位目标,可以使用查找功能,如下图

逆向分析-IDA动态调试WanaCrypt0r的wcry.exe程序

找到sub_401225 函数双击,如下图

逆向分析-IDA动态调试WanaCrypt0r的wcry.exe程序

逆向分析-IDA动态调试WanaCrypt0r的wcry.exe程序

首先会通过一个函数算出一个标识,本质就是通过GetComputerNameW获取计算机名然后取随机数算出一个唯一对应的标识,后面的执行过程会用到这个标识

接下来会做几件事情,任意一项未执行成功都会退出 。

找到WinMain(x,x,x,x)  函数双击,如下图

逆向分析-IDA动态调试WanaCrypt0r的wcry.exe程序

检查命令行参数是否为两个,并且是否有/i这个参数

逆向分析-IDA动态调试WanaCrypt0r的wcry.exe程序

逆向分析-IDA动态调试WanaCrypt0r的wcry.exe程序

检查并尝试获取文件属性和 Temp系统临时目录下创建前面算出的DisplayName为标识的目录

逆向分析-IDA动态调试WanaCrypt0r的wcry.exe程序

创建tasksche.exe程序,

逆向分析-IDA动态调试WanaCrypt0r的wcry.exe程序

将tasksche.exe优先以服务方式启动,如果失败则以普通进程方式启动(副本启动的入口点和原始文件启动的入口点不同,从而实现不同的逻辑)

逆向分析-IDA动态调试WanaCrypt0r的wcry.exe程序

通过互斥体Global\\MsWinZonesCacheCounterMutexA来判断是否启动成功以上几项都成功完成后流程才会继续,否则终止。逆向分析-IDA动态调试WanaCrypt0r的wcry.exe程序

逆向分析-IDA动态调试WanaCrypt0r的wcry.exe程序

创建注册表项HKEY_LOCAL_MACHINE\...\wd ,写入当前路径值

逆向分析-IDA动态调试WanaCrypt0r的wcry.exe程序

逆向分析-IDA动态调试WanaCrypt0r的wcry.exe程序逆向分析-IDA动态调试WanaCrypt0r的wcry.exe程序

从资源中释放PE文件taskdl.exe、taskse.exe,为了免杀,资源中的PE文件是加了密的;

通过‘WNcry@2ol7’密码解密资源中的PE文件,

"attrib +h ." 命令是将其释放的文件属性设置成隐藏模式,

"icacls . /grant Everyone:F /T /C /Q" 此命令是允许所有用户对全盘有完全访问权限。

逆向分析-IDA动态调试WanaCrypt0r的wcry.exe程序

经过以上步骤程序释放的PE文件

逆向分析-IDA动态调试WanaCrypt0r的wcry.exe程序

在当前目录下读取c.wnry文件

逆向分析-IDA动态调试WanaCrypt0r的wcry.exe程序

如果读取到了c.wnry文件,就会将13AM4VW2dhxYgXeQepoHkHSQuy6NgaEb94通过一个随机数加密后写回到c.wnry,而这一串数字就是黑客的比特币地址,也就是说c.wnry文件里保存的是加密后的黑客的比特币地址(有三个地址)。

接下来是动态获取所需的API地址

逆向分析-IDA动态调试WanaCrypt0r的wcry.exe程序

逆向分析-IDA动态调试WanaCrypt0r的wcry.exe程序

首先是获取kernel32.dll中的文件相关的API

逆向分析-IDA动态调试WanaCrypt0r的wcry.exe程序

逆向分析-IDA动态调试WanaCrypt0r的wcry.exe程序

然后是获取advapi32.dll中的加解密相关的API

逆向分析-IDA动态调试WanaCrypt0r的wcry.exe程序

CSP用的是系统默认或者是RSA and AES

逆向分析-IDA动态调试WanaCrypt0r的wcry.exe程序

加密文件以WANACRY!为特征头

如下图

逆向分析-IDA动态调试WanaCrypt0r的wcry.exe程序

修改桌面背景 显示勒索信息,如下图

逆向分析-IDA动态调试WanaCrypt0r的wcry.exe程序

弹出勒索窗口,显示比特币钱包地址和付款金额 ,如下图

其中箭头所指处为黑客收取比特币的三个账号地址之一

逆向分析-IDA动态调试WanaCrypt0r的wcry.exe程序

逆向分析-IDA动态调试WanaCrypt0r的wcry.exe程序

上一篇:LeetCode OJ:Lowest Common Ancestor of a Binary Search Tree(最浅的公共祖先)


下一篇:读书笔记之《大型分布式网站架构设计与实践》