恶意代码分析:在沙箱中运行勒索病毒,用 IDA Pro 逆向它的加密逻辑

标签:#MalwareAnalysis #ReverseEngineering #IDAPro #Ransomware #CyberSecurity #Cryptography

⚠️ 高危警告:本文涉及真实恶意样本分析技术。所有操作必须在断网、隔离的虚拟机中进行。严禁在物理机或生产环境中尝试!严禁传播恶意样本!


🧪 一、 搭建“生化实验室”:隔离环境

在处理病毒之前,必须确保它逃不出去。
你需要一个脏环境 (Dirty Environment)

  1. 虚拟机:VMware 或 VirtualBox,安装 Windows 7/10。
  2. 断网:网络适配器设置为“仅主机模式”或直接拔掉网线,防止它连接 C2 服务器下载更多载荷或横向传播。
  3. 快照:在运行病毒前,务必拍摄快照。分析完后一键还原,像什么都没发生过一样。
  4. 监控工具
  • Process Monitor (ProcMon):监控文件和注册表操作。
  • Wireshark:监控网络请求(即使断网也要看它尝试连哪里)。
  • IDA Pro / x64dbg:静态与动态调试器。

💣 二、 动态分析:引爆样本

我们双击运行样本malware.exe
瞬间,桌面壁纸变了,文件打不开了,勒索信弹出来了。

ProcMon 捕捉到了什么?
你会看到疯狂的CreateFile->ReadFile->WriteFile操作序列。病毒正在遍历硬盘,把.docx,.jpg,.pdf等高价值文件读入内存,加密后覆盖源文件。

勒索病毒行为流程图 (Mermaid):

加密循环

存在 (已运行)

不存在

找到文件

AES/ChaCha20

RSA 公钥

写入头部

遍历结束

病毒启动

检查互斥体?

退出

创建互斥体

生成会话密钥 Session Key

遍历文件系统

读取文件内容

加密数据

加密会话密钥

覆写文件

重命名后缀 .locked

弹出勒索信

删除卷影副本 vssadmin


🔬 三、 静态分析:IDA Pro 里的上帝视角

动态分析让我们知道了“它干了什么”,现在我们要通过 IDA Pro 搞清楚“它是怎么干的”。

将样本拖入 IDA Pro,等待分析完成。

1. 寻找入口点 (The Entry Point)

恶意软件通常会加壳(Packer)来对抗分析。如果 IDA 看到的图极其简单或有很多未识别的数据,说明加壳了。
假设我们已经通过 ESP 定律脱壳,看到了真正的OEP (Original Entry Point)

2. 定位加密函数 (The Crypto Routine)

如何在几十万行汇编中找到加密逻辑?
技巧:搜索导入表 (Imports)。
勒索病毒通常使用 Windows 自带的加密 API (Advapi32.dll)。在 IDA 的 Imports 窗口搜索以下函数:

  • CryptAcquireContext
  • CryptGenKey(生成密钥)
  • CryptEncrypt(核心加密函数)
  • CryptExportKey
3. 逆向 AES 加密逻辑

双击CryptEncrypt的交叉引用 (Xref),我们定位到了核心子程序sub_401A20
通过 F5 (Decompiler) 查看伪代码:

// IDA 伪代码示例 (经过人工修饰)void__cdeclEncryptFile(char*FileName,HCRYPTKEY hPublicKey){// 1. 生成随机的 AES 密钥 (Session Key)HCRYPTKEY hSessionKey;CryptGenKey(hProv,CALG_AES_256,CRYPT_EXPORTABLE,&hSessionKey);// 2. 打开受害者文件HANDLE hFile=CreateFileA(FileName,...);// 3. 循环读取并加密文件块while(ReadFile(hFile,buffer,1024,&bytesRead,0)){// 核心加密:使用 AES 密钥加密文件内容CryptEncrypt(hSessionKey,0,0,0,buffer,&bytesRead,1024);WriteFile(hFile,buffer,bytesRead,...);}// 4. 最关键的一步:用黑客的 RSA 公钥,加密刚才生成的 AES 密钥BYTE encryptedSessionKey[256];DWORD keyLen=256;CryptExportKey(hSessionKey,hPublicKey,SIMPLEBLOB,0,encryptedSessionKey,&keyLen);// 5. 将加密后的 AES 密钥写入文件尾部或头部// 只有拥有 RSA 私钥的黑客才能解开这个 Key,进而解密文件WriteFile(hFile,encryptedSessionKey,keyLen,...);}

🧩 四、 核心逻辑揭秘:混合加密体制

为什么我们不能自己写个解密器?
通过 IDA 的分析,我们看清了它的加密体制,这通常是一个混合加密 (Hybrid Encryption)方案:

  1. 对称加密 (快):使用AES-256ChaCha20加密文件内容。
  • 特点:速度快,适合加密大文件。
  • 弱点:如果密钥泄露,文件即被破解。
  1. 非对称加密 (强):使用RSA-2048ECC加密上面的 AES 密钥。
  • 特点:公钥加密,私钥解密。
  • 公钥:硬编码在病毒程序里(我们可以从 IDA 里提取出来,但这没用,它只能用来加密)。
  • 私钥:在黑客的服务器上,从未出现在受害者的电脑里。

结论:除非你能攻破 RSA-2048 数学难题,或者黑客在实现算法时犯了蠢(比如使用了固定的随机数种子),否则在没有私钥的情况下,文件在数学上是无法解密的


🛡️ 五、 攻防博弈:Kill Switch 与 疫苗

在分析 WannaCry 时,安全研究员发现它在加密前会尝试访问一个很长且奇怪的域名。
如果域名访问失败,它就继续感染;如果访问成功,它就停止运行。
这就是Kill Switch (自毁开关)

在 IDA 中,这通常表现为:

if(InternetOpenUrlA(hInternet,"http://www.iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com",...)){ExitProcess(0);// 访问成功,直接退出,不加密}// 访问失败,开始干坏事...StartInfection();

分析师一旦在 IDA 中发现这种逻辑,立刻注册这个域名,就能瞬间在全球范围内“关停”病毒的传播。


🎯 总结

逆向勒索病毒是一场与时间的赛跑。
通过IDA Pro,我们透视了病毒的骨骼;通过ProcMon,我们记录了它的罪行。
虽然对于使用了完美密码学的勒索病毒,我们往往无法直接解密文件,但逆向分析能帮助我们:

  1. 提取 IOC (威胁指标):提取 C2 域名、Hash 值,更新防火墙规则。
  2. 发现 Kill Switch:阻断传播。
  3. 找逻辑漏洞:有时候黑客也会写 Bug(比如密钥生成随机性不足),那是受害者唯一的生机。

Next Step:
去下载一个简单的CrackMe(合法的逆向练习程序),尝试用 IDA Pro 找到它的注册码生成逻辑,写一个 KeyGen(注册机)。这是成为逆向工程师的第一步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1179220.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

导师严选2026 AI论文网站TOP8:继续教育写作全攻略

导师严选2026 AI论文网站TOP8:继续教育写作全攻略 2026年AI论文写作工具测评:为何需要这份榜单? 随着人工智能技术在学术领域的深入应用,越来越多的科研人员和继续教育学习者开始依赖AI写作工具提升论文撰写效率。然而&#xff0c…

LLM 推理加速:深入 vLLM 源码,揭秘 PagedAttention 如何让吞吐量提升 20 倍?

标签: #LLM #vLLM #PagedAttention #CUDA #Inference #SystemDesign 📉 前言:显存碎片的“诅咒” 在 vLLM 出现之前,HuggingFace Transformers 的默认推理极其浪费显存。 LLM 推理是自回归的(生成一个 Token,存入 KV Cache,再生成下一个)。传统的 KV Cache 管理方式是…

完整教程:【Go/Python/Java】基础语法+核心特性对比

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

数据交易中的数据质量评估方法

数据交易避坑指南:从头搭建你的数据质量评估体系 一、引言:数据交易中,你踩过多少“质量坑”? 去年,我帮一家零售企业做数据交易咨询时,遇到过一个典型的“踩坑案例”: 这家企业花20万买了一份“…

数据结构3.0 栈、队列和数组

一、栈的基本概念①栈的定义②栈的基本操作③常考题型④小结二、栈的顺序存储实现①顺序栈的定义②初始化操作③进栈操作④出栈操作⑤读栈顶元素操作⑥共享栈⑦小结三、栈的链式存储实现①链栈的定义②小结#include <stdio.h> #include <stdlib.h>// 链栈的结点结构…

算子优化实战:手写 Triton Kernel,将 LayerNorm 算子的执行时间压缩 50%

标签: #Triton #CUDA #AICompiler #HPC #PyTorch #LayerNorm 📉 前言:为什么 PyTorch 原生算子还不够快? PyTorch 的 torch.nn.LayerNorm 虽然底层调用了 cuDNN 或 ATen 的优化实现,但在处理特定 Shape 或与其他算子结合时,依然存在性能损耗: 显存带宽瓶颈:LayerNorm…

深度测评自考必备一键生成论文工具TOP8

深度测评自考必备一键生成论文工具TOP8 自考论文写作工具测评&#xff1a;为何需要一份权威榜单&#xff1f; 随着自考人数逐年攀升&#xff0c;论文写作成为众多考生面临的“拦路虎”。从选题构思到内容撰写&#xff0c;再到格式调整&#xff0c;每一个环节都可能成为拖延或出…

Linux实操篇

1.1.vim快速入门1.2 vim快捷键1.3用户关机重启1.4登录注销 2.1用户管理12.2用户管理2

51单片机智能遮阳篷窗户帘衣架蓝牙APP光雨滴检测41(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

51单片机智能遮阳篷窗户帘衣架蓝牙APP光雨滴检测41(设计源文件万字报告讲解)&#xff08;支持资料、图片参考_相关定制&#xff09;_文章底部可以扫码 产品功能描述&#xff1a; 本系统由STC89C52单片机、雨滴传感器、光照传感器、蓝牙模块、继电器、拨动开关及电源组成 1、可以…

Java 并发探秘:JCTools 源码剖析,为什么 Netty 放弃 JDK 自带队列而选择 MpscArrayQueue?

标签&#xff1a; #Java #Netty #JCTools #Concurrency #Performance #FalseSharing&#x1f422; 前言&#xff1a;JDK 队列的痛点 在 Netty 的 Reactor 线程模型中&#xff0c;EventLoop 本质上是一个单线程的执行器。 它需要处理两类任务&#xff1a; IO 事件&#xff1a;来…

todo

todo作者很懒,所以经常会立flag,这里是他写下的todo list QAQtodo 创建时间 状态埃氏筛分块筛法 26/1/18 未完成

Go 调度器 (GMP) 揭秘:从汇编角度看 Goroutine 是如何实现“协程切换”的?

标签&#xff1a; #Go #Golang #GMP #Assembly #Runtime #Concurrency&#x1f680; 前言&#xff1a;GMP 的本质是“复用” 操作系统线程&#xff08;OS Thread&#xff09;太重了。创建一个线程需要 1-8MB 栈内存&#xff0c;切换一次需要进入内核态&#xff0c;耗时 1-2 微秒…

【创新未发表】基于matlab鸡群算法CSO和自适应双种群协同鸡群算法ADPCCSO无人机避障三维航迹规划【含Matlab源码 14980期】

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到海神之光博客之家&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49…

第 174 场双周赛Q2——3810. 变成目标数组的最少操作次数

题目链接&#xff1a;3810. 变成目标数组的最少操作次数&#xff08;中等&#xff09; 算法原理&#xff1a; 解法&#xff1a;模拟 38ms击败11.30% 时间复杂度O(N) ①先计算出哪些是需要修改的 ②统计需要修改的下标 ③原数组中相同的数可以一起修改&#xff0c;所以只要统计不…

【无人机三维路径规划】基于matlab鸡群算法CSO和自适应双种群协同鸡群算法ADPCCSO复杂山地模型下无人机路径规划【含Matlab源码 14981期】

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到海神之光博客之家&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49…

Day22-20260118

摘要 本文实现了一个基于Java的交互式计算器程序,具有加减乘除四种运算功能。程序通过定义四个独立的方法(add、subtract、multiply、divide)实现基本运算,采用while循环和switch结构实现用户交互界面。用户可以循环…

强烈安利9个AI论文写作软件,专科生搞定毕业论文!

强烈安利9个AI论文写作软件&#xff0c;专科生搞定毕业论文&#xff01; 论文写作的救星&#xff0c;AI 工具如何改变你的学术之路 对于专科生来说&#xff0c;毕业论文可能是大学生活中最令人头疼的一关。从选题、查资料到撰写、修改&#xff0c;每一步都充满了挑战。而如今&a…

【雷达跟踪】基于matlab面向目标跟踪的雷达干扰方法:提升航空器战场生存力的关键技术【含Matlab源码 14983期】复现含文献

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到海神之光博客之家&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49…

【雷达相控阵】毫米波相控阵中空间Zadoff-Chu调制快速波束对准【含Matlab源码 14977期】

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;Matlab领域博客之家&#x1f49e;&…

卷积神经网络的开端:$LeNet-5$

卷积神经网络的开端:\(LeNet-5\)[!NOTE] LeNet-5神经网络是1998年YANN LECUN等人在论文Gradient-Based Learning Applied to Document Recognition中提出的一种颠覆性的算法。 说实在的该方法本来是用来解决手写字母也…