当前位置: 首页 > news >正文

恶意代码分析:在沙箱中运行勒索病毒,用 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.jsqmd.com/news/263759/

相关文章:

  • 导师严选2026 AI论文网站TOP8:继续教育写作全攻略
  • LLM 推理加速:深入 vLLM 源码,揭秘 PagedAttention 如何让吞吐量提升 20 倍?
  • 完整教程:【Go/Python/Java】基础语法+核心特性对比
  • 数据交易中的数据质量评估方法
  • 数据结构3.0 栈、队列和数组
  • 算子优化实战:手写 Triton Kernel,将 LayerNorm 算子的执行时间压缩 50%
  • 深度测评自考必备一键生成论文工具TOP8
  • Linux实操篇
  • 51单片机智能遮阳篷窗户帘衣架蓝牙APP光雨滴检测41(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • Java 并发探秘:JCTools 源码剖析,为什么 Netty 放弃 JDK 自带队列而选择 MpscArrayQueue?
  • todo
  • Go 调度器 (GMP) 揭秘:从汇编角度看 Goroutine 是如何实现“协程切换”的?
  • 【创新未发表】基于matlab鸡群算法CSO和自适应双种群协同鸡群算法ADPCCSO无人机避障三维航迹规划【含Matlab源码 14980期】
  • 第 174 场双周赛Q2——3810. 变成目标数组的最少操作次数
  • 【无人机三维路径规划】基于matlab鸡群算法CSO和自适应双种群协同鸡群算法ADPCCSO复杂山地模型下无人机路径规划【含Matlab源码 14981期】
  • Day22-20260118
  • 强烈安利9个AI论文写作软件,专科生搞定毕业论文!
  • 【雷达跟踪】基于matlab面向目标跟踪的雷达干扰方法:提升航空器战场生存力的关键技术【含Matlab源码 14983期】复现含文献
  • 【雷达相控阵】毫米波相控阵中空间Zadoff-Chu调制快速波束对准【含Matlab源码 14977期】
  • 卷积神经网络的开端:$LeNet-5$
  • 【雷达相控阵】基于matlab毫米波相控阵中空间Zadoff-Chu调制快速波束对准【含Matlab源码 14977期】
  • 【心电信号ECG】SVM心电图心搏检测与分类【含Matlab源码 14982期】复现含文献
  • 【心电信号ECG】基于matlab SVM心电图心搏检测与分类【含Matlab源码 14982期】复现含文献
  • 【心血管疾病】心脏病数据集Kaggle医学特征二元分类预测心血管疾病【含Matlab源码 14984期】含报告
  • 社交网络数据科学:完整项目实战指南
  • Hive与DynamoDB集成:云原生大数据方案
  • 【创新未发表】鸡群算法CSO和自适应双种群协同鸡群算法ADPCCSO无人机避障三维航迹规划【含Matlab源码 14980期】
  • Flutter × OpenHarmony 跨端汇率转换应用:货币数据模型与页面实现
  • 【无人机三维路径规划】鸡群算法CSO和自适应双种群协同鸡群算法ADPCCSO复杂山地模型下无人机路径规划【含Matlab源码 14981期】
  • 【雷达跟踪】面向目标跟踪的雷达干扰方法:提升航空器战场生存力的关键技术【含Matlab源码 14983期】复现含文献