【SSD和eMMC取证】
2024-1-15 08:37:27 Author: 电子物证(查看原文) 阅读量:12 收藏

来源:数据安全与取证,本文由金恒源编译,由陈裕铭、Roe校对,转载请注明。

译者注:本文发表于2016年,距今已有7年之久,在这期间固态硬盘技术飞速发展,部分技术在当下已然称不上是“最新技术”。但知识不会过时,本文中所介绍内容仍具有借鉴意义。

本文延续了2012年发表的关于SSD取证的文章的系列。两年后,我们重新研究了SSD在自毁、解密trim机制、垃圾回收机制和数据重映射等技术。彼时,制造商接二连三地发布创新产品——3D TLC、更大更快的驱动器、压缩控制器的终结以及自带加密的SSD驱动器的推出都是大新闻。如今快进到2016年,市面上有大量且价格便宜的固态硬盘,在高科技战线中似乎没有什么变化。

除2.5英寸型号外,我们还注意到一种新的流行的外形尺寸,这种尺寸的固态硬盘常被用于超级本,以及一种由三星推出的用于许多移动终端设备的新型固态硬盘。在低端领域,我们看到eMMC芯片被用于低端Windows平板电脑和小型笔记本,这些芯片取代了传统的固态硬盘。在本文中,将试图弄清这一切对取证人员意味着什么。

Introduction/介绍

大约在十年前,固态硬盘(SSD)彻底改变了计算机存储,为人们带来了极快的访问速度、更低的功耗以及更少的机械零件(译者注:机械硬盘由大量且精密的零件构成,相比机械硬盘来讲,固态硬盘没有这些机械零件,只有一块集成电路板)。但与此同时固态硬盘也有严重的写入寿命限制。老式的固态硬盘在内存失效前只能承受一定数量的磨损。截至目前,固态硬盘的写入量仍然是一个限制。时至今日,尽管有着不断缩小的制程工艺和新型NAND闪存单元的发明(即TLC单元,每个物理单元可以保留3bit位信息,而不是MLC的2bit位和SLC单元的1bit位),但在写入量上仍然面对着同样的问题。

为了克服这些技术限制,并不断降低存储成本,制造商完善了一些非常智能的软件算法。这些算法确保单元之间的负载均匀分布,能够快速重新映射NAND单元的逻辑地址,以确保下一次写入操作发生在磨损最小的单元上。

基于闪存的另一个限制是,人们只能将新的数据写入空的单元中(即:擦除后的单元)。一旦固态硬盘被填满,每一个后续的写操作都会涉及到擦除数据块的内容,然后将新的数据写进单元。由于擦除闪存单元是一个比写入数据慢得多的过程,因此制造商会实行垃圾回收算法,擦除那些保存有已删除数据的单元。

那么SSD控制器如何知道数据块是否被使用呢?操作系统通过向控制器发送一个所谓的"trim"命令来告诉它。一旦trim命令发送,控制器就"知道"某些数据块中的数据不再被使用,并将它们添加到待清除列表中。这些块中的数据便会被内部的垃圾回收算法清除。

同时,系统不必在某一物理单元被擦除时等待。如果系统需要写一个新的数据块,SSD控制器会立即为操作系统所指的逻辑地址分配一个新的空闪存单元。这就是所谓的重映射。在今天的固态硬盘中,重映射一直在发生。

于取证而言,这其中最大的问题是:这些需要被清除的数据块会发生了什么?它的内容是否会立即消失,或者仍然可以从SSD中提取出来?答案是 "视情况而定"。

M.2: Thinner and Lighter SATA SSDs/M.2:更薄、更轻的SATA固态硬盘

M.2 是一种外形规格。符合 M.2 外形的设备可以使用 SATA、PCI-E 或 USB3.0 协议进行连接。大多数 M.2 SSD 驱动器都是使用 AHCI 作为逻辑接口的 SATA 或 PCI-E 设备。一些高端型号使用 PCI-E 连接和 NVMe 接口。配备 M.2 SSD 驱动器的笔记本电脑如果运行 Windows 7,则可能无法使用trim机制。

最初,固态硬盘只有2.5英寸规格(笔记本大小)的磁盘。这在制造超便携设备时成为了一个限制。为了克服这个问题,业界开始使用M.2,这是一个相对较新的用于轻薄设备的固态硬盘的外形尺寸。

英特尔530系列M.2固态硬盘驱动器

M.2设备有一个标准的PCI-E连接器。虽然大多数M.2固态硬盘符合AHCI规范,支持其全尺寸同类产品的所有功能,并可以被操作系统识别为标准的SATA固态硬盘,但一些型号符合较新的NVMe规范,需要不同的驱动程序。

M.2固态硬盘可以用于一些台式机主板

严格来说,以下的型号都属于M.2固态硬盘。

  • 使用传统SATA协议的M.2硬盘。许多M.2固态硬盘采用了传统的SATA协议连接,并通过AHCI接口驱动。这些M.2驱动器的效果与标准的2.5英寸SSD驱动器没有区别。

  • 使用AHCI的PCI-E设备。该标准用于那些利用PCI Express通道进行连接,并通过AHCI协议与设备连接的PCI-E固态硬盘。这些驱动器需要操作系统包含正确的驱动程序。

  • 使用NVMe协议的PCI-E。这些是最快的SSD驱动器,由于它们非常新,所以兼容性最差。在没有适当的BIOS支持的情况下,将NVMe驱动器安装到PC上可能会导致系统无法启动。虽然许多主板不能从NVMe驱动器启动;但在较旧的主板上使用时,Windows系统也可以通过适当的驱动程序访问这些驱动器。截至目前,这样的产品并不是很多,一般存在于一些高端机型。

PCI Express (PCI-E) SSDs/PCI Express (PCI-E)固态硬盘

PCI-E,即PCI Express,是一种物理连接标准。PCI-E固态硬盘有多种形式,包括全尺寸台式机扩展板、M.2硬盘、专用焊接的便携式存储解决方案。PCI-E固态硬盘可以使用AHCI或NVMe进行对接。

从技术上讲,M.2 SSD是PCI-E设备。然而,PCI-E规范比M.2更广泛。因此,制造商可以生产不符合M.2标准的专有PCI-E固态硬盘,在符合M.2标准的计算机中可能无法使用。

PCI-E固态硬盘最常用于某些高端工作站(全尺寸规格),以及一些超薄型号设备(例如,Apple公司生产的MacBook 2015笔记本电脑)。这些专有的存储设备直接连接到计算机的PCI-E总线上,并要求操作系统使用正确的驱动程序。

大多数(而非所有)的PCI-E固态硬盘都支持与其全尺寸SATA连接的同类产品相同的技术。根据驱动程序的版本、操作系统的版本和PCI-E SSD驱动器的型号不同,这些磁盘在执行trim工作时可能会出现异常。

在逻辑接口层面,PCI-E SSD驱动器可以通过AHCI接口或NVMe接口工作。

英特尔NVMe SSD驱动器

一般来说,以下兼容性模型适用于PCI-E SSD。

•  Mac OS X:所有出厂时安装有PCI-E SSD驱动器的苹果设备都支持trim。

• 运行Windows的Macbook电脑。苹果Macbook使用专有的PCI-E SSD驱动器。苹果的Bootcamp常被用来安装Windows作为双系统或唯一的操作系统,在适用的情况下,支持trim穿透(见下文)。

• Windows:对PCI-E驱动器的trim功能支持与否,取决于Windows版本和正确的驱动程序。

  • Windows 7:无论驱动器如何,PCI-E驱动器都不支持trim,即使PCI-E SSD接受trim命令也是如此。

  • Windows 8, 8.1 和 Windows 10: 使用微软的本地驱动程序支持trim。也支持基于NVM的PCI-E固态硬盘的trim。使用SCSI驱动的设备支持 "unmap",这是SATA中trim命令的完整模拟。(译者注:trim是一条ATA命令,主要用于垃圾回收,相似作用的命令有很多,根据不同接口有不同的命令,如作用于SATA的命令是TRIM,作用于SCSI的命令是UNMAP,作用于NVME的命令是Deallocate。)

NVM Express (NVMe) SSDs/NVM Express (NVMe)固态硬盘

NVMe是一种现代逻辑接口规范,取代了旧的AHCI。某些高端 PCI-E SSD 型号采用了各种外形尺寸的 NVMe。苹果MacBook 2015在焊接在主板上的SSD驱动器上有专用的NVMe接口。NVMe仍然相当新,一些主板无法识别NVMe存储作为可启动设备。

NVM Express,或称NVMe,是一个相对较新的逻辑驱动器接口,通过PCI Express(PCI-E)总线实现非易失性存储。NVMe的设计从头到尾都是为了闪存设备的低延迟和内部并行性的实现。

与作为2.5英寸驱动器和薄型M.2板的SATA固态硬盘类似,NVM Express设备也可作为全尺寸的PCI Express扩展卡、笔记本尺寸的主板和2.5英寸驱动器,看起来与SATA固态硬盘类似,只是通过U.2连接器利用PCI Express接口而不是SATA端口罢了。

NVMe将支持trim机制作为其可选的命令集的一部分。在现实生活中,NVMe SSD驱动器通常出现在高端系统中,这些系统被适当配置,可以启用trim功能。


以上回顾了几种现代常用的固态硬盘(M.2、PCI-E、NVMe设备),并谈到了这些设备的数据获取。下面将讨论外置固态硬盘和eMMC的相关内容,并将涉及eMMC的trim机制。

eMMC存储的出现

eMMC是一种基于闪存的非易失性存储设备,多用于小型设备和移动设备。eMMC存储用于大多数Android智能手机、Android和Windows平板电脑,以及一些并不昂贵的Windows二合一设备(译者注:在国外,Windows二合一设备一般分为两大类:屏幕可以360°旋转的笔记本称为Convertible;屏幕与键盘可拆分的笔记本称为Detachable)、低端上网本和超薄便携本,特别是那些配备较小显示屏和英特尔凌动系列处理器的设备。

在传统意义上,固态硬盘体积庞大且价格昂贵。近几代的Windows平板电脑、可折叠电脑和超轻台式机(其中大部分采用英特尔Atom芯片组)采用了一种体积更小、价格更便宜、运行速度并不快的eMMC芯片形式的存储。eMMC芯片本质上是一种SD卡,以BGA芯片的形式焊接在主板上。同SSD驱动器一样,eMMC芯片有一个内置的控制器,但eMMC控制器与SSD驱动器中使用的控制器相比要简单得多,速度也慢得多。因此,虽然eMMC可能采用与SSD驱动器相同的技术(即预留空间、重映射、TRIM和背景擦除),但可能阉割了其他的一些功能。(例如许多安全功能,如DRAT或DZAT)即使eMMC控制器实现了后台垃圾收集机制,但与SSD驱动器相比,它的工作速度也会慢得多,因为只有一个单一通道可被用于所有的读写操作。eMMC芯片并不具有SSD驱动器的大规模并行性,因此读取或写入数据的速度会慢很多。

(译者注:Trim机制分为不同的类型:

• 非确定性TRIM:TRIM后每个对逻辑区块地址(LBA)的读取命令可能返回不同的数据。

• 确定性TRIM(DRAT,Deterministic Read After Trim):TRIM后对LBA的所有读取命令都返回相同的数据。

• TRIM后确定性读零(RZAT,Read Zero After Trim):TRIM后对LBA的所有读取命令都将返回零。)。

值得注意的是,eMMC标准正确定义了对空块的trim活动。那么,位于eMMC芯片上的trim块会发生什么呢?与固态硬盘类似的是,它们在任何时候都可能被映射到可寻址空间之外,也可能不被映射到可寻址空间之外。与固态硬盘不同的是,eMMC标准没有定义DRAT或DZAT,这使得eMMC制造商可以自行定义当试图读取trim后的数据块时,存储控制器到底返回什么。根据经验,eMMC芯片中被trim标记过但尚未被擦除的数据块,仍然可以通过物理转储手段进行读取(如通过物理采集、JTAG、ISP或飞线等手段)。

与SSD驱动器相比,eMMC芯片镜像中,在trim块中保留数据的概率要高得多。

与固态硬盘类似,eMMC芯片可能有一个超额配置的区域,是不可寻址的,外部无法访问。也没有可行的方法可以从超额配置区提取信息。由于超额配置的数据块没有被映射到可用地址空间上,所以物理采集、JTAG、ISP或飞线都看不到该区域。只有内置控制器可以访问这些数据块。没有接口允许从芯片外部读取它们。即使你把芯片取出来直接读取,你也无法访问超额配置的数据块,因为eMMC芯片的飞线提取仍然依赖于向eMMC控制器发送的命令。

关于外置固态硬盘:UASP的到来

在最初的文章中,曾写过外置固态硬盘和USB外壳不提供Trim功能。但从那时起,出现了一个相对新的发展。

一种专门为USB连接固态存储而开发的新的存储连接协议。USB Attached SCSI(UAS or UASP)是一种新的协议,它使用标准的SCSI指令集,而不是目前大多数产品中使用的旧的USB大容量存储协议。

从本质上讲,新协议通过支持SCSI "unmap "命令进行trim机制。然而,为了使trim工作顺利进行,必须满足以下所有条件。

• 对UASP的硬件全面支持:计算机主板、固态硬盘和机箱内的存储控制器必须全部支持UASP

• 操作系统支持:自Windows 8以来,Windows原生支持UASP

• 驱动程序:只有少数符合UASP的芯片组有Windows驱动程序支持

• 数据线和USB端口:只有当设备用USB3.0数据线连接到USB3.0端口时,UASP才能工作。用其他数据线连接或使用传统的USB2.0端口,在大多数情况下会导致不兼容。(硬盘仍然可以作为USB大容量存储设备使用,但不支持trim)

符合UASP标准的外置存储设备自2014年底以来一直存在,所以现在是时候把它们列入我们的新文章了。

eMMC:在Windows和Android中的Trim机制

Trim在Windows和Android设备之间是不同的。由于你可能会在Android智能手机或平板电脑中遇到eMMC内存,因此将在本文中有所提及,但更专业的Android文献会给你更多的技术细节。

Windows

Trim命令是在操作系统释放一个数据块后立即向操作系统发出的。Trim只适用于NTFS格式的分区。此外,Windows 8及更高版本有一个内置的磁盘优化和碎片整理工具,可以定期运行并对固态介质上的整个未分配空间进行Trim。虽然Windows 7也有一个磁盘碎片整理工具,但它不带有对固态介质的优化。换而言之,一旦通过Windows操作系统从eMMC上删除一个文件,可以认为它的磁盘空间已经被Trim(但不一定被eMMC控制器删除)。

Android

Android系统只有在4.3版本的果冻豆中才支持完整的Trim功能。

译者注:从Android 1.5开始,Google将Android版本以甜品命名,如Android4.1至4.3,其版本以“Jelly Bean”,即“果冻豆”命名。下文中的“Android4.4 KitKat(奇巧巧克力)”“Android 5.0 Lollipop(棒棒糖)”同理

此外,可以肯定的是,当且仅当设备最初安装的是Android4.3系统或更新版本时,安卓设备才支持主动Trim。许多装有安卓4.2系统的设备后来被更新到安卓Kit Kat甚至Lollipop,但它们的制造商从未提供Trim支持(但其他一些设备却有)。

据Google称,所有活跃的安卓设备中约有25%运行的是安卓4.2或更早版本。在那些运行Kit Kat的34%的设备中,有一个未知的数字是从早期的安卓版本更新而来的,没有得到完整的Trim支持。那么这些旧设备怎么办?

早期版本的安卓系统依靠Linux fstream来清理未使用的数据块。由于没有 "实时"Trim,每次设备关闭时都要进行清理(Trim)。这是ACPO指南制定的原因之一,该指南详细说明了在原始状态下扣押和储存移动设备的过程("如果是开机状态,就不要关闭")。

译者注:英国首席警官协会(Association of Chief Police Officers,ACPO)成立于1948年,是一个非营利性组织,监管英格兰、威尔士和北爱尔兰的警务实践。为使实践工作能符合取证的原则和标准,ACPO推出了《电子证据取证的最佳实战指南》,并随着实践工作的转变而新增、修订和完善指南内容。

在该指南中提出了计算机取证的4条基本原则:执法机构及人员采取的任何举措均不能导致计算机及其存储介质中的可能向法庭提交的数据发生改变;在必须接触计算机及其存介质中的原始数据时,接触人员必须能够胜任,而且能够解释证据的关联性以及取证行为的相关性;计算机取证所有过程必须创建审计追溯记录或其他记录,并加以保存,任何独立的第三方机构经过程验证都可以得出相同的结果;负责调查的人员(案件负责人)要对法律和原则的遵行情况全面负责。

——引用自 国家保密局 科学技术司 网站文章《国内外电子数据取证标准规范研究》

如果你正在处理一个较老的安卓设备,你也许可以转储其eMMC芯片的物理镜像,并完全访问其未分配空间。

参考链接:https://belkasoft.com/ssd-2016

                https://belkasoft.com/ssd-2016-part2


文章来源: http://mp.weixin.qq.com/s?__biz=MzAwNDcwMDgzMA==&mid=2651046836&idx=1&sn=9ed246299901bab15fc70f7274994835&chksm=811f12fa4042e281578966b7a0b90848bbc252af51be79f406e3c194c7d135dc4b20f5099167&scene=0&xtrack=1#rd
如有侵权请联系:admin#unsafe.sh