勒索病毒分析-2024wdb-re2
检查相关信息

可以看到病毒存在VMProtect虚拟壳
简单脱壳
首先我在x64debug中运行一次,发现没有中断退出,证明大概率没有反调试,但是有crc检测,所以尽量不下int3断点(脱壳时)。
一:找OEP
法1:直接在.text段下内存执行断点
别问,问就是这个我调试了很多次。

然后直接运行到断点处,到oep

法2:在ida中猜出oep
在上面我们看到,这个程序是用vs写的,vs默认开了堆栈安全检查,我们可以利用这点找oep,通过交叉引用,我们可以找到入口OEP,我看到的大多数wp都这样,但是一笔带过。(让我一脸懵逼,写了跟没写一样)
具体过程

安全检查函数

SEH函数

添加seh函数的函数

调用添加seh函数的函数

到达OEP
所以你又明白了vs中安全检查的调用过程和原理
sub_4020a9(__security_init_cookie)中用___security_cookie初始化相关值(如果溢出会改变相关值),然后通过跳到__tmainCRTStartup函数,正常执行程序,如果堆栈溢出,就抛出seh异常,这就是为什么数组等越界vs会提示异常
咳咳,跑题了。这样你就找到OEP了,动态运行到这就脱壳了。
法3:堆栈平衡
刚进入时可以看到pushad,先F8走到下面。

在栈顶下一个硬件访问断点

然后不断F9运行,然后会看到提示

之后再F9运行6次,在栈中发现有一个神奇的地址(为什么是6次,因为我调试时运行7次后从vmp0到text段过了)

其中跟随00B81D32后神奇的事情发生了,直接到oep(其实壳运行完后本来就要跳oep的,这个后面也要跳)

最后,我看网上说的在VirtualProtect下断点,我尝试过只断了两次(修改环境,回复环境),这两次的修改对象是rdata区段的,应该是动态解密,但是后面不知道怎么搞。
有人会的在评论区教教我
二:修复iat
如果想分析的时候能够显示系统api,逆向分析更爽。
如果简单修复不考虑运行
由于动态加载地址,这个是后面截图的,所以地址有点出入


这样修复后能够让ida的api显示出来,下面分析足够了,但是不能运行。因为刚刚删的两个api地址是有效的
手动寻找api
刚刚两个api是被壳虚拟化了,想要还原就要知道他的功能,你也不想硬刚虚拟化吧。
这张图是下面的,有两个函数(B83048,B83048+1)被虚拟化了,我们可以通过上下文推出api是什么。

推理过程
上面图可以看到,这两个函数的返回值被SizeofResource和LockResource调用,并且传入参数也确定了,接下来找文档。
SizeofResource: https://learn.microsoft.com/zh-cn/windows/win32/api/libloaderapi/nf-libloaderapi-sizeofresource
LockResource: https://learn.microsoft.com/zh-cn/windows/win32/api/libloaderapi/nf-libloaderapi-lockresource
根据文档可以推出:
B83048其实是FindResourceA
B83048+1其实是 LoadResource
动态调试
我们发现壳程序动态还原回iat表

继续运行发现,这两个地址发生了变化

这两个hook后的地址要后面动态填进去或者将程序的动态基址关闭pass

重新修复
将这两个地址替换后重新修复,经过比对发现第一个函数传入的参数对不上
很遗憾,运行不了,想让他运行,我大体是病了,有人会的分享在评论区
这就是典型的无效VMProtect保护,这两个函数对分析没有影响
三:静态分析
IDA打开后我们看到有调用了2个主要函数

我们逐个分析
main函数中的sub_B81620
分析过程
点进去可以看到一堆动态解密的字符串,简单分析可以知道,这是动态获取WindowsAPI函数到存放到buffer中

接下来是获取C:\WINDOWS\SysWOW64\目录并拼接成C:\WINDOWS\SysWOW64\svchost.exe

之后是简单的进程伪装+远程线程注入执行代码


主要功能
sub_B81620先xor解密字符串,将动态申请api存方到buf中,挂起svchost进程远程执行sub_B814e0中的代码
那么远程执行的代码有什么呢->分析sub_B814e0函数
分析思路

主要功能
对文件中的字符串异或加密后写回文件中
main函数中的startaddr函数
分析思路
其中有两个函数(B83048,B83048+1)被虚拟化了,下面是我猜的功能但不影响结果

我们需要知道lpbuffer是什么东西,还有sub_B81100干了什么
先分析lpbuffer
我们通过x64debug动态分析
在lockresource中下断点方便获取返回的lpbuffer地址(eax)

转到返回后的lpbuffer地址(eax)中,运行前记录下刚刚的大小(esi中)是B800,然后运行到解密完,可以看到PE文件的标志,说明资源解密后是一个新的pe文件

将内存中的pe文件dump出来,保存到为a.exe文件

接下来先分析刚刚没看完的sub_B81100函数
这个函数主要是进程镂空的技术思路,可以学习下
分析思路

这里有个分支它会先检查CPU标志考虑是否重定位
(为什么判断cpu架构决定重定位,我也不知道,我觉得直接修复也行)

下面是遍历重定位表重定位

修改跳转地址

总结思路
这里是一个免杀的进程镂空,它先挂起svchost进程,再对svchost进程中的代码进行替换,达到隐藏进程的目的。
分析dump下来的a.exe
PE信息

ida分析
main函数只有一个重要函数,

分析sub_401000

分析sub_401230


一般勒索软件不会留着源文件
进入加密函数sub_401360分析

用AES加密能够很快的加密,但是我感觉这个有跟没有一样,典型的无效加密
整理程序运行流程
程序运行->远程线程注入代码->对flag.txt进行xor加密->创建进程镂空(免杀)->运行病毒可执行文件->对flag.txt进行AES加密
解密
import Cryptodome.Cipher.AES as AES
key = [0x3B,0x7E,0x15
,0x16,0x38,0xAE,0xD2,0xA6,0xBB,0xF7,0x15,0x88,0x19,0xCF,0x4F,0x3C]
txt = open("./flag.txt.cry", "rb").read()
flag = AES.new(bytes(key), AES.MODE_ECB).decrypt(txt)
print(''.join(chr(i ^ 0x9) for i in flag))
总结
加密过程很简单,这道题在于理解进程镂空,动态加载shellcode, vmprotect脱壳等
勒索病毒分析-2024wdb-re2的更多相关文章
- "WannaCry"勒索病毒用户处置指南
"WannaCry"勒索病毒用户处置指南 原文: http://mp.weixin.qq.com/s/ExsribKum9-AN1ToT10Zog 卡巴斯基,下载官网:h ...
- 技术分析 | 新型勒索病毒Petya如何对你的文件进行加密
6月27日晚间,一波大规模勒索蠕虫病毒攻击重新席卷全球. 媒体报道,欧洲.俄罗斯等多国政府.银行.电力系统.通讯系统.企业以及机场都不同程度的受到了影响. 阿里云安全团队第一时间拿到病毒样本,并进行了 ...
- [转帖]"微信支付"勒索病毒制造者被锁定 传播、危害和疫情终极解密 --- 可以学习下一年火绒团队的分析原理的精神.
"微信支付"勒索病毒制造者被锁定 传播.危害和疫情终极解密 https://www.cnbeta.com/articles/tech/794851.htm 12月1日,首个要求&q ...
- 从Wannacry到WannaRen:螣龙安科带你深度分析勒索病毒原理
从Wannacry到WannaRen:螣龙安科2020年4月7日,360CERT监测发现网络上出现一款新型勒索病毒wannaRen,该勒索病毒会加密windows系统中几乎所有的文件,并且以.Wann ...
- 会"说话"的勒索病毒Cerber
最近有个案子与勒索病毒有关,证物是个台式机,运行Windows 7 64bit操作系统,委托方是某高科技公司,希望能调查出事发的关键时间点.感染来源及途径.恶意程序文件名等相关信息. 在对证物计算机进 ...
- Shade勒索病毒 中敲诈病毒解密 如 issbakev9_Data.MDF.id-A1E.f_tactics@aol.com.xtbl 解决方法
[客户名称]:福建福州市某烘焙连锁企业 [软件名称]:思迅烘焙之星V9总部 [数据库版本]:MS SQL server 2000 [数据库大小]:4.94GB [问题描述]:由于客户服务器安全层薄弱 ...
- Petya勒索病毒疫苗出现,分分钟让电脑对病毒免疫
继wannacry之后,Petya勒索软件攻击再次席卷全球,对欧洲.俄罗斯等多国政府.银行.电力系统.通讯系统.企业以及机场造成了不同程度的影响. 研究发现,Petya 会锁定磁盘的 MFT 和 MB ...
- Android端恶意锁屏勒索应用分析
一.前言 5月12日,一场全球性互联网灾难悄然而至,一款名为WannaCRY的PC端恶意勒索软件利用NSA泄漏的危险漏洞“永恒之蓝”,给100多个国家和地区10万台电脑造成了巨大的损失.到2017年为 ...
- Window应急响应(三):勒索病毒
0x00 前言 勒索病毒,是一种新型电脑病毒,主要以邮件.程序木马.网页挂马的形式进行传播.该病毒性质恶劣.危害极大,一旦感染将给用户带来无法估量的损失.这种病毒利用各种加密算法对文件进行加密,被 ...
- 安全紧急预警-防范新型 Sigrun 勒索病毒
近日,互联网上出现一种 Sigrun 勒索病毒,其通过垃 圾邮件.网站捆绑软件等方式进行传播.该病毒一旦植入到 用户的服务器,将把系统文件加密为.sigrun 的文件,进而 向受害者勒索虚拟货币.该新 ...
随机推荐
- linux下创建idea的桌面快捷方式
!!!使用linux系统安装idea才会用到: 在桌面上,新建文件,命名为:idea.desktop , (或者在别的地方创建后再放到桌面) 使用 vim 编辑该文件(或者不新建,直接vi idea. ...
- Monaco Editor 中使用在线版 Copilot
我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品.我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值. 本文作者:文长 引言 现代软件开发中,代码编辑器的功能不断演进,以满 ...
- C++ 创建进程的方法
1. C++中创建进程的代码示例: // ProcessDemo.cpp : 此文件包含 "main" 函数.程序执行将在此处开始并结束. // #include<windo ...
- [国家集训队] Tree2 题解
加边删边 \(LCT\),标记下放同 \(luogu\) 线段树 \(2\) 一题. 时间复杂度 \(O(n\log n)\),第一次交的时候我维护 \(sum\) 不维护 \(sz\ WA\) 完了 ...
- TypeError: Cannot read properties of null (reading 'level')
一.分析问题 1.一个下拉框组件的更新由另一个下拉框组件控制被动更新列表,子级下拉框的值是由父级下拉框的值调用接口获取,每次父级下拉框值的改变都会改变子级下拉框的数据源也就是会改变子级下拉框的opti ...
- Python基础--python数据结构(字符串、列表和元组)
前言 !!!注意:本系列所写的文章全部是学习笔记,来自于观看视频的笔记记录,防止丢失.观看的视频笔记来自于:哔哩哔哩武沛齐老师的视频:2022 Python的web开发(完整版) 入门全套教程,零基础 ...
- 《空间三角面片对相交判断算法》的matlab实现_ 0.2微秒
function [flag] = InsectTriPatch(T1,T2) % 判断两个空间三角形面片是否相交 % T1=[0 0 0; % 2 0 0; % 0 1.5 0; % 0 0 1]; ...
- C/C++显示类型转换的位拓展方式
最近用verilator写模块的tb,在这里卡了好久(测半天都是C++写的问题) 要点 变量从小位宽到大位宽显示类型转换(explicit cast)时的位拓展方式,取决于转换前变量的符号性. 倘若转 ...
- U盘制作、安装Ubuntu系统
制作 ubuntu U盘启动盘 下载Ubuntu镜像 打开 Ubuntu 官网:https://ubuntu.com/download/desktop ,进入页面后,点击右边的[Download]按钮 ...
- go krotos proto编译引用外部包 was not found or had errors
前言 kratos protos 生成 pb.go 文件时,会出现引用其他 proto 文件报错 was not found or had errors,因找不到此文件而无法编译. 解决 首先我们先了 ...