WannaCry的一个编码错误,也许能帮我们恢复加密文件

安全
近期,来自卡巴斯基实验室的安全研究专家在对WannaCry的代码进行了深入分析之后发现,WannaCry勒索软件蠕虫的恶意代码中存在大量的编码错误,而这些编码错误将有可能允许用户恢复他们被加密的文件。

卡巴斯基实验室针对WannaCry代码进行深入分析,发现WannaCry里面的各种编码错误,这样一来感染的人就有可能进行文件恢复了。

WannaCry的一个编码错误

就在上个月,这个名叫WannaCry的勒索软件仅在72小时不到的时间里通过其自我传播功能感染了全球超过三十万台存在漏洞的Windows PC,但这并不意味着WannaCry是一款高质量的勒索软件。

近期,来自卡巴斯基实验室的安全研究专家在对WannaCry的代码进行了深入分析之后发现,WannaCry勒索软件蠕虫的恶意代码中存在大量的编码错误,而这些编码错误将有可能允许用户恢复他们被加密的文件。需要注意的是,用户现在不仅不用花钱去购买所谓的解密密钥,而且还可以使用网上免费的恢复工具和一些简单的命令就能够恢复自己被锁定的文件了。

编码错误将有可能允许我们恢复被加密的文件。

卡巴斯基安全实验室的高级恶意软件分析师Anton Ivanov以及他的同事Fedor Sinitsyn和Orkhan Mamedov专门发布了一篇研究报告,并在报告中详细描述了WannaCry开发者所犯的几个严重的编码错误。

一、文件删除机制中的逻辑错误

研究人员表示,WannaCry在对目标文件完成加密之后,会删除原始文件,问题就出在了这里。简单来说,WannaCry首先会对目标文件进行重命名并将文件后缀名修改为“.WNCRYT”,然后对其进行加密,最后删除原始文件。

1. 恢复只读文件

1. 恢复只读文件

实际上,几乎很少有恶意软件能够直接加密或修改只读文件,而WannaCry同样是如此。WannaCry首先会拷贝目标文件,然后再对文件副本进行加密。但需要注意的是,此时原始文件仍然没变,只是被添加了一个“隐藏”属性而已,因此用户只需要调整这些文件的属性即可完成文件恢复。

恢复只读文件

除此之外,WannaCry有时在加密完成之后甚至还无法成功删除原始文件。

2. 恢复系统盘中的文件

保存在类似Desktop和Documents这种重要文件中的数据在没有解密密钥的情况下是无法被恢复的,因为WannaCry在删除它们之前会使用随机数据覆盖原始文件的内容。

下图显示的是WannaCry在删除原始文件之前,确定临时存放目录路径的过程:

恢复系统盘中的文件

但是研究人员发现,保存在系统盘其他文件夹(非重要文件夹)中的文件是可以从临时目录(例如%TEMP%)中恢复的,但需要数据恢复软件的帮助。研究人员表示,原始文件将会被移动到%TEMP%\%d.WNCRYT(%d为数字值),这些文件中包含了原始数据,而且数据没有被覆盖。

3. 恢复非系统盘中的文件

研究人员还发现,对于非系统盘,WannaCry会创建一个隐藏的“$RECYCLE”文件夹,并在加密完成之后将原始文件移动到这个文件夹中。因此我们可以通过访问“$RECYCLE”文件夹来恢复这些文件。

恢复非系统盘中的文件

恢复非系统盘中的文件

除此之外,由于WannaCry代码中存在的“同步错误”,在很多情况下原始文件很有可能仍然保留在之前的目录中,因此用户也许可以使用数据恢复软件来恢复那些非安全方式删除的文件。

恢复非系统盘中的文件

下图显示的是恶意软件为原始文件构建临时存储路径的过程:

恶意软件为原始文件构建临时存储路径的过程

二、WannaCry受害者的救星:编码错误

WannaCry代码中的这些编码错误给广大受害者们带来了希望。法国安全研究专家Adrien Guinet和Benjamin Delpy开发出了第一款免费的WannaCry解密工具-WanaKiwi【下载地址】,这款工具目前适用于Windows XP、Windows 7、Windows Vista、Windows Server 2003和Server 2008。

三、总结

实际上,除了上面这些编码错误之外,WannaCry的代码中还存在大量其他的问题,而且编码质量也非常差。WannaCry之所以能够造成如此大的杀伤力,NSA泄漏的永恒之蓝漏洞“功不可没“。

现在距离WannaCry事件爆发已经过去了一个月了,但此次事件背后的攻击者其真实身份至今还没有被确认。目前,各国警方和网络安全公司仍然在对WannaCry事件进行调查,但暗网情报公司Flashpoint近期却表示,根据他们的语言分析结果,他们认为此次事件背后的始作俑者很有可能是中国黑客。

责任编辑:赵宁宁 来源: FreeBuf
相关推荐

2017-05-23 11:50:31

2021-12-13 07:28:33

Java性能字符

2011-03-22 16:20:19

恢复数据库

2021-08-19 09:00:12

监控文件Python

2019-03-05 11:22:06

FinalCrypt开源文件加密

2017-05-31 17:05:24

Wannacry勒索软件网络安全

2017-05-26 18:06:47

2016-11-22 19:37:54

Linux恢复文件

2022-08-29 07:48:27

文件数据参数类型

2023-02-21 17:06:49

硬件软件系统

2022-07-05 09:02:05

Vue 3Vue 2Typescript

2014-11-19 13:06:59

2022-04-28 09:05:41

网络爬虫Python

2021-01-26 02:14:31

物联网平台物联网IOT

2021-06-16 17:46:55

函数指针结构

2015-06-15 12:30:10

Hadooplong编码剖析

2011-04-12 14:58:23

加密解密类

2021-04-14 15:25:39

Linux加密文件保险库

2018-08-29 14:50:15

文件加密

2010-04-13 00:02:22

Visual StudIDE
点赞
收藏

51CTO技术栈公众号