之前学了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的练习结束,发现答案解析比我想象的要简单,需要加快速度,奥利给!!


一个好奇的人