病毒分析——静态特征分析 及 动态行为分析

一、静态特征分析

1、上传漏洞平台检测(简单实用的方法,但是这也仅供一个参考,尽量还是要自己去分析):
常用检测平台:微步在线、VT等

可查看评论是否有安全专家分析结果,可查看可疑行为进行初步分析;

若有报FSG壳病毒:Packer.FSG.A,可能加了FSG壳,exeinfo可能查不到壳,DIE等可以查到。
2、编译时间:
有利于辨别一些系统文件(如svchost.exe等)是不是伪装。
还有另一种情景,当确定一个文件是恶意的,如Lab01-01.exe,若发现Lab01-01.dll的编译时间是相似的,那么有理由相信它们是出自同一个作者。
3、查壳(必须脱壳后才能进行下一步分析):
常用的查壳工具:exeinfo/DIE/PEiD等

常用的脱壳工具:upx脱壳工具、UPXsehll;

upx脱壳命令:upx.exe –o 别名 –d 现名;
4、导入、导出函数分析:
函数库:
	msvcrt.dll是几乎所有可执行文件都会导入的库(包含最基本的函数);
	ws2_32.dll是网络库,可以看到其中有很多操作网络套接字的函数;
	kernel32.dll是控制着系统的内存管理、数据的输入输出操作和中断处理,有个创建进程的函数CreateProcess,这些都是可疑的函数,猜测病毒可能有恶意的网络行为;
	advapi32.dll是一个高级API应用程序接口服务库的一部分,包含的函数与对象的安全性,注册表的操控以及事件日志有关;
	
若样本DLL导出函数有ServiceMain、UninstallService等于服务有关的函数,这个DLL会将自己安装成一个服务;

4.1遍历文件的函数:FindFirstFileA、FindNextFileA,
操作文件的函数UnmapViewOfFile、CreateFileMappingA等。通过这些可以猜测病毒有恶意操作文件的行为。
4.2疑似在提权的函数组合:OpenProcessToken、LookupPrivilegeValueA、AdjustTokenPrivileges。
4.3执行磁盘上的一个文件的函数:WinExec。
4.4加载资源节中的数据函数组合:SizeofResource、CreateRemoteThread、FindResourceA。
4.5网上下载另一个程序的函数:URLDownloadToFileA(网址在可疑字符串中可能找的到)。
4.6从自己的资源节中读取数据的函数,可能存放的就是一段恶意代码:FreeResource、SizeofResource、LockResource、LoadResource、FindResourceA
4.7进程注入的函数组合:SetThreadContext修改傀儡进程的EIP,指向恶意代码,ResumeThread恢复傀儡进程的运行
5、可疑字符串:
在IDA中按下Shift+F12即可显示出程序中的所有字符串。

系统函数库不会有c:\\windows\\system32\\前缀,若有,则可能是病毒创建的一个恶意文件,伪装成系统函数库。

若有HTTP的操作,GET、DOWNLOAD、UPLOAD,疑似会跟黑客服务器进行通信;

若有cmd.exe,疑似干了很不好的事(可能是典型的自删除)。
6、病毒有加载资源的函数时进行资源节检测(可使用ResourceHacker):
若检测出其资源节存在PE结构,则病毒有加载资源

二、动态行为分析:

7、查看进程信息(可使用Process Explorer):
运行样本,查看进程信息,点击View->Lower Pane View->Handles;

当有Type为mutant互斥体对象,可疑;

点击View->Lower Pane View->DLLs,可以查看该进程导入了哪些DLL;

看的DLL的Description描述中有socket有关的DLL,可以猜测该进程发起了网络连接;

*Process Explorer还有个强大的功能,右键进程>Properties->Strings,选择下方的Memory选项,即可查看该进程在内存中的所有字符串。
若有xx.log明进程可能会创建这个文件,可以全局搜索这个文件,若有[ENTER]、[DEL]、[TAB]等键盘特征,有理由猜测进程在进行键盘记录的恶意行为。
8、进程监视(可用Process Monitor):
运行程序前先配置ProcMon的规则,用于筛选出我们关心的恶意行为例如:
	进程名、写操作表的操作(RegSetValue)、创建文件的操作(WriteFile)

若对DLL进程监控,需要用到rundll32.exe(用于在内存中运行DLL文件),命令:
	rundll32.exe xxx.dll,dll中的函数入口(比如:intallA,在导出函数中分析获得)
	
每一个程序启动时都会帮随机数发生器更新种子,因此会有RegSetValue类型的Seed

若操作地址在IPRIP下,则为创建恶意的服务,使用命令net start IPRIP来启动该服务,
使用Process Explorer查看进程信息,可以找到该服务出现在哪个进程中。
9、网络数据包(可用Wireshark抓包):
对进程发起的请求进行分析,若数据包加密,则无法获取其内容

你可能感兴趣的:(病毒分析,安全,数据分析)