检查相关信息



可以看到病毒存在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![](https://img2024.cnblogs.com/blog/2450496/202505/2450496-20250501144002299-1902041684.png)
,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的更多相关文章

  1. "WannaCry"勒索病毒用户处置指南

    "WannaCry"勒索病毒用户处置指南   原文: http://mp.weixin.qq.com/s/ExsribKum9-AN1ToT10Zog    卡巴斯基,下载官网:h ...

  2. 技术分析 | 新型勒索病毒Petya如何对你的文件进行加密

    6月27日晚间,一波大规模勒索蠕虫病毒攻击重新席卷全球. 媒体报道,欧洲.俄罗斯等多国政府.银行.电力系统.通讯系统.企业以及机场都不同程度的受到了影响. 阿里云安全团队第一时间拿到病毒样本,并进行了 ...

  3. [转帖]"微信支付"勒索病毒制造者被锁定 传播、危害和疫情终极解密 --- 可以学习下一年火绒团队的分析原理的精神.

    "微信支付"勒索病毒制造者被锁定 传播.危害和疫情终极解密 https://www.cnbeta.com/articles/tech/794851.htm 12月1日,首个要求&q ...

  4. 从Wannacry到WannaRen:螣龙安科带你深度分析勒索病毒原理

    从Wannacry到WannaRen:螣龙安科2020年4月7日,360CERT监测发现网络上出现一款新型勒索病毒wannaRen,该勒索病毒会加密windows系统中几乎所有的文件,并且以.Wann ...

  5. 会"说话"的勒索病毒Cerber

    最近有个案子与勒索病毒有关,证物是个台式机,运行Windows 7 64bit操作系统,委托方是某高科技公司,希望能调查出事发的关键时间点.感染来源及途径.恶意程序文件名等相关信息. 在对证物计算机进 ...

  6. Shade勒索病毒 中敲诈病毒解密 如 issbakev9_Data.MDF.id-A1E.f_tactics@aol.com.xtbl 解决方法

    [客户名称]:福建福州市某烘焙连锁企业 [软件名称]:思迅烘焙之星V9总部 [数据库版本]:MS SQL server 2000  [数据库大小]:4.94GB [问题描述]:由于客户服务器安全层薄弱 ...

  7. Petya勒索病毒疫苗出现,分分钟让电脑对病毒免疫

    继wannacry之后,Petya勒索软件攻击再次席卷全球,对欧洲.俄罗斯等多国政府.银行.电力系统.通讯系统.企业以及机场造成了不同程度的影响. 研究发现,Petya 会锁定磁盘的 MFT 和 MB ...

  8. Android端恶意锁屏勒索应用分析

    一.前言 5月12日,一场全球性互联网灾难悄然而至,一款名为WannaCRY的PC端恶意勒索软件利用NSA泄漏的危险漏洞“永恒之蓝”,给100多个国家和地区10万台电脑造成了巨大的损失.到2017年为 ...

  9. Window应急响应(三):勒索病毒

    0x00 前言 ​ 勒索病毒,是一种新型电脑病毒,主要以邮件.程序木马.网页挂马的形式进行传播.该病毒性质恶劣.危害极大,一旦感染将给用户带来无法估量的损失.这种病毒利用各种加密算法对文件进行加密,被 ...

  10. 安全紧急预警-防范新型 Sigrun 勒索病毒

    近日,互联网上出现一种 Sigrun 勒索病毒,其通过垃 圾邮件.网站捆绑软件等方式进行传播.该病毒一旦植入到 用户的服务器,将把系统文件加密为.sigrun 的文件,进而 向受害者勒索虚拟货币.该新 ...

随机推荐

  1. 硬件设计:POE--POE受电设备(PD)电路工作原理

    参考资料:解决POE PD设计挑战的有效的解决方案 POE电源模块的介绍特性和芯片的详细资料概述 如何应对PoE受电设备设计挑战 以太网供电中受电设备的芯片设计与研究 以太网供电检测和分级接口电路设计 ...

  2. Q:浏览器不能上网,但是可以ping通外网ip,dns配置也没问题(TCP/IP 无法建立传出连接)

    问题症状 每隔一段时间,浏览器不能访问外网,重启电脑又正常,重置网卡无效 可以ping通外网ip地址,可以ping通外网域名 ping不通外网端口端口 查看日志 每次出现不能上网情况时都会有至少两条T ...

  3. 用豆包+Kimi,一分钟生成想要的PPT!

    大家好!在快节奏的现代社会,时间就是金钱.对于经常需要制作PPT的朋友们来说,如何快速.高效地完成演示文稿的制作一直是个头疼的问题.今天,我要给大家介绍如何利用AI工具:豆包+kimi,让你在一分钟内 ...

  4. vivo HTTPDNS 端到端体验优化实践

    作者:来自 vivo 互联网运维团队- Zhang Qianqian 在信息时代,用户的手机应用访问量日益增多,DNS 解析作为连接互联网的关键环节,也被提出了更高要求.这一背景下,HTTPDNS 域 ...

  5. [HDU4625] JZPTREE+[国家集训队] Crash 的文明世界 题解

    老师发福利,放了两道一毛一样的题. 考虑无视战术,直接化简: \[\sum_{v=1}^ndis(u,v)^k=\sum_{v=1}^n\sum_{i=0}^k\begin{Bmatrix}k\\i\ ...

  6. spring官宣接入deepseek,真的太香了~

    写在前面 经常逛Spring官网(https://docs.spring.io/spring-ai/reference/api/chat/deepseek-chat.html)的小伙伴会发现, Spr ...

  7. VMware16虚拟机安装激活教程

    1.开始安装前需要准备好的软件 VMware-workstation-full-16--虚拟机软件(必要) 获取方式: 官方下载地址:https://www.vmware.com/cn/product ...

  8. win11 输入法自定义短语输出日期时间变量

    自定义短语中输入%yyyy%-%MM%-%dd% %HH%:%mm%:%ss%

  9. 基于Qt的在QGraphicsView中绘制带有可动拐点的连线的一种方法

        摘要:本文详细介绍了基于Qt框架在`QGraphicsView`中实现带有可动拐点连线的绘制方法.通过自定义`CustomItem`和`CustomPath`类,结合`QGraphicsIte ...

  10. PHP中&&与and、||与or的区别

    https://blog.csdn.net/asty9000/article/details/80652064 在PHP中,&&与and都表示逻辑与,||与or都表示逻辑或,并且它们都 ...