3.3 数据存储位置
iPhone拥有标准的文件目录结构,在其中存储着各种文件(参考附件C,展示了从iPhone中恢复的文件夹和文件的全列表)。iPhone硬件没有外置存储插槽,因此它所有的数据都存储在设备内部(与之对应的是,其他设备拥有外置SD卡或仿真SD卡设备)。为了显示iPhone的目录层级,我们使用第5章中提及的技术,通过Wi-Fi远程接入一个已越狱的iPhone。在一台Macintosh电脑上通过SSH连接到iPhone,以查看其文件系统进行研究分析。登录设备后可以通过“1s”命令查看目录内容。
审查者感兴趣的大部分数据都存储在“private/var/mobile/”路径下(在iPhone磁盘映像上,“mobile”文件夹将是已挂载映像的根目录);然而,我们也能够在其他位置找到有价值的取证证据。在Mobile文件夹中,有三个子文件夹:Applications、Library和Media。任何下载的程序都将以图3-1中所示的格式存储到Applications文件夹。每个安装的程序都有一个应用程序标识,此标识将作为程序存储的文件夹名称,且此标识在所有设备上都是一样的。
所有应用程序文件夹的内容通常都是一样的,包含以下一些标准的文件夹和文件:
Documents文件夹中包含特定程序的相关文件,比如plists、文本文件或图片。
Library文件夹包含缓存数据、Cookies、参数以及WebKit数据(如果程序有应用到此数据)。“参数”通常是用户登录数据的存储位置(如果此应用程序要求用户提供凭证登录)。
应用程序文件夹的数据可被提取以查看私有文件,其中包含了程序依赖代码和其他文件。
tmp文件夹在大多数的应用程序目录下是空的。
下面展示的列表是iPhone应用程序Yahoo!的目录内容,其中一些较容易理解的文件未展示(比如logos和icons)。此架构代表了标准的应用程序目录。我们先看一下最顶层的目录,可看到Documents、Library以及tmp文件夹,然后可看到Yahoo!应用程序文件夹的大致结构。其中,iTunes Artwork和iTunesMetadata.plist文件是标准文件,在所有通过iTunes App Store下载的程序目录下都可以找到它们。我们可以提取实际的应用程序文件数据,以便更详细地了解这个程序的开发情况。在这个例子中,Info.plist文件中可能包含了应用程序版本号、发布时间,或许还有用户的登录数据。不同的应用程序还会有不同的配置文件。在审查者寻找存储的应用程序数据时,普遍都会关注这个区域。
除已下载的应用程序外,更多常见的数据通常被存储在Library或Media下的特定子文件夹中。例如,短信被存储在Library>SMS路径下一个叫sms.db的文件中。对大多数数据来说,iPhone文件系统的组织结构是相当直观的。
对于一些存储在设备根目录中的文件,为了了解其中存储的数据,我们也将进行少量研究。其中一个例子是存储在设备上的GPS位置信息。许多应用程序经常询问用户是否允许它开启GPS定位功能,包括照相机和视频录像。因此,GPS数据经常可以在图片或视频文件中找到。当iOS 4.0版本发布时,iPhone文件系统的部分设计发生了变化。其中一个主要的转变与一个叫做consolidated.db的文件相关。这个数据库文件中包含了全数组的GPS数据以及经纬度坐标、时间戳、手机发射台位置、设备进行的Wi-Fi或蓝牙连接。这个数据库文件有些特殊,虽然它可能存储了一些应用程序的私有信息,但它不在应用程序私有文件夹中。关于从consolidated.db文件或其他地方恢复GPS数据的更多细节,可以在第6章中查看到。