关于HFS+文件系统数据恢复的研究

时间:2022-09-23 10:57:22

关于HFS+文件系统数据恢复的研究

【 摘 要 】 本文首先介绍HFS+磁盘的文件系统结构,然后介绍了HFS+文件系统存储和删除数据时的工作流程;在此基础上针对HFS+文件系统存储文件时的特点,对在其环境下恢复文件的可能性进行了探讨,通过对进入废纸篓文件的恢复、完全删除的文件的恢复以及对磁盘的关键字搜索和虚拟内存的搜索这三方面初步证明了在HFS+的系统中对文件进行数据恢复是可行的。

【 关键词 】 数据恢复;分层文件系统;电子物证

1 引言

在Windows盛行的年代中,使用苹果操作系统的人可以谓之小众,始终在3%~8%之间徘徊。因此也不难理解几乎难以见到对苹果的操作系统MacOS及苹果的专用文件系统HFS+取证探讨的文章。随着苹果公司的发展以及苹果在iPhone手机上的成功,人们的目光也开始转移到苹果公司的电脑上来,数据显示苹果电脑的用户在与日据增。因此,对苹果的操作系统及对HFS+的数据恢复需求也亟需跟上步伐,对HFS+文件系统的数据恢复也具有了重要的意义。而iPhone手机和iPad平板电脑的文件系统也是HFS+,因此,对HFS+文件系统的数据恢复的研究,对于iPhone手机和iPad平板电脑的数据恢复也有一定的指导作用。

2 HFS+文件系统概述

所谓HFS,即分层文件系统(Hierarchical File System)的缩写。它是一种由苹果公司开发的文件系统,常用于大型存储介质,如硬盘、CD及DVD、苹果的操作系统(Mac OS),都是采用此种文件系统作为首选及默认的文件系统来管理文件。

而HFS+则是由苹果于1998年的HFS改良版文件系统,它主要改进了HFS 文件系统的结构和对数据管理中存在的不足。

3 HFS+磁盘存储数据原理

3.1 HFS+磁盘的文件系统结构

除了普通的文件夹和文件之外,一个HFS+卷还包括数据结构。

(1)保留区:出现在卷的最开头和最末尾。

(2)卷头:包含此卷的各种信息,包括此卷的其它重要系统结构的分配信息,卷头有一个备份卷头,被分配在靠近此卷末尾的位置。

(3)目录B树:存储所有文件及目录的基本数据元信息,包括每个文件的前一至八个扩展信息(如果它存在后面的七个扩展信息的话);文件系统的分层结构也通过存储父子节点关系的方式记录在其中。

(4)扩展溢出B树:存储超出八个扩展后溢出的扩展信息。

(5)属性B树:存储了文件和目录的扩展属性。

(6)日志文件:用来保存文件系统日志以及日志文件自己的信息。

以上的各个实体中,对文件恢复有帮助的主要有三个文件:卷头、目录B树、日志文件。接下来我们将对这三个文件进行进一步地了解。

3.2 卷头

从卷的开始到1024字节为卷的保留区,之后的512字节称之为卷头信息。卷头信息包含了各种重要的数据结构的分配位置。不同于卷头,也不同于NTFS和FATS,HFS+的其它数据结构文件没有一个固定的分配区,只有通过卷头才到找到这些数据结构文件的分配位置。卷头可以看成是整个操作系统或者磁盘工具读取此卷的必经之起点。

在卷头最开始的HFS Plus Volume及HFS Plus Volume Header中能看到这个卷的一些基本信息,之后的Allocation Bitmap File、Extents Overflow File、Catalog File、Attributes File及Startup File的信息对我们的数据恢复来说则显得额外重要,这此信息分别表示了这些数据结构文件的位置及大小,,有了这些信息,我们就可以直接导出相应的数据结构文件,来对整个文件系统进行研究。

3.3 目录文件

目录文件描述的是卷内文件和目录的分层信息。它即作为保存所有文件及目录重要信息的容器,也作为他们的目录。文件的目录信息中最关键的部分就是扩展(extents)这个信息。

在extents中有三项:startBlock、blockCount和% of file,分别表示的是开始的块、所使用的块的数目和在这些块中拥有此文件的百分比,简称扩展百分比。得知这三项之后,我们就可以知道这个文件的内容在何位置,被分为了多少个扩展,每个扩展的扩展百分比是多少。

如果文件被分成了多个扩展,它将会以多行的形式写在extents下面。如果扩展数目超过了八个,则大于八的扩展会被写到扩展溢出文件中。

在以上的假设的情况下,只要找到了目录文件中Data Fork中的extents信息,得到了startBlock和blockCount的数据,则就可以方便地找到文件的内容所在的位置。如果说1.txt的startBlock为28380(0x6edc),blockCount为1(0x1),则理论上可以用以下语句得到1.txt的数据内容:

dd if=/dev/disk1 of=/tmp/2 bs=4096 skip=28380 count=1。

3.4 日志文件

在文件访问或者创建和删除的过程中,如果发生了预料不到的事情(如移动盘被拔出)导致了过程的中断,这个过程将会被中断而有可能导致数据错误。HFS+文件系统中加入日志功能就是为了解决这个问题的发生。

执行的过程有几个步骤:(1)把即将发生的文件系统数据元的改变写一个拷贝进入日志文件;(2)在日志文件头中记录此变化;(3)在这些文件系统数据元上实施其变化;(4)更新日志文件头,把这个执行过程标记为完成。

日志不记录任何此文件系统的信息,只是记录发生变化的数据块,日志数据是以整块的形式写入到日志文件中的,只要一个块发生变化,哪怕是一个字节的变化,都会被整块记录到日志中,日志不会记录哪个块是来自卷头还是目录文件,而只是单纯的一个发生变化的块的集合。

由于在删除文件时必然改变了目录文件的B树节点,从而触发日志执行,由此,目录文件改变的数据块必然会被写入日志文件中,通过搜寻日志文件,就有可能搜寻到目录文件发生改变的文件的目录信息,从而找到文件内容在磁盘上分配的位置。

4 HFS+磁盘取证方法探讨

不同的情况有不同的取证方法,接下来将在理论上对文件进入废纸篓后的取证、文件被完全删除后的取证以和对整个磁盘的关键字搜索三个方面进行探讨。

4.1 对进入废纸篓的文件的取证

和Windows操作系统一样,在MacOS上有很多种方法来删除一个文件。可以直接把文件拖入废纸篓,也可以右键选择“移动到废纸篓”。与Windows的回收站一样,进入MacOS的文件并没有真正删除 ,而是拷贝到了一个特殊的隐藏文件夹,再从原来的位置删除。因此,只要打开废纸篓把文件拖出来即可恢复。在本地硬盘上删除的文件进入到了根目录下的相应用户的文件夹中的.Trash文件夹内,而在移动存储设备上删除的文件则进入到了移动存储设备中的根目录下的.Trash文件夹中的用相应用户的UID命名的文件夹中。

MacOS在文件移动到废纸篓时,保护了文件的时间和日期标签不受修改。因此,用stat命令能让我们能原来的日期标签。

4.2 对完全删除的文件的取证

与Windows的回收站一样,MacOS的废纸篓也有一个清空的功能。如果废纸篓被清空的话,那就表示废纸篓中的文件被完全删除了。为了恢复通过这种方法删除的文件,只有从物理层面的磁盘中进得恢复,也就意味着必须得确定文件的开始块和存储此文件用了多少个块。

与NTFS和FAT32文件系统删除文件时只是把文件标记为删除不同,在HFS+上的文件被删除的同时,虽然文件的内容并没有被移除,但HFS+的目录文件的B树马上同时进行了更新,把关于文件的存储记录全部删除。因此按照NTFS和FAT32文件系统恢复文件的方式肯定是行不通的。这也正是HFS+文件系统取证的难点。

但是同时,由于文件被删除,导致了catalog文件的改变,那么catalog文件改变的部分块,必将写入日志文件,只需要有B树节点的模板,就能读出最后的扩展信息中的startBlock、blockCount的内容,因而就能找到被删除的文件的内容所在的位置。所以,在理论上,通过读取日志文件的信息,可以得到被删除的文件的存储信息的,因此,也能通过这种方法对被完全删除的文件进行恢复。

4.3 对磁盘的关键字搜索和虚拟内存的搜索

MacOS是基于Unix的操作系统,而我们知道,基于Unix的操作系统是把所有的文件、磁盘等都是当作文件来对待的。因此我们可以把HFS+磁盘当成一个文件来看待,可以在物理层面上用Unix的命令cat、strings和grep来对其文件的内容进行检索。后面跟上“-C 2”的参数表示显示关键字前两行和后两行的内容,如果需要显示更多的内容,可以改变后面的数字。命令如下:

sudo cat /dev/disk1 | strings -o | grep -i 'construct' -C2。

但是这个搜索有个缺陷,就是strings命令只能搜索ASCII码,对于中文编码之类的就无能为力了。

5 结束语

以上只是对于HFS+取证的一点陋见,也仅仅只触碰了HFS+取证的一点皮毛而已。关于HFS+取证和数据恢复的研究在网上能找到的中文参考资料几乎没有,只有在外国的网站上有一些对于HFS+的研究,而且都是仅限于皮毛。在参考了众多文献资料之后,在脑海中形成了一个关于HFS+取证的研究的初步设想。但这只进行了一些理论上的实验,对HFS+的文件系统结构进行了研究,同时也在理论上证实了在HFS+文件系统的磁盘上的文件恢复是可行的。但是要把此恢复的过程具体化还需要完成一些其它工作,如对目录文件B树的建模、编写能自动检索目录文件B树和识别日志文件中的目录文件B树节点的程序等,还有待继续完善。

参考文献

[1] Philip Craiger,PhD and Paul K. Burke,MacForensics:Mac OS X and the HFS+ File System.

[2] Aaron Burghardt and Adam J. Feldman,Using the HFS+ journal for deleted file recovery,Digital Investigation 5,2008.

[3] Eoghan Casey,Digital Evidence and Computer Crime—Forensic Science, Computers and the Internet, Second Edition,2004.

[4] Amit Singh,Mac OS X Internals: A Systems Approach,Addison Wesley Professional,2006.

[5] 魏为民,袁仲雄.网络攻击与防御技术的研究与实践[J].信息网络安全,2012,(12):53-56.

[6] 甘宏,潘丹.虚拟化系统安全的研究与分析[J].信息网络安全,2012,(05):43-45.

作者简介:

夏斗牛(1985-),男,中国刑事警察学院,研究生在读,正在从事“关于对虚拟机取证”的研究。

上一篇:内河船舶的涂装工程 下一篇:一种基于查询主题相关性的PageRank改进算法