当前位置: 首页 > 科技观察

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

时间:2023-03-21 21:35:35 科技观察

如上所述,MaMoCrypt是一款臭名昭著的勒索软件,从去年12月开始活跃至今,数不胜数的用户中招。因此在本文中,我们将告诉您如何恢复和解密被MaMoCrypt勒索软件加密的数据。MaMoCrypt是一款非常有特色的勒索软件。该勒索软件使用Delphi开发,使用mpress打包。它是MZRevenge的变体。勒索软件行为MaMoCrypt可以删除Windows卷影卷(ShadowVolume),并禁用防火墙和UAC服务。这些功能在恶意软件世界中并不少见,因此我们不会在这里深入讨论它们。它使用Delphi的随机生成器(基于线性同余生成器)和基于时间的DWORD种子(使用QueryPerformanceCounter或GetTickCount),这将生成两个缓冲区,其中数据将使用Base64编码并添加MZRKEYPUBLIC/MZRKEYPRIVATE字符串。根据以上两个密钥和一个掩码,勒索软件会为每个文件生成两个加密密钥,然后用它们来加密文件。它首先使用AES128CBC对文件内容进行加密,然后使用Twofish128NOFB对其进行二次加密。AES加密过程中剩余16%的内容将使用AES128CFB进行加密,所有加密文件的后缀都会加上一个“.MZ173801”。加密完成后,恶意软件会再次枚举所有加密目录并单独存储勒索信息,勒索信息中也会包含对应的两个MZR密钥。虽然MZR密钥在密钥生成或加密期间不会更改,但掩码会不断更新。它们是基于SHA1、SHA512和一些自定义算法的混合生成的。每个AES和Twofish密钥还使用SHA512进行16次计算和字节XOR。密码和密码生成*(int*)mask_in=offset;for(inti=0;i<0x800;++i){SHA1(mask_in,0x84,mask_out);*(int*)mask_in=i+1+偏移量;*(mask_in+3+(i&0x7F)+1)^=mask_out[0];mask[i]=mask_out[1];}offset+=0x800;aes_key=generate_key(mask,mzrkey_private.c_str(),0x800,mzrkey_private.size());for(inti=0;i<0x200;++i){SHA1(mask_in,0x84,mask_out);*(int*)mask_in=i+1+offset;*(mask_in+3+(i&0x7F)+1)^=mask_out[0];mask[i]=mask_out[1];}offset+=0x200;twofish_key=generate_key(mask,mzrkey_public.c_str(),0x200,mzrkey_public.size());generate_key:intmzrkey_size_bswap=_byteswap_ulong(mzrkey_len);intmask_size_bswap=_byteswap_ulong(mask_len);for(inti=0;i