静态分析基础技术

Posted linuxsec

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了静态分析基础技术相关的知识,希望对你有一定的参考价值。

1、使用反病毒软件来确认程序样本的恶意性

   在分析一个可疑的恶意代码样本时,第一步就最好是拿多个反病毒软件扫描下这个文件,看是否有哪个引擎已经能够识别它。反病毒软件是不完美的,它们主要依靠一个已知恶意代码可识别片断的特征数据库,以及基于行为与模式匹配的分析(启发式检测),来识别可疑文件。

   一些罕见的恶意代码通常也不会被反病毒软件所识别,因为它们并不在病毒库里。最后,启发式检测,尽管经常也能成功地识别出一些未知恶意代码,但仍然可以被一些新型独特的恶意代码所绕过。

   VirusTotal(http://www.virustotal.com),可调用多个反病毒引擎来进行扫描。

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

   哈希是一种用来唯一标识恶意代码的常用方法。

   将哈希值作为标签使用

   与其他分析师分享哈希值,以帮助他们来识别恶意代码

   在线搜索这段哈希值,看看这个文件是否已经被识别

3、查找字符串

   使用的工具strings

4、加壳与混淆恶意代码

   查壳工具:PEID

   PE 文件以一个文件头开始,其中包括代码信息、应用程序类型、所需的库函数与空间要求。PE头中的信息对于恶意代码分析师而言,是非常有价值的。

5、链接库与函数

   代码库可以被静态链接,也可以运行时链接,或者动态链接。了解代码库如何被链接的,对于我们理解恶意代码来说,是非常关键的,因为我们在PE文件头中可以找到的信息取决于链接了哪些代码库。

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

   在所有链接方法中,动态链接是最常见的,对于恶意代码分析师也是应该关注的。

7、PE 文件中的分节

   .text    包含可执行代码

   .rdata   包含程序中全局可访问的只读数据

   .data   存储程序中都可以访问的只读数据

   .idata   有时会显示和存储导入函数信息,如果这个节不存在时,导入函数信息会存储在.rdata节中

   .edata   有时会显示和存储导出函数信息,如果这个节不存在时,导出函数信息会存储在.rdata节中

   .pdata   只在64位可执行文件中存在,存储异常处理信息

   .rsrc   存储可执行文件所需的资源

   .reloc  包含用来重定位库文件的资源

使用PEview来分析PE文件。

使用Resource Hacker工具来浏览.rsrc节(资源)。

PEBrowse Professional和PE Explorer 也是分析PE文件的两大工具。

导入函数     恶意代码是用了哪些库中的哪些函数

导出函数     恶意代码期望被其他程序或库所调用的函数

时间戳      程序是在什么时候被编译的

分节       文件分节的名称,以及它们在磁盘与内存中的大小

子系统      指示程序是一个命令行还是图形界面应用程序

资源       字符串、图标、菜单项和文件中包含的其他信息

以上是关于静态分析基础技术的主要内容,如果未能解决你的问题,请参考以下文章

静态分析基础技术

最佳软件测试基础入门教程4静态测试

软件测试基础理论体系学习5-静态测试的理解

路由基础静态路由与SLA技术

看透 Spring MVC 源代码分析与实践 —— 网站基础知识

数字条纹投影技术基础3条纹分析技术的理论基础