之前学了PE结构,dll注入以及一些相关的逆向知识后,正式开始恶意代码分析的学习,先从这本恶意代码分析开始,争取一个星期把它消化完。
lab1-1
virustotal.com
可以直接上传文件查看分析报告,会对比其中相关的哈希值,查找库是否此文件有问题第一章的问题稍微都简单一些,这里就简单带过
分析:
有病毒特征,特征如下
从PE-stu查看文件可知,时间戳的二进制是0x4d0e2fd3
然后就是转换成时间的过程,这里应该有更简单的方法,但是我想学习并练习一下C++的使用,所以写了一个程序
#include <stdio.h> #include <ctime> using namespace std; void unix2time(int n, char strTime[], int buflen) { struct tm tm = *localtime((time_t *)&n); //这里的定义不太清楚,我傻了 strftime(strTime, buflen-1, "%Y-%m-%d %H:%M:%S", &tm); strTime[buflen-1] = '\0'; } int main(void) { int n; char strTime[100]={0}; scanf("%p",&n); //输入十六进制,记住p,记住是&n不是n unix2time(n,strTime,sizeof(strTime)); printf("%s", strTime); }
exe时间:2010-12-20 00:16:19
dll时间:2010-12-20 00:16:38
有效字符串过少,但import库里面的函数数目正常,查找字符串也是正常,exe程序应该是未混淆未加壳
copy find creat file可以看出创建并查找了某个文件,可能是进行了电脑上系统文件的替换
中毒情况是屏幕背景变黑,应该是改变屏幕程序的文件了
dll文件里有CreateProcess和Sleep,同时import导入了WS2_32.dll的库的一些函数,其中一些函数提供了联网的功能
从dll文件中可以看到一个ip地址,以为是教学使用所以是具体的,真正恶意代码一般是路由的公网ip
文件目的:dll是一个后门,exe用来安装运行dll文件的
其中exec与sleep结合使用,需要特别关注,可能是通过网络给后门程序传达命令的
##lab1-2
分析:
有病毒特征,加upx壳,尝试脱壳,esp定律,走到ep,dump出来就行
查看导入函数:
StartServiceCtrlDispatcherA、CreateServiceA、OpenSCManagerA(advapi32.dll)
StartServiceCtrlDispatcherA:将服务进程的主线程连接到服务控制管理器,这使得线程成为调用进程的服务控制调度程序线程。
CreateThread(kernal.dll)
InternetOpenUrlA(wininet.dll)
访问相关网络资源
总结:创建一个线程,创建新的服务并控制
##lab1-3
分析:
有病毒特征,加了壳,是FSG壳,但是看开头三个地址就知道那是最终的目标,然后f8下去找到的入口,参考图如下
有两个新库oleaut32.dll、ole32
CoCreateInstance(ole32)
SysAllocString(oleaut32.dll)
最终感染就是打开一个网站http://www.malwareanalysisbook.com/ad.html
##lab1-4
分析:
有病毒特征,无壳未混淆,输入库结构清晰
有create、movefile之类的函数,还有openprocess,loadresource的函数
GetWindowsDirectoryA:得到系统文件目录
通过分析好像是修改了一个wupdmgr的程序,网络查阅发现是windows更新的程序(可删除),但是有病毒伪造的可能,所以确定了,新建了wupdmgr文件,植入病毒
这里书本给了提示,通过resource hacker可以发现此文件在PE文件里藏了一个可执行exe程序
将exe程序dump出来之后可以发现 __imp_URLDownloadToFileA、WinExec
远程下载程序并执行,就此初步目的分析结束
lab1的练习结束,发现答案解析比我想象的要简单,需要加快速度,奥利给!!