恶意代码分析实战15-3

Posted Neil-Yale

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了恶意代码分析实战15-3相关的知识,希望对你有一定的参考价值。

本次实验我们将会分析lab15-03.exe文件。先来看看要求解答的问题
Q1.恶意代码怎样被初始化调用?
Q2.恶意代码都做了什么?
Q3.恶意代码使用了什么URL?
Q4.恶意代码使用了什么文件名?

首先使用IDA分析
查看imports窗口
在这里插入图片描述

看到了可疑函数URLDownloadToFile,WinExec
再通读一下main
在这里插入图片描述

调用上图的函数给当前进程创建快照
而后是一个循环结构
里面调用了ProcessFirst
在这里插入图片描述

对应地,在循环的下面调用了Process32Next
在这里插入图片描述

其组合使用可以用于列举当前进程
如果真是这样的话,我们发现的那些导入函数就没有意义了。

我们回到main开始处
在这里插入图片描述

前两条指令将40000h和0x148c进行或操作,结果为0x0040148c,将其保存在eax
之后该值赋给ebp+4
打开od,直接跳到40100c
在这里插入图片描述

然后下断点,执行过来
在这里插入图片描述

接着单步执行到401016
在这里插入图片描述

此时ebp值如上所示,我们在堆栈窗口中跟随
在这里插入图片描述

ebp+4是0012ff50
在这里插入图片描述

可以看到是指向main函数的返回地址
那么我们就清楚了,这三条指令的作用就是将main函数返回地址覆盖成0040148c,这样就可以执行0040148c后的指令了
Q1.恶意代码怎样被初始化调用?
A1.通过覆盖main函数的返回地址,初始化调用恶意代码。
回到IDA直接跳到0040148c
在这里插入图片描述

如下所示
在这里插入图片描述

可以看到是一段孤立的代码,IDA没能将其识别为函数的一部分
option->general显示机器码,方便分析
在这里插入图片描述

注意到00401494处存在对抗反汇编的技术
在这里插入图片描述

其上一条的指令给eax赋0,使用jz会一直成立。跳到401496+1,即401497,也就是5字节jmp指令的第二个字节,这是不正常的
光标定位到00401496,按d键转为数据
在这里插入图片描述

定位到00401497,按c键转为代码
在这里插入图片描述

正确反汇编后的结果如上

继续分析
在这里插入图片描述

在004014b3看到了printf,用于打印上面的字符串,不过这是永远也不会执行的
因为在其之前,可以看到创建了一个异常处理例程。Xor指令会给ecx赋0,而div则会将ecx做除数,从而引发除零异常。此时就会跳到4014c0
在这里插入图片描述

而我们看到IDA没有将此处的数据识别为代码,而是将其作为DWORD进行表示。
光标定位到004014c0,按c键转为代码
在这里插入图片描述

继续往下分析
在这里插入图片描述

004014c0到004014d7用于从链中摘除异常处理例程,并从栈中删除了记录。004014d7存在对抗反汇编技术,IDA将其目的地址也标记为红色
光标定位到004014d7,按d键
在这里插入图片描述

光标定位到004014d8,按c键转为代码
在这里插入图片描述

接着继续分析
在这里插入图片描述

这里调用了URLDownloadToFile
其第二个、第三个参数分别为url,文件名
而对应在上图,则是unk_403010,unk_403040
跟入任一个可以看到
在这里插入图片描述

这些数据不是以ascii文本显示的
004014eb,004014f8两处调用sub_401534时注意到传入的就是unk_403010,unk_403040
所以我们推测,sub_401534是解密函数
跟入该函数
在这里插入图片描述

这里一个循环结构,最重要的就是箭头所指的xor语句,将缓冲区中的每个字符与0ffh异或从而修改他们
知道了解密的原理,我们就可以编写一个脚本帮助我们解密内容了
脚本如下
在这里插入图片描述

file->script file,选择该脚本,解密后如下所示
在这里插入图片描述在这里插入图片描述

两个字符串分别为http://www.practicalmalwareanalysis.com/tt.html和spoolsrv.exe

Q3.恶意代码使用了什么URL?
A3.恶意代码使用的URL是http://www.practicalmalwareanalysis. com/tt. html。
Q4.恶意代码使用了什么文件名?
A4.恶意代码使用的文件名是spoolsrv.exe。

继续往下分析
在这里插入图片描述

00401519处还是同样的处理
在这里插入图片描述

正确的反汇编结果如上所示
调用了WinExec,运行的程序是unk_403040,也就是spoolsrv.exe
之后就是调用ExitProcess终止自身。
Q2.恶意代码都做了什么?
A2.恶意代码从一个URL下载文件,并且用WinExec启动它。

参考:
1.《恶意代码分析实战》

以上是关于恶意代码分析实战15-3的主要内容,如果未能解决你的问题,请参考以下文章

恶意代码分析实战3-2

恶意代码分析实战11-1

恶意代码分析实战9-1

恶意代码分析实战14-02

恶意代码分析实战11-2

恶意代码分析实战21-2