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:WINDOWSsystem32下写入了一个新程序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:
undll32.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以及对恶意代码运行前后快照对比,我们逐渐掌握了这三个恶意代码的小心思,大多都存在网络行为、修改键值等一系列不易察觉的行为,所以我们更要提高自身的警觉意识,不要打开奇怪的链接、下载不是官网的软件~~~