前言
5月12日晚,勒索病毒"WannaCry"感染事件爆发,全球范围近百个国家遭到大规模网络攻击,攻击者利用MS17-010漏洞,向用户机器的445端口发送精心设计的网络数据包,实现远程代码执行。被攻击者电脑中大量文件被加密,被要求支付比特币以解密文件。相关事件的时间线如下
☘ 2017.2月 WannaCry 1.0被发现,未引起重视
☘ 2017.3.14 微软MS17-010修复6个SMB漏洞
☘ 2017.4.14 EternalBlue利用代码泄漏
☘ 2017.5.12 WannaCry 2.0 勒索蠕虫出现
☘ 2017.5.12 MalwareTech注册了开关域名,蠕虫传播速度变缓
☘ 2017.5.14 有2个二进制patch的变种出现
现对此事件进行详细解读,目录如下:
一、蠕虫的攻击流程
二、蠕虫启动安装逻辑分析
三、关键勒索加密过程分析
四、蠕虫赎金解密过程分析
五、数据恢复方法分析
六、解决方案
NSA泄露的工具
2017年4月14日,Shadow Brokers泄漏了新一批NSA方程式工具,包含了涉及多个Windows系统服务的远程命令执行工具,其中就包括“永恒之蓝”攻击程序。EternalBule工具影响从WinXP、Vista、Win7、Win2003/2008,恶意代码会扫描开放445文件共享端口的Windows机器,无需用户任何操作,只要开机上网,不法分子就能在电脑和服务器中植入勒索软件、远程控制木马、虚拟货币挖矿机等恶意程序。
“Kill Switch”
硬编码的域名地址http://www.iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com
勒索软件成功启动后将从资源段中开始解压释放文件,解压密码为WNcry@2ol7,释放文件与功能列表如下:
蠕虫会释放一个加密模块到内存,直接在内存加载该DLL。DLL导出一个函数TaskStart用于启动整个加密的流程。
遍历要加密的文件
遍历过程中排除的路径或者文件夹名称
在遍历文件的过程中,会获取文件信息(大小等),并且根据后缀名使用下表的规则对文件进行分类(type):
从Z倒序遍历盘符直到C,遍历两次,第一次遍历本地盘符(跳过光驱),第二次遍历移动盘符,分别调用EncryptFolder对文件夹进行加密操作EncryptFolder函数是一个递归函数,递归遍历文件夹,按照下图的描述搜集文件信息:
加密过程
加密过程采用RSA+AES的方式完成。加密流程如下图所示:
使用的密钥概述:
加密后的文件格式为:
在加密过程中,程序会随机选取一部分文件使用内置的RSA公钥来进行加密,这里的目的是解密程序提供的免费解密部分文件功能。
能免费解密的文件路径在文件f.wnry中
随机数填充和删除:
为了对抗文件恢复类软件,WanaCrypt在完成加密之后,会对其认为重要的文件进行随机数填充,然后将文件移动到指定的临时文件夹目录然后删除。
1.对于桌面、我的文档、用户文件夹下小于200M的文件,均进行加密后填充原文件。
2.对于其他目录下小于200M的文件,不会进行填充,而是直接删除,或者移动到临时目录(C盘下的“%TEMP%”文件夹,以及其他盘符根目录下的“$RECYCLE”文件夹)中。
3.移动到临时目录后的文件重命名为%d.WNCRYT,加密程序每30秒调用taskdl.exe对临时目录下的这些文件进行删除。 对于移动失败的文件,WanaCrypt将其设置为隐藏属性重启删除。
填充的逻辑:
☘ 如果文件小于0x400,直接覆盖对应长度的随机数。
☘ 如果文件大于0x400,对文件距离末尾0x400处进行覆盖。
☘ 再次重定位文件指针到文件头,以0x40000大小的缓冲区为单位向写随机数直到文件末尾。
比特币支付以及解密流程
1.中毒后电脑里面文档会被加密为后缀为.wncry的文件。
2.弹出提示框提示用户付款比特币地址
3.购买比特币往这个比特币钱包付款以后,通过病毒的洋葱网络的匿名通信通道把付款的钱包地址发给病毒作者
4.作者如果匿名网络在线,点击“check payment”会收到回复的确认消息,这个时候用于解密的密钥会通过匿名网络发送回来。
5.然后选择解密就可以解密文件了。
6.解密完成后是仍然有可能重新中毒的,病毒并没有标签解密过的机器。
解密流程
数据恢复不等于解密
本次爆发的勒索蠕虫WannaCry, 到目前为止还没有公布私钥,而从黑客采用的加密技术原理来讲,除非拿到本地私钥解密获得对称密钥,否则无法实现解密,而本地私钥又需要由黑客私钥解密获得。这种情况下,能减少用户损失的方法只有通过数据恢复技术,而非解密技术来还原数据。
恢复只读文件
在某些情况下,它在加密后并未删除文件。由于恶意软件不可能直接加密或修改只读文件,WannaCry会复制这些文件并创建加密版本。虽然原始文件并没有动,但被赋予一个隐藏属性,要恢复原始数据仅需受害者恢复其正常属性即可。
从系统盘(C盘)中恢复文件
存储在重要文件夹中的文件如桌面或文档文件夹在没有解密密钥的情况下无法被恢复,因为WannaCry旨在在恢复原始文件前用随机数据覆写原始文件。存储在系统盘重要文件夹之外的其它文件能通过使用数据恢复软件从临时文件夹中恢复。原始文件会被移动到%TEMP%\%d.WNCRYT(%d用来递增计数)。这些文件包含原始数据且并未被填充覆写。
从非系统盘中恢复文件
对于非系统盘来说,WannaCry勒索软件创建了一个隐藏的’$RECYCLE’文件夹并将原始文件加密后移动到这个目录下。只要将这个文件夹显示隐藏就能恢复文件。另外,部分文件由于被占用导致移动失败,此时,原始文件还位于相同的目录下,这样就能通过的数据恢复软件恢复被不安全删除的文件。
Windows XP下
法国Quarkslab研究员阿德里安·古奈特(Adrien Guinet)5月18日表示,如果Windows XP系统遭到WannaCry勒索病毒的感染,那么用户可以自行解密数据。古奈特发布了一款软件Wannakey。他表示,该软件帮他发现了实验室中被感染Windows XP计算机所需的数据解密密钥。
该勒索软件使用了Windows中集成的微软密码API(应用程序接口)去处理多项功能,包括生成文件的加密解密密钥。在创建并获得密钥后,在大部分版本的Windows中,API会清除该密钥。不过,Windows XP版本的API无法清除密钥。因此,在计算机关机重启之前,用于生成本地密钥的主序列可能会一直驻留在内存中。WannaKey能扫描Windows XP系统内存,提取其中的相关信息。古奈特表示:“如果你足够幸运(即相关的内存块尚未被重新分配或清除),这些主序列可能仍驻留在内存里。”
1、数据备份
2、Windows升级,进行下载更新
3、安装多种安全软件
Q1:采用AES加密文件后再使用RSA加密AES秘钥和单独使用RSA加密有什么区别?
A:如果单独使用RSA非对称加密的话,加密效率比较慢。使用AES对称加密效率显著提高。
Q2:咱们是如何反汇编逆向分析该病毒的,该病毒没有进行一些混淆吗?
A2:这个勒索软件没有混淆,ida里面可以清楚地看到大部分流程
Q3:关于这个病毒的传播方式,可以介绍一下吗?
A3:传播方式是利用永恒之蓝漏洞传播,在互联网和局域网扫面含有此漏洞的计算机,扫到就发生payload进行传播
Q4:生成木马的工具感觉是使用的python脚本,那该病毒是使用c编程的还是其它,其中的exploit是python还是C
A4:exploit是用C写的,勒索软件是用c写的