FlashGuard: Defend Against Encryption Ransomware

论文作者:Jian Huang

论文来源:CCS'17

论文下载地址:FlashGuard: Leveraging Intrinsic Flash Properties to Defend Against Encryption Ransomware

转载请注明:老和山修仙记

摘要

Encryption ransomware是一种暗地里加密用户文件的病毒软件,要求用户支付赎金才能访问加密后的文件。目前已经有一些相关工作,开发了一些检测系统,这些检测系统主要通过监测ransomware攻击时的行为特征监测病毒。不幸的是,当ransomware被检测到时,一些用户文件早已经被病毒加密,用户还是要支付赎金才能恢复这些文件。并且,ransomware病毒可以获得内核权限,就可以终止软件层次的防御系统。定期备份也是对抗ransomware病毒的一种方法,但是备份会引起存储开销,并且ransomware病毒依然可以凭借内核权限停止或者销毁备份。论文作者希望不依赖软件层次实现对抗ransomware病毒,并且希望避免备份引起的存储开销。

论文提出了FlashGuard,一个对抗ransomware病毒的SSD,拥有固件级的恢复系统,能够在不需要额外备份的情况下,快速恢复Encryption ransomware的破坏。FlashGuard利用的是现在SSD已有的out-of-place写机制,这个机制原本是为了消除flash的延迟。当一个页被更新或者删除时,这个页的老备份依然会存在于SSD中。FlashGuard直接修改了SSD的垃圾回收机制,当ransomware病毒加密文件时,在SSD中依然保存数据的老备份。通过1447次手动实施13类Ransomware攻击的实验,证明FlashGuard能够有效恢复被加密文件。另外本文还论证了FlashGuard对SSD性能和生命周期的影响可以忽略。

背景

WannaCry病毒在2017年5月12日出现,截止论文投稿,已经影响了150个国家的230,000台电脑。政府部门、学校和医院等机构都受到了影响。与传统破坏计算机和窃取私密信息的病毒不同,Encryption ransomware暗地里加密用户文件,要求用户支付赎金才能恢复文件。Encryption ransomware病毒的行为和正常的软件并没有不同,很容易绕过检测防御,这使得这类病毒越来越受到攻击者的欢迎。根据IBM的数据,2016年受到Encryption ransomware病毒攻击的用户数量和用户支付赎金的金额都比2015年增长了几十倍。

为了对抗ransomware病毒,研究者已经提出了多个检测系统,通过检测文件访问模式和加密算法特征识别ransomware病毒。但是这些系统依然无法有效避免ransomware病毒加密用户数据。首先,目前的检测系统只能在ransomware病毒已经攻击过后才能发现病毒,这时至少一部分用户文件已经被加密。再者,一些ransomware病毒可以运行在管理员特权模式,可以直接在内核层面进行攻击,可以关闭检测系统。

在本地或者远程备份文件也是对抗ransomware病毒的一种方法。但是备份也不是一种很有效的方法,首先,备份必然引起存储开销,而且ransomware病毒也有可能找到数据备份的位置,把备份数据也加密。再者,运行在特权级的ransomware病毒还可以关闭备份机制。

SSD目前得到了越来越广泛的应用,SSD的一个特点是物理页在擦除操作之前无法被写入内容,而擦除操作会引起明显的延迟。为了减缓这种延迟,现在的SSD采用了out-of-place写机制。这样一来,SSD就有了内在的日志功能,而不需要额外的备份。在这种机制下,被修改和被删除的文件内容在一段时间内依然存在,直到垃圾回收机制引起一个周期性的刷新。固件级的日志功能是不受内核以及软件层影响的。

利用flash的特性,论文作者实现了叫做FlashGuard的对抗ransomware病毒SSD,拥有轻量级的硬件辅助数据恢复系统。用户可以恢复被ransomware病毒加密的文件。

论文提出的系统基于SSD的out-of-place写机制,利用这种机制实现数据恢复有两个挑战:

1. SSD控制器可能根据垃圾回收机制清理被修改和被删除的数据。FlashGuard需要保证原始数据不被清除。并且保留过多的原始数据可能会导致正常的存储操作性能下降,甚至降低SSD使用生命周期。所以需要实现一个合适的垃圾回收机制。

2. 新的垃圾回收机制的执行应当能够避免运行在特权级的ransomware病毒的影响。

为了解决这些问题,论文作者实现了只保留被ransomware病毒修改或删除过的原始文件的垃圾回收机制,并据此在SSD固件中实现了FlashGuard的文件恢复系统。

贡献

论文作者指出,这是第一个能够高效对抗ransomware病毒攻击、保护用户数据的防御措施,即使ransomware病毒运行在高特权级利用内核漏洞进行攻击也可以被防御。论文贡献主要包括:

1. 观察了上千个ransomware病毒实例,找到了它们加密的行为特征。

2. 提出了利用现有SSD out-of-place写机制在固件层面对抗ransomware病毒的文件恢复系统——FlashGuard。

3. 在真实的SSD中实现了FlashGuard,并且证明了FlashGuard能够有效恢复被ransomware病毒加密的数据。

4. 通过真实应用测试了FlashGuard对SSD性能带来的负面影响,证实负面影响可以忽略不计。

RANSOMWARE(勒索病毒)

在各种勒索病毒中,加密勒索病毒是最常见的,它们加密用户数据,要求用户支付赎金才能复原数据。论文的目标是设计实现对抗加密勒索病毒的SSD数据恢复机制。为了达成目标,论文作者首先观察了大量的勒索病毒实例,分析了加密勒索病毒的行为特征,理解它们如何影响用户数据。与之前的文章不同,本文主要关注加密时间和备份销毁。

论文作者从VirusTotal收集了1477个勒索病毒实例,并根据勒索信将它们分成13类。下表是各个种类的加密策略和实例数量。

论文作者在windows虚拟机中实施了各个ransomware病毒实例,并且关闭了防火墙、微软安全保护和用户访问控制等保护措施。并且给了所有病毒管理员权限。勒索病毒可能需要和控制服务器交换加密使用的秘钥,所以开启了网络功能。但是,考虑到勒索病毒可能通过网络传播,作者通过一些方法限制勒索病毒在主机内的传播,尽可能避免影响主机。每个实例实施完成后,将虚拟机镜像恢复成未污染的状态。

通过两组实验分别测试了各个勒索病毒实例的加密时间和是否攻击备份文件,两个实验的内容如下:

测试加密时间:仿照正常用户的文件结构,作者在虚拟机中创建了9876个文件。通过USENIX 2017一篇文章介绍的截屏方法,作者测试了每个勒索病毒加密文件作用的时间。

是否销毁备份:作者在每个虚拟机中创建了卷备份,如果攻击后备份被删除,则认为该勒索病毒会销毁备份文件。

作者发现勒索病毒通常在加密完成后立即显示勒索信(有一些病毒甚至没加密完就给用户显示勒索信了)。有10类病毒加密文件所有的时间少于一小时。有些甚至不到20分钟就完成了加密。有一些病毒只加密小文件或者特定扩展名的文件,比如JigSaw只加密小于10MB的文件。

观测结果1:勒索病毒通常迅速完成加密,并且加密数据量相对较小。

推论1:勒索病毒希望减小被发现并终止的可能,或者攻击者希望尽快得到赎金。

作者还发现有8类勒索病毒会销毁备份文件。之前说过作者给了勒索病毒管理员权限,所以勒索病毒可以删除备份。一些勒索病毒如果没有相应权限,还会设法绕过用户访问控制。举例来说,cerber会首先给自己提升权限,然后使用命令行工具删除备份文件。

观测结果2:勒索病毒想消除被攻击者自己恢复文件的可能性,让被攻击者只能选择支付赎金。

推论2:勒索病毒能够获得内核权限,通过销毁数据备份等方式破坏软件层次的防御系统。

攻击模型

鉴于勒索病毒可能获得内核权限,论文作者并不认为操作系统是可信的,作者认为SSD固件是可信的,因为固件和存储控制器是绑定的,从硬件上和勒索病毒相隔离,并且相比于操作系统,固件的TCB更小,不易受到攻击。作者提出这是首个在固件层次解决勒索病毒攻击的工作。

设计原理

与HDD一个显著地不同是,当逻辑上的覆写发生时,HDD会直接在物理硬件上覆写数据。而SSD通过out-of-place写机制和垃圾回收机制,在发生覆写时,把数据写到新的空块中,将旧的块标记无效然后在垃圾回收时删除旧块。这种差异可以用下图表示:

所以SSD自然的对上层修改过的数据进行备份,可以据此使用SSD建立对抗勒索病毒的恢复系统。SSD固件中有一层映射层管理数据,可以在这里实现恢复系统,这样就可以自然的把恢复系统与操作系统相隔离,避免勒索病毒攻击防御系统。

设计实现

FlashGuard包括两个主要组成部分,Ransomware-aware Flash Translation Layer (RFTL)和数据恢复工具。RFTL作用是保存可能被加密勒索病毒覆写的数据,恢复工具使得受害用户可以恢复被加密的文件。

RFTL

目前现实的FTL包含四个数据结构,用于支持out-of-place写机制和垃圾回收机制,如下图所示。

通过address mapping table可以将逻辑地址转换为物理地址。为了提高效率,最近用过的地址会被保存到cache中。如果访问一个地址没有在cache中,通过Global Mapping Directory找到对应的地址写到address-mapping cache中。通过Block Validity Table跟踪每个块中有效的页数量,当一个块中的有效页小于一定数量时,Page Validity Table负责检查块中哪些页是有效的,并将它们移到新的块中。

为了使得SSD能够对抗勒索病毒的攻击,一个直接的方案就是保存所有的无效页,直到勒索病毒被发现。但是这个方案是不可行的。首先,SSD很快会被无效数据填满,导致SSD不可用。再者,垃圾回收机制会被更频繁的触发,导致储存性能的下降。

所以,更好的方案是只存储被勒索病毒篡改过的原始数据。作者提到勒索病毒加密的数据通常不会很大,保留这部分数据将不会引起存储系统性能的明显下降。问题在于现有的FTL无法分辨出哪些数据是被勒索病毒篡改的。论文中的方法是在FTL中添加一个结构体Read Tracker Table(RTT),仅需要对现有的FTL做微小的修改就能实现。

RTT的工作理论依据是作者发现,勒索病毒工作时基本是先从磁盘读取数据,然后加密覆盖原有的数据或者删除原有的数据。这样一来,如果一个页先被读取,然后又变成无效,就有可能是被勒索病毒攻击的页。通过RTT记录被读的页,然后对比PVT中该页是否有效,以此决定是否保留该页。

Read Tracker Table

当对某个页发生读操作时,RTT中会更新标记该页已经被读。当发生写操作时,会向一个新的空页中写进数据,并老的映射替换为新的。为了支持数据恢复,RFTL中利用了每个物理页的out-of-band (OOB)数据段,在传统的SSD中,每个物理页都有16-64 bytes的OOB数据段,FlashGuard利用这段空间按照下图格式保存页的信息。这些信息是从硬件层面隔离的,由flash controller写入信息,所以可以防止拥有高特权的勒索病毒的干扰。

OOB中包含以下内容

1. LPA:映射到该物理页的逻辑页地址

2. P-PPA:LPA之前映射到的物理页地址

3. 该物理页被写时的时间戳

4. Retained Invalid Page(RIP):标记该页是否被勒索病毒篡改过。

Garbage Collection in RFTL

垃圾回收(GC)是SSD中一个基本的部分,它负责将已用的存储块集中在一起,并且释放空闲的存储空间出来供后续使用,同时它还要保证所有的块的寿命是平均的,以延长SSD的使用时间。在保存被勒索病毒篡改的原始数据中,GC也有重要的作用。FlashGuard中设计实现了一种新的GC机制,主要思想就是在释放无效页之前,先判断无效的页是否被读过,如果被读过,就保留这些无效页,如果没有被读过,就删除这些无效页。这是因为作者之前说过的,勒索病毒在篡改数据之前首先会读这些数据,那么没有被读过的数据,就不会是勒索病毒修改的。

当SSD中空闲块的数量低于一定阈值时,GC就会对有效页最少的块进行清理,根据Block Validity Table中很容易挑选出这些页。如下图所示,RFTL对此做了一些修改,即根据OOB中的内容判断一个无效页是否需要被保留,如果需要被保留,那么这个页就不会被当做无效页对待。

另外,RFTL根据OOB中的时间戳判断被保留的无效页已经保存了多久,默认情况下这些无效页只保留20天,过了时间就会被当做普通的无效页对待。

Data Recovery

为了恢复数据,使用论文的恢复系统,需要将被攻击的SSD拆下来装到另外一台安全的电脑上,再进行恢复操作。FlashGuard首先检查RTT中的内容,据此找出被读的页。然后FlashGuard查看这些页OOB中RIP位,如果RIP位标记本页需要恢复,则读取本页数据,如果RIP位没有被标记,还要检查本页是否是无效页,如果是无效页,也读取本页数据。当这些被保留的无效页读取完成后,就可以根据每页的OOB中的信息,恢复用户数据了。另外,因为20天内的被保留数据都在SSD中,受害者当然也可以通过别的技术手段恢复数据。

FlashGuard实现

论文作者在1TB的SSD上实现了FlashGuard,这个SSD中每个块包含64个页,每个页4KB,其中OOB数据段16 bytes。FlashGuard的实现包含5718行C代码,代码存储在固件中,并且被设置为不允许修改。作者还实现了一个恢复工具,能够帮助用户高效的利用FlashGuard恢复数据。

实验

论文中的实验包含两个方面的内容,首先,作者通过实验证明FlashGuard能够有效对抗加密勒索病毒,再者,作者通过实验证明FlashGuard引起的性能损失可以忽略不计。

作者使用1477个勒索病毒实例做攻击实验,然后在攻击完成后使用自己开发的工具恢复被加密的数据。作者用来做实验的数据都是从真实的应用场景中得来的,比如剑桥大学微软研究中心服务器的数据,得到数据后作者又执行了5千万次读写操作“预热”系统。

**最终实验结果表明,对于实验中使用的所有勒索病毒,FlashGuard都可以恢复全部被加密的数据.**针对各种不同种类的勒索病毒,需要恢复的数据量大小如下图所示:

作者还发现恢复数据所用的时间并不直接与恢复数据量大小相关,作者认为是与待恢复数据的分布更相关。恢复各类不同勒索病毒加密的数据所需的时间如下图所示:

在性能方面,实验证明FlashGuard带来的性能损失微乎其微,作者分析是因为FlashGuard是根据页先被读又被改这样的规则保留无效页,这样的操作在正常的使用中并不多见,所以在不受攻击时与传统的SSD工作状态几乎没有不同。性能影响实验结果如下图所示:

关于对SSD的使用寿命的影响,作者通过实验得出的结论也是FlashGuard的影响微乎其微(我个人感觉13.c看起来还有有些影响的,可能作者认为这种损失代价是可以接受的吧,论文中也没有详细解释这一点)。实验结果如下图所示:

发布于 2017-11-17

文章被以下专栏收录