安全矩阵

 找回密码
 立即注册
搜索
查看: 6671|回复: 0

​恶意代码之静态分析

[复制链接]

991

主题

1063

帖子

4315

积分

论坛元老

Rank: 8Rank: 8

积分
4315
发表于 2021-1-11 19:31:06 | 显示全部楼层 |阅读模式
原文链接:​恶意代码之静态分析

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查看资源节

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


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-28 17:51 , Processed in 0.012944 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表