硬盘基地 门户 数据恢复 U盘/Flash 查看内容

U盘数据恢复和Flash闪存取证

2011-10-6 22:11| 发布者: 蝴蝶| 查看: 9152| 评论: 0

摘要: 目前针对嵌入系统如手机和PDA的取证工具大部分是从逻辑层面提取数据而不考虑存储介质的类型。本文提出了一种从低层对闪存进行取证的方法,并给出了三种从低层拷贝闪存数据的方法。本文是基于对45种不同型号的USB存储 ...
一、简介
      消费电子的革命已经导致移动数字数据呈指数级别的增长。多数手机现在内置了摄像头,可以拍摄、存储、播放、传送图片、音频和视频数据。在一些国家,记忆棒的数量甚至比人口还多。有大量的数据与人的行为相关,并可能成为取证的对象。

      FlashSSD/" target="_blank" class="relatedlink">闪存目前是在消费电子产品上处于主导地位的非易失性固态存储技术。越来越多的嵌入系统使用了和个人计算机的文件系统一样的高级文件系统。目前用于对嵌入系统如手机或PDA进行取证的工具大部分是在逻辑层面上获取数据。许多情况下,在逻辑层上无法从存储设备中恢复所有的数据。不仅是删除的数据,有时从用户的立场来看不直接相关的数据也无法恢复,从而导致一些潜在的有用信息丢失。因此需要从低层恢复数据来取得证据。对于硬盘可以拷贝源盘中的所有字节到目标盘中,然后对拷贝进行分析——使用固态存储介质的嵌入系统也可以使用相同的方法(INTOHARD.COM)。

      本文给出了针对flash闪存从低层进行取证的方法。在第二章中介绍了flash闪存的关键技术。第三章中描述了针对flash闪存从低层恢复数据的三种方法:第一种是闪存工具(flasher tools),第二种是使用测试中常用的访问接口,最后一种将flash闪存芯片从电路板上取下的“半破坏”方法。第四章介绍了将获取的数据装换为普通取证工具可以使用的文件格式的方法。实验结果是基于U盘和手机中的数据。第五章介绍了flash文件系统中的数据的特点。

二、Flash技术

      Flash闪存是一种非易失性存储技术,可以被电擦除和重编程。Flash闪存根据其基本逻辑架构分为两种:NOR1 flash和NAND2 flash。与NAND flash相比,NOR flash可以按字节读取数据,因此常用于保存和执行固件3代码,而NOR flash中没有被固件代码使用的区域可以用于存储用户数据。大部分移动存储设备—如U盘,或者多媒体设备—如数码相机和可视电话,使用NAND flash闪存来存储数据。本章将首先介绍flash技术的物理层,然后再介绍逻辑层。NAND flash闪存的介绍可以参考[5],更多详细资料可以参考[9]。

A.物理层
      flash闪存存储数据的物理机制是基于晶体管门电路的电容效应。这种电容可以在不需要外部电源的情况下维持一段时间,但是会逐渐减弱。当前flash闪存可以存储数据的时限为10到100年。

      Flash闪存可以像EEPROM4一样逐字节(byte)的写入,但是在重写之前需要先按块(block)清除。被清空后的存储快的内容全为1.在NANDflash中,块(block)又被进一步划分为页(page)——例如每个块分为32或64个页。一个页(page)通常是512字节的倍数,以仿效磁介质中512字节每扇区的容量。另外,每个页(page)中有一些被称为“剩余空间(spare area)”的字节,用于存储元数据(meta data)。某些flash闪存驱动器还引入了“区(zone5)”的概念。一个zone是一组block——通常为256到1024。与block和page相对,zone仅是一个逻辑层的概念,在物理层是不存在的。图一是NAND flash闪存的解剖(www.intohard.com)。

U盘数据恢复和Flash闪存取证

图一:NAND flash 闪存的解剖

表1:Page大小不同时Spare area的大小(单位:字节)

U盘数据恢复和Flash闪存取证

      每个page中都有一些字节被称为冗余区(redundant area)或剩余区(spare area)。表1展示了page容量不同时spare area的大小。Spare area可以存储block或page的状态信息。例如当一个block损坏时,就会在spare area做出标记。Spare area也可以用于存储ECC6数据。

      ECC可以用于检测page中的错误。使用ECC可以检测出一个bit的错误,然后这个block就会被标记为坏块。Spare area还可以存储物理地址与逻辑地址的映射信息。

      清空block会使得block的状态恶化。Block可被清空的次数为104到106次,最后block中的数据变成贝壳清空(保持为0的状态)。这个block就称为一个坏块。NAND flash闪存在出厂时就包含一些坏块。在NAND flash芯片的datasheet中,规定了出厂时好块的最小数量,典型值为98%。初始坏块被标记在spare area中。

      为了尽可能均匀的清空所有物理block,flash闪存生产商发明了一种称为“磨损分级化(wear levelling)”算法[6][7]。这种算法的思想是将清空block带来的磨损平均的分布到flash闪存的整个物理空间中,从而延长其寿命。对于存储设备生产商来说,wear levelling算法是非常机密的技术,所以有关wear levelling算法的问题通常都得不到回到。

      不过,要恢复flash闪存中的数据,仅仅知道wear levelling如何复制flash芯片创建物理镜像是不够的。还应该知道如何按正确顺序重建物理block的镜像,才能恢复正确的文件系统。换一句话说:wear levelling可以看成是动态的调整page和block逻辑顺序以延长flash闪存寿命的技术。要解释wear leveling算法的静态工作(在某一时间flash闪存的二进制数据拷贝)不需要wear leveling动态工作知识。

      NAND flash的电气接口与RAM是不同的。NAND flash有多个地址/数据总线,通常被称为I/O线。NAND flash的总线是8位或16位。图二是NAND flash芯片的电气接口图,其中针脚名称在表2中。要读取NAND flash芯片中的数据首先要在I/O线上传送数据所在的地址。由于最大地址通常大于8或16位I/O总线所能达到的最大寻址位数,因此,要使用3到5个寻址周期来将地址锁存到芯片中。地址锁存到芯片中后,就可以使用相同的I/O总线来传送数据。表3给出了读取NAND flash芯片中的数据的典型序列。

U盘数据恢复和Flash闪存取证

图二:NAND flash芯片的典型电气接口

表2:NAND flash芯片的针脚定义

U盘数据恢复和Flash闪存取证

U盘数据恢复和Flash闪存取证
关于flash闪存的内部工作原理的更多介绍以及NAND和NOR flash之间的区别超出了本文的范围,就不再介绍了。

B.逻辑层
      在嵌入系统中实现flash闪存文件系统的方法有多种。下面介绍其中的三种。图3展示了主机操作系统(OS)访问flash文件系统的组成框图。

U盘数据恢复和Flash闪存取证

图三:硬盘和flash存储接口框图 

      作为参考,左边是硬盘上的文件系统框图。对于硬盘,主机操作系统通过文件系统驱动(FSD)来访问硬盘。FSD向硬盘发出指令——例如ATA7的“Read Sector”指令来读取逻辑块地址(LBA)8中的数据。关于ATA指令的更多信息请参考[8]。

      USB闪存盘告诉主机自己是一个存储设备。在加载后,主机OS就可以存取它。以“Wintel”平台为例,当将USB闪存盘插入USB端口时,就会创建一个新的存储器,然后就可以存取文件了。FSD发出的磁盘存取指令通过USB端口传送到USB闪存盘。USB闪存盘控制器解释这些指令并存取flash闪存中的数据。为了管理flash闪存的特殊属性,控制器通常会和数据一起存储一些额外的信息9。例如,ATA指令中的LBA与flash芯片中的实际物理地址是不同的。LBA与物理地址的映射信息也存储在flash芯片中。

      嵌入系统——如手机或数码相机,使用的是相似的机制,见图3“嵌入设备1”。当嵌入系统插入到主机上时,主机OS可以通过标准的磁盘访问指令来存取设备上的flash文件系统。设备上的OS(Windows CE,Symbian,等)接收来自主机OS文件系统驱动发出的指令,并返回请求的数据。这样,主机OS不会认为硬盘和附加设备有任何不同。

      另一种访问嵌入设备中的flash闪存的方法示于图3“嵌入设备2”中。主机OS通过一个实例应用来访问flash文件系统。这个应用与嵌入系统进行通讯,将flash文件系统中的数据显示在主机上。例如通过ActiveSync来访问windows CE设备上的磁盘。ActiveSync使用远端应用程序接口(RAPI)10来将数据传送到主机。使用这种方法可以与其他主机上的文件系统一样浏览嵌入设备上的文件系统(如同windows explorer),

尽管嵌入设备上的flash文件系统可能与磁介质上的文件系统结构完全不同。

1:NOR flash闪存由Intel于1988年发明。
2:NAND flash闪存由Toshiba于1989年发明。
3固件就是嵌入硬件设备(如手机或PDA)中的软件。
4电擦写可编程只读存储器。
5这个术语有时也用于表示flash闪存中的段。
6错误检验和校正
7AT外设(ATA)是一种连接存储设备(如硬盘和CD-ROM驱动器)和个人计算机的标准接口。
8逻辑块地址,存储单元线性映射的数据地址。
9也被称为元数据。

      检查电子证据的第一原则是保持存储设备上的数据不变。对于嵌入系统来说,这一原则面临着许多挑战。将嵌入系统连接到其他系统与网络连接相似,尽管后者可能更难检测。对于flash闪存,wear leveling可能会导致数据无法预期的改变。将手机关闭然后再开机可能就会引起wear leveling算法回收垃圾,从而更改数据。对于这一问题需要更多的研究,但是目前的基本准则是尽量减少开关机的次数。

      在本章中,介绍了获得flash闪存数据完整镜像的三种方法。首先介绍了flsher tools,然后是使用嵌入设备的JTAG(11)测试端口的方法。最后一种最暴力的方法是将flash芯片取下来然后使用读取设备来读取数据。

开心

鄙视
6

鼓掌

愤怒
1

可怜

刚表态过的朋友 (7 人)

最新评论

返回顶部