通过文件系统取证和闪存转换层数据提取,实现从勒索软件攻击中恢复每个文件的数据

近年来,勒索软件攻击日益猖獗。加密勒索软件会破坏受感染设备上的文件,并索要赎金才能恢复。在使用闪存存储(例如 SSD、MicroSD 等)的计算设备中,现有的设计是通过提取整个原始闪存映像,将整个外部存储恢复到良好的先前状态来恢复受损数据。这可以通过利用闪存转换层 (FTL) 中实现的异地更新功能来实现。然而,由于 FTL 中缺乏“文件”语义,这种解决方案无法实现文件层面的细粒度数据恢复。考虑到勒索软件攻击以文件为中心的特性,恢复整个磁盘几乎是不必要的。特别是,用户可能只是希望在勒索软件攻击后快速恢复某些关键文件。在本研究中,我们设计了FFRec哦五ery这是一种新的勒索软件防御策略,可以在勒索软件攻击后支持细粒度的单个文件数据恢复。我们的核心思想是,要恢复被勒索软件破坏的文件,我们需要:(1) 通过文件系统取证恢复其文件系统元数据;(2) 通过从 FTL 中提取原始数据来提取其文件数据;(3) 将相应的文件系统元数据和文件数据组合起来。另一个重要方面是FFRec哦五ery我们在 FTL 中添加了垃圾收集延迟和冻结机制,这样在恢复之前就不会丢失原始数据,而且恢复所需的原始数据也总是能被找到。FFRec哦五ery已经开发出来,我们使用真实世界的勒索软件样本进行的实验证明了FFRec哦五ery我们还证明FFRec哦五ery存储成本和性能影响可以忽略不计。

介绍

包括服务器、个人电脑和移动设备在内的计算设备越来越多地存储着大量关键数据。随着这些设备的普及,针对它们的攻击也日益增多。例如,据预测,到 2025 年,网络犯罪造成的损失将达到 10.5 万亿美元 (Morgan 2016 )。这些攻击中很大一部分是勒索软件攻击,因为它们可以直接牟取经济利益,而且攻击操作简单。勒索软件,尤其是加密勒索软件,会加密关键数据,并要求受害者支付赎金以获取解密密钥。2021 年,出现了有史以来最高额的赎金记录(5000 万美元),而对全球经济造成影响的殖民管道攻击事件则在许多国际媒体上引起广泛关注 ( https://illinois.touro.edu/news/the-10-biggest-ransomware-attacks-of-2021.php )。必须研究解决方案来恢复此类攻击中泄露的关键数据,而无需支付昂贵的赎金。

文献中已有一些勒索软件恢复解决方案。CLDSafe(YUN 等人,2017 年)和 RockFS(Matos 等人,2018 年)是基于云存储的解决方案,它们将用户文件的备份存储在远程数据中心,以便将受感染的文件恢复到良好的先前状态。上述解决方案的一个关键问题是维护异地存储的成本。例如,Amazon S3 的单 TB 备份存储每年费用约为 276 美元([https://aws.amazon.com/s3/pricing/?nc=sn&loc=4](https://aws.amazon.com/s3/pricing/?nc=sn &loc=4))。此外,个人管理的异地存储基础设施本身容易受到各种攻击(https://www.aquasec.com/cloud-native-academy/cloud-attacks/cloud-attacks/),包括帐户劫持、内部威胁、旁道攻击、DoS 攻击等。最后,远程备份可能存在同步差距(Xie et al. 2023),即本地设备中的最新更新可能无法及时与远程服务器同步。另一个勒索软件恢复解决方案 PayBreak(Kolodenker et al. 2017)可以安全地跟踪使用过的加密密钥,以便勒索软件稍后可以提取这些密钥来解密文件。这种方法存在一个根本缺陷,即只有使用受支持的加密库的勒索软件才能被恢复,而勒索软件可以通过仔细选择其库轻松规避这种防御。

近年来,主要使用闪存的计算设备比例急剧增加,预计这一趋势还将继续 ( https://www.t4.ai/industry/ssd-market-share )。因此,一些研究人员开始研究使用闪存设备的基于硬件的勒索软件恢复解决方案 (Huang et al., 2017 ; Baek et al., 2018 ; Baek et al., 2020 ; Wang et al., 2019 ; Min et al., 2018 ; Min et al., 2021 ; Park et al., 2019 ; Ma et al., 2023 )。这是通过 NAND 闪存设备的闪存转换层 (FTL) 中实现的异地更新功能实现的。这些现有的勒索软件防御策略纯粹依靠原始闪存数据进行恢复,因此存在很大的局限性。也就是说,它们只允许受害者用户恢复整个原始闪存数据,而不是单个用户文件。允许受害者用户恢复单个文件至关重要,原因如下:(1)他们可能有一些必须对单个文件执行的时间敏感操作;等待所有内容恢复可能会带来挑战。(2)勒索软件通常会破坏存储在受害者设备中的用户文件,针对特定文件类型(docx、pdf、jpg 等)。因此,闪存设备中的原始数据并非全部受损,恢复所有原始数据有些过度。(3)如果使用勒索软件检测器,勒索软件可能会在少量文件被加密后关闭,因此只应恢复那些已加密的文件。因此,勒索软件攻击后的恢复应该是文件驱动的。例如,用户应该能够确定需要恢复哪些文件或应该先恢复哪些文件。不幸的是,现有的方法(Huang 等人,2017 年;Baek 等人,2018 年、2020 年;Wang 等人,2019 年;Min 等人,2018 年、2021 年;Park 等人,2019 年)不是文件驱动的,因为它们纯粹依靠位于较低存储介质层且不具有“文件”语义的原始闪存数据来恢复受损数据。

为了在勒索软件攻击后实现文件驱动的数据恢复,我们提出了一种跨层设计,该设计依赖于上层存储层的文件系统取证和下层存储介质层的原始闪存数据提取。为了能够在上层存储层运行,我们主要关注在用户空间运行且无法获取root权限的勒索软件。这类用户级勒索软件在现实世界中占主导地位。例如,在我们收集的用于评估的、具有高度代表性的勒索软件样本中,87%的样本在用户空间运行(“恢复率”部分)。我们的核心思想是拦截存储系统的多个层级,并使用上层的文件语义来指导下层的原始数据提取。这将实现文件驱动的恢复,使其更自然地与勒索软件的操作(即在文件级别加密数据)相对应。我们的详细见解阐述如下:

用户级勒索软件在用户空间运行,没有权限显式修改文件系统元数据。因此,在勒索软件攻击后,可以通过文件系统取证来恢复损坏文件的文件系统元数据

勒索软件会始终覆盖用户空间中的原始文件数据。然而,由于底层闪存转换层 (FTL) 执行了非原地更新,文件数据会暂时保存在闪存中 (Guan et al. 2017 ; Huang et al. 2017 )。因此,可以从 FTL 中提取损坏文件的原始文件数据。

通过使用恢复的文件系统元数据和从 FTL 中提取的文件数据,我们可以恢复被勒索软件破坏的受害者文件。

最终的设计,FFRec哦五ery**,是一个针对使用闪存存储的计算设备的勒索软件防御框架,可以支持对被勒索软件破坏的受害者文件的细粒度****恢复。**

贡献。我们的主要贡献可以概括如下:

我们设计了一种新颖的文件驱动数据恢复方案,专门用于在使用闪存作为外部存储的计算设备中防御勒索软件。我们的设计是首个通过协作存储系统的多层级来对抗勒索软件的跨层数据恢复设计。
我们的文件系统取证组件可以在面对不同类型的勒索软件时恢复文件系统元数据。此方法也可用于在非对抗场景中恢复数据。此外,我们的闪存原始数据提取组件可以确保勒索软件入侵的文件数据始终可恢复。
我们已经实现了一个原型FFRec哦五ery并通过收集和运行来自54个勒索软件家族的最新真实勒索软件样本来评估其有效性。我们还评估了吞吐量影响以及存储成本。

背景

勒索软件

当今的主要威胁来自加密勒索软件,它会加密受害者数据,并索要赎金以解密用户文件。通常,勒索软件要么加密文件数据,然后用加密的密文覆盖(类型 I),要么加密文件数据,将密文写入新的磁盘位置,然后用随机/乱码信息覆盖原始文件数据,从而删除原始文件数据(类型 II)。

文件系统

文件系统是一种方法/数据结构,操作系统通过它来控制用户数据在存储介质中的存取方式。用户数据通常被用户视为“文件”,对文件的每个读/写操作都会被文件系统透明地转换为对外部存储的读/写操作。为了便于这种转换,文件系统通常将存储划分为不同的易于寻址的区域。最底层是块,它们是连续的字节段,每个字节都属于同一数据结构。在文件系统中,块被组合成许多不同的结构,这些结构可分为元数据结构和用户数据结构(文件)。元数据结构包含有关文件系统配置本身的信息,并由为文件系统提供文件查看界面以管理用户文件的数据组成。用于文件的元数据包括文件名、磁盘中相应块的位置、文件创建时间等。这些文件元数据位于称为 inode 或目录条目的结构中。还有一些称为目录的特殊文件,它们将文件名映射到其元数据结构。根据文件系统是否实现日志功能,我们可以简单地将其分为日志文件系统和非日志文件系统。所有这些文件系统的一个基本特点是元数据与文件本身是分离的。

日志文件系统通常通过将尚未提交到主文件系统的更改记录在称为“日志”的循环日志中来跟踪它们。日志对于在意外断电或系统崩溃时快速恢复系统非常有用。通常,这些文件系统中的日志可能只跟踪存储的元数据。根据实现方式,它们也可能同时跟踪存储的数据和元数据。流行的日志文件系统包括 NTFS、EXT3 和 EXT4。在 EXT3/4 中,日志通常可以通过 inode 编号 8 来引用(https://docs.kernel.org/filesystems/ext4/globals.html)。EXT3/4被组织成称为块组的结构,其中包含全局元数据的本地副本、组文件的本地元数据以及这些文件的数据。NTFS 文件系统分为两个不同的部分:引导扇区和文件数据。引导扇区包含全局元数据,而文件数据部分包含特殊元数据文件和用户文件本身(http://ntfs.com/ntfs_basics.htm)。

与日志文件系统不同,非日志文件系统没有日志。常见的非日志文件系统包括 exFAT、FAT 系列(FAT12、FAT16、FAT32)和 EXT2。FAT 文件系统由三个主要区域组成(图 1):引导区(位于保留区域)、文件分配表 (FAT) 区和数据区。引导区包含引导扇区中的基本文件系统信息。FAT 表存储在引导区之后,指示分配给文件的簇。数据区包含所有文件数据和元数据。文件/目录的元数据存储在数据区中的树状结构中,从根目录开始。该树中的节点称为目录条目,包含父目录的文件/目录的元数据。根目录的位置隐含在引导扇区中。

图 1

FAT 文件系统布局

全尺寸图像

闪存

闪存,尤其是 NAND 闪存,正迅速成为一种重要的主流存储介质 ( https://www.t4.ai/industry/ssd-market-share )。这是因为与更传统的存储设备(HDD)相比,闪存具有非常高的 I/O 吞吐量,并且使用 NAND 闪存的廉价便携式存储设备(例如 SD/microSD 卡、USB 驱动器等)已无处不在。闪存的价格也在迅速下降。例如,预计 2023 年 SSD 的价格将比 2022 年便宜 50% ( https://www.tomshardware.com/news/analysts-predict-ssd-prices-may-halve-by-mid-2023 )。

NAND 闪存由块 (Block) 组成(典型的块大小为 16KB、128KB、256KB 或 512KB),每个块由许多页 (Page) 组成(典型的页大小为 512B、2KB 或 4KB)。与传统机械磁盘 (HDD) 相比,NAND 闪存具有一些独特的特性。首先,它的读取或编程/写入操作的单位是页,但其擦除操作的单位是块。其次,它遵循先擦除后写的设计,这意味着在对包含的块执行擦除操作之前不允许重新编程/写入页。第三,每个块仅允许有限数量的编程/擦除 (P/E) 周期,即当其 P/E 周期超过阈值时,该块将变得不可靠并且无法用于正确存储数据。由于上述特殊性,就地更新策略成本高昂,因为它需要先擦除整个包含的块。因此,NAND 闪存更倾向于采用异地更新策略,即通过将新数据写入新位置并同时使旧数据无效来执行更新。为了允许在闪存上使用传统的基于块的文件系统(例如 FAT32、EXT4、NTFS),在文件系统和原始 NAND 闪存之间引入了一个额外的闪存转换层 (FTL)。FTL(图 2)透明地管理闪存的这种特殊性质,并向外部公开一个块访问接口。此块访问接口的一个重要方面是,从操作系统的角度来看,更新是就地进行的。

图2

Flash 转换层 (FTL) 可视化

全尺寸图像

异位更新由 FTL 中的磨损均衡功能实现。由于块所能承受的 P/E 周期有限,异位更新可以使磨损在设备中更均匀地分布。当任何块中的数据发生更改时,这些所谓的异位更新会导致更改被写入空块,这些空块与包含原始数据的块不同。原始数据将保留在与之前相同的物理位置。新位置由地址转换过程更新。地址转换通过维护文件系统的块地址与闪存物理地址之间的映射表来实现。这是必要的,因为由于异位更新,数据的物理位置在存储设备中可能经常发生变化,而地址在操作系统中保持不变。因此,映射表中维护了两个映射,用于维护块访问接口:从地址到逻辑块和页码的映射,以及从逻辑块到物理块的映射。每次发生异位更新时,这些映射都会更改以反映新的位置。 FTL 的另一个关键功能是垃圾回收 (GC),它通常在空闲时间回收在非原位更新过程中失效的块。通常,当某个块中的无效页面数量超过某个阈值(通常是该块中的所有页面)时,该块就会被回收,其上的数据也会被删除。由于当块的 P/E 周期超过阈值时,其可靠性会下降,因此 FTL 还实现了坏块管理,以防止这些坏块被使用。

模型和假设

系统模型

我们将配备基于闪存的块设备的计算设备视为外部存储。这种类型的计算设备在现实世界中非常常见。它可以是配备 SSD 驱动器的服务器或个人计算机。它也可以是一个配备 SD/miniSD/microSD 卡、eMMC 卡或 UFS 卡的移动设备或物联网设备。部署基于块的文件系统来管理外部存储。主机计算设备应运行支持 exFAT、FAT32、EXT2/3/4 或 NTFS 文件系统的操作系统。

对抗模型

我们考虑加密勒索软件,它会加密用户数据并索要赎金。勒索软件成功入侵受害计算设备并在设备的用户空间中运行。勒索软件在用户空间运行,可以自由打开、读取、写入和删除用户文件。然而,它无法获得内核级权限,因此无法操纵内核以及属于内核的系统数据。虽然我们尚未发现任何量化用户级勒索软件比例的研究,但我们认为这一假设是合理的。具体而言,我们评估了 92 个极具代表性的勒索软件样本,发现 80 个(87%) 不需要任何特殊权限,因此在用户级运行。这表明,相当一部分勒索软件在用户级运行,从而证明了利用此假设的解决方案是合理的。此假设还意味着:(1) 勒索软件无法直接修改或删除文件系统元数据;(2) 它无法关闭操作系统中运行的任何勒索软件检测进程,因为它没有权限控制系统上的其他软件,假设每个进程都在独立的内存空间中运行。

假设

我们假设系统中正在运行勒索软件检测器。文献中有许多勒索软件检测器(Kharraz 等人,2016 年;Continella 等人,2016 年;Scaife 等人,2016 年)可以应用于此。然而,由于勒索软件检测器通常需要勒索软件运行一段时间才能检测到,因此使用检测器并不意味着检测后就不需要数据恢复工具。

我们的设计

遭受勒索软件攻击后,受害用户会阻止甚至删除勒索软件,接下来,用户会恢复被勒索软件损坏的文件。需要注意的是,允许用户根据自身情况确定优先恢复哪些文件至关重要。例如,如果用户是一名学生,他/她希望在截止日期前提交项目,那么项目文件就是他/她最想恢复的文件;或者,如果用户是一名媒体记者,他/她希望立即恢复自己的新闻稿件,以便及时提交发表。

设计概述

为了能够恢复用户提供的特定文件,FFRec哦五ery引入了三个组件:(1)文件系统取证组件。要恢复受感染的文件,我们首先需要恢复相应的文件系统元数据,找出存储文件内容的所有磁盘位置。需要注意的是,对于基于闪存的存储介质,数据最终将存储在闪存中,而数据的磁盘位置是一个逻辑位置。这是因为闪存转换层将处理逻辑磁盘位置和物理闪存位置之间的映射。“通过文件系统取证恢复文件系统元数据”一节详细说明了在部署了不同类型的文件系统的情况下,该组件如何在用户级勒索软件破坏文件后恢复给定文件的文件系统元数据。(2)闪存原始数据提取组件。为了恢复给定文件,我们还需要恢复存储在上述磁盘位置上的文件数据。为了使原始文件数据无法访问,I 型和 II 型勒索软件(“勒索软件”一节)都需要覆盖相应的磁盘位置。然而,闪存存储通常在内部执行异地更新,操作系统执行的覆盖操作只能使闪存上的数据无效而不是删除。这会导致旧数据暂时保留在先前的闪存位置,“通过提取闪存原始数据恢复文件数据”一节介绍了如何从原始闪存中提取这些数据,以便在勒索软件攻击后进行数据恢复。“通过提取闪存原始数据恢复文件数据”一节还阐述了我们的策略,通过这些策略我们可以防止垃圾回收系统回收无效的旧数据,并确保可以有效地从闪存中定位它们。(3)恢复组件。此组件主要提供给用户,以促进组件 1 和 2 之间的交互,从而允许恢复特定文件,这将在“将文件系统取证与基于 FTL 的数据提取相结合”一节中详细说明。

设计细节

通过文件系统取证恢复文件系统元数据

要恢复被勒索软件破坏的文件,我们必须首先恢复相应的文件系统元数据,这些元数据决定了文件内容在磁盘上的存储位置。接下来,我们将展示如何通过基于文件系统的取证分析,恢复 I 型和 II 型勒索软件的文件系统元数据。

针对 I 型勒索软件恢复文件系统元数据

I 型勒索软件会用加密文件覆盖原始文件。由于勒索软件没有控制文件系统的权限(“模型和假设”部分),它只能使用文件系统提供的写入接口对原始文件进行就地更新。因此,与原始文件相比,加密文件的文件内容的磁盘位置保持不变(图 3),并且可以通过对文件系统进行取证分析来恢复这些磁盘位置。由于文件元数据没有发生根本性的变化,因此定位它的取证分析与操作系统定位文件的方式相同,只需沿着目录找到该文件的元数据结构即可。对于 EXT3/4 文件系统,此文件系统元数据结构是 inode。要查找特定文件的 inode,我们可以从根目录 inode 开始,然后沿着它找到根目录数据。根目录数据将指向包含目录和文件的 inode。可以递归地查找任何给定文件的 inode。对于 FAT 文件系统,过程类似,尽管元数据结构被称为目录条目。

图3

勒索软件覆盖原始文件

全尺寸图像

针对 II 型勒索软件恢复文件系统元数据。II 型勒索软件会删除原始文件,恢复已删除文件的元数据并非易事。由于没有明确的文件系统机制来执行此操作,因此我们利用了间接文件系统行为。我们讨论不同类型文件系统下的解决方案:

对于 exFAT、FAT 系列、NTFS 和 EXT2 文件系统,已删除文件的大部分元数据仍保留在原始结构中,并且元数据包含文件数据的位置(图 4)。但是,文件元数据指示已删除,并且目录会删除所有指向这些“已删除”元数据结构的指针。为了解决这个问题,我们搜索所有指示已删除文件的文件元数据结构,并找到恢复所需的特定文件元数据。从检索到的文件元数据中,我们可以检索位置字段。
对于 EXT3 和 EXT4,除了将 inode 标记为已删除并从目录中删除指向它们的指针之外,操作系统还会在文件删除后自动将其磁盘位置清零(图 5)。这使得恢复已删除文件的数据位置变得非常困难,因为即使检索到了 inode,它也不会包含此信息。幸运的是,我们观察到日志通常会记录元数据的更改(“文件系统”部分)。因此,可以通过定位相应的文件删除事件,并在删除事件发生之前搜索“已删除” inode 的副本来检索“已删除” inode 列表。我们可以使用此列表检索特定文件的旧 inode。获取到此列表后,就可以检索磁盘位置了。

图4

勒索软件删除原始文件(针对 exFAT、FAT、NTFS 和 EXT2)

全尺寸图像

图5

勒索软件删除原始文件(适用于 EXT3 和 EXT4)

全尺寸图像

通过提取闪存原始数据恢复文件数据

为了说明勒索软件攻击后文件数据恢复的原理,我们在图 6中展示了一个具体的示例。文件数据最初存储在映射到闪存位置 1 的磁盘位置 2 中;在文件遭到勒索软件攻击后(无论是 I 型还是 II 型勒索软件),新数据(文件数据的加密版本或只是乱码/随机信息)将物理存储在新的闪存位置 4 中,但由于 FTL 实施的异地更新策略,原始数据仍然保留在闪存位置 1 中。因此,如果我们可以 (1) 确保原始数据正确存储在闪存位置 1,并且 (2) 回滚原始映射,使磁盘位置 2 重新映射到闪存位置 1,我们就可以在勒索软件攻击后恢复文件数据(图 6)。

图6

通过回滚 FTL 中的相应映射来恢复文件数据

全尺寸图像

确保原始文件数据完好无损。确保受感染文件的原始数据保留在闪存中对于恢复至关重要。然而,一旦勒索软件覆盖/删除文件,闪存块中的旧文件数据将失效,而传统 FTL 实现的垃圾回收 (GC) 最终会回收那些包含无效数据的闪存块,使其无法恢复。幸运的是,系统中运行着一个勒索软件检测器(“模型和假设”部分)。通常,一旦检测到勒索软件,就会立即将其隔离或关闭。解决上述问题的一个初步解决方案是在检测到勒索软件后立即关闭 GC,这样在此之后就不会回收任何闪存块。这个初步解决方案的问题是,勒索软件开始破坏数据和被检测到之间会存在一些延迟,在此期间 GC 可能已经擦除了一些包含恢复所需无效数据的闪存块。可以通过引入额外的延迟来改进解决方案(即,Tde升一个y)到正常的垃圾收集。Tde升一个y可以通过测量勒索软件检测器在攻击导致第一个区块失效后识别勒索软件攻击所需的时间来估算。具体来说,正常的垃圾收集将通过延迟每个区块的回收来改变,直到Tde升一个y已经过去,并且当检测到勒索软件时,GC 被禁用。

图7

有效 GC 延迟的时间轴演示

全尺寸图像

我们的延迟垃圾收集机制可以确保每个失效的块在检测器检测到是否由勒索软件导致之前不会被回收。例如,图 7描述了一个检测器耗时 5 分钟的系统,一个 FTL 耗时 5 分钟的系统Tde升一个y设置为 5 分钟,包含两个区块(区块 1 和区块 2)。由于频繁使用,区块 1 在第 1 分钟被用户置为无效。因此,该区块最终应该会被垃圾回收机制 (GC) 回收。假设勒索软件在第 3 分钟开始加密数据,而区块 2 在第 5 分钟被勒索软件置为无效。为了恢复正常数据,应该保留区块 2。垃圾回收机制将在第 6 分钟回收区块 1 中的数据(因为Tde升一个y(5分钟),由于不包含任何数据,因此勒索软件不会使其失效。勒索软件在第8分钟被检测到,垃圾回收功能也随之关闭。这是一个典型的攻击场景。虽然块1被回收,但它不包含任何恢复所需的数据,因为在勒索软件进入系统之前,它就被自然用户进程失效了。然而,块2确实包含恢复所需的数据,因此在检测到勒索软件之前,其数据并未被回收,这是因为Tde升一个y,设置为 5 分钟,以确保在删除重要数据之前能够检测到勒索软件并冻结 GC。

引入遗留问题Tde升一个y勒索软件检测器如何安全地将检测结果和检测时间传递给 FTL?为了解决这个问题,可以通过允许检测器对闪存设备的某些保留地址执行写操作,在检测器和 FTL 之间建立通信通道。任何攻击者都可能试图利用这一点,通过错误地通知 FTL 已检测到勒索软件来控制 FTL,从而禁用垃圾收集。为了防止这种攻击,可以使用密钥交换协议在检测器和 FTL 之间共享一个密钥,并将其用作通信密钥。勒索软件检测器可以将检测结果和检测时间以及使用通信密钥生成的验证标签一起发送给 FTL。FTL 可以通过通信密钥验证检测结果和检测时间的正确性。此外,还可以引入计数器来防止重放攻击。

确保原始映射可回滚。FTL 通常维护一个映射表,将每个磁盘位置映射到闪存位置。当勒索软件破坏文件时,由于 FTL 执行的异地更新,勒索软件写入的数据将被重新定位到新的闪存位置,因此表中磁盘位置和闪存位置之间的对应映射可能会发生变化。由于映射表已提交到闪存,因此对映射表本身的任何更新也遵循异地更新的方式。因此,为了确保映射的恢复,我们可以直接利用对已提交到闪存的映射表执行的异地更新。然而,这种直接的解决方案存在两个局限性:

找到需要恢复的给定文件的所有正确映射并非易事。如图 8所示,其中页面 42 存储了两个不同文件对应的磁盘位置的映射。当第一个文件受损时,仅更新与第一个文件相关的映射(例如,(2,3) 和 (3,7));由于更新位置不当,需要将新的映射写入新的页面 55(请注意,闪存只能以页面为单位执行写入操作)。当第二个文件受损时,仅更新与第二个文件相关的映射(例如,(30,12)、(35,6) 和 (36,15));同样,由于更新位置不当,需要将新的映射写入新的页面 73。当前映射表现在包含到闪存位置 21、22、23、24 和 25 的映射。要恢复第一个文件,我们需要仅在第 42 页可用的映射 (2,3)、(3,7),但要恢复第二个文件,我们需要在第 42 页或第 55 页可用的映射 (30,12)、(35,6)、(36,15)。

存储映射的闪存块一旦被勒索软件失效,最终将被垃圾收集器回收。

图8

勒索软件攻击导致页面上存储的映射发生变化。(xy)表示磁盘位置x映射到闪存位置y

全尺寸图像

我们的解决方案是在闪存的保留区域中明确备份最近更新的映射。由于写入闪存只能以页面为基础执行,我们可以将更新的映射缓存在 RAM 中,每次提交一批。一种优化方法是以保留位置的方式进一步组织这些更新的映射,以便将具有附近磁盘位置的映射放置得彼此靠近。系统通常按照某种位置读取/写入文件(Bajaj 和 Sion 2013),通过按照其磁盘位置组织映射,我们可以显著减少因读取/写入这些更新映射而导致的闪存页面读取/写入次数。在最坏的情况下,如果设备遭遇突发故障(例如断电),仍然可以从存储旧映射并因异地更新而失效的闪存块中恢复缓存在 RAM 中的映射。

将文件系统取证与基于 FTL 的数据提取相结合

勒索软件破坏部分用户文件后,会被勒索软件检测器检测到。检测器会自动通知 FTL 已检测到勒索软件。FTL 随后会冻结垃圾回收。此外,检测器会自动关闭勒索软件。用户会收到检测器发送的消息通知,然后启动我们的恢复应用程序,恢复受损文件。如果恢复应用程序本身已被勒索软件破坏,用户只需在勒索软件关闭后,从便携式设备复制该应用程序即可。启动应用程序后,文件系统取证功能会自动识别受勒索软件影响的文件,用户只需选择要恢复的文件即可。用户选择这些文件后,恢复应用程序将自动与 FTL 协作恢复文件,具体步骤如下:首先,恢复应用程序会通知 FTL 进入恢复模式。这会导致 FTL 在此模式下简单地恢复使用保留区域中的备份映射(“通过提取闪存原始数据恢复文件数据”部分)。其次,对于每个给定文件,恢复应用程序将依赖文件系统取证组件(“通过文件系统取证恢复文件系统元数据”部分)来恢复相应的文件系统元数据,找出存储该文件文件数据的所有对应磁盘位置。第三,恢复应用程序对这些磁盘位置执行读取请求,以从中检索原始文件数据。

实施与评估

执行

我们使用 Windows 虚拟机作为主机计算设备(Windows 7,4 GB 内存)。我们使用 LPC-H3131 开发板(https://www.olimex.com/Products/ARM/NXP/LPC-H3131/)(搭载 ARM9 32 位 ARM926EJ-S 180MHz、32MB SDRAM 和 512MB NAND 闪存)构建闪存介质,并将开源闪存控制器 OpenNFM(https://code.google.com/p/opennfm/ )移植到该开发板(Tankasala 等人, 2020 年) ,该控制器用 C 语言编写。闪存介质通过 USB 2.0 接口连接到主机设备。为了能够在勒索软件攻击后提取闪存原始数据以进行数据恢复,我们对 OpenNFM 的闪存转换层进行了修改,使其能够充分管理垃圾回收 (GC) 并维护旧数据的映射。 FTL 也进行了修改,以实现与操作系统的通信,以便在勒索软件攻击后恢复文件。我们用 Python3 开发了一个用户工具,用于执行文件系统取证(支持对 FAT16、FAT32、exFAT、EXT2/3/4、NTFS 等几种主流文件系统进行取证分析),该工具可以恢复文件系统元数据并向用户提供恢复选项。以下源代码FFRec哦五ery可在 ( https://snp.cs.mtu.edu/ffrecovery.html ) 获取。我们设置Tde升一个y到 5 分钟,更大的延迟可以补偿手动关闭勒索软件和启动工具与 FTL 通信以进行文件恢复所需的时间。

回收率

我们已经测试了FFRec哦五ery在恢复最新勒索软件攻击中受损文件方面,我们取得了显著成效。我们从https://virusshare.com/和https://bazaar.abuse.ch/browse/收集了最近几年(2020-2023 年)的 92 个勒索软件样本。这些勒索软件样本来自 54 个勒索软件家族(详细列表请访问https://snp.cs.mtu.edu/research/drm2/ransomware-families-ffrecovery.pdf)。每个家族的勒索软件样本选择遵循以下原则:(1) 如果来源中只有一个样本可用,则选择该样本;(2) 如果有多个样本可用,则最多选择两个样本,这些样本来自不同年份,且优先选择最近年份的样本;(3) 如果每年有多个样本可用,则随机选择今年的样本。在 92 个样本中,我们发现有 12 个样本(约 13%)需要 root 权限才能运行,由于我们只考虑不需要 root 权限的用户级勒索软件,因此我们将其排除在评估范围之外。FFRec哦五ery使用剩余的 80 个勒索软件样本进行评估,这些样本属于 45 个不同的勒索软件家族。这些样本包含 I 型和 II 型勒索软件样本。这 45 个家族中包括 Alphv、LockBit、Phobos 和 Mallox,它们合计占 2023 年所有勒索软件攻击的 42%(Google Cloud 2024)。

测试恢复效果FFRec哦五ery在每个恶意软件样本下,我们将三个不同大小的文件(分别为 200KB、2MB 和 20MB)放在闪存介质上。然后,我们在测试平台中手动运行每个勒索软件样本,结果文件数据被破坏。勒索软件关闭后,我们开始恢复过程(“将文件系统取证与基于 FTL 的数据提取相结合”一节),如果所有文件都已恢复且与原始文件完全相同,则恢复成功。首先,勒索软件会从系统中移除,因此它无法在恢复过程中进行干扰。由于程序文件FFRec哦五ery由于勒索软件经常会破坏这些文件,因此该工具是通过 USB 存储设备提供的。之后,为了恢复所需的文件,我们启动用户应用程序,然后选择损坏的文件,并按照“将文件系统取证与基于 FTL 的数据提取相结合”一节中的说明进行恢复。运行每个样本后,都会设置并使用一个全新且相同的虚拟机测试环境。图9给出了勒索软件破坏和检测后恢复的示例 。

图9

勒索软件会加密原始文件。一旦检测到,就可以将文件恢复到原始状态

全尺寸图像

图10

回收率

全尺寸图像

图 10显示了我们评估下的恢复率。结果表明,恢复总体上是成功的,80 次勒索软件攻击中有 74 次被恢复(即成功恢复率约为 92.5%)。这证明了我们的解决方案在实际勒索软件文件恢复场景中的普遍有效性。

我们无法恢复的勒索软件家族包括 Azov(2/2 失败)、Cerber(1/2 失败)、Karma(1/2 失败)和 TellYouThePass(2/2 失败)。可能的原因是:FFRec哦五ery仅维护最近失效数据块的映射。因此,多次覆盖文件数据的勒索软件会欺骗我们的恢复机制。具体来说,如果勒索软件两次覆盖文件数据,则在恢复时,最新失效数据的映射将被恢复。在这种情况下,这些映射指向勒索软件第一次覆盖对应的数据(即加密数据)。我们将在未来的工作中进一步研究这一点。

在某些情况下,恢复的文件会比原始文件略大(例如,大几个字节)。文件大小的这种差异很可能是由于勒索软件有时会在加密过程中增加文件大小,从而导致文件大小元数据字段被隐式更新。由于我们的解决方案会从文件系统中检索最新的元数据,因此恢复文件的大小与加密文件相同。

吞吐量

衡量实施效果FFRec哦五ery在日常使用系统中,我们利用未修改的开源闪存控制器 OpenNFM 对闪存存储介质进行了一系列吞吐量基准测试,并与修改后的FFRec哦五ery版本。对于这些基准测试,我们使用了 fio 基准测试工具 (fio 2014 ) 并执行了随机写入 (RW)、随机读取 (RR)、顺序写入 (SW) 和顺序读取 (SR) 基准测试。Fio 是一个 I/O 基准测试工具,可以测试 Linux 内核的 I/O 接口。它被广泛用于提供 IOPS、吞吐量和延迟等详细的性能指标,使其成为评估存储设备性能的重要工具。图 11总结了这些测试的结果。

图11

吞吐量比较(KB/s)

全尺寸图像

为了全面评估观察到的差异的影响,我们对结果进行了统计分析。图 11中显示的数值是每种类型 30 个基准的平均值。吞吐量差异的评估基于平均值,假设结果服从正态分布。该假设是合理的,因为针对每个基准数据集进行的 Kolmogorov-Smirnov 正态性检验 (Kolmogorov-Smirnov et al. 1933 ) 均返回了正态结果。随后,进行了 T 检验 (Student 1908 ) 以确定 RW、RR、SW 和 SR 的观察结果的统计显著性。p 值脚注表1总结了这些测试的结果 。对于 RW、RR 和 SW,p 值小于 0.05,表明吞吐量存在统计学上的显著差异。在 SR 的情况下,OpenNFM 仍然更快,但可以忽略不计。这些吞吐量结果表明,FFRec哦五ery导致正常的读/写操作性能损失较小。评估这些差异的程度,OpenNFM 和FFRec哦五ery仅为 4.3%。写入操作的吞吐量差异是由于在映射发生变化时保存旧映射的机制造成的。由于我们实施了缓存来提高效率,因此这只会对性能产生轻微影响,不过,在这种最小吞吐量成本和勒索软件防护之间进行权衡是经济的。

表 1 T 检验对每个基准给出的 p 值

全尺寸表格

存储成本

进一步评估实施FFRec哦五ery在日常系统中,我们会评估存储成本。为了恢复损坏的文件,备份映射表会存储每个映射的最新失效版本。每个逻辑页面地址与关联的逻辑块和页码之间都有一个映射,通常为 4 个字节。此外,每个逻辑块与物理块之间也有一个映射,通常为 8 个字节(https://www.olimex.com/Products/ARM/NXP/LPC-H3131/)。这些映射存储在存储设备上连续的保留区域中,如果任何块被部分填充,则该块将被完全保留。

为了确定整个存储设备中预留备份映射表的大小,我们可以计算设备容量的已用百分比 ( M %)。这基于特定存储设备的三个参数确定:块大小(以字节为单位)( B )、页面大小(以字节为单位)( P ) 和存储设备容量(以字节为单位)( C )。结果概括于公式 1中。

米%=(⌈8(碳/B)B⌉+⌈4(碳/磷)B⌉)∗B碳∗100

(1)

特别是,对于我们使用的闪存介质(B=131,072,磷=2,048,碳=491,782,144),M % = 0.24%。这只是总容量的很小一部分。M % 可以推广到许多不同的闪存存储配置。典型的用户存储设备是中等大小的 SSD。它们的页面大小通常为 4KB,每块有 128-256 页 (Li et al. 2022 )。图 12针对典型的用户 SSD 建模了实际的备份映射表大小,页面大小为 2KB、4KB 或 8KB,每块有 128 页。

图12

针对各种页面大小,映射大小与 SSD 大小的比较

全尺寸图像

通过观察所有这些结果,我们可以得出以下结论:

与闪存设备的总容量相比,映射的存储成本可以忽略不计。

存储映射的大小与存储设备的大小呈正线性关系。这些结果表明,我们的解决方案可扩展至任何大小的存储设备。

页面大小与备份映射所占存储介质的比例呈负相关。因此,实施我们解决方案的 SSD 可能更倾向于使用较大的页面大小。例如,最常见的页面大小 (4KB) 导致M % = 0.099%,但这在设备容量中所占比例仍然微不足道。

这些观察结果表明,在日常使用系统中,我们的解决方案具有最小的存储开销,可扩展到大型存储设备,并且可以通过选择更大的页面大小进一步降低成本。

讨论

GC 延迟导致效率限制

在当前设计中,每个块在失效后必须等待回收。因此,可能会出现存储设备中没有剩余空间,数据操作被延迟的情况。这会显著降低在此期间的任何数据操作速度。为了解决这一效率限制,另一种解决方案可能是默认关闭垃圾回收延迟,并实施基于先怀疑后确认的两阶段检测。一旦怀疑,垃圾回收将被延迟,直到确认勒索软件的存在。我们怀疑此解决方案的可靠性不如我们当前的解决方案,因为在进入怀疑阶段之前可能会丢失一些数据,而怀疑阶段需要一些时间。

回收率提高

根据我们的观察,我们无法恢复的 6 个勒索软件样本最有可能的原因是数据被多次加密(“恢复率”部分)。在这种情况下,我们仅备份了最新失效块的映射,该块包含加密数据。然而,虽然恢复的映射指向加密数据,但原始文件数据仍然保留在闪存中。在这种情况下,找到较旧的数据或保留较旧的映射将有助于恢复。然而,可能还有其他失败原因,因此我们将在未来的工作中查明这些原因。

文件类型、数量和大小的影响

对于 2 个测试过的勒索软件样本,在恢复过程中失败(“恢复率”部分),我们至少恢复了一个测试文件,但未能恢复其他文件。具体来说,对于 2023 年的 azov 样本,只有 200KB 的文件成功恢复,其他两个均未恢复。对于 2022 年的 karma 样本,20MB 文件和 200KB 文件均已恢复,但 2MB 文件未能恢复。我们的结论是,对于这两个样本,恢复失败最可能的原因是由于未修复的文件被多次覆盖,而这些文件可能是勒索软件随机选择的。为了证明这一结论,我们提供了一个理论论据,证明失败不可能是由于文件类型、数量或大小造成的。

关于文件类型,仅通过文件名、文件内容和内容组织进行区分。没有理由认为具体的文件名、文件内容或内容组织会影响我们的解决方案,因为它们与低级文件系统元数据和原始闪存数据无关。

关于文件数量,II 型勒索软件可能会出现一种极端情况,导致某些文件被正确修复,而其他文件则无法修复。在这种情况下,大量文件可能会导致大量的文件删除和创建事件。对于非日志文件系统,已删除文件的元数据可能会被覆盖以创建新文件。对于日志文件系统,日志可能会被填满并循环回开头,删除提供已删除文件逻辑位置的日志条目。如果这是导致观察到的故障的原因,我们预计会有更多样本出现类似的行为,但事实并非如此。此外,我们通过仅保留存储设备上的三个文件,基本避免了这种极端情况。

关于文件大小,没有理由预期会对恢复产生影响。数据恢复是在较低的存储层执行的,该层不具备文件级语义(即所有块都被视为“相等”)。因此,在 FTL 恢复期间,所有数据块均被统一处理,而不考虑文件大小。此外,在文件系统级别,n 个块文件和 1 个块文件之间几乎没有取证差异。因此,没有理由得出恢复文件大小不会产生影响的结论。

理论上,我们的解决方案足够通用,除了给定的极端情况外,如果每个文件都以相同的方式修改(即加密一次),那么所有这些文件都是可以恢复的。然而,上述观察结果表明,有些文件被修复了,而有些则没有。鉴于这些不同行为的随机性和罕见性,以及缺乏理论基础来预测文件类型、数量或大小的系统性影响,我们得出结论,这些限制可能源于勒索软件操作的特定因素。具体而言,我们怀疑未恢复的文件被覆盖了不止一次,可能是勒索软件随机选择的。

限制

FFRec哦五ery。FFRec哦五ery可以在检测到勒索软件或及时通知用户的情况下工作。如果检测器出现误报,则勒索软件可能会在用户注意到并尝试执行恢复之前在系统中潜伏很长时间。在此期间,旧的无效块可能会被回收,因为 GC 延迟已经过期。虽然考虑到当今勒索软件检测器的有效性(Kok et al. 2019),这种情况不太可能发生,但在这种情况下,最好的希望是用户在原始数据被回收之前注意到勒索软件的存在,并立即执行恢复。或者,当本地恢复失败时,可以部署远程版本控制系统(Xie et al. 2023)。另一个限制FFRec哦五ery勒索软件在破坏文件时可能会隐式更改文件大小元数据,这对于确保文件与原始文件完全相同至关重要。发生这种情况时,会导致恢复的文件大小与原始文件不同。如果文件较小,可能会丢失一些数据;如果文件较大,则只会占用更多空间。

相关工作

我们专注于研究仅依靠本地存储而不是远程备份来恢复被勒索软件破坏的数据(Xie 等人,2023 年)。

RDS3(Subedi 等人,2017 年)在本地存储中创建了一个隔离的磁盘区域,以便敏感数据可以备份到该区域,并在勒索软件攻击后恢复。然而,RDS3 也存在一些缺点。首先,它需要预留一些常规数据无法使用的磁盘空间。此外,它会导致 I/O 吞吐量降低高达 65%。其次,它需要用户手动确定需要备份和恢复的“重要”数据,这也很繁琐。FFRec哦五ery解决了RDS3的缺陷,并专门针对使用闪存介质的计算设备设计了本地数据恢复方案。通过充分利用闪存的异地更新特性,FFRec哦五ery无需创建独立的磁盘区域。此外,它可以恢复任何给定的文件,用户无需手动确定“重要”文件。然而,FFRec哦五ery可以保留RDS3的优势,加入文件语义,使得勒索病毒攻击后的数据恢复可以针对用户文件进行。

针对使用闪存作为外部存储的计算设备,已经设计了一些现有方案,利用异地更新功能。FlashGuard (Huang et al. 2017 ) 修改了垃圾收集策略,保留了疑似被勒索软件破坏的块。但它容易出现识别错误,并且会将这些可疑块保留数周之久,这会占用大量不必要的空间,导致 FlashGuard 无法在实际设备中部署。MimosaFTL (Wang et al. 2019 ) 和 SSDInsider (Baek et al. 2018 , 2020 ) 发现了 FlashGuard 的缺陷,并加入了勒索软件检测组件以降低存储开销,但该组件存在各种检测故障,例如误报和漏报。 Amoeba(Min 等人,2018 年,2021 年)在现有的基于突发读后写 I/O 模式的检测基础上,进一步实现了基于内容的勒索软件检测,从而提高了检测效率。与 Amoeba 同时进行的另一项设计 RansomBlocker(Park 等人,2019 年)改进了先前的设计,通过延迟勒索软件检测引导下从闪存中实际删除数据的时间。

我们的设计与现有解决方案的不同之处在于,我们加入了上层,成为一种跨层设计。具体来说,我们在上层加入了两个组件。这些组件是 1)在用户级别实施的现有的强大的勒索软件检测策略,以及 2)用于恢复损坏文件元数据的文件系统取证。跨层设计启用的这些组件比上述现有设计有了许多改进。对于组件 1,我们可以快速准确地确定整个系统中是否有勒索软件在执行,并将此情况告知 FTL。现有设计中基于 FTL 的检测的主要作用是选择性地禁用可能已被勒索软件损坏的块的垃圾收集。由于 FTL 无法自行启动恢复,现有设计(Huang 等人,2017 年;Park 等人,2019 年;Min 等人,2018 年、2021 年)会长时间保留这些无效数据,等待用户注意到勒索软件。相反,通过在主机操作系统中加入快速全局检测,我们可以初步假设每个块无效都是由勒索软件引起的,之后Tde升一个y通过后,我们相信,由于勒索软件,失效的可能性不大。因此,不再需要将勒索软件检测纳入 FTL [(如(Huang et al. 2017;Baek et al. 2018、2020 ; Wang et al. 2019;Min et al. 2018、2021;Park et al. 2019)],与主机操作系统相比,FTL 的信息非常有限,因此无法有效地检测勒索软件。特别是,它们都仅使用 I/O 跟踪来执行检测,这在实践中是不够的(Zhou et al. 2023 )。由于这些因素,此类设计的检测适应性非常有限。相反,我们的解决方案高度适应勒索软件的高进化速度(即它能够检测未知/未被发现的勒索软件),因为在主机操作系统级别更新检测器比在存储固件层更新检测器要容易得多。组件 2(文件系统取证)允许用户自由地确定要恢复的文件,并确定文件恢复的优先顺序。这更符合勒索软件数据加密以文件为中心的特性。此外,勒索软件检测器可能会快速关闭勒索软件,因此只需恢复少量文件。现有设计的另一个缺点是,在数据恢复时,数据和文件系统结构之间可能存在不一致(Baek et al. 2020),而我们基于文件系统取证的方法也可以缓解这一问题。在数据恢复期间启用这种以文件为中心的视图还允许用户以一种简单的交互模式来确保一致性,这是 Huang et al. ( 2017 ); Baek et al. ( 2018 , 2020 ); Wang et al. ( 2019 ); Min et al. ( 2018 , 2021 ); Park et al. ( 2019 ) 所缺少的。

Ma 等人 ( 2023 ) 建议在操作系统和 SSD 之间添加一个虚拟机管理程序,以便执行勒索软件检测并结合文件语义进行细粒度恢复。虚拟机管理程序会标记每个 I/O 请求,确定它是良性的、由勒索软件引起的还是包含文件系统元数据。反过来,SSD 会禁用由勒索软件引起的写入和包含元数据的写入的 GC。但是,与其他基于 SSD 的解决方案一样,它们可能会长时间保留可疑数据,并且无法及时关闭勒索软件。此外,引入虚拟机管理程序会导致顺序写入操作的开销增加 15% 到 20%。Elkhail 等人 ( 2023 ) 提出了一种利用易失性存储器中的数据缓存来抵御勒索软件攻击的数据恢复框架。文件数据可以在提交到外部存储之前从页面缓存中恢复。其设计的一个主要问题来自于内存的易失性,这使得它容易受到断电等各种系统故障的影响。FFRec哦五ery依赖于闪存的异地更新,闪存是非易失性的,不会出现此类故障。

比较总结FFRec哦五ery现有的勒索软件恢复解决方案如表2所示 ,该表很好地概括了其优势FFRec哦五ery提供。

表 2 比较总结FFRec哦五ery以及现有的作品

全尺寸表格

结论

在这项工作中,我们设计了FFRec哦五ery,一种勒索软件防御策略,可以支持勒索软件攻击后的细粒度数据恢复。FFRec哦五ery是一种针对勒索软件威胁的跨层数据恢复设计,通过协作上层存储的文件系统取证和下层存储的闪存转换层数据提取。一个原型FFRec哦五ery已经开发出一种新的勒索软件,并使用真实勒索软件样本评估了其有效性。实验结果表明FFRec哦五ery在实际的勒索软件恢复情况下确实非常有效,并且它提供了一种开销可忽略不计的解决方案,使其可以在任何 NAND 闪存存储设备中实施。

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容