专栏首页FreeBufWanaCrypt0r“想哭”勒索蠕虫数据恢复可行性分析报告

WanaCrypt0r“想哭”勒索蠕虫数据恢复可行性分析报告

目录

第一章 前言…

第二章 加密文件核心流程分析…

第三章 数据恢复可行性分析…

第四章 总结…

第一章 前言

近日,360互联网安全中心发现全球多个国家和地区的机构及个人电脑遭受到了一款新型勒索软件攻击,并于5月12日国内率先发布紧急预警。该款勒索软件在短时间内在全球范围内爆发了广泛的攻击活动,据不完全统计,它在爆发后的几个小时内就迅速攻击了99个国家的近万台设备,并在大量企业组织和个人间蔓延。外媒和多家安全公司将其命名为“WanaCrypt0r”(直译:“想哭勒索蠕虫”)。

通常,常规的勒索病毒是一种趋利明显的恶意程序,它会使用非对称加密算法加密受害者电脑内的重要文件并以此来进行勒索,向受害者索要赎金,除非受害者交出勒索赎金,否则被加密的文件无法被恢复。而新型勒索软件的“想哭勒索蠕虫”尤其致命,它利用了窃取自美国国家安全局的黑客工具EternalBlue(直译:“永恒之蓝”)实现了全球范围内的快速传播,在短时间内造成了巨大损失。继5月12日WanaCrypt0r全球攻击爆发以来,360核心安全部门对该勒索蠕虫保持了高度关注,部门各团队紧密协作,首家发布了一系列针对该蠕虫的查杀、免疫和文件恢复解决方案。

360核心安全部门追日团队深入分析病毒原理,发现了其加密数据最精准的恢复技术,使用此技术360在全球独家发布了“想哭勒索蠕虫数据恢复工具”,帮助病毒受害者恢复被蠕虫加密文件,可以达到目前最全最快的数据恢复效果,我们希望本篇技术报告可以帮助大家了解该蠕虫的核心技术原理,并对恢复被加密数据的可行性做进一步探讨。

第二章 加密文件核心流程分析

蠕虫释放一个加密模块到内存,直接在内存加载该DLL。DLL导出一个函数TaskStart用于启动整个加密的流程。

程序动态获取文件系统和加密相关的API函数,以此来躲避静态查杀。

1. 加密入口

l 调用SHGetFolderPathW获取了桌面和文档文件夹的路径,调用10004A40函数获得非当前用户的桌面和文档文件夹,分别调用EncryptFolder对文件夹进行加密操作

l 从Z倒序遍历盘符直到C,遍历两次,第一次遍历本地盘符(跳过光驱),第二次遍历移动盘符,分别调用EncryptFolder对文件夹进行加密操作

2. 文件遍历

l EncryptFolder函数是一个递归函数,递归遍历文件夹,按照下图的描述搜集文件信息:

遍历过程中排除的路径或者文件夹名称:

其中有一个很有意思的目录名“ This folder protects against ransomware. Modifying it willreduce protection”,通过Google查询,发现其是国外的一款名为ransomfree的勒索防御软件创建的防御目录。

l 在遍历文件的过程中,会获取文件信息(大小等),并且根据后缀名使用下表的规则对文件进行分类(type):

type列表1:

type列表2:

3. 文件处理队列

WanaCrypt0r为了能尽快的加密其认为重要的用户文件,设计了一套复杂的优先级队列。

队列优先级:

i. 对type2(满足后缀列表1)进行加密(小于0×400的文件会降低优先级) ii. 对type3(满足后缀列表2)进行加密(小于0×400的文件会降低优先级) iii. 处理剩下的文件(小于0×400的文件),或者其他一些文件

4. 加密逻辑

加密过程采用RSA+AES的方式完成,其中RSA加密过程使用了微软的CryptoAPI,AES代码则静态编译到DLL中。加密流程如下图所示:

使用的密钥概述:

加密后的文件格式示意:

值得注意的是,在加密过程中,程序会随机选取一部分文件使用内置的RSA公钥来进行加密,这里的目的是解密程序提供的免费解密部分文件功能。

能免费解密的文件路径在文件f.wnry中,如下:

5. 随机数填充

在完成加密之后,WanaCrypt0r会对其认为重要的文件进行随机数填充,然后将文件移动到指定的临时文件夹目录然后删除。此举用于对抗文件恢复类软件,同时兼顾加密文件的速度。

被随机数填充的文件需要满足以下几点:

n 在特殊目录(桌面,我的文档,用户文件夹) n 文件小于200M n 文件后缀在type列表1

填充的逻辑:

n 如果文件小于0×400,直接覆盖对应长度的随机数。 n 如果文件大于0×400,对文件距离末尾0×400处进行覆盖。 n 再次重定位文件指针到文件头,以0×40000大小的缓冲区为单位向写随机数直到文件末尾。

6. 文件删除操作

WanaCrypt0r首先尝试将样本移动到临时文件夹,生成一个临时文件,然后再尝试多种方法删除文件。

当采用遍历磁盘的方式加密文件的时候,会在当前盘符生成“$RECYCLE”+ 全局自增量+”.WNCYRT”(eg:”D:\$RECYCLE\1.WNCRYT”)的临时文件。特别的,当盘符为系统盘(eg:C)时,使用的是系统的临时目录(%temp%)。

之后进程以固定时间间隔启动taskdl.exe来删除临时文件夹下的文件。

第三章 数据恢复可行性分析

根据对WannaCry蠕虫的执行逻辑进行分析,该蠕虫在加密线程中会对满足条件的文件用随机数或0×55进行覆写,从而彻底破坏文件的结构并防止数据被恢复,但是只限定于特定的文件夹和特定的后缀名。也就是说该蠕虫只对满足条件的文件进行了写覆写操作,受害者机器上仍然有很多的文件未被覆写,这就为数据恢复提供了可能。

在删除线程中,蠕虫是先将源文件通过MoveFileEx函数移动到其创建的临时文件夹下,最后统一进行删除。在这个过程中源文件的文件名会发生改变,常规数据恢复软件不知道这个文件操作逻辑,导致大部分文件无法恢复,只能恢复小部分文件,恢复数据效果极差。

另一方面,因为删除操作和加密操作在不同的线程中,受用户环境的影响,线程间的条件竞争可能存在问题,从而导致移动源文件的操作失败,使得文件在当前位置被直接删除,在这种情况下被加密的文件有很大概率可以进行直接恢复。但是满足这种情形的文件毕竟是少数,如果采用常规数据恢复软件则只能恢复少量此类文件。

根据以上分析,我们发现了除系统盘外的文件,用我们精细化处理的方法进行数据恢复,被加密的文件其实是有很大概率可以完全恢复的。据此360开发了专门的恢复工具2.0版,以期帮助在此次攻击中广大的受害者恢复加密数据:

http://dl.360safe.com/recovery/RansomRecovery.exe?from=360zhuiri

继14日凌晨360全球首家发布恢复工具,为病毒受害者抢救了部分文件后。此次更新发布2.0版工具进一步挖掘病毒加密逻辑漏洞,清除病毒防止二次感染,并利用多重算法深度关联出可恢复文件并对受害者的文件进行免费解密,一站式解决蠕虫勒索软件带来的破坏,最大程度低保护了用户的数据安全,成功率遥遥领先于其他数据恢复类产品!

第四章 总结

WannaCry蠕虫的大规模爆发得益于其利用了MS-17-010漏洞,使得其在传统的勒索病毒的基础上具备了自我复制、主动传播的特性。在除去攻击荷载的情况下,勒索病毒最重要的是其勒索技术框架。勒索文件加密技术是使用非对称加密算法RSA-2048加密AES密钥,然后每个文件使用一个随机AES-128对称加密算法加密,在没有私钥和密钥的前提下要穷尽或破解RSA-2048和AES-128加密算法,按目前的计算能力和技术是不可破解的。但是作者在处理文件加密过程中的一些疏漏,大大增加了我们恢复文件的可能性,如果第一时间及时抢救,用户是能够恢复大部分数据的。

另外由于勒索赎金交付技术是使用的比特币,比特币具有匿名性,比特币地址的生成无需实名认证,通过地址不能对应出真实身份,比特币地址的同一拥有者的不同账号之间也没有关联。所以基于加密算法的不可破解特性和比特币的匿名特性,勒索病毒这类趋利明显的恶意攻击仍然会长时间流行,大家仍需要提高警惕。

360追日团队(Helios Team)

360 追日团队(Helios Team)是360公司高级威胁研究团队,从事APT攻击发现与追踪、互联网安全事件应急响应、黑客产业链挖掘和研究等工作。团队成立于2014年12月,通过整合360公司海量安全大数据,实现了威胁情报快速关联溯源,独家首次发现并追踪了三十余个APT组织及黑客团伙,大大拓宽了国内关于黑客产业的研究视野,填补了国内APT研究的空白,并为大量企业和政府机构提供安全威胁评估及解决方案输出。

已公开APT相关研究成果

本文分享自微信公众号 - FreeBuf(freebuf),作者:360安全卫士

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-05-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 任意文件移动导致的Windows提权攻击分析

    本文介绍了如何滥用Windows上特权进程执行文件操作来实现本地特权升级(用户到管理员/系统),同时介绍了利用这些类型的错误的现有技术以及漏洞利用工具。

    FB客服
  • 韩国网络托管公司Nayana向勒索软件黑客支付100万美元

    据外媒6月12日报道,韩国网络托管公司 Nayana 上周末(6月10日)遭受网络攻击,导致旗下153台Linux 服务器与3,400个网站感染Erebus勒索...

    FB客服
  • 某云用户网站入侵应急响应

    1、情况概述 该案例是前期应急处置的一起因安全问题导致的内网不稳定的情况。写下来,和大家一起讨论应急响应的一些思路及其中间遇到的一些坑,欢迎大牛指点、讨论。 情...

    FB客服
  • 静态链接-空间与地址分配

    当我们有两个目标文件时,如何将它链接起来成一个可执行文件?这个过程发生了什么?这基本上就是链接的核心内容:静态链接。 我们以使用下面源文件“a.c”和“b.c...

    233333
  • 机器学习检测WebShell脚本实践

    webshell作为黑客惯用的入侵工具,是以php、asp、jsp、perl、cgi、py等网页文件形式存在的一种命令执行环境。黑客在入侵一个网站服务器后,通常...

    FB客服
  • WinDbg调试.NET程序入门

    俗话说:万事开头难! 自从来到新公司遇到性能问题后,需要想办法解决这个问题,但是一直没有合适的性能分析工具,然后找到StevenChennet 大神帮忙,他用W...

    用户1177503
  • 总结java中文件拷贝剪切的5种方式-JAVA IO基础总结第五篇

    很多朋友在看我的《java IO总结系列》之前觉得创建文件、文件夹删除文件这些基础操作真的是太简单了。但看了我的文章之后,有小伙伴找到我说:“没想到这么基础的知...

    字母哥博客
  • iOS 自动打包

    使用脚本实现自动打包,网上搜了好多,但是偶比较笨,一直发现不知道怎么使用,看了好久, 终于改了个可以使用的,但是最后发现不能用xcrun导出;宝宝心里苦,但宝宝...

    莫空9081
  • P1060 开心的金明

    题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置...

    attack
  • Linux指令入门-文件与权限

    cd命令的默认参数为~,符号~表示当前用户的家目录,即在root用户登录时,命令cd、cd ~和cd /root执行效果相同。

    乐心湖

扫码关注云+社区

领取腾讯云代金券