跳转到帖子
  • 游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

    赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

    TheHackerWorld官方

逆向分析——在WanaCrypt0r中使用IDA动态调试tasksche.exe


尖REN

推荐的帖子

0x00 前言

2017年5月12日,全球爆发大规模蠕虫勒索病毒WanaCrypt0r感染。各大厂商对软件进行了深入的分析,但是针对初学者的分析教程还是比较少,在反复的过程中有很多问题需要解决。而且也没有专门介绍勒索软件实际操作流程的文章,所以写了这篇新手教程,希望对大家有所帮助。

0x01 简介

本文将介绍以下内容:

实际操作过程示例

IDA动态调试方法

调试tasksche.exe的具体过程

0x02 样本分析

测试环境:Win 7 x86

测试工具:IDA 6.8

样本下载地址:

http://bbs.pediy.com/thread-217586-1.htm

经测试,样本是WanaCrypt0r的母亲mssecsvc.exe发布的勒索程序tasksche.exe。

因此,不包括“Kill Switch”开关和MS17-010漏洞代码。

样本流程分析:

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

1-1.png

注:

示例流程图由processon绘制,在线URL如下:

https://www.processon.com/

0x03 实际测试

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

找到WinMain(x,x,x,x)函数,在初始位置断开断点(快捷键F2),如下图所示

2-1.png

2、启动调试器

选择调试器(F9)

选择本地Win32调试器,如下图所示

2-2.png

选择调试器-继续进程(F9)进入调试界面,如下图所示

2-3.png

3、开始单步调试

步骤快捷方式F7

一步一步走捷径F8

执行call sub_401225,按F7进入并查看该函数的反汇编代码,如下图所示

2-4.png

为了便于分析,可以输入快捷键F5查看伪代码,如下图所示

2-5.png

通过代码猜测这个函数的作用如下:

调用GetComputerNameW函数获取计算机名。

使用rand函数生成一个随机数。

将它们组合起来生成一个唯一的ID。

动态执行直到这个函数结束,寄存器EAX的值存储函数返回的结果,对应上面的函数,EAX寄存器存储生成的ID值。

EAX的地址是0040F8AC,这个内存地址的内容是vxdxwoohxv 276,也就是生成的ID值是vxdxwoohxv 276。

以上操作过程如下

2-6.png

继续调试并执行到jnz short loc_40208E。可以看到程序分支,IDA会自动提示下一个分支向左执行(分支会闪烁),如下图所示。

2-7.png

对比上面的示例流程图,可以看出此时没有进入安装模式。

4、修改启动参数,进入安装模式

为了进入安装模式,您需要在程序启动时添加参数/i。

现在退出调试模式,选择调试器进程选项,填写参数/i,如下图所示。

2-8.png

再次启动调试,执行到jnz short loc_40208E,程序跳转到右分支,进入安装模式,如下图所示

2-9.png

继续调试,去调用sub_401B5F。

该功能的作用如下

3-1.png

尝试在文件夹c:\ProgramData,c:\Intel,%Temp%下依次创建一个名为ID的文件夹,直到成功。

执行此语句后,检查路径c:\ProgramData,找到新生成的文件夹vxdxwoohuuxv276,如下图所示

3-2.png

继续调试,下一个功能就是把程序本身复制到上面的目录,如下图所示

3-3.png

执行调用sub_401F5D,函数如下:

创建一个服务,服务名和显示名都用ID命名,启动参数是cmd.exe/C“C:\ Program Data \ vxxxxwoohux v276 \ taskche . exe”,对应的是子函数sub_401CE8,如下图所示。

3-4.png

创建互斥体global \ mswinzonecachecounter互斥体,用于避免程序重复启动,对应子函数sub_401EFF,如下图所示。

3-5.png

注:

由于该服务被设置为自动执行,C:\ program data \ vxdxwoohuxv 276 \ taskche.exe将在安装该服务后自动执行。不出意外的话,你的测试系统已经弹出了勒索软件的主界面,如下图所示。

3-6.png

至此,安装模式结束,如下图所示。接下来,左支路调试完成。

3-7.png

5、将启动参数取消,重新进入调试模式,进入左侧分支

如下图

4-1.png

执行call sub_4010FD,函数如下:

创建注册表项HKEY本地机器

执行call sub_401DAB,释放资源中的PE文件。该文件包含:

伯恩利

c.wnry

朗尼

悉尼

唐利

taskdl.exe

taskse.exe

纽约大学

目录

如下图

4-3.png

执行call sub_401E9E,函数如下:

加密的c.wnry文件第一行是13am 4 VW 2 dhxygxeqepohkhsquy 6 nga eB94(软件作者的比特币地址)

继续调试,然后执行cmd命令:

attrib.exeh

用于将当前文件夹设置为隐藏属性,如下图所示

4-4.png

然后执行cmd命令:

icacls.exe。/授予每个人:F /T /C /Q

每个人都用来给当前文件夹添加权限,主要用来打开访问权限,如下图。

4-5.png

执行call sub_40170A,用于动态获取API地址,主要用于下面的内存加载dll。

执行用于解密dll的调用sub_4014A6。您可以通过在一个特殊的位置中断该点来从内存中转储dll文件。

通过分析代码,发现解密函数位于sub_403A77中,如下图所示

4-7.png

对于这个函数,EAX在函数执行前保存解密数据的长度,EBX在函数执行后保存解密dll文件的起始地址。

完整的过程如下

4-8.png

在函数执行前检查寄存器EAX的值,解密长度为0x10000(截图中未显示)

001790C8存储解密后的dll文件的起始地址。

转储以上解密数据(数据范围001790c8-001890c8)并保存为dll文件。用ida打开,识别为dll文件。导出函数是TaskStart。

注:

我已经将解密的dll文件解压并上传到github,地址如下:

https://github . com/3g student/wanacrypt 0r-Reverse-Analysis/blob/master/crypt . dll 1

继续调试,执行调用sub_402924,用来加载内存中的dll,导出函数TaskStart传入。

至此,tasksche.exe的任务已经完成,接下来的工作就由dll实现了。

0x04 小结

介绍了如何使用IDA动态调试WanaCrypt0r中的tasksche.exe,会导致对WanaCrypt0r的解密dll和加密过程的逆向分析。

留下回复

链接帖子
意见的链接
分享到其他网站

黑客攻防讨论组

黑客攻防讨论组

    You don't have permission to chat.
    • 最近浏览   0位会员

      • 没有会员查看此页面。
    ×
    ×
    • 创建新的...