​恶意代码之静态分析

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

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


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


相关文章
|
SQL 编解码 网络安全
ML之Spearman:Spearman相关系数(斯皮尔曼等级相关系数)的简介、案例应用之详细攻略
ML之Spearman:Spearman相关系数(斯皮尔曼等级相关系数)的简介、案例应用之详细攻略
ML之Spearman:Spearman相关系数(斯皮尔曼等级相关系数)的简介、案例应用之详细攻略
|
28天前
|
缓存 Ubuntu 安全
如何在Ubuntu中移除Snap包管理器
以上步骤涉及系统深层次的操作,可能会对系统稳定性和安全性产生影响。在执行这些操作之前,请确保您了解每个步骤的具体含义,并考虑所有潜在的风险。此外,这些步骤可能会随着Ubuntu系统的更新而变化,请根据您的具体系统版本进行调整。
322 17
|
11月前
|
安全 Linux API
恶意代码分析入门--静态分析(chapter1_Lab01-01)
本文档介绍了在Windows XP SP3环境下,利用PEiD、Strings、PETools等工具对Lab01-01.exe和Lab01-01.dll两个文件进行恶意代码分析的过程。实验包括在线扫描、PE结构分析、检查是否加壳、分析导入函数、字符串搜索等步骤,最终推测出这两个文件的潜在恶意行为及目的。通过这一系列的静态分析手段,能够初步判断出恶意代码的性质与功能,为后续的深入研究提供了基础。
270 5
恶意代码分析入门--静态分析(chapter1_Lab01-01)
|
关系型数据库 MySQL 数据库
Docker 安装 MySQL
一、查看 MySQL 版本 访问 MySQL 镜像库地址:https://hub.docker.com/_/mysql?tab=tags 。 可以通过 Tags 查看其他版本的 MySQL,默认是最新版本 mysql:latest 。 你也可以在下拉列表中找到其他你想要的版本: 二、拉取 MySQL 镜像 拉取官方的最新版本的镜像: docker pull mysql:latest 三、查看本地镜像 使用以下命令来查看是否已安装了 mysql: docker images 四、运行容器 安装完成后,我们可以使用以下命令来运行 mysql 容器: docker run -itd --name m
1872 0
|
小程序 容器
微信小程序常用组件的简单使用 view,scroll-view,swiper,swiper-item,text,rich-text,button,image
本文介绍了微信小程序中常用组件的使用方法,包括view、scroll-view、swiper与swiper-item、text与rich-text、button以及image组件。详细解释了各组件的功能、属性以及如何在小程序页面中进行使用。
微信小程序常用组件的简单使用 view,scroll-view,swiper,swiper-item,text,rich-text,button,image
|
SQL 前端开发 NoSQL
关于幂等:大厂如何解决幂等问题?
为确保分布式系统中接口的幂等性,防止重复下单及更新数据时出现ABA问题,可采取以下措施:首先,每个请求需具备唯一标识符,如订单ID,确保同一订单ID仅能成功处理一次。其次,处理请求后需记录状态标识,如在数据库中记录支付流水。接收请求时检查是否已处理,利用数据库的唯一性约束防止重复操作。例如,支付前插入支付流水记录,若订单ID已存在,则阻止重复支付。此外,为解决ABA问题,可在订单表中增加版本号字段,更新数据时需验证版本号一致性并同步递增版本号,确保数据正确性及更新操作的幂等性。
|
设计模式 开发框架 前端开发
在DevExpress中使用BandedGridView表格实现多行表头的处理
在DevExpress中使用BandedGridView表格实现多行表头的处理
|
存储 机器学习/深度学习 数据安全/隐私保护
最全Pillow(PIL)入门教程(非常详细)_python pillow 教程,2024年最新Python面试送分题
最全Pillow(PIL)入门教程(非常详细)_python pillow 教程,2024年最新Python面试送分题
最全Pillow(PIL)入门教程(非常详细)_python pillow 教程,2024年最新Python面试送分题