恶意代码分析实战 12 对抗反汇编

12.1 Lab15-01

问题

  1. 这个二进制程序中使用了何种对抗反汇编技术?

首先,使用IDA载入该文件。
vmware_3qeaOTWdjf.png
我们可以看到这个程序在地址0040100E处存在一个对抗反汇编技术的痕迹。
eax总是被置为零,jz跳转总是被执行。所以我们认为这一行是假冒的call指令,,将004010010置为数据。下面的几行再转换为代码。
![vmware_3LHwHVowYY.png](https://img-blog.csdnimg.cn/img_convert/103408d6bb4fe15bbbe174336a676059.png
vmware_YBJyf64myx.png
这个程序使用一个永远为假的条件分支:xor eax,eax,随后是一个jz指令。

  1. 这个二进制程序使用了什么流机器码来欺骗反汇编过程?

这个程序欺骗反汇编器反汇编机器码xE8,它是ca11(占5个字节)指令的第一个字节,然后紧跟着的是一个z指令。

  1. 这种对抗反汇编技术被使用了多少次?

永假的条件分支在这个程序中被使用了5次。

  1. 什么命令行参数会让程序输出“GoodJob”?

选中主函数,按P键转换成函数。
vmware_SHZTZQQlnM.png
分析可知,命令行参数需要为pdq。
vmware_QuSe8QZiFH.png
试验一下。
vmware_8hHAY1mpEP.png

12.2 Lab15-02

问题

  1. 程序初始化请求的URL是什么?

首先,将反汇编的地方全部修正,使用idc脚本对无用机器码置空。

#include<idc.idc>
static main()
{
    
    
    auto ea = ScreenEA();
    PatchByte(ea, 0x90);
}

vmware_xJYvxRamPQ.png
vmware_e5GFMxzL3L.png
进入这个函数检查。
vmware_FkVHMJgCNs.png
找到了URL。

  1. User-Agent域是如何产生的?

vmware_3RjlbURqj0.png
chrome_ce4jdhtwYu.png
原始的User-Agent经过了如图所示的变换。

  1. 初始化请求时,程序在内存页中查找什么?

vmware_yQT5NalxgG.png
查找的是字符串“Bamboo”。

  1. 程序如何处理它从页中提取的信息?

vmware_aV9Mq0daLM.png
下载的HTML中字符串Bamboo::的指针存储在var_18中,如所示。第二个strstr,它被调用来搜索下一个::。一旦找到了两个冒号,下面的代码就用一个NULL替换第个冒号,它的目的是终止Bamboo::和::之间包含的字符串。
存储在var_18中的指针加8。这恰好是字符串Bamboo::的确切长度,这是一个引用指针。此操作之后,不管随后是否有号,这个指针都会被引用。代码已经发现了尾部的冒号,并用NULL替换了它。所以,不管在Bamboo::和::之间存储了什么内容,我们有了存储在变量var_108中,以NULL终止的字符串。
vmware_vzdcM4fHZp.png
Internetopenur1A的第二个参数(var_18)是一个要打开的URL。因此,Bamboo::和尾部冒号之间数据的目的,就是程序要下载的一个网址。分析行0x0040126E与0x004012E3之间的代码(此处未显示),可以发现代码清单15-13L中打开的URL被下载到文件AccountSumm aryxls.exe中,它调用行0x00401300位置的ShellExecute函数进行启动。
除了搜索字符串Bamboo外,程序还查找一个额外的:,它被转换为一个NULL结束符。Bambo与结束符之间的字符串被下载到一个名为Account Summary.xls.exe的文件中,下载完后,程序运行它。

12.3 Lab15-03

问题

  1. 恶意代码怎样被初始化调用?

首先,到main函数的顶部检查这一部分代码。
vmware_dRpoOLsYHa.png

mov eax,400000h
or eax,148ch
mov [ebp+ 4],eax

这段代码将0x400000和0x148c一起进行或操作,得到结果0x0040148C,并将它存入EAX。代码将这个值载入栈中相对于EBP的位置,按Ctrl+K组合键,弹出当前函数的栈帧视图,你可以看到偏移量4指向返回指针。覆盖这个返回地址,在main函数结束时,地址0x0040148C处的孤立代码将替代C运行库中正常结束的代码获取执行。
我们可以使用OD来查看这一过程。
vmware_RxOkLVVkes.png
通过覆盖main函数的返回地址,初始化调用恶意代码。

  1. 恶意代码都做了什么?

· 首先,将一些不能识别的地方修改好。
vmware_hk4ocNENZJ.png
该段代码是从链中摘除异常处理例程,并从栈中删除了记录。jmp代码是以内部指向的jmp指令形式存在的对抗反汇编技术。将光标放到0x4014d7,按D键将jmp指令转化为数据。然后选择行0x004014D8,按C键,将它转换为代码。
vmware_5gqJzUwEfc.png
URLDownloadToFileA的第二和第三个参数分别是URL和文件名。检查全局地址unk_403010和unk_403040,点进去查看一下数据,看起来像是被加密了,于是我们怀疑上面的函数sub_401534应该解密了这些数据。
解密后是 http://www.practicalmalwareanalysis.com/tt.html和spoolsrv.exe
vmware_PAgk3LFXzR.png
碰到的最后一个对抗反汇编技术。
vmware_MrQxkjTKO2.png
恶意代码从一个URL下载文件,并且用WinExec启动它。

  1. 恶意代码使用了什么URL?

恶意代码使用的URL是http://www.practicalmalwareanalysis.com/tt.html。

  1. 恶意代码使用了什么文件名?

恶意代码使用的文件名是spoolsrv.ere。

猜你喜欢

转载自blog.csdn.net/weixin_61823031/article/details/128758270