1.1 反病毒引擎扫描
VirusTotal:http://www.virustotal.com
VirSCAN:http://www.virscan.org
1.2 哈希值:恶意代码的指纹
MD5计算软件:md5deep、WinMD5
1.3 查找字符串
编码:ASCLL(单字节)、Unicode(双字节)
1.4 加壳与混淆恶意代码
Tips:加壳程序至少包含LoadLibrary和GetProcAddress函数,他们用来加载和使用其他函数
1.4.1 文件加壳:加壳过程源程序被压缩
1.4.2 使用PEiD检测加壳:PEiD、脱壳程序
1.5 PE文件格式
PE文件格式(一种数据结构):是Windows可执行文件、对象代码和DLL所使用的标准文件格式。
1.6 链接库与函数
1.6.1 链接类型
静态链接:复制代码库至意代码程序,难以区分代码库与自身代码。
运行时链接:当恶意代码需要使用其函数才链接到库。
动态链接:当启动恶意代码时就链接到库
1.6.2 使用Dependency Walker工具探索动态链接函数
Dependency Walker工具:http://www.depencywalker.com
Tips:常见的DLL程序:
1.Kernel32.dll:包含核心系统功能,如访问和操作内存、文件和硬件等
2.Advapi32.dll:这个DLL提供了对核心Windows组件的访问,比如服务器管理器和注册表
3.User32.dll:包含所有用户界面组件、如按钮和滚动条以及控制和响应用户操作的组件
4.Gdi32.dll:包含了图形显示和操作的函数
5.Ntdll.dl:Windows内核的接口。可执行文件通常不导入这个函数,由Kernel32.dll间接导入
6.Wsock32.dll和Ws2_32.dll:联网DLL
7.Wininet.dll:包含了更高网络层次的网络函数,实现了FTP\HTTP\NTP等协议
8.函数的命名约定:Ex后缀代表扩展/接受参数A(ASCLL)或W(宽字节)结尾函数
1.6.3 导入函数
MSDN库:https://msdn.microsoft.com/library
1.6.4 导出函数
1.7 静态分析技术实战-案例
1.7.1 Potentialkeylogger.exe:一个未加壳的可执行文件
SetWindowsHookEx函数:间谍软件常用函数
RegisterHotKey函数:注册热键
Advapi32.dll:注册表使用
1.7.2 PackedProgram.exe:恶意程序加壳
1.8 PE文件头与分节
.text:.text截包含了CPU执行指令,唯一可执行节和代码节。
.rdata:.rdata节通常包含导入与导出函数信息,与Dependency Walker 和PEview工具所获得的信息是相同的。
.data:.data节包含了程序的全局数据,可以从程序的任何地方访问到。
.rsrc:.rsrc节包含由可执行文件所使用的资源,而这些资源不是可执行的。
1.8.1 使用PEview来分析PE文件
Tips:通过两者的比较可以有效的判断加壳情况
1.8.2 使用Resource Hacker 工具查看资源节
1.8.3 使用其他PE文件工具
1.PEBrowse Professional
2.PE Explorer
1.8.4 PE文件头概述
1.导入函数:恶意代码使用了那些库中的函数
2.导出函数:恶意代码期望被其他程序或库调用的函数
3.时间戳:程序在什么时候被编译的
4.分节:文件分节的名称,以及他们在磁盘与内存中的大小
5.子系统:指程序是一个命令行还是图形界面
6.资源:字符串、图标、菜单项和文件中包含的其他信息
1.9 小结:简单的掌握工具的使用方式和情景
1.10 实验:另附文章