问题1:
首先使用ida载入实验文件:
看到了一系列的Inc ecx指令,先忽略继续向下看:
在偏移量为200的地方看到了异或操作,可以看到这段代码就是一个循环操作。首先将栈顶值赋值给esi
。通过分析可以知道esi中保存的就是224
。然后再令esi
的值
入栈。接下来是lodsb
指令
。这条指令的功能是把esi的值赋给eax。其实就是要将49保存在eax中。然后al的值又赋给了dl,再将dl的值减去41,将所得的结果左移4位,然后esi会实现自增
。再利用lodsb指令,此时esi的值就是4A
。然后减去41,差值保存在al中,将al与dl相加。然后使用stosb指令,将eax中的内容赋值给edi所指向的地址位置,其实也就是224的位置。然后edi依据DF的值,实现自增或者自减的操作。之后再不断循环,重复上述操作。这就是在进行解码的操作。
问题2:
使用scdbg软件,将其和实验文件都放到C盘根目录下,打开cmd输入scdbg.exe Lab19-01.bin。
可以很清楚的看到导入了六个API函数。
问题3:
通过分析URLDownloadToFileA函数可以知道,程序会连接
“http://www.practicalmalwareanalysis.com/shellcode/annoy user.exe”进行下载。
问题4:
程序会将下载的文件保存在C:\WINDOWS\system32\1.exe中,并且会运行这个名为1.exe的程序。
问题5:
先是解密,然后连接到一个网站,下载一个文件并运行它。
问题1:
main函数,函数sub_401000如下:
这里打开了注册表“\\http\\shell\\open\\command”的位置,这里保存的就是系统默认的浏览器,调用函数RegOpenKeyExA是获取其内容,函数sub_401000的作用就是从注册表中获取系统默认的浏览器。
sub_401180函数:
可以看到,刚刚获取的浏览器会作为一个新的线程被创建,可以看到StartupInfo.wShowWindow的值为0,说明其对用户只隐藏的。
下面可以看到函数sub_401230:
函数sub_401230的作用就是将unk_407030的内容,也就是shellcode注入到浏览器进程中。
问题2:
其实unk_407030就是shellcode,点击去看一下:
这个就是shellcode的位置。
问题3:
将光标移动到shellcode开始的地方,按C键,将其转换为代码:
可以看到这就是一个解码的操作,先将栈顶值赋给edi,然后edi地址中所保存的内容与E7进行异或运算
,这个运算要执行18F这么多次。
编写解码程序
问题4:
提取shellcode,用scdbg查看导入函数:
问题5:
通过第四问知道在端口13330连接IP地址192.168.200.2
在动静态分析过程中使用火绒剑也可以看到:
问题6:
程序其实是要创建一个cmd.exe
进程,这段shellcode的功能就是建立一个远程shell
。
问题1:
使用PDFStreamDumper
载入这次的实验文件Lab19-03.pdf,
点击菜单栏中的“Exploits_Scan”
存在的漏洞是CVE-2008-2992。
问题2:
点击PDFStreamDumper左侧的第9个选项
调用了函数unescape函数,这个函数的意思是后面的%跟着u,那么将后面的四个字符转化为十六进制。比如对于“%ue589%uec81”来说,转化后变为“0x89 0xe5 0x81 0xec”。
问题3:
使用scdbg.exe,打开cmd,输入如下命令:
问题4:
根据利用scdbg的分析结果,通过CreateFileA
的函数调用可以知道,会创建名为foo.exe
以及bar.pdf
这两个文件。
问题5:
经过scdbg的分析之后,在使用ida静态分析一下这个shellcode。使用ida载入实验文件Lab19-03_sc.bin。
在开头可以看到调用了函数sub_17B,
这里有一个调用,经过分析知道这个就是查询动态链接库kernel32.dll的地址。
这个调用是用于hash值的计算,后面还压入栈了shell32。
接着就是创建两个文件。