FlashGuard: 利用固态存储的硬件特性 对抗勒索软件

作者:Jun Xu (徐军)   Jian Huang

近年来,一种称为ransomware的恶意软件开始在全球范围内蔓延,严重危害着大量的计算机系统。比如,WannaCry病毒在2017年5月发生,在一个星期之内已经影响了150个国家的230,000台电脑。 这些被攻击的电脑有很大一部分来自于政府部门,学校和医院等机构。与针对破坏计算机系统和窃取私密信息的传统病毒不同, ransomware暗地里加密用户文件,要求用户支付赎金才能恢复文件。ransomware的行为和正常的软件并没有显著不同,很容易绕过检测防御。这使得这类病毒越来越受到攻击者的欢迎。根据IBM的数据,2016年受到ransomware攻击的用户数量和用户支付赎金的金额都比2015年增长了数十倍。

针对ransomware, 目前已经有一些相关对抗工作。这些工作主要聚焦于设计检测系统。这些系统通过监测ransomware运行时的行为特征发现病毒。然而,当ransomware被检测到时,一些用户文件可能已经被病毒加密,最终用户还是要支付赎金才能恢复这些文件。让情况变的更加糟糕的是大量ransomware会尝试获得管理员权限,以终止软件层次的防御系统。

定期备份是对抗ransomware的另外一种思路。但是备份会引起存储开销,并且ransomware依然可以凭借管理员权限停止或者销毁备份。本文中,我们提出了FlashGuard [1],一个可以对抗ransomware的SSD。FlashGuard在SSD的固件内部搭载恢复系统,能够在不需要额外备份的情况下,快速恢复被ransomware破坏的数据。

FlashGuard利用现在SSD已有的out-of-place更新机制。这个机制原本是为了消除SSD中重写所带来的延迟 — 当一个硬盘页面被更新时,SSD必须先擦除对应物理块,但是这个擦写的过程非常耗时,因此SSD采用out-of-place机制把重写的数据写在已经被擦除的物理页面上,那这个页的原始备份依然会保存于SSD中。一段时间之后,SSD通过垃圾回收机制来回收存储着原始数据的失效页。FlashGuard修改SSD的垃圾回收机制,使得当ransomware加密文件时,数据的原始备份依旧保存在SSD中并且不会被回收。通过对1447个ransomware样本的实验,我们发现FlashGuard能够有效恢复被加密文件。另外本文还论证了FlashGuard对SSD性能和生命周期的影响可以忽略。

FlashGuard的设计基于我们对于大量ransomware的调研。我们的调研主要关注于ransomware加密所需时间和对于备份的销毁。我们从VirusTotal收集了1477个勒索病毒实例,并且根据它们的的勒索消息将它们分成13类。我们在虚拟机内模拟了一台正常用户的文件系统,其中包含了来自于超过十六中类型的9876个文件。值得注意的是,在动态运行每一个样本的时候,我们自动赋予了样本管理员权限,以更大限度地暴漏样本的行为。我们将调研的结果总结于表1中。

表1: 我们调研中使用的样本类型。此表展示了这些样本针对的文件类型,完成加密所需要的时间,以及是否会摧毁备份数据。

我们发现,ransomware通常在加密完成后立即显示勒索消息(有一些样本甚至在完成加密前就显示了勒索信信息)。有10类病毒完成加密所需的时间少于一小时,某些样本甚至不到20分钟就完成了加密。特定类型的ransomware只加密小文件或者特定扩展名的文件,比如JigSaw只加密小于10 MB的文件。我们还发现有8类勒索病毒会销毁备份文件。注意前面我们提到过,我们赋予了勒索病毒管理员权限,所以勒索病毒可以删除备份。在真实场景中,如果ransomware没有得到相应权限,它们会设法绕过用户访问控制。举例来说,cerber会首先给自己提升权限,然后使用命令行工具删除备份文件。基于以上调研,我们做出如下两个结论以及推论:

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

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

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

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

以上两点结论启发了FlashGuard的核心设计思路:通过备份系统来对抗ransomware, 我们需要保证备份系统在面对拥有管理员权限的样本时依旧稳定有效的运行。同时,由于ransomware的快速加密特性,备份系统只需要备份相对较短时间内的数据。下面我们具体介绍FlashGuard的技术细节以及测试评估。为了便于理解,我们首先介绍SSD的覆写机制。

图 1: HDD和SSD在覆写操作上的区别。当逻辑区块x发生覆写时,HDD会直接在对应的物理区块上覆写数据。然而SSD会把新的数据写到新的物理区块(z)上,并且通过后续的垃圾回收机制回收失效的物理区块 (y)。

与HDD一个显著地不同是,当逻辑上的覆写发生时,HDD会直接在物理硬件上覆写数据。而SSD通过out-of-place机制覆写。在发生覆写时,SSD把数据写到新的区块中,将旧的区块标记为无效并且通过Garbagae Collegection回收无效区块。这种差异可以通过图 1 更为清晰的展示。由此可见,SSD天然地会对被上层修改过的数据进行一段时间的备份。我们利用这一个硬件特性来设计FlashGuard。

图 2: RTFL结构简介。RTFL对于SSD已有的FTL进行了适当的修改。只要是通过加入一个read tracker table (RTT) 来记录一个硬盘页面是不是被读取过。LPA: 逻辑页地址; PPA: 物理页地址; VPA: 虚拟页地址; PBA: 物理块地址。

FlashGuard建立在SSD的固件层中,这样的带来的好处是FlashGuard通过硬件和操作系统隔离,因此可以抵抗来自高权限ransomware的攻击。FlashGuard包括两个主要组成部分,Ransomware-aware Flash Translation Layer (RFTL)和数据恢复工具。

图2展示了RFTL的结构, RFTL的作用是保存可能被加密勒索病毒覆写的数据,恢复工具使得受害用户可以恢复被加密的文件。其中,FTL是主流SSD的原有结构。它通过address mapping table可以将逻辑地址转换为物理地址。基于效率考量,最近用过的地址会被保存到LRU Cache中。当地址映射请求发生时,如果访问的地址没有在此cache中,FTL通过Global Mapping Directory完成地址映射并将对应的结果更新到LRU Cache中。此外,Block Validity Table跟踪每个块中有效的页数量, 而Page Validity Table记录一个区块中哪些页是有效的。这两个数据结构主要用于辅助垃圾回收。如前所述,垃圾回收是SSD的一个重要功能,主要负责回收已经失效的物理区块。简单来说,它负责将已用的存储块集中在一起,并且释放空闲的存储空间出来供后续使用,同时它还要保证所有的块的寿命是平均的,以延长SSD的使用时间。

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

一个更好的设计是只保存被勒索病毒篡改过的原始数据。这个设计的挑战在于现有的FTL无法分辨出哪些数据是被勒索病毒覆盖的。我们从ransomware的一个根本性特征得到启发 — 勒索病毒工作时基本必须先从磁盘读取数据,完成加密并且覆盖原有数据。

由此,我们保守的认为如果一个页先被读取,然后再次被覆写,就有可能是被ransomware污染的页。我们在FTL中添加一个结构体Read Tracker Table(RTT)。当对某个页发生读操作时,RTT中会标记该页已经被读取。当这个页被覆写时,FlashGuard会查询RTT从而确定它曾经被读取过,并且进一步将其标记为污染页。同时,FlashGuard会将这个覆写发生的时刻记录为污染时间点。当垃圾回收发生时,如果一个污染页的污染时间点比当前时刻少于一个阈值(默认值为20天)时,它会确保此污染也不会被回收。因此,20天内的可能被污染的数据都被保留在SSD中。根据上述的调研,ransomware的加密和潜伏时间通常都在数小时。由此我们相信FlashGuard可以有效的对抗ransomware的攻击。

我们在1TB的可编程SSD上实现了FlashGuard,这个SSD中每个块包含64个页,每个页4KB。FlashGuarD的实现存储在固件中,并且被设置为不允许修改。作者还实现了一个恢复工具,能够帮助用户高效的利用FlashGuard恢复数据。我们进一步通过两方面的实验来验证FlashGuard的有效性和性能开销。

我们使用前面提到过的1477个ransomware实例做攻击实验。然后在攻击完成后通过FlashGuard恢复被加密的数据。最终实验结果表明,对于实验中使用的所有ransomware,FlashGuard都可以成功恢复全部被加密的数据。FalshGuard回复的数据大小和所需要的时间如图2所示。

图 2:FlashGuard回复的数据大小和所需要的时间

图 3: 未经修改的SSD和FlashGuard运行时性能比较 (FlashGuard保留污染数据的时间从2天到20天不等)。

在性能方面,我们实验中用到的数据都是从真实的应用场景中得来的,比如微软剑桥研究院服务器和大学电脑上的I/O数据记录。在实验之前,我们执行了5千万次读写操作“预热”系统。实验证明FlashGuard带来的性能损失微乎其微,作者分析是因为FlashGuard是根据页先被读又被改这样的规则保留无效页,这样的操作在正常的使用中并不多见,所以在不受攻击时与传统的SSD工作状态几乎没有不同。性能影响实验结果如图3所示。

Reference

[1] Huang, J., Xu, J., Xing, X., Liu, P., & Qureshi, M. “FlashGuard: Leveraging Intrinsic Flash

Properties to Defend Against Encryption Ransomware”. In The 24th ACM Conference on

Computer and Communications Security (CCS 2017), Dallas, USA, 2017

作者简介

Jun Xu (徐军), Pennsylvania State University 博士在读,师从刘鹏教授。本科毕业于中国科学技术大学,曾获郭沫若奖。研究兴趣为软件和系统安全,以及恶意软件防护。研究成果曾发表于CCS, Usenix Security, SenSys等会议。个人主页: http://www.personal.psu.edu/jxx13

Jian Huang is an Assistant Professor in the ECE department at UIUC. He received his Ph.D. from Georgia Tech. His research interests lie in the areas of computer systems, including operating systems, systems architecture, systems security, and especially the intersections of them. He enjoys building systems. His research contributions have been published at ISCA, ASPLOS, FAST, ATC, CCS, VLDB, and SoCC. His work WearDrive won the Best Paper Award at USENIX ATC in 2015 and attracted popular press coverage in many countries. His work FlashMap won the IEEE Micro Top Picks Honorable Mention in 2016.

Bookmark the permalink.

Comments are closed.