0x00 前言

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

0x01 简介

本文将要介绍以下内容:

样本实际运行流程

IDA动态调试方法

具体调试wcry.exe的过程

0x02 样本分析

测试环境: Win 7 x86

测试工具: IDA 6.8

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

样本流程分析:

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

0x03 实际测试

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

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

找到sub_401225 函数双击,如下图

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

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

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

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

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

创建tasksche.exe程序,

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

通过互斥体Global\\MsWinZonesCacheCounterMutexA来判断是否启动成功以上几项都成功完成后流程才会继续,否则终止。

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

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

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

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

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

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

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

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

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

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

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

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

加密文件以WANACRY!为特征头

如下图

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

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

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

逆向分析-IDA动态调试WanaCrypt0r的wcry.exe程序的更多相关文章

  1. 转:使用IDA动态调试WanaCrypt0r中的tasksche.exe

    逆向分析——使用IDA动态调试WanaCrypt0r中的tasksche.exe 转:http://www.4hou.com/technology/4832.html 2017年5月19日发布 导语: ...

  2. 【转】安卓逆向实践5——IDA动态调试so源码

    之前的安卓逆向都是在Java层上面的,但是当前大多数App,为了安全或者效率问题,会把一些重要功能放到native层,所以这里通过例子记录一下使用IDA对so文件进行调试的过程并对要点进行总结. 一. ...

  3. IDA动态调试技术及Dump内存

    IDA动态调试技术及Dump内存 来源 https://blog.csdn.net/u010019468/article/details/78491815 最近研究SO文件调试和dump内存时,为了完 ...

  4. IDA动态调试Android的DEX文件

    Android程序的dex文件的动态调试确实是个大问题,网上也有一些教程但是不是特别的详细,今天用到了IDA动态调试Android的DEX文件,特此记录一下. IDA 6.6新添加了对dex文件的调试 ...

  5. ida动态调试笔记

    ida动态调试笔记 目标文件:阿里安全挑战赛的第二题 点击打开链接 使用环境:ida6.8点击打开链接,adt bundle点击打开链接 首先打开avd安卓模拟器,界面如下: 在dos下运行adb命令 ...

  6. 学汇编的时候可以拿IDA之类的反汇编工具辅助学习,再用gdb或者IDA动态调试,跟踪每条指令的 执行结果。都不难

    作者:潘安仁链接:https://www.zhihu.com/question/40720890/answer/87926792来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...

  7. IDA 动态调试

    感谢南邮,让我把ida动态调试,给搞定了,困扰了很久,之前下的ubuntu的源,好像有问题,ifconfig这个命令一直装不上,突然想起来了我的服务器很久没用了,重装了下系统,换成ubuntu,这里记 ...

  8. 【转】Android IDA 动态调试最完善攻略,跨过各种坑

    前提条件和运行环境一定要写清楚,不然会有很多坑,坑死人. (1)IDA 是最新的7.0版本  (2) JDB 使用Java安装目录下的 (3)系统是win10 使用命令窗口时有很大的差别 (4)手机是 ...

  9. 路由器逆向分析------在QEMU MIPS虚拟机上运行MIPS程序(ssh方式)

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/69652258 在QEMU MIPS虚拟机上运行MIPS程序--SSH方式 有关在u ...

随机推荐

  1. ruby执行周期性任务

    1.前言      无论是用ruby做系统管理,还是用rails做web开发,都可能遇到周期性任务,它们按照一定时间周期(1小时,2天......)持续地触发.在ruby中,我认为一次性任务使用sid ...

  2. java.util.Collection源码分析和深度讲解

    写在开头 java.util.Collection 作为Java开发最常用的接口之一,我们经常使用,今天我带大家一起研究一下Collection接口,希望对大家以后的编程以及系统设计能有所帮助,本文所 ...

  3. spring cloud连载第三篇补充之Zuul

    由于Zuul的内容较多所以单独列出一篇来讲.全是干货,如果学到东西的,动动小手给点个推荐^_^  谢谢! 1. Router and Filter: Zuul(路由和过滤:Zuul) 路由是微服务架构 ...

  4. Linux 目录流管理

    目录 1. 打开/关闭文件 1). 打开目录 / opendir 2). 关闭文件 / fclose 2. 读/写目录流 1). 目录流-读 / readdir & readdir_r 3. ...

  5. hadoop学习笔记(十):MapReduce工作原理(重点)

    一.MapReduce完整运行流程 解析: 1 在客户端启动一个作业. 2 向JobTracker请求一个Job ID. 3 将运行作业所需要的资源文件复制到HDFS上,包括MapReduce程序打包 ...

  6. java课件运行实践

    两数相加 源文件:Addition.java 源代码: // An addition program import javax.swing.JOptionPane;  // import class ...

  7. yum安装 指定安装目录

    yum -c /etc/yum.conf --installroot=/usr/local --releasever=/ install love

  8. C#实现软件授权,限定MAC运行(软件license管理,简单软件注册机制)

    一个绿色免安装软件,领导临时要求加个注册机制,不能让现场工程师随意复制.事出突然,只能在现场开发(离开现场软件就不受我们控了).花了不到两个小时实现了简单的注册机制,稍作整理. 基本原理:1.软件一运 ...

  9. JavaMelody - 常用配置

    一直没怎么关注javaMelody这个东西. 自己写东西的时候想弄点监控,于是把javaMelody装进去了. 看了文档几乎全是法语,在此记录一些常用的配置. 首先依赖添加如下: <depend ...

  10. saas模式

    SaaS是Software-as-a-service(软件即服务).SaaS提供商为企业搭建信息化所需要的所有网络基础设施及软件.硬件运作平台,并负责所有前期的实施.后期的维护等一系列服务,企业无需购 ...