首页 > 编程知识 正文

恶意代码案例分析,恶意代码关键技术

时间:2023-05-03 13:23:33 阅读:215941 作者:598

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

概述

  主要讲解加壳脱壳,每周讲解一种壳。
  参考教材:可以买来当字典。
《逆向工程核心原理》,作者bzdxl
《加密与解密(第4版)》,作者qldlc
《恶意代码分析实战》,作者ajddp 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手动脱壳(重点) 反思

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

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。