恶意样本脱壳-GandCrab2.0 脱壳笔记分析记录

本文详细记录了GandCrab2.0恶意样本的脱壳过程,包括解密shellCode、PE1和encrpt.dll的步骤。通过对shellCode的功能分析,揭示了样本如何动态获取API、解密PE文件并反射调用dll。在解密过程中,利用关键内存API断点进行动态调试,以dump关键文件,为恶意软件分析提供了深入的理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GandCrab2.0 脱壳笔记分析记录

有人在2018年的时候就分析过了恶意样本分析,相关资料可以查看参考部分。由于里边有很多可以学习和总结的脱壳技术,因此重新分析这个样本,这篇文章暂时不做加密和勒索实际功能分析,如果要看分析样本形成勒索的过程以及相关分析报告,可以直接跳到参考部分,这篇文章主要关注的是脱壳相关的一些技术细节的分析,由于文章是我个人的一些分析和总结,因此会有一些不足,比较趋向于像我这样刚接触恶意软件分析,由于很多样本在分析前需要脱壳之后才能看到核心功能,因此这里重点关注脱壳过程,主要内容如下

  • 解密并dump出shellCode

  • 解密并dump出PE1

  • 解密并dump出encrpt.dll

解密并dump出shellCode

使用IDA打开病毒母体,来到入口函数,经过分析后程序会解密出资源文件的内容

在这里插入图片描述
调用VirtualProtect函数修改shell_code的属性为可读写,这里的VirtualPtotect函数是通过动态获取的函数指针

在这里插入图片描述

之后调用函数sub_401014shell_code解密并调用

在这里插入图片描述
为了能进一步分析shell_code,需要在动态调试阶段dump下来,因此这里使用x32dbg调试母体病毒,在程序调用shell_code的时候,单步进入后dump下来,如下是来到执行调用shell_code的位置

在这里插入图片描述

此时选择单步进入,来到shell_code的入口处,如下

在这里插入图片描述

此时将内存dump下,步骤为在内存窗口点击右键-->选择 在内存布局中转到

在这里插入图片描述
之后跳转到内存布局,之后选中对应的内存位置一般使用这个方式跳转到内存布局文件,默认会选择指定的内存,然后右键保存为文件,之后命名为shell_code.bin,如下

在这里插入图片描述

使用ida分析shell_code的功能。

ShellCode功能分析

现在主要对shellcode的功能分析,这部分主要会完成如下功能

  • 解密PE1文件
  • 动态填充encrypt.dll文件
  • 反射调用encrypt.dll

解密并dump出PE1

在执行解密PE1这个文件之前,需要弄清楚几个问题

  • [ebp-0A0h]保存的内容是什么
  • 动态获取kernel32.dll函数是如何保存的
  • 解密的PE1文件什么时候选择dump
初始化数据和导入APIs

[ebp-0A0h]保存的内容是什么

在动态调试阶段注意如下指令


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值