《小白学分析》某勒索病毒分析报告

0x00 样本信息

样本名称:eef83497e8aa02d644b7d071be81a678e1611aa6
MD5:5853957178FE89022855A530A4B0AA20
SHA-1:60AF429E4AFF32E49405DF04710F41757D30F4F0
创建时间:星期一 01 七月 2019, 13.55.28
壳:UPX

0x01 测试环境及工具

环境: Windows 7 x86
工具: OD,IDA,PEiD,火绒剑。

0x02 样本行为

样本运行后,首先调用一些启动函数,获取相关信息和进行初始化,然后进行PE文件校验,跳到shellcode地址去将原PE文件拷贝并修改,然后加载动态库并获取相关函数地址,之后杀死旧进程,新的进程会遍历文件,将一些特定文件进行加密,后缀为.litar,并且留下勒索信息。

0x03 行为详细分析

查壳:使用PEiD查壳,发现是UPX壳。
在这里插入图片描述
直接脱壳。
在这里插入图片描述
OD加载程序,停在sub_412CC7处,发现就是获得一些系统时间等信息,继续往下分析。发现就是一些启动函数的初始化行为,进行简单分析。
在这里插入图片描述
对PE文件进行校验。
在这里插入图片描述
执行到sub_4126B0(),初始化之后需要用到的函数地址。
在这里插入图片描述
获得病毒的文件路径。
“”“C:\Users\Shine\Desktop\脱壳\eef83497e8aa02d644b7d071be81a678e1611aa6"”"

在这里插入图片描述

获取所需环境变量。(简单列举几个)
(UNICODE “USERSPROFILE=C:\ProgramData”),…

在这里插入图片描述

获取病毒文件信息
在这里插入图片描述
获得环境变量和文件信息后,继续执行初始化操作。
在这里插入图片描述
在这里插入图片描述进行一些初始化,初始化一些全局变量和调用一些驱动器挂载、注册表相关的处理函数,这里不做详细详细说明。
Shellcode
之后发现了一段用来解析和执行shellcode的代码
在这里插入图片描述在这里插入图片描述在这里插入图片描述
我们在OD中,进入shellcode地址。
在这里插入图片描述
加载动态库,获得之后要使用的函数地址。

在这里插入图片描述

进入第二个函数内,先申请一块内存,并修改内存属性,修改为可写的。
在这里插入图片描述
修改PE区段信息并拷贝保存
前面的修改内存属性,为之后的修改PE区段信息做准备。
现在开始修改。将原区段信息拷贝到刚才申请的内存当中。
PE文件区段包括.text、.data、.rdata、.rsrc、.reloc段。
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

拷贝函数内部实现。
在这里插入图片描述
拷贝完成之后,释放内存。

在这里插入图片描述

接下来的操作是频繁地加载动态库,获取函数的地址
在这里插入图片描述在这里插入图片描述在这里插入图片描述
例如:

eax=0045A154 (eef83497.0045A154), ASCII “InternetCloseHandle”
EAX 0045A12C ASCII “InternetOpenUrlW”
EAX 76601C80 WININET.InternetReadFile
EAX 0045A17E ASCII “HttpQueryInfoW”
eax=0045A1C4 (eef83497.0045A1C4), ASCII “PathFindExtensionW”
eax=0045A204 (eef83497.0045A204), ASCII “PathFileExistsA”
eax=0045A250 (eef83497.0045A250), ASCII “GetCommandLineW”
eax=0045A262 (eef83497.0045A262), ASCII “CreateFileA”
eax=0045A270 (eef83497.0045A270), ASCII “FindFirstFileW”
eax=0045A282 (eef83497.0045A282), ASCII “SetFilePointer”
eax=0045A2D0 (eef83497.0045A2D0), ASCII “CreateProcessW”
eax=0045A2E4 (eef83497.0045A2E4), ASCII “CreateDirectoryW”

再杀死进程,并退出进程。
在这里插入图片描述

进行完这一系列操作之后,此时我们发现病毒文件原OEP处的代码已经发生了改变,说明我们已经成功覆盖了原PE文件的信息,并且执行新进程。

在这里插入图片描述

shellcode里除了拷贝覆盖PE文件,还实现了调用动态库和获取函数地址,这样的好处是在IDA中无法分析,只能通过动态调试进行分析。
从shellcode跳回代码段。

在这里插入图片描述

我们发现程序中有一些反调试手段,例如IsDuggerPresent()

在这里插入图片描述

我们可以手动dump到BeingDugged的位置,进行修改。以绕过调试,后面可能还有很多相关的反调试,我们直接使用插件phantOm搞定。

在这里插入图片描述

这样跟着调,定位不到关键点,我们直接将修改后的PE文件dump下来,重新使用IDA和OD结合分析。
OD加载dump后的文件,首先还是一些初始化操作,这里不做分析。
在这里插入图片描述
创建互斥体。
在这里插入图片描述

获得文件路径等信息。
在这里插入图片描述

遍历文件和加密
遍历文件。

在这里插入图片描述
加密过程
并且对后缀为.dll、.reg、.lnk等文件不进行加密。在这里插入图片描述
对特定后缀的文件进行加密。
在这里插入图片描述

进入加密函数。

打开文件,获取文件大小,如果文件大小小于5,则关闭文件句柄,不进行加密。
在这里插入图片描述
文件大小大于5,进行处理,并加密。
在这里插入图片描述

进行加密。
在这里插入图片描述
追加硬编码信息。

在这里插入图片描述

加密结束后,添加后缀.litar,加密结束,此时主机中的文件已经被加密。
在这里插入图片描述
与此同时,还有勒索信息。
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章