步骤如下
1.样本来源于恶意代码分析实战的第七章的实验样本lab07-03.exe,lab07-03.dll.
2.过程如下:
首先查看下有什么关键字符串。strings.exe 程序查看lab07-03.exe 的字符串,发现有文件映射的一系列函数,CreateFileMappingA,UnmapViewOfFile,MapViewOfFile等,以及遍历文件的函数FindFirstFileA,FindNextFileA,FindClose,另外还有复制文件的函数和创建文件的函数等,没发现什么网络特征。再看下lab07-03.dll的字符串,首先是创建进程的函数CreateProcessA,然后是互斥体的函数CreateMutexA,OpenMutexA,等函数,此外发现了一些网络特征,ip地址 127.26.152.13,以及实现网络功能的库WS2_32.dll,还有一些字符串比较函数strcmp.
然后查看lab07-03.exe的导入表,可以看到前面所叙述的函数,同时应注意到,导入表中并没有LoadLibrary或者GetProcAddress函数,说明dll文件并没有在运行时加载。查看lab07-03.dll文件发现很多网络特征,很多网络函数,包括WSAStartup,socket,send,connect,recv等。
查看完这些后,心中稍微有点底,然后运行程序进行动态分析,配置网络环境ApateDNS,监控软件等。运行完程序发现秒退,什么也没有发生,process monitor和process explorer也什么没监控到,也没什么网络活动。猜测可能会有命令行参数。
对lab07-03.exe进行逆向分析。载入IDA,进入主函数,发现果然有验证,判断参数是否为2,并且第二个参数是否“WARNING_THIS_WILL_DESTROY_YOUR_MACHINE”然后下面就是文件映射的操作了,对'C:\Windows\System32\Kernel32.dll 和lab07-03.dll进行了一系列的文件读写操作,这部分详情分析有点困难,我们留到动态分析的时候再来做。最后把文件lab07-03.dll拷贝到'C:\Windows\System32\Kerne132.dll中。继续往下看,是一个函数4011e0,参数是c盘根目录,跟进去看一下发现是一个遍历文件夹的操作。判断是否是.exe文件,然后是进行内存映射,查找kernel32.dll字符串改为kerne132.dll字符串。意图很明显了,让c盘目录下的exe文件加载山寨的kerne132.dll。
然后我们对lab07-03.dll进行静态ida反汇编看一下。dll的代码就很简单了,首先创建互斥体保证只有一个再运行,然后建立socket网络连接,ip是127.26.152.13,端口是80,首先 发送hello,并且利用shutdown()函数关闭套接字的写功能,然后就是recv进行监听了,如果受到的字符串是sleep就睡眠60秒,如果是exec那就是远程执行,创建进程,命令行参数此时未知。
下一步就是验证我们的猜想,在命令行加上正确的参数运行程序,构建好模拟网路和监控工具。
如图看到了文件映射的操作,以及大量的遍历操作,跟我们通过反汇编得到的结果几乎一致。