​恶意代码之静态分析

简介: ​恶意代码之静态分析

0x00 分析技术


  • 使用反病毒软件来确认程序样本的恶意性
  • 使用哈希来识别恶意代码
  • 从文件的字符串列表、函数和文件头信息中发掘有用信息

 

0x01 病毒扫描引擎


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

  • virustotal
  • 云沙箱
  • 华为云沙箱
  • virscan
  • 腾讯哈勃系统


0x02 哈希值计算


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


0x02-1 md5deep


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


208a97cbc5d58d828c7d4a2e2a6f1d94_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


0x02-2 WinMD5


11b7a8d5f6e94db32e3686f8f7c0ca81_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


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


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


相关文章
|
17天前
|
监控 网络协议 网络安全
恶意代码分析入门--开始动态地分析恶意程序(chapter3L_Lab03-01)
实验3-1:通过动态分析技术分析Lab03-01.exe中的恶意代码,探究其导入函数、字符串列表、感染特征及网络特征。实验环境为Windows XP SP3,使用Process Explorer、Strings、Process Monitor、PEiD、Wireshark等工具。分析过程中发现恶意代码创建了互斥体、修改了注册表以实现自启动,并尝试访问外部恶意链接。
57 3
恶意代码分析入门--开始动态地分析恶意程序(chapter3L_Lab03-01)
|
3月前
|
安全 PHP
文件包含漏洞(一)代码解读
文件包含漏洞(一)代码解读
|
3月前
|
SQL 安全 Java
JAVA代码审计SAST工具使用与漏洞特征
JAVA代码审计SAST工具使用与漏洞特征
106 2
|
6月前
|
SQL API Python
`bandit`是一个Python静态代码分析工具,专注于查找常见的安全漏洞,如SQL注入、跨站脚本(XSS)等。
`bandit`是一个Python静态代码分析工具,专注于查找常见的安全漏洞,如SQL注入、跨站脚本(XSS)等。
|
6月前
|
安全 Python
【漏洞复现】探索 Python 中原型链的利用与污染
在本文中,我们从实际应用的角度出发,深入探讨原型链的利用方式,并剖析可能导致代码安全漏洞和意外行为的污染情形,同时希望读者深刻了解 Python 中原型链的概念、机制以及潜在的安全风险。
|
7月前
|
安全 前端开发 Java
代码审计-Java项目&Filter过滤器&CNVD分析&XSS跨站&框架安全
代码审计-Java项目&Filter过滤器&CNVD分析&XSS跨站&框架安全
|
安全 API Windows
恶意代码分析系列-几种常用技术(2)
恶意代码分析系列-几种常用技术(2)
|
安全 API 数据库
恶意代码分析系列-几种常用技术(3)
恶意代码分析系列-几种常用技术(3)
|
安全 API 开发工具
恶意代码分析系列-几种常用技术(1)
恶意代码分析系列-几种常用技术(1)
|
安全 关系型数据库 MySQL
代码审计--文件包含
代码审计--文件包含