​恶意代码之静态分析

  • A+
所属分类:逆向工程



​恶意代码之静态分析
​恶意代码之静态分析

0x00 分析技术


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

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

  • 从文件的字符串列表、函数和文件头信息中发掘有用信息

 



​恶意代码之静态分析
​恶意代码之静态分析

0x01 病毒扫描引擎


对可疑的恶意代码样本进行初步判断,查看是否有引擎可以识别样本,例如:

  • virustotal

  • 沙箱

  • 华为云沙箱

  • virscan

  • 腾讯哈勃系统




​恶意代码之静态分析
​恶意代码之静态分析

0x02 哈希值计算


哈希是一种用来唯一标识恶意代码的常用方法,MD5算法是恶意代码分析最为常用的哈希函数,初次之外还有SHA-1算法等等



​恶意代码之静态分析

0x02-1 md5deep


用于计算Windows操作系统自带的Solitaire程序哈希值


​恶意代码之静态分析



​恶意代码之静态分析

0x02-2 WinMD5


​恶意代码之静态分析




​恶意代码之静态分析
​恶意代码之静态分析

0x03 字符串查找


Strings程序忽略上下文以及格式,可以分析任何文件类型,搜索三个或以上连续的ASCII或Unicode字符,并以终结符结尾的可打印字符串;ASCII存储一个字符使用一个字节,Unicode存储一个字符使用两个字节,差异见下图:


​恶意代码之静态分析



​恶意代码之静态分析

0x03-1 Strings工具


​恶意代码之静态分析




​恶意代码之静态分析
​恶意代码之静态分析

0x04 检测加壳与脱壳


加壳相当于给程序套一层外壳,隐藏程序的真正入口(OEP),干扰他人分析

加壳和混淆代码至少包含LoadLibraryGetProcAddress函数,它们用来加载和使用其他函数功能。


​恶意代码之静态分析



​恶意代码之静态分析

0x04-1 检测加壳工具PEiD


​恶意代码之静态分析



​恶意代码之静态分析

0x04-2 脱UPX壳工具


​恶意代码之静态分析




​恶意代码之静态分析
​恶意代码之静态分析

0x05 列出链接库函数


Windows平台链接代码库有三种方式,分别是静态链接、运行时链接、动态链接。最不常用的是静态链接,最常用的是动态链接,运行时链接在恶意代码中流行。

LoadLibrary和GetProcAddress允许一个程序访问系统上任何库中的任何函数



​恶意代码之静态分析

0x05-1 Dependency Walker


工具可以列出可执行文件的动态链接函数


​恶意代码之静态分析




​恶意代码之静态分析
​恶意代码之静态分析

0x06 常见dll程序


​恶意代码之静态分析




​恶意代码之静态分析
​恶意代码之静态分析

0x07 函数命名约定


    1.当微软更新一个函数,而且新函数与原先函数不兼容的时候,微软还会继续支持原先的旧函数。这时新函数会给一个与旧函数相同的名字,并在后面加上Ex后缀。而被显著更新过两次的函数,则会在它们的名字后面有两个Ex后缀。


    2.以字符串作为参数的许多函数,在它们的名字后面会包含一个A或者一个w,如CreateDirectory。这个字母A或者w在这个函数的文档中并没有出现。它只是表明这个接受字符串参数的函数有着两个不同的版本:以A结尾的输入参数类型为ASCII字符串,而以w结尾的输入参数为宽字符字符串。当你在微软的文档中搜索这个函数时,你需要记得丢掉后缀的A或者w。




​恶意代码之静态分析
​恶意代码之静态分析

0x08 使用PEview分析PE文件


    1.时间戳有时候能判断其编译时间,根据时间来判断恶意代码是否已经暴露,若已经暴露,则可以借助前人的分析进行解决,但所有Delphi程序都使用统一的编译时间:1992年6月19日,并且时间戳可以伪造;


    2.程序的imagebuffer远大于filebuffer,说明程序加壳,特别是代码节(.text)




​恶意代码之静态分析
​恶意代码之静态分析

0x09 使用Resource Hacker查看资源节


恶意代码经常会把一个嵌入的程序或者驱动放在资源节,在程序运行前,将嵌入可执行文件或驱动提取出来



end


​恶意代码之静态分析


本文始发于微信公众号(雷石安全实验室):​恶意代码之静态分析

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: