【恶意代码分析】_第一站

2024-01-19 08:48

本文主要是介绍【恶意代码分析】_第一站,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 概述
    • 基本概念
        • 有损压缩
        • 加壳
        • 壳的装载及其分类
        • 压缩器和保护器
        • 恶意程序在线分析网站
    • UPX实验
        • 介绍UPX
        • 使用UPX压缩文件
        • UPX加壳原理
    • 使用工具查看和脱壳
        • Lord PE
        • 工具PEiD
        • 脱壳工具UPX UnPacKer 0.3
        • 使用upx进行脱壳
    • 使用Ollydbg手动脱壳(重点)
    • 反思

概述

  主要讲解加壳脱壳,每周讲解一种壳。
  参考教材:可以买来当字典。
《逆向工程核心原理》,作者李承远
《加密与解密(第4版)》,作者段钢
《恶意代码分析实战》,作者Michael Sikorski
《0day安全:软件漏洞分析技术(第二版) 》,作者王清等
《IDA Pro权威指南(第2版)》,作者Eagle。
在这里插入图片描述

  操作系统环境:Windows XP Service Pack系统,Win7环境可能出现执行失败等问题。
  本节目标:了解UPX壳解压缩过程、查找用UPX解壳软件的OEP(original entry point,原始入口点)。


基本概念

有损压缩

  有损压缩会损失一定的信息,常见的有损压缩有MP3、MP4、jpg等,无损压缩可以完全恢复原始数据,但文件大小会更大,常见的有png、加壳文件压缩器等,bmp是无压缩文件。

  Misc隐写:jpeg/jpg图片属性中的说明、来源都可以添加内容。

  LSB应用范围(最低有效位隐写):一般只能在无损压缩(PNG)、或无压缩(BMP)的图片上实现最低有效位隐写。JPG图片对像数进行了有损压缩,所以无法使用LSB隐写。


加壳

  加壳是指运行时压缩,即对可执行程序资源进行压缩,通过修改程序入口点等压缩、加密、保护exe和dll文件。
  只不过这个压缩之后的文件,可以独立运行,解压过程完全隐蔽,都在内存中完成。加壳后程序可以直接运行,但不能查看源代码,除非脱壳。
目的:反跟踪、被人跟踪调试、防止算法程序被别人静态分析。

  解压原理:是加壳工具在文件头里加了一段指令,告诉CPU,怎么才能解压自己。当加壳时,其实就是给可执行的文件加上个外衣。用户执行的只是这个外壳程序。当执行这个程序的时候这个壳就会把原来的程序在内存中解开,解开后,以后的就交给真正的程序。


壳的装载及其分类

  是什么?外壳程序负责把用户原来的程序在内存中解压缩,并把控制权交还给解开后的真正程序。
  壳的装载过程:获取壳自己需要使用的API地址。解压解密原程序的各个区块。进行必要的重定位。跳转到程序原入口点OEP。

  脱壳的目的是找到OEP(Original Entry Point,原程序的入口点),软件加壳就是隐藏了OEP(或者用了假的OEP),只要我们找到程序真正的OEP,就可以立刻脱壳。PUSHAD(压栈)代表程序的入口点。
  常见寻找OEP脱壳的方法,搜索OEP百度百科有五种方法。

  壳的分类
  压缩壳:想把程序压缩变小,例如ASPack、UPX、PECompact等;
  加密壳(保护器):商业程序防破解,ASProtect、Armadillo、ExeCryptor、Themida、VMProtect等;
  其他:病毒加壳,反病毒AntiVirus。


压缩器和保护器

  压缩器:PE压缩器是指可执行文件的压缩器。
  使用目的:缩减PE文件大小;隐藏PE文件内部代码与资源。
  两种分类:单纯压缩普通PE文件的压缩器。对源文件进行较大变形、严重破坏PE头、意图不纯的压缩器,指专用于恶意程序的压缩器。
  目的纯粹的压缩器(未经VirusTotal诊断): UPX、ASPack等;
目的不纯的压缩器(经VirusTotal诊断): UPack、PESpin、 NSAnti等。

  保护器:PE保护器是一类保护PE文件免受代码逆向分析的实用程序。
应用了多种防止代码逆向分析的技术(反调试、反模拟、代码混乱、多态代码、垃圾代码、调试器监视等),使压缩后的PE文件尺寸反而比源文件要大一些,调试难度高。
  使用目的:防破解;保护代码和资源。(保护器不仅可以保护PE文件本身,还可在文件运行时保护进程内存,防止打开Dump窗口。)
  使用现状:大量应用于对破解很敏感的安全程序。因为恶意的游戏破解者破解游戏的安全保护程序,利用“游戏内核”获取金钱回报。
另一方面,常见的恶性代码( Trojan、Worm )中也大量使用保护器来防止(或降低)杀毒软件的检测。
  分类:商用保护器: ASProtect、Themida、 SVKP等;
公用保护器: UltraProtect、Morphine等。


恶意程序在线分析网站

  www.virustotal.com,是一个提供免费的可疑文件分析服务的网站,可以用来分析恶意程序。
  它与传统杀毒软件的不同之处,在于通过多种反病毒引擎扫描文件。
使用多种反病毒引擎对上传的文件进行检测, 以判断文件是否被病毒, 蠕虫, 木马, 以及各类恶意软件感染。


UPX实验

介绍UPX

  UPX软件(The Ultimate Packer For Executables,可执行文件终极打包器)是一款可执行文件压缩器,压缩过的可执行文件体积缩小50%-70%。
  UPX压缩器官网:http://upx.sourceforge.net
下载地址: https://en.softonic.com/download/upx/windows/post-download

  UPX是一个著名的压缩壳,主要功能是压缩PE文件(比如exe,dll等文件),
有时候也可能被病毒用于免杀。


使用UPX压缩文件

  开启Windows XP SP3虚拟机,拖拽upx-3.96-win32文件夹到虚拟机。
命令行跳转到upx文件夹。

1.输入命令upx
在这里插入图片描述

2.压缩样例文件命令:upx -o 输出文件 被压缩文件
在这里插入图片描述  压缩到原来的71.97%,压缩率比ZIP压缩(35kb)要低。原因在于,upx压缩后得到的是PE文件(需要添加PE头),还要放入解压缩代码。

3.比较原程序和upx压缩程序:
在这里插入图片描述
不变:
  PE头的大小一样(0~400h)
  第一个节区的RawDataSize=0,即在PE文件中的大小为0
  
变化:
  节区名称改变:.text->.upx0,节区头.data->.upx1。
  EP(Entry point入口点)位于第二个节区.upx1,原notepad. exe的EP在第一个节区.text。(复习EP和.text的概念就能明白这一点)
  资源节区(.rsrc)大小变化不大。


UPX加壳原理

  首先将程序压缩。 所谓的压缩包括两方面:
一方面在程序的开头或者其他合适的地方插入一段代码。 另一方面是将程序的其他地方做压缩(也就是上面讲到的压缩),压缩也可以叫做加密。

  当程序执行时:实时的对程序解压缩。解压缩功能是在第一步插入代码时完成的功能。

  联起来就是: UPX可以完成代码的压缩和实时解压执行。且不会影响程序的执行效率。




使用工具查看和脱壳

Lord PE

  安装
  LordPE,是一款功能强大的PE文件分析、修改、脱壳软件。LordPE是查看PE格式文件信息的首选工具,并且可以修改相关信息。
  学习之初最好使用中文版,花费10C币重新下载中文版,
CSDN地址https://download.csdn.net/download/gdcat2008/1254308:

在这里插入图片描述
  运行程序,发现报错:

在这里插入图片描述
  参考《记修复“LordPE已停止工作”》,得知是LordPeFix.dll有错误,
直接下载文章作者分享的LordPeFix.dll,成功运行:
文章地址https://zhuanlan.zhihu.com/p/29924819

在这里插入图片描述

  实验:使用Lord PE对比两个程序的区段表

  Lord PE打开notepad.exe,查看nodepad.exe的区段表:
在这里插入图片描述

  Lord PE打开notepad_upx.exe,查看nodepad_upx.exe的区段表:
在这里插入图片描述
  从VirtualSize值可以发现notepad_upx.exe第一个节区的VirtualSize值竟被设置为10000(而SizeOfRawData值为0)。
  这就是说,经过UPX压缩后的PE文件,在运行瞬间将文件中的压缩代码解压到内存中的第一个节(UPX0)。
  说得更详细一点,解压缩代码与压缩的原代码( notepad.exe 的代码)都在第二个节区(UPX1)。文件运行时首先执行解压缩代码,把处于压缩状态的原代码解压到第一个节区(UPX0)。解压过程结束后即运行原文件的EP代码。


工具PEiD

介绍
  PEiD(PE Identifier)是一款著名的查壳工具,其功能强大,几乎可以侦测出所有的壳,其数量已超过470 种PE 文档 的加壳类型和签名,可以探测大多数PE文件封包器、加密器和编译器。
  具有三种扫描模式:
正常扫描模式:可在PE文档的入口点扫描所有记录的签名;
深度扫描模式:可深入扫描所有记录的签名,范围更广、更深入;
核心扫描模式:可完整地扫描整个PE文档,建议将此模式作为最后的选择。

使用
  点击右下角箭头,选择深度扫描,得到加壳方式;
  点击右下角箭头,选择Plugins- generic oep finder,得到OEP;
  点击右下角箭头,选择PEiD generic Unpacker,脱壳得到原程序。
(本地下载的PEiD v0.95自带插件不佳,脱壳失败)
在这里插入图片描述

脱壳工具UPX UnPacKer 0.3

  脱壳失败,参考《UPX UnPacKer 0.3 中文版》,
文章地址http://www.52bug.cn/cracktool/3371.html
(在软件园经常下载到流氓软件,不考虑软件园渠道寻找资源)
  直接手动脱壳吧!
在这里插入图片描述

使用upx进行脱壳

  询问同学得知,upx软件也可以用来脱壳。
输入命令upx -d notepad_upx.exe,查看文件,脱壳成功:
在这里插入图片描述

使用Ollydbg手动脱壳(重点)

反思

  把耐心用在关键环节!
顺序学习,到了手动脱壳部分已经做不动了。

这篇关于【恶意代码分析】_第一站的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/621886

相关文章

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

MOLE 2.5 分析分子通道和孔隙

软件介绍 生物大分子通道和孔隙在生物学中发挥着重要作用,例如在分子识别和酶底物特异性方面。 我们介绍了一种名为 MOLE 2.5 的高级软件工具,该工具旨在分析分子通道和孔隙。 与其他可用软件工具的基准测试表明,MOLE 2.5 相比更快、更强大、功能更丰富。作为一项新功能,MOLE 2.5 可以估算已识别通道的物理化学性质。 软件下载 https://pan.quark.cn/s/57

衡石分析平台使用手册-单机安装及启动

单机安装及启动​ 本文讲述如何在单机环境下进行 HENGSHI SENSE 安装的操作过程。 在安装前请确认网络环境,如果是隔离环境,无法连接互联网时,请先按照 离线环境安装依赖的指导进行依赖包的安装,然后按照本文的指导继续操作。如果网络环境可以连接互联网,请直接按照本文的指导进行安装。 准备工作​ 请参考安装环境文档准备安装环境。 配置用户与安装目录。 在操作前请检查您是否有 sud

线性因子模型 - 独立分量分析(ICA)篇

序言 线性因子模型是数据分析与机器学习中的一类重要模型,它们通过引入潜变量( latent variables \text{latent variables} latent variables)来更好地表征数据。其中,独立分量分析( ICA \text{ICA} ICA)作为线性因子模型的一种,以其独特的视角和广泛的应用领域而备受关注。 ICA \text{ICA} ICA旨在将观察到的复杂信号

【软考】希尔排序算法分析

目录 1. c代码2. 运行截图3. 运行解析 1. c代码 #include <stdio.h>#include <stdlib.h> void shellSort(int data[], int n){// 划分的数组,例如8个数则为[4, 2, 1]int *delta;int k;// i控制delta的轮次int i;// 临时变量,换值int temp;in

三相直流无刷电机(BLDC)控制算法实现:BLDC有感启动算法思路分析

一枚从事路径规划算法、运动控制算法、BLDC/FOC电机控制算法、工控、物联网工程师,爱吃土豆。如有需要技术交流或者需要方案帮助、需求:以下为联系方式—V 方案1:通过霍尔传感器IO中断触发换相 1.1 整体执行思路 霍尔传感器U、V、W三相通过IO+EXIT中断的方式进行霍尔传感器数据的读取。将IO口配置为上升沿+下降沿中断触发的方式。当霍尔传感器信号发生发生信号的变化就会触发中断在中断

kubelet组件的启动流程源码分析

概述 摘要: 本文将总结kubelet的作用以及原理,在有一定基础认识的前提下,通过阅读kubelet源码,对kubelet组件的启动流程进行分析。 正文 kubelet的作用 这里对kubelet的作用做一个简单总结。 节点管理 节点的注册 节点状态更新 容器管理(pod生命周期管理) 监听apiserver的容器事件 容器的创建、删除(CRI) 容器的网络的创建与删除

PostgreSQL核心功能特性与使用领域及场景分析

PostgreSQL有什么优点? 开源和免费 PostgreSQL是一个开源的数据库管理系统,可以免费使用和修改。这降低了企业的成本,并为开发者提供了一个活跃的社区和丰富的资源。 高度兼容 PostgreSQL支持多种操作系统(如Linux、Windows、macOS等)和编程语言(如C、C++、Java、Python、Ruby等),并提供了多种接口(如JDBC、ODBC、ADO.NET等

OpenCV结构分析与形状描述符(11)椭圆拟合函数fitEllipse()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C++11 算法描述 围绕一组2D点拟合一个椭圆。 该函数计算出一个椭圆,该椭圆在最小二乘意义上最好地拟合一组2D点。它返回一个内切椭圆的旋转矩形。使用了由[90]描述的第一个算法。开发者应该注意,由于数据点靠近包含的 Mat 元素的边界,返回的椭圆/旋转矩形数据