《iOS取证实战:调查、分析与移动安全》一3.7 文件系统

简介: 本节书摘来自华章出版社《iOS取证实战:调查、分析与移动安全》一书中的第3章,第3.7节,作者(美)Andrew Hoog Katie Strzempka,更多章节内容可以访问云栖社区“华章计算机”公众号查看

3.7 文件系统

iPhone以及其他Apple设备(包括Mac计算机)使用的文件系统是HFS Plus。最初,它们使用的文件系统都是HFS,后期才使用的HFS Plus。HFS Plus增加了很多增强功能,包括提高磁盘空间使用效率,使用国际化、友好的文件名,未来支持具名分支,以及可引导操作系统(除了Mac OS)。表3-3中提供了相关信息,呈现了最初的HFS文件系统和HFS Plus的不同之处(Apple Developer, 2004)。
image

HFS Plus包含分配单元,称为“分配块”。典型的块大小是4KB,然而,也可以根据物理磁盘的情况去调整此块大小。但需要注意,如果分配块太大了,也会有浪费存储空间的风险。例如,如果一个文件的大小有9KB(在4KB的分配块下),尽管在第3个块的部分位置没有数据,但这个文件还是会使用到3个块。其他的文件则不能在第3个块中存储数据,因为它已经被使用了(Kubasiak, Morris key & Varsalone, 2009)。
名为fsstat(文件系统监视工具)的工具,作为Brian Carrier抯 Sleuth套件的一部分而开发出来。这个特殊的工具会详细显示映像文件中文件系统的细节。下面给出了运行fsstat命令来显示iPhone的磁盘映像结果。该结果会显示文件系统的类型、卷名以及与此映像相关的其他信息,例如创建和修改的时间(Carrier, n.d)。
image
image

fsstat命令可以带各种参数运行,以获取与文件系统相关的指定信息。下面是使用这些参数的一个例子,用fsstat命令将识别出的文件系统类型列出:
image

Mac系统上的磁盘实用工具(Disk Utility)也能够用来获取硬盘或磁盘映像的相关信息。这个工具通常用于擦除、格式化、分区或修复磁盘驱动。它也可以用来挂载磁盘映像,如iPhone DMG文件。磁盘实用工具存储在/Applications/Utilities目录下,并能够通过GUI或者命令行来运行。为了简单地获取iPhone的磁盘映像的信息,diskutil命令也能够在已挂载的映像上运行。此命令的输出如下文所示。因为映像被挂载到Mac系统上,所以通过命令输出的一些信息仅适用于Mac工作站,而不适用于描述iPhone自身的情况。例如,卷名、挂载位置等。所有信息都和挂载iPhone映像文件的Mac有关。其中,总的空间和可用空间信息适用于iPhone映像。
image
image

3.7.1 卷

每个HFS Plus系统都是由卷组成的,卷代表了磁盘的物理分区。每个系统都是由一个或者多个卷构成的,每个卷有一个卷头,可变头和5个专属文件。这5个专属文件中有3个包含B-tree结构:分类文件,区段溢出文件和属性文件。B-tree是一种数据结构,它能让数据更高效地被检索、查看、修改或者删除。它由结点组成,在结点中存储着关键信息,能够进行快速检索(Kubasiak et al., 2009)。
卷头/可变卷头:卷头中包含了卷信息,其中包括分配块的大小以及哪些块是可用的。除此之外,还包括5个专属文件的元数据(metadata)(Kubasiak et al., 2009)。
启动文件:包括启动设备需要的信息(Kubasiak et al., 2009)。
分配文件:这个文件用来跟踪已使用和未被使用的块。此类格式的文件用1bit来标记每个分配块。如果这个bit位被置位,表明这个块已使用,如果没有被置位,那么这个块就是未被使用的。
分类文件:分类文件包括文件和文件夹信息,这些信息用于在卷中定位任何文件和文件夹。它存储了目录和文件的层级,每一个都有一个属于它自己的32位的分类结点ID(CNID)。Apple可以为特定文件在HFS Plus卷保留这些CNID(Kubasiak et al., 2009)。
区段溢出文件:这些文件包括一些分片文件的数据和坏块的数据(Kubasiak et al., 2009)。
属性文件:属性文件允许相关的数据流访问特定的文件和文件夹。

3.7.2 日志

HFS Plus文件系统的一个属性是“journaling”。当开启此选项后,文件系统的变更会被记录(日志记录了将要做的(文件),之后这个变更会被写入主文件系统)。在系统或者硬件组件失败情况下,操作系统利用记录的日志将磁盘恢复到失败前的初始状态。操作系统也可以进行快速恢复,快速恢复时不会去检查整个文件系统,而仅仅根据最近的日志事务去恢复。

3.7.3 iPhone磁盘分区

在NAND闪存上存在两个磁盘分区。第一个是系统或者是固件分区,此分区存储着OS和一些基本的应用。当设备进行固件升级时,系统分区会被更新。事实上只有很少的一些应用安装在系统分区中,此分区在设备上的存储空间很小。它默认设置为只读,除了在系统升级的时候。在升级过程中,整个分区被iTunes格式化,这不会对用户数据产生任何影响。
用户数据分区,也称为“Slice 2”,占用了NAND上的大部分存储空间。取证相关的数据大部分在这里,但不是所有的。此分区还存有从iTunes应用商店下载的默认应用的信息和其他的存储数据。通过取证手段获得此分区的映像后,能够被重命名为“.dmg”文件并挂载到Mac上用于分析(第6章会详细地描述)。由于这两个分区能够被映像和分析,我们能够获取到用户数据、“媒体”分区数据。此分区被挂载在设备的“/private/var”路径上。
表3-4提供了两个磁盘分区的分类对比和挂载点信息、分区存储信息等。
image

这台用于测试的iPhone已经被越狱了,为了查看挂载分区需要连接此设备。我们通过SSH连接到这台iPhone,然后在系统根目录运行“mount”命令。首先可以看到系统分区挂载到“/”(或root),同时用户数据分区被挂载到/private/var。我们还可以看到,这两个分区以HFS作为文件系统,甚至也可看到用户数据分区(journaling选项已开启)。
image

上面的信息显示了块设备,同时下面的信息是iPhone的原始磁盘映像信息。Rdisk0是整个磁盘,包括所有的分区。Rdisk0s1是固件分区,或者是上面描述的Slice1分区;Rdisk0s2是用户数据分区。在3GS设备,还会显示“rdisk0s2s1”。
image

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
30天前
|
搜索推荐 Android开发 iOS开发
安卓与iOS系统的用户界面设计对比分析
本文通过对安卓和iOS两大操作系统的用户界面设计进行对比分析,探讨它们在设计理念、交互方式、视觉风格等方面的差异及各自特点,旨在帮助读者更好地理解和评估不同系统的用户体验。
20 1
|
1月前
|
存储 运维 安全
iOS加固原理与常见措施:保护移动应用程序安全的利器
iOS加固原理与常见措施:保护移动应用程序安全的利器
28 0
|
2月前
|
Android开发 数据安全/隐私保护 iOS开发
安卓与iOS系统的发展趋势与比较分析
【2月更文挑战第6天】 在移动互联网时代,安卓和iOS系统作为两大主流移动操作系统,各自呈现出不同的发展趋势。本文将从技术角度出发,对安卓和iOS系统的发展方向、特点及未来趋势进行比较分析,以期为读者提供更深入的了解和思考。
35 4
|
3月前
|
安全 前端开发 iOS开发
钉钉里微应用ios 底部安全区域的颜色怎么修改?
钉钉里微应用ios 底部安全区域的颜色怎么修改?
57 5
|
3月前
|
存储 运维 安全
iOS加固原理与常见措施:保护移动应用程序安全的利器
iOS加固原理与常见措施:保护移动应用程序安全的利器
38 0
|
2月前
|
安全 搜索推荐 Android开发
Android 与 iOS 的比较分析
【2月更文挑战第5天】 Android 和 iOS 是目前市场上两种最流行的移动操作系统,它们都拥有自己的特点和优势。本文将会分别从操作系统设计、应用生态、安全性等方面对这两种操作系统进行比较和分析,希望能够帮助读者更好地选择适合自己的移动设备。
|
5月前
|
运维 安全 数据安全/隐私保护
iOS加固原理与常见措施:保护移动应用程序安全的利器
随着移动应用的普及和用户对数据安全的关注度提高,iOS加固成为了很多开发者和企业的必备工具。那么,iOS加固是如何保护应用程序的安全性的呢? iOS加固是指对OS应用程序进行一系列的安全措施,以提高其抗逆向工程、反编译和破解的能力。下面将介绍iOS加固的原理和常见的加固措施。
iOS加固原理与常见措施:保护移动应用程序安全的利器
|
5月前
|
iOS开发
实战编程·使用SwiftUI从0到1完成一款iOS笔记App(五)(3)
实战编程·使用SwiftUI从0到1完成一款iOS笔记App(五)
60 0
|
5月前
|
前端开发 数据处理 iOS开发
实战编程·使用SwiftUI从0到1完成一款iOS笔记App(五)(2)
实战编程·使用SwiftUI从0到1完成一款iOS笔记App(五)
48 0