所有可疑文件的分析都是在虚拟机中进行的,虚拟机中内置了病毒分析所要用到的各类工具和软件(各类工具详见上一篇博客),根据可疑文件分析的一般流程,对文件进行分析,得出分析结论。
上传漏洞平台检测
分析一个可疑文件时,第一步就是上传该文件到开源的病毒检测平台进行检测,病毒库收录了数量庞大的已经提交过的病毒文件,当上传可疑文件时,检测平台会计算文件的md5或hash值,与收录在库中的文件进行对比,若md5或hash值匹配,则展示该可疑文件的行为。常用的病毒检测平台有微步在线、virustotal。
微步在线成立于2015年,是目前中国威胁情报的领军企业,也是专注于威胁情报领域的专业公司,微步在线对恶意文件的检测结果如下所示:
VirusTotal有一款名为VirusTotal Uploader 的外壳扩展,可以帮助方便的上传文件。使用 VirusTotal 不用安装额外的软件,一切都可以操作都是在上网浏览器中完成,所以,VirusTotal的缺点是只能扫描提交的文件,无法对计算机进行全面的检查,并且该网站目前只支持单个文件的容量在30MB以下的文件上传查毒。此外,VirusTotal每15分钟更新一次病毒资料库,可以实时提供最新的反病毒引擎以检测出大部分可能的威胁。VirusTotal检测结果如下所示:
开源的病毒平台能检测出恶意文件的部分信息,但是由于机器识别的局限线,很多恶意行为并不能识别,所以还需要进行下一步分析。
加壳/脱壳操作
上传病毒检测平台检测的文件,接下来的操作就是判断该可疑文件是否被加壳。因为加壳之后的文件不仅杀毒软件识别不了,静态动态分析手段也无法进行分析,所以使用PEiD查看可疑文件是否加壳,若识别为未加壳则继续往下分析,若识别为加壳则使用脱壳工具,脱壳之后再继续进行分析。
脱壳工具一般使用命令行进行操作,常用命令如下:
upx.exe –o 别名.exe –d 现名.exe
-o:表示输出;
-o 别名.exe:表示以别名.exe作为脱壳后的输出;
-d 现名.exe:表示以现名.exe作为脱壳前的输入。
静态分析
所谓静态分析,就是在不运行可疑文件的时候使用各类静态分析工具对文件进行分析,静态分析工具包括PEview、Dependency Walker、ida pro.
具体分析的时候,首先使用PEview来查看可疑文件的文件结构,编码时间等相关信息:
得出来四个最基本的段基本意义如下:
.text:该段位程序代码段,分为代码段和可读执行;
.iddata、.rdata、.data段
从命名上可以看出,这三个段全为存放特殊数据的段,根据PE文件的格式将数据段中不同类型的数据区分开来;
.idata段:这里集中了所有的外部函数地址,代码中会先跳到该地址后再执行,PE文件加载器在开始会获取真实的函数地址来修补idata段中的函数地址;
.rdata:资源数据段,程序用到的什么资源都在这里,资源包括自己封包的,也包括开发工具自动封包的;
.data段:这个段存放程序的全局数据,全局常量等
继续往下分析的时候,使用Dependency Walker来查看可疑文件的依赖dll和与dll有关的函数
根据得出的函数名称,可以分析出可疑文件可能存在的恶意行为,常见函数及可能对应恶意行为如下:
CreateFile/WriteFile/CopyFile/DeleteDirectory:创建、写、复制、删除文件操作,可能存在修改、删除、复制系统关键信息的行为;
InternetOpen/InternetOpenUrl/InternetReadFile:打开并读取某个网页操作,可能存在打开一个网络里面的URL然后在读取一些东西下来本地行为;
GetCommandLine:获取一个输入参数,一般出现这个函数,该可疑文件很大程度上可能是一个后门程序;
GetCommandLineA/CreateMute/CreateThread:创建一个互斥量和线程,可能存在恶意程序相互捆绑的行为;
CreateService:创建一个服务,可能存在创建恶意服务的行为。
查看完基本静态信息之后,使用ida pro来查看更多的汇编代码和字符串信息,例如下图:
从字符串中可以看出可疑文件连接网络地址的情况,创建某些文件的位置等情况;
另外使用ida可以查看该可疑文件详细的汇编代码,ida载入文件时一般定位在主函数的位置,之后可以根据ida自带的函数调用图(如下图,红色线代表不跳转,绿色代表跳转)和call指令来进行函数的分析。使用ida来进行分析时需要对汇编指令和c语言程序有一定的熟悉,例如某些固定的汇编的代码可能代表c语言的printf函数、赋值操作、函数返回地址等,另外还需熟知汇编语言中的各类跳转指令,在何种情况下进行跳转等。
动态分析
静态分析能得到的信息有限,静态分析结束之后要进行动态分析,所谓动态分析就是在运行可疑文件时查看存在的现象,注册列表值的变化、内存地址的变化等,动态分析工具有Process Monitor、Process explorer、Regshot、apateDNS、Wireshark、ollydbg.
首先在文件运行之前打开Process Monitor、Process explorer、apateDNS、Wireshark分别监测可疑文件运行时的进行和网络连接情况;之后打开Regshot做一次注册列表快照;然后运行可疑文件,观察、记录可疑文件运行时的现象,运行完之后再使用Regshot做一次注册列表快照。
使用Process Monitor、Process explorer可以清晰地了解可以文件运行时所做的操作,包括创建、修改文件,创建、删除、修改注册列表的值等;apateDNS、Wireshark可以记录可疑文件运行时的网络连接情况;而Regshot则详细记录下注册列表键、值的变化,为全面清除恶意文件提供依据。
Ollydbg一般是配合ida一起使用的,ida可以了解可疑文件的整体函数调用,而ida可以通过下断点、单步步入、单步步过等方式一步步动态观察可疑文件运行时内存地址的变化,也可以在遇到函数跳转时清楚地了解函数的跳转过程,使用ollydbg分析完之后可以大致反汇编出可疑文件的伪代码,文件行为也已经了解清楚。