文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

看我如何恢复被MaMoCrypt勒索软件加密的数据

2024-12-03 17:46

关注

MaMoCrypt是一款臭名昭著的勒索软件,该勒索软件从去年的十二月份开始活跃,深受其害的用户可以算是不计其数了。那么在这篇文章中,我们将告诉大家如何恢复、解密被MaMoCrypt勒索软件加密的数据。

MaMoCrypt是一款非常与众不同的勒索软件,这款勒索软件采用Delphi开发,并且使用了mpress进行封装,是MZRevenge的一个变种版本。

[[350909]]

勒索软件行为

虽然MZR密钥在密钥生成或加密的过程中不会发生变化,但掩码会持续更新。它们的生成基于的是SHA1、SHA512和某些自定义算法的混合计算结果。每一个AES和Twofish密钥还会使用SHA512进行16次计算以及字节异或。

掩码和密钥生成

  1. *(int*)mask_in = offset
  2.  
  3.  for (int i = 0; i < 0x800; ++i) { 
  4.  
  5.   
  6.  
  7.      SHA1(mask_in, 0x84, mask_out); 
  8.  
  9.      *(int*)mask_in = i + 1 + offset; 
  10.  
  11.      *(mask_in + 3 + (i & 0x7F) + 1) ^= mask_out[0]; 
  12.  
  13.      mask[i] = mask_out[1]; 
  14.  
  15.  } 
  16.  
  17.  offset += 0x800; 
  18.  
  19.  aes_key = generate_key(mask, mzrkey_private.c_str(), 0x800, mzrkey_private.size()); 
  20.  
  21.   
  22.  
  23.  for (int i = 0; i < 0x200; ++i) { 
  24.  
  25.   
  26.  
  27.  SHA1(mask_in, 0x84, mask_out); 
  28.  
  29.      *(int*)mask_in = i + 1 + offset; 
  30.  
  31.      *(mask_in + 3 + (i & 0x7F) + 1) ^= mask_out[0]; 
  32.  
  33.      mask[i] = mask_out[1]; 
  34.  
  35.  } 
  36.  
  37.  offset += 0x200; 
  38.  
  39.  twofish_key = generate_key(mask, mzrkey_public.c_str(), 0x200, mzrkey_public.size()); 
  40.  
  41. generate_key: 
  42.  
  43.  int mzrkey_size_bswap = _byteswap_ulong(mzrkey_len); 
  44.  
  45.  int mask_size_bswap = _byteswap_ulong(mask_len); 
  46.  
  47.  for (int i = 0; i < key_SIZE; ++i) { 
  48.  
  49.    ((int*)in)[0] = _byteswap_ulong(i); 
  50.  
  51.    for (int j = 0; j < i; ++j) 
  52.  
  53.       in[j + 4] = key[j]; 
  54.  
  55.    *((int*)(in + 4 + i)) = _byteswap_ulong(1); 
  56.  
  57.    *((int*)(in + 8 + i)) = mask_size_bswap; 
  58.  
  59.    memcpy(in + 3 * sizeof(int) + i, mask, mask_len); 
  60.  
  61.    memcpy(in + 3 * sizeof(int) + mask_len + i, &mzrkey_size_bswap, 4); 
  62.  
  63.    memcpy(in + 3 * sizeof(int) + mask_len + 4 + i, mzrkey, mzrkey_len); 
  64.  
  65.    SHA512(in, mask_len + mzrkey_len + 4 * sizeof(int) + i, out); 
  66.  
  67.    for (int j = 0; j < SHA512_DIGEST_LENGTH; ++j) 
  68.  
  69.        key[i] ^= out[j]; 
  70.  
  71.  } 

AES CBC的IV将使用AES 128 ECB生成,位置在一个16字节缓冲区内。类似的,Twofish NOFB的IV将使用Twofish 128 ECB生成,位置同样在一个16字节缓冲区内。掩码的初始内容生成如下:

  1. memset(mask_in, MASK_IN_SZ, 0); 
  2.  
  3.  memset(mask_out, MASK_OUT_SZ, 0); 
  4.  
  5.   
  6.  
  7.  for (int i = 0; i < 0x80; ++i) { 
  8.  
  9.    SHA1(mask_in, 0x84, mask_out); 
  10.  
  11.    *(int*)mask_in = i + 1; 
  12.  
  13.    *(mask_in + 3 + i + 1) = mask_out[0]; 
  14.  
  15.  } 

实际上,这种加密机制我们此前从未在其他勒索软件中见到过,而且恶意代码还会对整个文件系统进行加密,该勒索软件的硬编码文件和驱动器列表如下:

  1. C:\Program Files\Steam 
  2.  
  3. C:\Program Files (x86)\Steam 
  4.  
  5. [DRIVES A-Z, WITHOUT C] 
  6.  
  7. C:\Users\%user%\AppData\Roaming\Microsoft\Windows\Recent\ 
  8.  
  9. C:\Users\%user%\Pictures 
  10.  
  11. C:\Users\%user%\Music 
  12.  
  13. C:\Users\%user%\Videos 
  14.  
  15. C:\Users\%user%\Documents 
  16.  
  17. C:\Users\Public\Documents 
  18.  
  19. C:\Users\Public\Videos 
  20.  
  21. C:\Users\Public\Music 
  22.  
  23. C:\Users\Public\Pictures 
  24.  
  25. C:\Users\%user%\Downloads 
  26.  
  27. C:\Users\%user%\Favorites 
  28.  
  29. ::{645FF040-5081-101B-9F08-00AA002F954E} (Recycle Bin) 
  30.  
  31. C:\Users\Administrator 
  32.  
  33. C:\Users\Public 
  34.  
  35. C:\Users\Default 
  36.  
  37. C:\Users\%user%\Desktop 
  38.  
  39. C:\Users\Public\Desktop 
  40.  
  41. C:\Users\%user%\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar 
  42.  
  43. C:\Users\%user%\AppData\Roaming\Microsoft\Windows\Start Menu 
  44.  
  45. C:\ProgramData\Microsoft\Windows\Start Menu\ 

由于掩码/密钥生成使用了一个偏移量来代表每一个文件的递增,那么解密的过程将依赖于文件的加密文件夹。

这款勒索软件支持的文件加密类型如下:

  1. .cs;.lnk;.mp3;.jpg;.jpeg;.raw;.tif;.gif;.png;.bmp;.3dm;.max;.accdb;.db;.dbf;.mdb;.pdb;.sql;.dwg;.dxf;.c;.cpp;.cs;.h;.php;.asp;.rb;.java;.jar;.class;.py;.js;.aaf;.aep;.aepx; 
  2.  
  3.   
  4.  
  5. .plb;.prel;.prproj;.aet;.ppj;.psd;.indd;.indl;.indt;.indb;.inx;.idml;.pmd;.xqx;.xqx;.ai;.eps;.ps;.svg;.swf;.fla;.as3;.as;.txt;.doc;.dot;.docx;.docm;.dotx;.dotm;.docb;.rtf;.wpd; 
  6.  
  7.   
  8.  
  9. .wps;.msg;.pdf;.xls;.xlt;.xlm;.xlsx;.xlsm;.xltx;.xltm;.xlsb;.xla;.xlam;.xll;.xlw;.ppt;.pot;.pps;.pptx;.pptm;.potx;.potm;.ppam;.ppsx;.ppsm;.sldx;.sldm;.wav;.aif;.iff;.m3u;.m4u; 
  10.  
  11.   
  12.  
  13. .mid;.mpa;.wma;.ra;.avi;.mov;.mp4;.3gp;.mpeg;.3g2;.asf;.asx;.flv;.mpg;.wmv;.vob;.m3u8;.mkv;.dat;.csv;.efx;.sdf;.vcf;.xml;.ses;.rar;.zip;.7zip;.dtb;.bat;.apk;.vb;.sln;.csproj; 
  14.  
  15.   
  16.  
  17. .vbproj;.hpp;.asm;.lua;.ibank;.design;.aspx;.bak;.obj;.sqlite;.sqlite3;.sqlitedb;.back;.backup;.one;.pst;.url;.onetoc2;.m4a;.m4v;.ogg;.hwp;.HWP;.OGG;.M4V;.M4A;.ONETOC2; 
  18.  
  19.   
  20.  
  21. .URL;.PST;.ONE;.BACKUP;.BACK;.SQLITEDB;.SQLITE3;.SQLITE;.OBJ;.BAK;.ASPX;.DESIGN;.IBANK;.LUA;.ASM;.HPP;.VBPROJ;.CSPROJ;.SLN;.CS;.VB;.LNK;.JPG;.JPEG;.RAW;.TIF;.GIF; 
  22.  
  23.   
  24.  
  25. .PNG;.BMP;.3DM;.MAX;.ACCDB;.DB;.DBF;.MDB;.PDB;.SQL;.DWG;.DXF;.C;.CPP;.CS;.H;.PHP;.ASP;.RB;.JAVA;.JAR;.CLASS;.PY;.JS;.AAF;.AEP;.AEPX;.PLB;.PREL;.PRPROJ;.AET;.PPJ;.PSD; 
  26.  
  27.   
  28.  
  29. .INDD;.INDL;.INDT;.INDB;.INX;.IDML;.PMD;.XQX;.XQX;.AI;.EPS;.PS;.SVG;.SWF;.FLA;.AS3;.AS;.TXT;.DOC;.DOT;.DOCX;.DOCM;.DOTX;.DOTM;.DOCB;.RTF;.WPD;.WPS;.MSG;.PDF;.XLS; 
  30.  
  31.   
  32.  
  33. .XLT;.XLM;.XLSX;.XLSM;.XLTX;.XLTM;.XLSB;.XLA;.XLAM;.XLL;.XLW;.PPT;.POT;.PPS;.PPTX;.PPTM;.POTX;.POTM;.PPAM;.PPSX;.PPSM;.SLDX;.SLDM;.WAV;.MP3;.AIF;.IFF;.M3U;.M4U;.MID; 
  34.  
  35.   
  36.  
  37. .MPA;.WMA;.RA;.AVI;.MOV;.MP4;.3GP;.MPEG;.3G2;.ASF;.ASX;.FLV;.MPG;.WMV;.VOB;.M3U8;.MKV;.DAT;.CSV;.EFX;.SDF;.VCF;.XML;.SES;.RAR;.ZIP;.7ZIP;.DTB;.BAT;.APK; 

加密成功之后,该勒索软件将枚举全部加密目录,并一一存放勒索信息,勒索文本文件名为“How Do I Recover My Files (Readme).txt”:


如何解密

首先点击【这里】下载解密工具,并存储在本地设备中。

双击下载下来的BDMaMoDecryptTool.exe应用程序文件,然后在弹出的UAC提示中点击“Yes”:


读取并接受终端用户许可证协议:


考虑到这款勒索软件家族的特殊性,工具将会以特定的顺序来扫描系统,而无法允许用户指定需要解密的文件夹或文件数据,因此我们强烈建议用户选择“备份文件”选项。

点击“Start Tool”按钮,剩下的就交给解密工具来完成吧!如果你选择了备份选项,那么加密文件和解密文件都将同时出现,你还可以在%temp%\BDRemovalTool目录中查看到解密过程的日志记录。


解密工具

BDMaMoDecryptTool.exe:【下载地址

 

来源:FreeBuf内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯