静态分析基础技术

2019-02-23  本文已影响0人  小小怪吃吃吃

静态分析基础技术

一、反病毒引擎扫描

在分析一个可疑的恶意代码样本时,第一步就最好是拿多个反病毒软件扫描下这个文件,看是否有哪个引擎已经能够识别它。

反病毒扫描网站:VirusTotal

二、哈希值:恶意代码的指纹

使用哈希来识别恶意代码。

命令行工具:md5deep
图形化工具:winmd5

三、查找字符串

Strings程序:搜索可执行文件中的可打印字符串。

四、加壳与混淆恶意代码

加壳和混淆代码通常至少会包含LoadLibrary和GetProcAddress函数,它们是用来加载和使用其他函数功能的。

PEiD工具:检测加壳器的类型,或者用来链接应用程序的编译器类型。

五、PE文件格式

可移植执行(PE)文件格式是Windows可执行文件、对象代码和DLL所使用的标准格式。几乎每个在Windows系统中加载的可执行代码都使用PE文件格式。PE文件以一个文件头开始,其中包含代码信息、应用程序类型、所需的库函数与空间要求。

六、链接库与函数

静态链接、运行时链接与动态链接

使用Dependency Walker工具探索动态链接函数。

常见的DLL程序:

在早期32-bit 版本的Windows中,用户控件是在ComCtl32中实现的,但是一些控件的显示功能是在User32.dll中实现的。例如在一个窗口中非客户区域(边框和菜单)的绘制就是由User32.dll来完成的。User32.dll 是操作系统的一个核心控件,它和操作系统是紧密联系在一起的。也就是说,不同版本的Windows中User32.dll 是不同。因此,应用程序在不同版本的Windows中运行的时候,由于User32.dll的不同,会导致应用程序的界面通常会有微小的不同。

导入函数、导出函数

导出函数在DLL文件中是最常见的,而EXE文件是提供功能的,很少会有导出函数。

七、PE文件头与分节

.text:包含可执行代码
.rdata:包含程序中全局可访问的只读数据
.data:存储程序中都可以访问的全局数据,有时会显示和存储导入函数信息,如果这个节不存在时,导入函数信息会存储在.rdata节中。
.idata
.edata:有时会显示和存储导出函数信息,如果这个节不存在时,导出函数会存储在.rdata节中
.pdata:只在64位可执行文件中存在,存储异常处理信息
.rsrc:存储可执行文件所需的资源
.reloc:包含用来重定位库文件的信息

上一篇 下一篇

猜你喜欢

热点阅读