20155326《网络对抗》免考项目——深入恶意代码之生成恶意代码的动态分析

在上一篇博客中,我学习了利用静态分析工具对恶意代码进行分析,这里我学习了使用Process monitor、Process Explorer以及Regshot对恶意代码运行前后快照对比对恶意代码进行动态分析,通过查看相关进程操作、查看有关dll文件、对比分析快照数据,了解恶意代码在主机上的感染目的和恶意操作是什么。

Process monitor介绍

Process Monitor是一款拥有功能强大的监视和过滤的高级Windows进程监视器工具,可实时显示文件系统、注册表、进程/线程的活动。它结合了两个 Sysinternals 的旧版工具 Filemon 和 Regmon 的功能,并添加了一个包含丰富的和非破坏性的广泛增强过滤功能列表,全面的事件属性(例如会话 ID 和用户名称),可靠的进程信息,每个操作的完整线程、堆栈与集成符号支持,同时记录到一个文件中,以及更多。其独一无二的强大功能将使 Process Monitor 在您的系统故障排除和恶意软件检测中发挥重要的作用。它监控所有能捕获的系统调用 -> 容易耗尽内存;通常不用于记录网络行为。

Process Explorer介绍

Process Explorer汉化版是一款增强型的任务管理器,你可以使用它方便地管理你的 程序进程,能强行关闭任何程序(包括系统级别的不允许随便终止的”顽固”进程)。除此之外,它还详尽地显示计算机信息:CPU、内存使用情况,DLL、句柄信息,很酷的曲线图。

Regshot介绍

Regshot是个简单,实用的注册表比较工具,它通过两次抓取注册表而快速地比较出答案。可以将注册表以纯文本方式记录下来,便于浏览;还可以监察 Win.ini,System.ini 中的键值;还可以监察您Windows 目录和 System 目录中文件的变化,为手工卸载某些软件创造条件。

恶意代码示例在这里哦~~~

基于Lab03-01.exe的分析:

简单静态分析

首先先静态分析一下,用PEID分析Lab03-01,发现它已经被加了壳

用PEVIEW查看它的导入名字表,发现只有一个导入函数ExitProces

分析这里我们可以看到一个类似于路径的东西,还有一个网址,下面是一个.exe文件,最后是注册表的键值。这就表明,这个恶意代码可能可能有联网下载的操作,在某个路径下安装了一些东西,也存在着对注册表的修改。
之后就可以开启监视工具并运行Lab01-03.exe进行简单的动态分析啦。

使用Process Monitor分析

使用Process monitor时,要只查看Lab03-01的进程行为,就在过滤中选择进程名称——is——lab03-01。然后可以看到它执行了很多操作

还看到它在C:\WINDOWS\system32下写入了一个新程序vmx32to64.exe(就是之前看到的那个exe字符串)。

发现这个文件的大小和属性都和Lab03-01是一样的,我们推测是恶意代码把自身复制了一份,放到了system32文件夹下

使用Process Explorer分析

接下来用Process Explorer看看。

在进程Lab03-01中,我们能看到与他关联的dll文件有很多,其中ws2_32.dll、ws2help、等都是跟网络连接相关的。因此可以确定,有网络相关的操作。

这是它的字符串信息,和我们在PEVIEW上看的差不多

Regshot注册表的变化情况

在运行Lab03-01.exe之前进行一次注册表快照,运行之后在进行一次,并进行比较
通过快照,也能发现它对注册表进行了修改。

网络行为分析

既然有网络连接,我们用wireshark抓下包看看。

发现这个程序有一个向www.practicalmalwareanalysis.com连接的包,之后与这个ip(192.0.78.25)有数据传递的包。

所以,这个恶意代码的行为就是,在system32文件夹下自身复制到vmx32to64.exe,然后通过修改注册表键值来达成自启动,之后也会与www.practicalmalwareanalysis.com进行网络连接。

基于Lab03-02.exe的分析:

简单静态分析

我们先用PE-ID来对它进行静态分析,发现没有加壳

用PE-VIEW查看他的导出函数。从servicemain中可以看出可能是跟某个服务有关

运行这个dll程序

对于exe文件,我们可以直接双击运行。
那么对于dll文件该怎么办呢?

rundll32.exe程序是所有的Windows中包含的程序,提供了运行dll的平台。

C:\rundll32.exe DLL name, Export arguments(需要先将dll文件放到C盘目录下)
  • Export值必须是一个DLL文件导出函数表中的函数名或者序号。

因为恶意的DLL文件通常在DLLMain(DLL入口点)执行他们的代码,因为无论什么时候被加载,DLLMain函数总会被执行,所以就可以通过rundll32.exe来加载DLL,动态的获取信息。

然后我们将运行dll文件前后的快照进行对比(左边为运行前的快照,右边为运行后的快照)

发现运行dll文件后,新添加了两个键,是创建了一个IPRIP服务。

运用process exporer分析

这个服务是通过哪个宿主程序来运行的呢?我们在process exporer中用搜索一下。

原来宿主进程是svchost.exe,还知道了它的进程号是1180

运用ProcessMonitor分析

知道了PID,那么在ProcessMonitor中我们就可以根据这个PID来进行过滤啦~~~

当然,也存在网络特征码。

那么这个病毒代码感染的迹象就是在注册表中创建了一个IPRIP服务,然后把服务通过svchost.exe来运行。
通过抓包可以发现,访问的网址仍是practicalmalwareanalysis.com,向其请求了一个serve.html的网页。

基于Lab03-03.exe的分析:

简单静态分析

先对Lab03-03进行静态分析。用PEID观察到这个恶意代码没有被加壳。

用PEVIEW分析恶意代码,看到里面有字符串svchost.exe,下面可能用得到

使用process explorer分析

打开process explorer对其进行动态分析:

打开lab03-03,能看到先出现绿色,然后瞬间出现红色,之后lab03-03.exe消失,预留下来程序,孤儿进程svchost.exe

对比一下磁盘镜像中的字符串和内存中的字符串,发现内存字符串存在写入的文件名和一些键盘值以及进程的PID,而磁盘镜像中没有。

然后通过过滤进程号来观察。

发现这个进程执行了很多写操作,而且都是写在practicalmalwareanalysis.log文件下。

而且发现,每进行一次输入操作,他就多加入了一个进程。由此判断应该是记录了我们键盘的输入。

总结

通过Process monitor、Process Explorer以及对恶意代码运行前后快照对比,我们逐渐掌握了这三个恶意代码的小心思,大多都存在网络行为、修改键值等一系列不易察觉的行为,所以我们更要提高自身的警觉意识,不要打开奇怪的链接、下载不是官网的软件~~~