12.1 Lab15-01
问题
- 这个二进制程序中使用了何种对抗反汇编技术?
首先,使用IDA载入该文件。
我们可以看到这个程序在地址0040100E处存在一个对抗反汇编技术的痕迹。
eax总是被置为零,jz跳转总是被执行。所以我们认为这一行是假冒的call指令,,将004010010置为数据。下面的几行再转换为代码。
![vmware_3LHwHVowYY.png](https://img-blog.csdnimg.cn/img_convert/103408d6bb4fe15bbbe174336a676059.png
这个程序使用一个永远为假的条件分支:xor eax,eax,随后是一个jz指令。
- 这个二进制程序使用了什么流机器码来欺骗反汇编过程?
这个程序欺骗反汇编器反汇编机器码xE8,它是ca11(占5个字节)指令的第一个字节,然后紧跟着的是一个z指令。
- 这种对抗反汇编技术被使用了多少次?
永假的条件分支在这个程序中被使用了5次。
- 什么命令行参数会让程序输出“GoodJob”?
选中主函数,按P键转换成函数。
分析可知,命令行参数需要为pdq。
试验一下。
12.2 Lab15-02
问题
- 程序初始化请求的URL是什么?
首先,将反汇编的地方全部修正,使用idc脚本对无用机器码置空。
#include<idc.idc>
static main()
{
auto ea = ScreenEA();
PatchByte(ea, 0x90);
}
进入这个函数检查。
找到了URL。
- User-Agent域是如何产生的?
原始的User-Agent经过了如图所示的变换。
- 初始化请求时,程序在内存页中查找什么?
查找的是字符串“Bamboo”。
- 程序如何处理它从页中提取的信息?
下载的HTML中字符串Bamboo::的指针存储在var_18中,如所示。第二个strstr,它被调用来搜索下一个::。一旦找到了两个冒号,下面的代码就用一个NULL替换第个冒号,它的目的是终止Bamboo::和::之间包含的字符串。
存储在var_18中的指针加8。这恰好是字符串Bamboo::的确切长度,这是一个引用指针。此操作之后,不管随后是否有号,这个指针都会被引用。代码已经发现了尾部的冒号,并用NULL替换了它。所以,不管在Bamboo::和::之间存储了什么内容,我们有了存储在变量var_108中,以NULL终止的字符串。
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
问题
- 恶意代码怎样被初始化调用?
首先,到main函数的顶部检查这一部分代码。
mov eax,400000h
or eax,148ch
mov [ebp+ 4],eax
这段代码将0x400000和0x148c一起进行或操作,得到结果0x0040148C,并将它存入EAX。代码将这个值载入栈中相对于EBP的位置,按Ctrl+K组合键,弹出当前函数的栈帧视图,你可以看到偏移量4指向返回指针。覆盖这个返回地址,在main函数结束时,地址0x0040148C处的孤立代码将替代C运行库中正常结束的代码获取执行。
我们可以使用OD来查看这一过程。
通过覆盖main函数的返回地址,初始化调用恶意代码。
- 恶意代码都做了什么?
· 首先,将一些不能识别的地方修改好。
该段代码是从链中摘除异常处理例程,并从栈中删除了记录。jmp代码是以内部指向的jmp指令形式存在的对抗反汇编技术。将光标放到0x4014d7,按D键将jmp指令转化为数据。然后选择行0x004014D8,按C键,将它转换为代码。
URLDownloadToFileA的第二和第三个参数分别是URL和文件名。检查全局地址unk_403010和unk_403040,点进去查看一下数据,看起来像是被加密了,于是我们怀疑上面的函数sub_401534应该解密了这些数据。
解密后是 http://www.practicalmalwareanalysis.com/tt.html和spoolsrv.exe
碰到的最后一个对抗反汇编技术。
恶意代码从一个URL下载文件,并且用WinExec启动它。
- 恶意代码使用了什么URL?
恶意代码使用的URL是http://www.practicalmalwareanalysis.com/tt.html。
- 恶意代码使用了什么文件名?
恶意代码使用的文件名是spoolsrv.ere。