病毒分析教程第一话--静态特征分析

静态特征分析


教程参考自《恶意代码分析实战》
程序来自:http://www.nostarch.com/malware.htm


静态特征分析可以说是分析一个病毒的前奏,属于比较简单的分析。分析环节包括:VT检测、编译时间、加壳信息、导入函数、可疑字符串,等等。


Lab 1-1

本节实验使用到两个样本Lab01-01.dll和Lab01-01.exe。
病毒分析教程第一话--静态特征分析_第1张图片

VT检测

病毒分析教程第一话--静态特征分析_第2张图片
Lab01-01.dll检出率不算高,仅有31个杀软对它报毒,其中基本是归类到木马(Trojan)。

病毒分析教程第一话--静态特征分析_第3张图片
Lab01-01.exe被37个杀软报毒,同样的,也基本是归类到木马类。

编译时间

病毒分析教程第一话--静态特征分析_第4张图片

病毒分析教程第一话--静态特征分析_第5张图片

很多种PE工具都可以检测出文件的编译时间,其原理也很简单,就是找到Image File Header中的Time Date Stamp字段并将其转换一下。

可能大家有个更简单的方法,就是直接右键属性,查看修改时间。但请看下图,显示的时间是错误的,所以为了保险起见,还是使用上述的方法。
病毒分析教程第一话--静态特征分析_第6张图片

这里大家可能有个疑问,若病毒编译好后作者将此字段修改了,那么岂不是显示出来的时间是错误的?是的,很多病毒作者确实使用这种方法来增强隐蔽性。

加壳信息

直接使用exeinfo查壳,发现两个病毒均无加壳,且使用VC6++编译。
病毒分析教程第一话--静态特征分析_第7张图片

病毒分析教程第一话--静态特征分析_第8张图片

导入函数

使用IDA查看Lab01-01.dll的Imports表,发现导入了三个库(kernel32.dll、msvcrt.dll、ws2_32.dll)的函数,其中msvcrt.dll是几乎所有可执行文件都会导入的库(包含最基本的函数),ws2_32.dll是网络库,可以看到其中有很多操作网络套接字的函数,kernel32.dll中有个创建进程的函数CreateProcess,这些都是可疑的函数,猜测病毒可能有恶意的网络行为。
病毒分析教程第一话--静态特征分析_第9张图片

Lab01-01.exe中有遍历文件的函数FindFirstFileA和FindNextFileA和操作文件的函数UnmapViewOfFile、CreateFileMappingA等。通过这些可以猜测病毒有恶意操作文件的行为。
病毒分析教程第一话--静态特征分析_第10张图片

可疑字符串

在IDA中按下Shift+F12即可显示出程序中的所有字符串。可以发现两个可疑字符串,第一个红框中是伪装的kernel132.dll,这可能是病毒创建的一个恶意文件,将kerne132.dll伪装成kernel32.dll。第二个红框中的字符串很有可能是病毒警告语。
病毒分析教程第一话--静态特征分析_第11张图片


Lab 1-2

本节实验使用样本Lab01-02.exe。

VT检测

跟Lab1-1相似,也是基本报木马病毒。
病毒分析教程第一话--静态特征分析_第12张图片
除了最基本的杀软检测,我们还可以看一下评论(Community),会有安全专家将分析结果回复在上面。我们看下图可以发现一个有趣的回复,红框中直接显示了这是个练习样本。
病毒分析教程第一话--静态特征分析_第13张图片

编译时间

病毒分析教程第一话--静态特征分析_第14张图片

加壳信息

使用Exeinfo检测出这个样本加了UPX壳。
病毒分析教程第一话--静态特征分析_第15张图片

导入函数

由于样本加了UPX壳,所以导入函数表被加密了,只显示了UPX调用的几个基本函数。
病毒分析教程第一话--静态特征分析_第16张图片

可疑字符串

经过UPX的加密后字符串也是少的可怜,不过值得注意的是,从红框中我们也可以得到UPX的特征。
Strings

经过UPX加密后的样本可探测的静态特征很少,我们一般需要先对其进行脱壳再分析,UPX壳比较好脱,其中可以直接使用UPX官方的工具进行脱壳。


Lab 1-3

本节实验使用样本Lab01-03.exe。

VT检测

这次可以发现有不少报FSG壳病毒的,看来这个病毒有可能加了FSG壳。
病毒分析教程第一话--静态特征分析_第17张图片

编译时间

此病毒作者修改过编译时间。全抹成了0。
病毒分析教程第一话--静态特征分析_第18张图片

加壳信息

使用Exeinfo查壳,居然查不出来,看来Exeinfo也有失足的时候。
病毒分析教程第一话--静态特征分析_第19张图片

使用DIE可以查出是FSG1.0壳。
病毒分析教程第一话--静态特征分析_第20张图片

导入函数

导入函数只有两个。
Imports

可疑字符串

字符串也是寥寥几个没参考价值的。
病毒分析教程第一话--静态特征分析_第21张图片

看来不脱壳真是什么都看不到,2333。


Lab 1-4

本节实验使用样本Lab01-04.exe。

VT检测

报毒率很高,有51个杀软报毒了。
病毒分析教程第一话--静态特征分析_第22张图片

可以看下VT检测的可疑行为,发现这病毒疑似会从网上下载另一个病毒updater.exe。
病毒分析教程第一话--静态特征分析_第23张图片

编译时间

这个病毒的编译时间是被精心篡改过的,显示2019年,明显是错的。
病毒分析教程第一话--静态特征分析_第24张图片

加壳信息

没壳,VC6++编译。
病毒分析教程第一话--静态特征分析_第25张图片

导入函数

由于没有加壳,导入函数可以一览无遗,其中包括很多敏感函数,其中第一个红框的函数疑似在提权,第二个红框的WinExec功能是执行磁盘上的一个文件,第三个红框的函数像是在加载资源节中的数据。综合起来,可以猜测这个病毒的功能是,先提权(读取资源节需要高权限),然后读取资源节的数据(应该是个PE文件),将其写在磁盘上再屌用WinExec运行它。
病毒分析教程第一话--静态特征分析_第26张图片

可疑字符串

病毒分析教程第一话--静态特征分析_第27张图片

资源节检测

由于上面我们发现此病毒有加载资源的函数,所以我们现在使用ResourceHacker分析。将Lab01-04.exe拖进去,果然检测出其资源节存在PE结构。
病毒分析教程第一话--静态特征分析_第28张图片

导入函数

将其放入IDA中分析导入函数,发现有一个函数URLDownloadToFileA,这个PE文件应该是还会从网上下载另一个恶意程序。
病毒分析教程第一话--静态特征分析_第29张图片

可疑字符串

再看字符串,发现了要下载恶意程序的地址。
病毒分析教程第一话--静态特征分析_第30张图片


总结

  1. VT检测是一个简单实用的方法,但是这也仅供一个参考,尽量还是要自己去分析。

  2. 查看编译时间有利于辨别一些系统文件(如svchost.exe等)是不是伪装。还有另一种情景,当确定一个文件是恶意的,如Lab01-01.exe,若发现Lab01-01.dll的编译时间是相似的,那么有理由相信它们是出自同一个作者。

  3. 查壳环节很重要,若检测出样本加了壳,那么必须脱壳后才能进行下一步分析。

  4. 分析导入函数和可疑字符串是检测样本是否恶意的重要环节,有时通过分析导入函数和可疑字符串就可以大致猜出样本的主要功能了。

  5. 以上只是对样本的初步分析,只是个对样本作个大致了解,要分析样本的全部工作机制还得再深入点分析。

你可能感兴趣的:(恶意软件分析)