IOS-取证学习指南第二版-全-
IOS 取证学习指南第二版(全)
原文:
annas-archive.org/md5/6838e05a8078a713f8c7b60f3076fdd4译者:飞龙
前言
本书全面讨论了用于识别、获取和法医分析带有 iOS 操作系统的移动设备的最先进技术,并已扩展和更新至 iOS 8 和 iOS 9。本书是一本实用指南,帮助调查人员在日常工作中有效管理这类移动设备的场景。该领域对实用指南的需求源于 iOS 设备日益普及,以及调查人员可能面临的不同场景,这些场景依据设备类型、操作系统版本以及是否存在安全系统(如密码锁、备份密码等)而不同。本书在概念上分为四个部分。第一部分处理与数字证据处理相关的方法和准则,以及特定 iOS 设备信息的基本概念。第二部分介绍了获取 iOS 设备的基本技术和工具,包括通过备份和 iCloud 的获取方法。第三部分深入探讨了数据分析的方法和技术。最后,第四部分提供了关于 iOS 应用程序和恶意软件分析的概述。对于该领域的新手,我们建议按顺序阅读本书,因为内容按照法医调查的主要阶段(识别、获取、分析)顺序处理。对于经验丰富的读者,以及那些日常处理此类设备的人员,本书可以作为评估不同技术的有用工具,具体取决于你需要处理的案件类型。
本书内容
第一章,数字与移动取证,是对数字和移动取证领域中最重要概念和定义的介绍,并涉及数字证据的生命周期,包括识别、获取、分析和报告。
第二章,iOS 设备介绍,包含了有用的信息和参考资料,帮助你了解如何根据设备型号和 iOS 版本识别各种类型的设备(如 iPhone、iPad 和 iPod Touch)。它还包含了有关特定设备使用的文件系统的基本信息。
第三章,从 iDevices 获取证据,解释了如何根据设备型号和 iOS 版本从 iOS 设备中获取数据,这些内容在前一章中有所介绍。讨论了物理、逻辑和高级逻辑获取方法,并介绍了如何破解或绕过用户设置的密码的最有效技巧。本章展示了使用各种工具获取数据的示例,并介绍了针对 iOS 8 和 iOS 9 的最新技术。
第四章,来自 iTunes 备份的证据获取与分析,概述了如何处理从 PC 或 Mac 上获取的 iTunes 备份的分析,重点介绍如何读取其内容以及如何尝试攻击用户设置的受保护密码。本章还解释了如何恢复设备中存储的密码,尤其是在备份没有密码保护或分析师能够破解密码的情况下。
第五章,来自 iCloud 的证据获取与分析,讲述了设备所有者使用 iCloud 存储设备备份的案例。你将学习如何恢复用于检索存储在 Apple 服务器上的信息的凭证或授权令牌。
第六章,iOS 设备分析,提供了关于如何分析已获取设备中存储数据的完整信息。包括预装应用(如通讯录、通话记录、短信、彩信和 Safari)以及第三方应用(如聊天、社交网络和云存储)的分析,特别关注核心证据及其搜索和恢复的方法。
第七章,应用程序与恶意软件分析,介绍了从安全角度进行应用程序评估的核心概念和工具。你还将学习如何处理可能存在于越狱设备上的移动恶意软件。
附录 A,参考文献,是一本完整的参考文献集,帮助你理解书中解释的一些核心概念,以便深入研究特定主题。
附录 B,iOS 法医工具,是一个综合性的工具集,涵盖了用于获取和分析 iOS 设备内容的开源、免费软件和商业工具。
附录 C,自我测试答案,包含了书中各章节提问的答案。
本书所需内容
本书旨在通过免费软件、开源软件和商业软件,帮助您在不同操作平台(Windows、Mac 和 Linux)之间进行操作。许多示例可以通过作者测试的软件或在附录 B 中提到的等效解决方案来复现,iOS 法医工具。某些具体案例需要使用商业平台,对于这些平台,我们更倾向于使用我们在日常工作中作为法医分析师所使用的平台(如 Cellebrite UFED、Oxygen Forensics、Elcomsoft iOS Forensic Toolkit 和 Elcomsoft Phone Breaker)。无论如何,我们受到易用性、提取信息的完整性和软件结果展示正确性的原则启发。本书并非以任何形式为上述软件做广告,我们鼓励您将测试从一个操作平台上的重复应用到其他平台和软件应用中。
本书适用对象
本书主要面向技术读者,特别是那些需要从运行 iOS 的移动设备中获取和分析信息的法医分析师(或数字调查员)。本书对于计算机安全专家和渗透测试员也非常有用,因为它涉及在商业环境中部署此类移动设备之前必须考虑的一些问题,尤其是在数据安全至关重要的情况下。最后,本书也可能对移动应用开发者感兴趣,他们可以了解在使用应用程序的设备中存储了哪些数据,从而提高安全性。
约定
本书中,您将看到几种文本样式,用于区分不同类型的信息。以下是这些样式的一些示例,以及它们的含义解释。文本中的代码字、数据库表名、文件夹名称、文件名、文件扩展名、路径名、虚拟网址、用户输入和 Twitter 用户名的显示方式如下:
“只需输入make命令即可编译源文件。”
URL 的写法如下:theiphonewiki.com/wiki/UDID
路径名写法如下:/private/var/root/Library/Lockdown/data_ark.plist
任何命令行输入或输出如下所示:
$ iproxy 2222 22
$ ssh usb
新术语和重要单词会用粗体显示。在屏幕上看到的词语,例如菜单或对话框中的内容,出现在文本中时如下所示:“点击下一步按钮会将您带到下一个屏幕。”
注意
警告或重要提示会以框的形式显示,如下所示。
提示
提示和技巧如下所示。
读者反馈
我们非常欢迎读者的反馈。告诉我们你对这本书的看法——你喜欢或不喜欢的地方。读者的反馈对我们很重要,因为它帮助我们开发出真正能让你受益的标题。
要向我们发送一般反馈,只需发送电子邮件到 feedback@packtpub.com,并在邮件主题中提及书名。如果你在某个专题上有专业知识,并且有兴趣撰写或贡献一本书,请查看我们的作者指南,网址为 www.packtpub.com/authors。
客户支持
现在你是 Packt 书籍的自豪所有者,我们有很多事情可以帮助你充分利用你的购买。
下载本书的彩色图像
我们还为你提供了一个 PDF 文件,其中包含本书中使用的截图/图表的彩色图像。彩色图像将帮助你更好地理解输出的变化。你可以从 www.packtpub.com/sites/default/files/downloads/LearningiOSForensicsSecondEdition_ColorImages.pdf 下载此文件。
勘误
尽管我们已经尽一切努力确保内容的准确性,但错误是难免的。如果你在我们的书中发现错误——可能是文本或代码中的错误——我们将不胜感激地接受你的报告。通过这样做,你可以帮助其他读者避免沮丧,并帮助我们改进本书的后续版本。如果你发现任何勘误,请访问 www.packtpub.com/submit-errata,选择你的书,点击勘误提交表单链接,并输入你的勘误详情。一旦验证你的勘误,你的提交将被接受,并且勘误将被上传到我们的网站或添加到该书籍的现有勘误列表中的勘误部分。要查看先前提交的勘误,请转到 www.packtpub.com/books/content/support,在搜索框中输入书名。所需信息将显示在勘误部分下方。
盗版
互联网上对版权材料的盗版是各种媒体的持续问题。在 Packt,我们非常重视版权和许可的保护。如果你在互联网上发现我们作品的任何形式的非法副本,请立即向我们提供位置地址或网站名称,以便我们采取措施。请通过 copyright@packtpub.com 发送含有 suspected pirated material 链接的邮件给我们。感谢你帮助保护我们的作者和我们带给你有价值的内容的能力。
问题
如果你对本书的任何方面有问题,可以通过 questions@packtpub.com 联系我们,我们会尽力解决问题。
第一章:数字与移动取证
不久之后,我们将主要(如果不是唯一的话)讨论计算机取证和计算机犯罪,例如攻击者突破计算机网络系统并窃取数据。这将涉及两种类型的犯罪:非法/未经授权访问和数据盗窃。随着手机的普及,移动取证这一新领域也随之发展起来。
如今,随着技术的不断发展,情况发生了根本性的变化,并且仍在以相当快的速度变化。数字取证涵盖了所有与电子证据相关的学科,并且也被应用于常见犯罪,即那些至少按定义来说并非严格意义上的信息技术犯罪。今天,我们生活在一个完全数字化的社会,人人都配备各种设备,这些设备具有不同的能力,但它们都能处理、存储并传输信息(主要通过互联网)。这意味着取证调查员必须能够处理所有这些设备。
在 2001 年首次数字取证研究研讨会(DFRWS)上定义,数字取证是:
“采用科学衍生和验证的方法,保存、收集、验证、识别、分析、解释、记录和展示来自数字源的数字证据,以便促进或推进被发现为犯罪的事件重建,或帮助预测那些被证明会破坏计划操作的未授权行为。”
正如凯西所言(Casey, 2011):
“在这个现代时代,很难想象没有数字维度的犯罪。”
各种犯罪分子利用技术来促进他们的犯罪行为,和同伙进行沟通,招募其他犯罪分子,洗钱,进行信用卡欺诈,收集受害者信息等等。这显然为所有相关人员,如律师、法官、执法人员和取证检查员,带来了新的挑战。
在近年来解决的案件中,曾有绑架案件,绑架者因通过手机发送勒索邮件而被捕。也有许多工业间谍案件,不忠实的员工将项目隐藏在智能手机的存储卡中,解决了许多通过手机备份存储在电脑中的毒品交易案件,以及其他许多类似案件。即便是我们时代最大规模的抢劫案件,也是在计算机网络上进行的。
本章内容包括以下几点:
-
移动取证的定义和原则
-
如何正确处理数字证据
-
移动证据识别和保存的方法
移动取证
移动取证是数字取证领域的一项研究,专注于移动设备。在不同的数字取证领域中,毫无疑问,移动取证是发展最快、演变最迅速的研究领域,涉及许多不同的情境,从企业到刑事调查以及不断增加的情报收集。此外,随着移动市场的快速增长,移动取证的重要性也在呈指数级增长。移动取证最有趣的特点之一是,移动设备,特别是手机,通常属于单个个体,而这在电脑上并不总是如此,电脑可能是公司员工或家庭成员共享的。正因如此,手机分析能访问大量个人信息。
另一个与移动取证相关的重要且有趣的方面,对分析师来说既具有挑战性也令人沮丧,就是市场上各种设备型号和操作系统的定制版本。这使得很难找到一种统一的解决方案(无论是工具还是过程)来应对所有这些情况。
想想人们在智能手机上安装的所有应用程序:即时通讯客户端、网页浏览器、社交网络客户端、密码管理器、导航系统等等,除了经典的默认应用,比如通讯录,它可以提供更多的信息,不仅仅是每个保存的联系人的电话号码。此外,将此类设备与计算机同步已经变得非常简单流畅,所有的用户活动、日程安排、待办事项等都存储在智能手机中。难道这些信息不足以对一个人进行画像并重建他们所有的近期活动吗?除了建立联系人网络外,还有更多可以挖掘的内容。
最后,除了各种智能手机和操作系统,如苹果 iOS、谷歌 Android、微软 Windows Phone 和 Blackberry OS,还有大量所谓的功能手机,这些手机使用较旧的移动操作系统。
因此,很明显,当谈论移动/智能手机取证时,远不止是电话记录的打印输出。事实上,通过全面的检查,我们可以恢复短信/MMS、照片、视频、已安装的应用程序、电子邮件、地理位置数据等等——包括现有信息和已删除的信息。
数字证据
如前所述,一方面,移动设备在数字取证案件中的日益参与带来了一系列全新的挑战和复杂性。然而,另一方面,这也导致了来自犯罪分子的更多证据,这些证据现在被用来以更全面的细节重建他们的活动。此外,虽然传统的物理证据可能会被摧毁,但数字证据大多数情况下会留下痕迹。
多年来,关于数字证据究竟是什么,出现了几种定义,其中一些特别关注可在法庭上作为证据使用的证明方面,比如数字证据标准工作组(SWGDE)提出的定义:
“数字证据是任何具有证明价值的信息,它以数字形式存储或传输。”
国际计算机证据组织(IOCE)提出的定义为:
“数字证据是以二进制形式存储或传输的信息,可以在法庭上作为证据使用。”
E. Casey(Casey, 2000)给出的定义将数字证据定义为:
“可以证明犯罪已发生、可以在犯罪与受害者之间建立联系,或者可以在犯罪与犯罪者之间建立联系的实物。”
虽然所有这些定义都是正确的,但如前所述,这些定义主要关注证据,往往忽视了对调查极为有用的数据。
因此,本书将采用 Carrier(Carrier, 2006)给出的定义,定义数字证据为:
“支持或反驳关于数字事件或数字数据状态的假设的数字数据。”
这个定义较为普遍,但更符合当前数字证据的状态及其在整个调查过程中的价值。
从标准化角度来看,过去和现在已经有许多尝试定义数字取证的指南和最佳实践,以指导如何处理数字证据。除了 NIST 发布的若干指南和专门出版物外,还有一项来自 ISO/IEC 的标准,该标准于 2012 年发布,ISO 27037 数字证据识别、收集和/或获取以及保存的指南,该标准并非专门针对移动取证,而是与数字取证一般相关,旨在建立一套标准程序,用于收集和处理数字证据,确保其在不同国家的法庭上得到法律认可和接受。如果考虑到互联网时代缺乏国界的事实,尤其是在数字犯罪领域,这是一个非常重要的目标,因为非法行为可能由全球任何地方的攻击者实施。有关标准和最佳实践的详细列表,请参阅附录 A,参考文献。
移动证据的处理
为了在法庭上和整个调查阶段都能有用,数字证据必须以取证可靠的方式进行收集、保存和分析。这意味着,从识别到报告的每一步都必须严格、仔细地执行。历史上,我们习惯将一种方法称为取证可靠的,前提是该方法意味着证据的原始来源保持未修改和未改变。在谈论传统的计算机取证时,这通常是对的,尤其是在取证人员发现计算机关机或需要处理外部硬盘的情况下,尽管即便在这些情况下也不完全正确。然而,随着实时取证的兴起,这一概念变得越来越不准确。事实上,获取实时系统内存的方法和工具必然会改变目标系统,哪怕只是稍微改变。移动取证的出现更加突出了这一概念,因为移动设备,尤其是智能手机,是网络设备,通过多种通信协议(如 GSM/CDMA、Wi-Fi、蓝牙等)不断交换数据。此外,为了获取移动设备,取证人员需要与设备进行一定程度的互动。根据设备类型,智能手机可能需要更多或更少的互动,从而改变设备的原始状态。
所有这些并不意味着源证据的保存毫无用处,而是在移动设备领域几乎不可能实现。因此,在收集、保存和获取阶段,彻底记录每一步骤变得极为重要。通过这种方式,取证人员能够证明他们尽可能地减少了干扰。正如Casey(2011)所说:
“取证的关键之一就是文档化。一个坚实的案件是建立在支持性文档上的,这些文档报告了证据的来源以及如何处理这些证据。从取证的角度来看,获取过程应该尽可能少地改变原始证据,任何变化都应该在最终分析结果的背景下进行记录和评估。”
当需要收集移动设备时,取证人员应考虑以下几个要点:
-
记录设备发现的当前位置。
-
报告设备状态(开机或关机,屏幕损坏等)。
-
如果设备开机,请报告屏幕上可见的日期、时间和其他信息,例如通过拍摄屏幕照片。
-
仔细检查是否存在内存卡。尽管 iOS 设备不涉及此问题,但通常许多手机都有外部存储卡插槽,照片、聊天数据库以及许多其他类型的用户数据通常存储在这里。
-
仔细检查与正在收集的手机相关的所有电缆,特别是如果你的实验室没有完整的电缆套件。许多手机有自己的电缆用于连接计算机和充电。
-
查找原始的用户身份模块(SIM)包装,因为上面写有 PIN 码和PIN 解锁码(PUK)。
-
在收集之前拍摄每一项物品的照片。
移动设备的修改不仅可能是由于法医专家的交互,还可能是由于与网络的交互,无论是自愿还是非自愿的。事实上,移动设备中的数字证据可能会完全丢失,因为它们容易被新数据覆盖,例如在收集过程中,智能手机接收到短信,可能会覆盖先前存储在相同内存区域的证据,或者通过无线网络接收到远程擦除指令。现在大多数智能手机和 iOS 设备都可以配置为完全远程擦除。
注:
来自真实案例:
在搜查被调查人的住所时,执法人员发现并扣押了包括计算机和智能手机在内的多个物品。对所有物品进行登记和记录后,他们将所有物品放入箱子里,带回实验室。一旦回到实验室,在获取智能手机以进行法医分析时,他们发现手机是空的,看起来像是全新的。原主人已经远程擦除了手机数据。
因此,将移动设备与所有无线网络隔离是保存证据过程中的基本步骤。有几种方法可以实现这一目标,每种方法都有其优缺点,具体如下:
-
飞行模式:在设备上启用飞行模式需要某种交互,这可能会带来法医专家修改的风险。这是最好的选择之一,因为它意味着所有的无线通信芯片都被关闭。在这种情况下,记录采取的行动并附上图片和/或视频是很有帮助的。通常,只有当手机没有密码保护或密码已知时,这才是可能的。然而,对于 iOS 7 或更高版本的设备,还可以通过从底部向上滑动调出控制中心,在其中找到一个飞机形状的按钮来启用飞行模式。前提是设置 | 控制中心中的锁屏时访问选项已启用。
-
法拉第包:这是一种由导电材料制成的信封式物品,能够完全屏蔽静电场和电磁辐射,将设备与外部网络隔离开来。顾名思义,它基于法拉第定律。这是最常见的解决方案,特别是在设备从犯罪现场被带到实验室后进行扣押时非常有用。然而,使用法拉第包会导致手机持续搜索网络,从而导致电池快速耗尽。不幸的是,将手机连接到外部电缆(进入包内)也存在风险,因为这可能充当天线。此外,值得注意的是,当你从包中取出手机(到达实验室后)时,它将再次暴露在网络中。因此,你需要一个有屏蔽的实验室环境,或者使用一种法拉第解决方案,能够让你在设备仍处于屏蔽容器内时访问手机,无需外部电缆。
-
干扰:干扰器用于通过发送与设备相同频率的无线电波来阻止无线设备与外部通信。在我们的案例中,它将干扰手机使用的 GSM/UMTS/LTE 频段,从而阻止手机与基站连接,进行数据的发送/接收。需要注意的是,这种做法在某些国家可能被视为非法,因为它也会干扰到干扰器范围内的其他任何移动设备,打断它们的通信。
-
关闭设备:这是一个非常危险的做法,因为它可能会激活身份验证机制,如 PIN 码或密码,而这些身份验证信息是法医无法获取的,或者可能会触发其他加密机制,从而延迟甚至阻止对手机设备的提取。
-
移除 SIM 卡:在大多数移动设备中,这项操作意味着移除电池,因此会引发我们刚刚提到的关于关闭设备的所有风险和后果;然而,在 iOS 设备中,这项任务相对简单且容易,而且不需要移除电池(在 iOS 设备中是无法做到的)。此外,SIM 卡可以启用 PIN 保护;将其从手机中移除可能会锁定 SIM 卡,阻止其内容显示。然而,请记住,移除 SIM 卡只会将设备与蜂窝网络隔离,其他网络,如 Wi-Fi 或蓝牙,可能仍然处于活动状态,因此也需要加以处理。
-
以下图像展示了用夹子从 iPhone 中提取的 SIM 卡;图片来源:
www.maclife.com/:![移动证据处理]()
证据保存
讨论数字证据的文档记录与保存时,其中最重要的步骤之一就是正确且全面地编制证据链。该文档的目的有两方面:一方面,记录每个处理过证据的人的信息,以便在任何时刻识别潜在数字证据的访问和移动;另一方面,保持文档记录,证明自从证据收集后,它在经过文档中列出的多位分析人员手中时未被篡改。
因此,证据链应包含以下一些信息:
-
一个独特的证据标识符
-
谁访问了证据,发生的时间和地点
-
谁在什么时候将证据检查进出证据保存设施
-
证据被检查的原因
-
证据的哈希值,以证明自从上次由证据链中列出的前一位人员处理后,证据未被篡改
-
尽管取证调查绝不应直接在原始设备/文件上进行,但证据链应提及如果必须对潜在数字证据进行任何不可避免的更改,应说明这些更改的理由以及负责引入这些更改的个人姓名
-
以下图像展示了 NIST 提出的证据链样本:
![证据保存]()
证据的获取
尤其在移动取证中,信息可能更为易变,而在传统计算机取证中,有时可能会有紧急需求来获取可用数据。在这种情况下,信息可能会在有机会隔离或妥善处理设备之前消失。在此类情况下,现场有效的分类处理流程和工具可以保存原本可能丢失的证据。这些流程可能包括在进行其他操作之前,立即拍摄设备屏幕的照片或视频记录。
话虽如此,一旦移动设备得到了正确处理,取证人员就可以开始从设备中获取证据。在移动取证中,尤其是对于 iOS 设备,可能有以下三种不同类型的获取方式:
-
物理:这是最佳和最理想的选择。它涉及通过对设备进行精确的比特到比特复制来进行物理获取。这是最全面的选项,因为它还允许恢复潜在已删除的文件。
-
文件系统:当因任何原因无法进行物理获取时,这是第二好的选择。这种获取方式允许取证人员提取所有在文件系统级别可见的文件。通过这种方式,可以分析所有活跃的文件,这些文件可以通过浏览文件系统进行查看,但无法恢复可能已删除的文件。
-
逻辑性:通过这种类型的获取,可以提取部分文件系统数据。它通过执行设备的备份来恢复可用数据,iOS 设备的情况是通过 iTunes 进行备份。不幸的是,在 iOS 设备上,逻辑/备份获取无法提取重要文件,例如电子邮件、地理位置数据库、应用程序缓存文件夹等。尽管它是三种方法中最不全面的一种,但有时这可能是唯一可用的选项。
前述三种获取方法是获取 iOS 设备的主要方法;我们将在后续章节中详细讨论。接下来的章节将深入探讨每种不同的方法论,解释在每种可能的情况下应该如何操作,我们还将介绍可用于执行获取和进一步分析物理文件系统以及逻辑获取的各种工具。
然而,移动设备取证可能还需要采用一些进攻性安全技术。根据设备型号和 iOS 版本,为了进行物理获取,我们可能需要越狱设备,最好使用有线技术,这样修改不会在设备上持续存在,并且设备重启后会恢复。即使我们只能进行非永久越狱,这些修改也仅会影响 iOS 设备的系统分区,而不会改变用户分区,因此证据得以保留。
我们可能需要使用的另一种进攻性技术是密码破解。正如我们稍后将看到的,许多情况下,我们可能会遇到一个需要密码保护的设备。根据设备型号和 iOS 版本,可能可以对用户设置的密码进行暴力破解攻击。
这些更具侵入性的技术需要在最终报告中完整记录,详细说明所使用的方法、技术和工具。特别因为它们的侵入性,了解所使用的工具和技术非常重要,以便能够解释哪些修改发生在何处,以及为什么这些修改没有改变证据的完整性。良好的报告是关键。
证据完整性
已经多次提到,在处理移动设备时,基本上不可能不与设备交互,因此在一定程度上会改变其当前状态。然而,这并不意味着在移动取证中不需要或没有理由实施证据完整性的机制。事实上,一旦获取操作完成,就必须为从移动设备提取的数据建立某种完整性验证机制,无论是 iTunes 备份、完全物理获取还是单个文件。在数字取证中,通过比较获取时的数字指纹(也称为哈希值或消息摘要)与当前状态的数字指纹来完成对数字证据完整性的验证。哈希函数是特定的单向数学函数,给定任意长度的输入,将产生固定长度的输出。相同的输入总是会产生相同的输出。这意味着即使只改变一个比特位,新的哈希值也会完全不同。下表显示了只修改同一句子中两个字符的大小写时,结果的哈希值是完全不同的:

用于计算哈希值的两种最常见算法是 MD5 和 SHA-1。MD5 算法生成 128 位输出,而 SHA-1 算法生成 160 位输出。这类算法的另一个重要特征在于,理论上计算生成两个不同输入的哈希值应该是不可行的,同样也不可能生成一个特定消息与给定哈希值匹配。这个问题被称为碰撞。已经有多项研究表明,在 MD5 和 SHA-1 算法中,可以创建出具有相同哈希值的两个不同文件。然而需要指出的是,这种情况仅在特定的受控条件下成立,而这些条件在现实中发生的可能性很小。无论如何,这种碰撞并不影响这些哈希算法在完整性验证中的应用。由于基本上不可能生成两个具有相同的 MD5 和 SHA-1 哈希值(或者一般来说是由两个不同独立算法生成的两个哈希值),因此,对于每个产生或收集的数字证据,生成 MD5 和 SHA-1 哈希值是一个良好的实践。
SIM 卡
在进行移动设备的法医检查时,获取并分析相关 SIM 卡的内容也非常重要。SIM 卡是一种智能卡,允许移动设备通过 SIM 卡本身嵌入的加密密钥连接到蜂窝网络。SIM 卡主要具有以下两种不同的代码,可以被提取:
-
集成电路卡标识符(ICCID):该代码是一个 20 位数字,国际上唯一标识每张 SIM 卡。
-
国际移动用户身份(IMSI):这是一个独特的 15 位数字(在一些地方,如南非,是 14 位),它在移动网络中唯一标识一个用户。
尽管 iOS 设备不这样,但一个人可能会在同一设备上使用多张 SIM 卡用于不同的目的,因为一些移动设备支持双 SIM 卡功能。
此外,SIM 卡的存储容量和利用率大大提高,可能包含大量相关信息。为了让你大致了解可以存储(或隐藏)在 SIM 卡中的数据量,考虑到 128 KB 标准 SIM 卡内可以写入最多 17 KB 的数据,整个美国独立宣言仅需 11 KB。
从 SIM 卡中恢复的一些有用信息可能包括来电/去电记录、联系人信息、短信内容,甚至是已经删除的短信内容,以及设备最后连接的基站位置。
通过查看 SIM 卡的细节(Gubian,2007),可以看到文件系统的层次化 n 元结构,其中有三种不同的文件类型,每个文件的内容在以下 GSM 技术规范(GSM 11.11)中定义:
-
3F = 主文件(MF):其结构仅由一个头部组成,是 SIM 卡中文件系统的根目录。其地址,即每个其他文件的偏移量,是
3F00。 -
7F/5F = 7F 是一个专用文件(DF):与 MF 类似,其结构仅由一个头部和 EF 组成。DF 可以类比为我们计算机中的普通文件夹。
-
2F = 主文件下的基本文件(EF),6F/4F = 4F 是专用文件下的基本文件(EF):基本文件的结构由一个头部和一个主体组成,主体代表文件内容本身(例如,短信)。
以下示意图展示了这种层次结构(SIM 卡的文件系统结构):

GSM 技术规范已经提供了一些具有常见名称的文件。在标准文件夹中,一些最有趣的文件夹可能是3F00:7F10(DF_TELECOM),其中包含与服务相关的信息和一些用户数据,例如 SMS,和3F00:7F20(DF_GSM),其中存储与 GSM 网络相关的信息。之前提到的 ICCID 和 IMSI 可以在3F00:2FE2(名为EF_ICCID)和3F00:7F20:6F07(名为EF_IMSI)中找到。以下表格展示了可以在 SIM 卡内找到的一些知名信息源及其各自的位置:

在 SIM 卡中,每个文件(EF)的访问受到一定数量权限级别的控制,这些权限级别根据用户所拥有的角色(由权限级别确定)来允许或拒绝某些操作。 一些有用的权限包括ALWays、CHV1和CHV2。这些权限允许 SIM 卡的所有者(或者说是知道密码的用户)访问和修改此类文件的内容。例如,任何与UPDATE命令相关的文件,只要拥有这些权限(CHV1/CHV2),就允许知道这些密码的人修改文件中的信息。
以下表格总结了 SIM 卡的访问条件:

SIM 安全
除了 ICCID 和 IMSI,这两个主要与 SIM 卡本身相关的代码外,在进行分析时,另有两个重要代码(实际上几乎是必不可少的)是 PIN 码和 PUK 码。PIN 码用于将用户认证到系统中,而 PUK 码则在输入三次错误的 PIN 码后用于解锁 SIM 卡。因此,暴力破解 PIN 码通常无效,因为三次失败的 PIN 尝试将导致 SIM 卡被锁定。
幸运的是,SIM 卡有一个 PUK,并且许多网络服务提供商(NSP)可以在合法授权的情况下将其提供给执法部门,以绕过 PIN 码或访问被锁定的 SIM 卡。
如果输入错误的 PUK 代码 10 次,SIM 卡将永久锁定,导致其内容完全无法访问。在对这两个代码进行暴力破解攻击之前,必须记住这一点。
总结
在本章中,我们为那些对数字取证相对较新的读者提供了一个概述,同时也为已经从事此领域的读者进行了很好的回顾,尤其是关注移动取证领域。我们介绍了什么是数字证据以及如何处理它,展示了几种将移动设备与网络隔离的技术。你应该始终记住记录所采取的任何操作的重要性(证据链、最终报告等),并建立机制来验证证据的完整性(哈希值)。我们还讨论了 iOS 设备的不同获取技术,提前介绍了一些将在本书后续章节中详细讲解的术语和技术,从 A 到 Z。最后但同样重要的是,我们讨论了 SIM 卡,它是如何结构化的,以及我们可以期望在其中找到哪些有用的信息。
在下一章,我们将开始专注于 Apple 设备的移动取证,特别是你将会了解 iOS 设备、操作系统和文件系统。
自测题
Q1. 在获取前,隔离移动设备的最佳方式是什么?
-
干扰器
-
法拉第袋
-
飞行模式
-
关闭设备
Q2. 最全面的获取方法是什么?
-
逻辑
-
高级逻辑
-
文件系统
-
物理
Q3. 被国际上唯一识别每张 SIM 卡的代码叫什么?
-
IMSI
-
ICCID
-
PUK
-
GSM
Q4. 在 SIM 卡完全无法访问之前,我们可以进行多少次 PUK 尝试?
-
3
-
5
-
10
-
15
第二章:iOS 设备简介
苹果公司与移动设备的历史始于 1993 年,推出了 Newton 项目,并生产了首款 PDA——Message Pad。这些 PDA 配备了 ARM 处理器、触摸屏和手写识别,并基于名为 Newton OS 的操作系统。该项目于 1997 年关闭,史蒂夫·乔布斯回到苹果掌门人岗位。
iPhone 和 iPad 当前成功的真正革命性起点是 iPod 设备和 iTunes 软件的创造。这些设备彻底改变了我们每个人享受音乐或多媒体内容的方式。iPod 于 2001 年发布,采用了不同的形状、尺寸和容量,首款型号于 2001 年 10 月 23 日推出,基于 ARM 处理器和 5GB 容量(史蒂夫·乔布斯将其描述为把 1000 首歌曲放进口袋里)。传统的 iPod(iPod Classic、iPod Mini、iPod Nano 和 iPod Shuffle)已经是前期出版物中关于其法医获取和分析内容的主题。我们在这里仅回顾一下,从获取的角度来看,iPod 可以被当作外部硬盘,并使用传统的磁盘映像技术进行获取。至于其使用的文件系统,它可以是 HFS+或 FAT32,这取决于它是首次连接到 Mac 还是 PC。音频文件存储在一个隐藏的文件夹中(通常在\\iPod_Control\\Music\\),并在一个数据库中进行组织。此类设备中还可以找到的其他信息包括联系人、日历以及用户决定复制到设备上的任何其他数字格式文件,完全类似于外部设备(U 盘、硬盘等)。通过传统技术,可以进行文件雕刻,恢复已删除的文件并创建设备使用的时间线。
苹果公司于 2005 年通过与摩托罗拉的合资企业以及生产世界上首款集成 iTunes 的手机 Rokr,进入了移动通信系统。该设备并未取得成功,以至于该项目仅在一年后就被关闭。然而,这款设备为 iPhone 的诞生奠定了基础。
本章的目的是介绍 iOS 设备法医分析的基本方面。在第一部分中,讨论了苹果设备的不同类型和型号,并指出了准确识别你需要获取的型号的方法和技巧。第二部分分析了操作系统的基本原理(如类型、版本等)以及这些设备使用的文件系统的类型和结构。特别地,本章将重点关注以下内容:
-
iOS 设备类型
-
iOS 设备连接器
-
iOS 操作系统
-
iDevice 识别
-
iOS 文件系统
iOS 设备类型
根据常用定义,iOS 设备是指使用 iOS 操作系统的设备。目前,我们有四种类型的设备:iPhone、iPad、iPad mini 和 iPod touch。此外,Apple TV 使用 Apple TV 软件和 tvOS,Apple Watch 使用 watchOS:这两种操作系统基于 iOS,因此它们是一种混合型的 iOS 设备。
iPhone 版本
最著名的 iDevice 无疑是 iPhone,它彻底颠覆了手机的概念,基于多点触控屏幕、虚拟键盘和少量物理按钮(如 Home 键、音量键、电源开关键、铃声/振动键)。
iPhone(第一代)
第一代 iPhone,简单地称为iPhone,由史蒂夫·乔布斯于 2007 年 1 月 9 日发布,并从同年 6 月 29 日起销售。
它配备了一个 S5L8900 ARM 处理器,主频为 620 MHz(降频至 412 MHz),128 MB 的 RAM,并使用四频段 GSM/GPRS/EDGE(850/900/1800/1900 MHz)蜂窝连接类型,还支持 Wi-Fi 连接 802.11 b/g 和蓝牙 2.0 + EDR(有关蓝牙实现的详细信息,请参见support.apple.com/kb/HT3647)。
它配备了一个 30 针底座连接器(参考en.wikipedia.org/wiki/Dock_connector)。
该手机通过型号 A1203 和硬件字符串 iPhone1,1 进行识别。
它最初配备了 4 GB 的内部存储,后来增加了两个不同版本:8 GB 和 16 GB。
关于软件,它最初使用的是 iOS 操作系统的祖先,称为 iPhone OS 1.0。最新支持的版本是 iPhone OS 3.1.3。除了传统的通信手段(内部电话簿、通话、短信、彩信等),它还集成了网页浏览、电子邮件、相机、iTunes 和 YouTube。在 iPhone 2G 发布时,App Store 还不存在,这就是为什么苹果推出了 Web 应用程序,并将其分为不同类别(例如,计算器、娱乐、游戏等)。这些应用程序不会在设备中保存信息,而是仅创建一个快捷方式图标,应用程序直接从互联网运行。这些设备的生产在 2007 年 9 月(4 GB 型号)和 2008 年 6 月(8 GB 和 16 GB 型号)停止。
iPhone 3G
苹果公司生产的第二款型号,于 2008 年 7 月 11 日发布,名为iPhone 3G,因为它新增了对 3G 蜂窝网络的支持。与前代类似,iPhone 3G 配备了 S5L8900 ARM 处理器和 128 MB 的内存。除了支持 3G 网络(UMTS/HSDPA,最高 3.6 Mbit/s,频段为 850、1900 和 2100 MHz),硬件上的主要创新是新增了 GPS 芯片,用于地理定位服务。该手机的型号编号为 A1241(或中国销售的设备为 A1324),以及字符串 iPhone1,2。设备有 8 或 16 GB 存储版本。关于软件,它最初使用的是 iPhone OS 2.0,最新支持的版本为 iOS 4.2.1。随着 iPhone 3G 的基本版本推出,App Store 首次亮相:它允许用户从集中式应用商店下载和安装应用程序。该设备的生产于 2010 年 6 月停止。
iPhone 3GS
苹果公司生产的第三款型号,于 2009 年 6 月 19 日发布,名为iPhone 3GS。虽然外观与其前代产品非常相似,但 iPhone 3GS 配备了 S5L8920 833 MHz ARM 处理器(降频至 600 MHz)和 256 MB 的内存,性能较前版本有所提升。主要变化包括使用更精确的 GPS 芯片,支持额外的数据网络(HSDPA 7.2 Mbit/s),配备了 3 MP 的摄像头,支持以 VGA 格式(480p)拍摄视频,数字指南针以及语音控制功能。从法医分析的角度来看,值得一提的是,从这一型号开始,手机支持地理标记图片,使得调查员可以识别照片拍摄地点。该手机的型号编号为 A1303(或中国销售的设备为 A1325),以及字符串 iPhone2,1。设备有 8、16 或 32 GB 存储版本。关于软件,它最初使用的是 iPhone OS 3.0,最新支持的版本为 iOS 6.1.6。该设备的生产于 2012 年 9 月停止。
iPhone 4
苹果公司生产的第四款手机,于 2010 年 6 月 21 日起销售,名为iPhone 4。与之前的 iPhone 型号相比,它在外观和功能上都有了全面的革新。该设备的外形更为方正,并且在硬件上进行了多个改进,例如苹果 A4 S5L8930 1 GHz 处理器(降频至 800 MHz),512 MB 内存,配备 500 万像素的摄像头,支持拍摄 720p 高清画质的视频,并内置三轴陀螺仪。该手机的型号有两个:A1332(GSM 型号)和 A1349(CDMA 型号),并有三个字符串:iPhone3,1;iPhone3,2;iPhone3,3。设备提供 8 GB、16 GB 或 32 GB 的存储容量。关于其软件,最初使用 iOS 4.0,这是第一个采用新名称的版本。其最新支持的版本是 iOS 7.1.2。该设备的生产已于 2013 年 9 月停止。
iPhone 4s
苹果公司生产的第五款手机,于 2011 年 10 月 4 日起销售,名为iPhone 4s。其外观与 iPhone 4 非常相似,唯一不同的是两侧上部有两个切口。新硬件包括苹果 A5 S5L8940 1 GHz 处理器(降频至 800 MHz),512 MB 内存,支持最高 14.4 Mbit/s 的 HSPA+网络,并配备一颗 800 万像素的后置摄像头,支持拍摄 1080p 高清画质的视频。该手机的型号为 A1387(或中国地区为 A1431),以及字符串 iPhone4,1。设备提供 8 GB、16 GB、32 GB 或 64 GB 的存储容量。关于其软件,最初使用 iOS 5.0,目前支持最新版本(iOS 9.3.4),但不再支持 iOS 10。该设备的生产已于 2014 年 9 月停止。
iPhone 5
苹果公司生产的第六款手机,于 2012 年 9 月 21 日起销售,名为iPhone 5。它使用了苹果 A6 S5L8950 处理器,主频为 1.3 GHz,配备 1 GB 内存,支持 HSPA+和 LTE 蜂窝网络。它还配备了一颗 1.2 MP 的前置摄像头,可以拍摄 720p 高清画质的视频。它是该系列首款拥有 4 英寸屏幕的设备,也是首款配备 8 针 Lightning 连接器的机型(参见en.wikipedia.org/wiki/Lightning_%28connector%29)。该手机的型号有三个:A1428(GSM 型号),A1429(GSM 和 CDMA 型号)和 A1442(中国的 CDMA 型号),并有两个字符串:iPhone5,1(支持 LTE 的美国版)和 iPhone5,2(其他国家版)。该设备提供 16 GB、32 GB 或 64 GB 的存储容量。关于其软件,最初使用 iOS 6.0,现已支持最新版本(iOS 9.3.4),并将继续支持 iOS 10。该设备的生产已于 2013 年 9 月停止。
iPhone 5c
苹果公司生产的第七款手机,于 2013 年 9 月 20 日上市,称为iPhone 5c。它采用了与 iPhone 5 相同的处理器和相同容量的内存,主要区别在于它支持全球范围的 LTE 网络,并配备了更强大的电池。该手机有六个型号:A1516(中国)、A1526(中国)、A1532(北美版)、A1456(美国和日本版)、A1507(欧洲)和 A1529(亚洲和大洋洲),以及两个字符串:iPhone5,3 和 iPhone5,4。该设备的存储容量为 8、16 或 32 GB。关于软件,它最初使用的是 iOS 7.0。目前,iPhone 5c 仍受支持,支持的最新版本为 iOS 9.3.4,并将支持 iOS 10。该设备的生产已于 2015 年 9 月停产。
iPhone 5s
苹果公司生产的第八款手机,于 2013 年 9 月 20 日上市,称为iPhone 5s。它采用了 1.3 GHz 的苹果 A7 S5L8960 处理器、1 GB 的内存、相较于之前版本有所改进的 8 MP 相机,以及基于指纹的生物识别认证系统,名为 Touch ID。它还配备了运动协处理器 Apple M7。该手机有六个型号:A1518(中国)、A1528(中国)、A1533(北美版)、A1453(美国和日本版)、A1457(欧洲)和 A1530(亚洲和大洋洲),以及两个字符串:iPhone6,1 和 iPhone6,2。该设备的存储容量为 16、32 或 64 GB。关于软件,它最初使用的是 iOS 7.0。目前,iPhone 5s 仍受支持,支持的最新版本为 iOS 9.3.4,并将支持 iOS 10。该设备的生产已于 2016 年 3 月停产。
iPhone 6
苹果公司生产的第九款手机,于 2014 年 9 月 19 日上市,称为iPhone 6。它采用了 1.38 GHz 的苹果 A8 T7000 处理器,并配备了 1 GB 的内存。它是首款支持 NFC 通信的机型。它还配备了运动协处理器 Apple M8。该手机有三个型号:A1549(北美)、A1586(全球版)和 A1589(中国版),以及字符串 iPhone7,2。该设备的存储容量为 16、64 或 128 GB。关于软件,它最初使用的是 iOS 8.0。目前,iPhone 6 仍受支持,支持的最新版本为 iOS 9.3.4,并将支持 iOS 10。该设备的生产仍在进行中,至本书出版时依然在生产中。
iPhone 6 Plus
苹果公司生产的第十款型号,从 2014 年 9 月 19 日起上市,名为iPhone 6 Plus。它采用了苹果 A8 T7000 处理器,主频 1.38 GHz,并配备 1 GB 内存。它还配备了苹果 M8 运动协处理器。该手机有三个型号标识:A1522(北美)、A1524(全球)和 A193(中国),以及字符串 iPhone7,1。该设备的存储容量为 16 GB、64 GB 或 128 GB。关于其软件,它最初使用的是 iOS 8.0。目前,iPhone 6 Plus 支持最新版本(iOS 9.3.4),并将支持 iOS 10。该设备的生产在本书发布时仍然处于活跃状态。
iPhone 6s
苹果公司生产的第十一款型号,从 2015 年 9 月 25 日起上市,名为iPhone 6s。它采用了苹果 A9 S8000(三星)或 S8003(台积电)处理器,主频 1.85 GHz,并配备 2 GB 内存。它还配备了苹果 M9 运动协处理器。该手机有三个型号标识:A1633(北美)、A1688(全球)和 A1699(中国),以及字符串 iPhone8,1。该设备的存储容量为 16 GB、64 GB 或 128 GB。关于其软件,它最初使用的是 iOS 9.0。目前,iPhone 6s 支持最新版本(iOS 9.3.4),并将支持 iOS 10。该设备的生产在本书发布时仍然处于活跃状态。
iPhone 6s Plus
苹果公司生产的第十二款型号,从 2015 年 9 月 25 日起上市,名为iPhone 6s Plus。它采用了苹果 A9 S8000(三星)或 S8003(台积电)处理器,主频 1.85 GHz,并配备 2 GB 内存。它还配备了苹果 M9 运动协处理器。该手机有三个型号标识:A1634(北美)、A1687(全球)和 A1699(中国),以及字符串 iPhone8,2。该设备的存储容量为 16 GB、64 GB 或 128 GB。关于其软件,它最初使用的是 iOS 9.0。目前,iPhone 6s Plus 支持最新版本(iOS 9.3.4),并将支持 iOS 10。该设备的生产在本书发布时仍然处于活跃状态。
iPhone SE
苹果公司生产的第十三款型号,从 2016 年 3 月 31 日起上市,名为iPhone SE。它采用了苹果 A9 S8000(三星)或 S8003(台积电)处理器,主频 1.85 GHz,并配备 2 GB 内存。它还配备了苹果 M9 运动协处理器。该手机有三个型号标识:A1662(北美)、A1723(全球)和 A1724(中国),以及字符串 iPhone8,4。该设备的存储容量为 16 GB 或 64 GB。关于其软件,它最初使用的是 iOS 9.3。目前,iPhone SE 支持最新版本(iOS 9.3.4),并将支持 iOS 10。该设备的生产在本书发布时仍然处于活跃状态。
iPad
在 iPhone 取得成功后,苹果公司进行了设计和生产更大版本的项目,首次实现了史蒂夫·乔布斯在 1983 年的构想:
“苹果的战略非常简单。我们想做的事情是将一台极其出色的电脑放进一本你可以随身携带的书里。”
在首款 iPad 发布后,乔布斯表示,苹果公司早在 iPhone 之前就开始开发 iPad 平板电脑,但随后决定将精力集中于 iPhone 的开发。
iPad(第一代)
第一代 iPad,简单称为iPad(或iPad 第一代),由史蒂夫·乔布斯于 2010 年 1 月 27 日发布,并于同年 4 月 3 日开始销售。它配备了 1 GHz S5L8930 ARM 处理器(也称为 Apple A4)和 256 MB 的 RAM。与所有 iPad 设备系列一样,它有两个不同的版本:第一个版本仅配备 Wi-Fi 802.11 a/b/g/n 连接,而第二个版本还配备了 3G UMTS/HSDPA/EDGE 和 GPS。两个型号的识别串分别为 A1219(仅 Wi-Fi)和 A1337(Wi-Fi 和 3G),两者都标识为 iPad1,1。从软件角度来看,它最初使用的是 iPhone OS 3.2。最新支持的版本是 iOS 5.1.1。这些设备的生产于 2011 年 3 月停产。
iPad 2
第二代 iPad,俗称iPad 2,自 2011 年 3 月 11 日起上市。它配备了 1 GHz S5L8940 ARM 处理器(也称为 Apple A5)和 512 MB 的 RAM。与上一代相比,苹果引入了前置和后置 0.75 MP 的摄像头。它生产了三种型号:仅 Wi-Fi 版(型号 A1395)、Wi-Fi 和 GSM 版(型号 A1396),以及 Wi-Fi 和 CDMA 版(型号 A1397)。有四个硬件识别串:iPad2,1(仅 Wi-Fi);iPad2,2(Wi-Fi 和 GSM);iPad2,3(CDMA 和 Wi-Fi);iPad2,4(仅 Wi-Fi,配备 S5L8942 处理器,也称为 A5 Rev. A)。所有版本的存储容量为 16、32 或 64 GB。关于软件,它最初使用的是 iOS 4.3。当前,iPad 2 支持最新版本(iOS 9.3.4),但不再支持 iOS 10。这些设备的生产于 2014 年 3 月停产。
iPad 3(新 iPad)
第三代 iPad,俗称iPad 3(或iPad 第三代),自 2012 年 3 月 16 日起上市。它配备了 1 GHz S5L8945 ARM 处理器(也称为 Apple A5X)和 1 GB 的 RAM 内存。它生产了三种型号:仅 Wi-Fi 版(型号 A1416)、Wi-Fi 和蜂窝版(VZ)(型号 A1403),以及蜂窝和 Wi-Fi 版(型号 A1430)。有三个硬件识别串:iPad3,1(仅 Wi-Fi);iPad3,2(Wi-Fi、GSM 和 CDMA);iPad3,3(Wi-Fi 和 GSM)。所有版本的存储容量为 16、32 或 64 GB。关于软件,它最初使用的是 iOS 5.1。当前,iPad 3 支持最新版本(iOS 9.3.4),但不再支持 iOS 10。这些设备的生产于 2012 年 10 月停产。
iPad 4(配备视网膜显示屏)
第四代 iPad,称为iPad 4(或iPad 第四代),自 2012 年 11 月 2 日起上市。它配备了 1.4 GHz 的 S5L8955 ARM 处理器(即 Apple A6X)和 1 GB 的 RAM。该型号生产了三种版本:仅 Wi-Fi 版(型号 A1458)、Wi-Fi 和蜂窝版(MM)(型号 A1460)、蜂窝和 Wi-Fi 版(型号 A1459)。有三个硬件识别字符串:iPad3,4(仅 Wi-Fi);iPad3,5(Wi-Fi 和 GSM);iPad3,6(Wi-Fi、GSM 和 CDMA)。所有版本的内存为 16、32、64 或 128 GB。关于软件,它最初使用的是 iOS 6.0.1。目前,iPad 4 支持最新版本(iOS 9.3.4),并将支持 iOS 10。此设备的生产于 2014 年 10 月停止。
iPad Air
第五代 iPad,称为iPad Air,自 2013 年 11 月起上市。它配备了 64 位 1.4 GHz S5L8965 ARM 处理器(即 Apple A7)和 1 GB 的 RAM 内存。它还配备了运动协处理器 Apple M7。它生产了三种版本:仅 Wi-Fi 版(型号 A1474)、Wi-Fi 和蜂窝版(型号 A1475)、Wi-Fi 和蜂窝版中国(型号 A1476)。有三个硬件识别字符串:iPad4,1(仅 Wi-Fi),iPad4,2(Wi-Fi 和蜂窝),iPad4,3(Wi-Fi 和蜂窝中国)。所有版本的内存为 16、32、64 或 128 GB。关于软件,它最初使用的是 iOS 7.0.3。目前,iPad Air 支持最新版本(iOS 9.3.4),并将支持 iOS 10。此设备的生产于 2016 年 3 月停止。
iPad Air 2
第六代 iPad,称为iPad Air 2,自 2014 年 10 月起上市。它配备了 64 位 1.5 GHz T7001 ARM 处理器(即 Apple A8X)和 2 GB 的 RAM 内存。它还配备了运动协处理器 Apple M8。它生产了两种版本:仅 Wi-Fi 版(型号 A1566)和蜂窝与 Wi-Fi 版(型号 A1567)。有两个硬件识别字符串:iPad5,3(仅 Wi-Fi)和 iPad5,4(Wi-Fi 和蜂窝)。所有版本的内存为 16、64 或 128 GB。关于软件,它最初使用的是 iOS 8.1。目前,iPad Air 2 支持最新版本(iOS 9.3.4),并将支持 iOS 10。此设备的生产在本书出版时仍在继续。
iPad Pro(12.9 英寸)
iPad Pro 的第一款型号,即 iPad 的更大版本,被称为iPad Pro 12.9 英寸,自 2015 年 11 月起开始销售。它配备了一颗 64 位 2.26 GHz 的 S8001 ARM 处理器(即苹果 A9X)和 4GB 的 RAM。它还配有运动协处理器 Apple M9。该设备生产了两个型号:仅 Wi-Fi 版(型号 A1584)和 Wi-Fi 与蜂窝网络版(型号 A1652)。有两种硬件识别串号:iPad6,7(仅 Wi-Fi)和 iPad6,8(Wi-Fi 与蜂窝网络)。所有版本均提供 32GB、128GB 或 256GB 的存储。就软件而言,它最初使用 iOS 9.1 版本。目前仍然支持最新的可用版本(iOS 9.3.4),并将继续支持 iOS 10。该设备的生产至本书发布时仍在继续。
iPad Pro(9.7 英寸)
iPad Pro 的第二款型号被称为iPad Pro 9.7 英寸,自 2016 年 3 月起开始销售。它配备了一颗 64 位 2.16 GHz 的 S8001 ARM 处理器(即苹果 A9X)和 2GB 的 RAM。它还配有运动协处理器 Apple M9。该设备生产了两个型号:仅 Wi-Fi 版(型号 A1673)和 Wi-Fi 与蜂窝网络版(型号 A1674)。有两种硬件识别串号:iPad6,3(仅 Wi-Fi)和 iPad6,4(Wi-Fi 与蜂窝网络)。所有版本均提供 32GB、128GB 或 256GB 的存储。就软件而言,它最初使用 iOS 9.3 版本。目前仍然支持最新的可用版本(iOS 9.3.4),并将继续支持 iOS 10。该设备的生产至本书发布时仍在继续。
iPad mini
iPad mini 的第一款型号,即 iPad 的更小版本,被简单地称为iPad mini,自 2012 年 10 月起开始销售。它配备了 1 GHz 的 S5L8942 ARM 处理器(即苹果 A5 Rev. A)和 512MB 的 RAM。它生产了三种型号:仅 Wi-Fi 版(型号 A1432);Wi-Fi 和 GSM 版(型号 A1454);以及 Wi-Fi、GSM 和 CDMA 版(型号 A1455)。有三种硬件识别串号:iPad2,5(仅 Wi-Fi);iPad2,6(Wi-Fi 与 GSM);和 iPad2,7(Wi-Fi、GSM 和 CDMA)。所有版本均提供 16GB、32GB 或 64GB 的存储。就软件而言,它最初使用 iOS 6.0.1 版本。它目前仍然支持本书写作时最新的可用版本(iOS 9.3.4),但将不再支持 iOS 10。该设备的生产已于 2015 年 6 月停产。
iPad mini 第二代
第二代 iPad mini,即iPad mini 第二代(或配备 Retina 显示屏的 iPad mini),自 2013 年 11 月起上市。它配备了 64 位 1.3 GHz S5L8960 ARM 处理器(即 Apple A7)和 1 GB 内存。与其前代产品相比,它采用了 Retina 屏幕,并配备了 Apple M7 运动协处理器。该设备有三种版本:仅 Wi-Fi 版(型号 A1489)、Wi-Fi 及蜂窝版(型号 A1490)和 Wi-Fi 及蜂窝中国版(型号 A1491)。有三种硬件标识:iPad4,4(仅 Wi-Fi);iPad4,5(Wi-Fi 和蜂窝);iPad4,6(Wi-Fi 和蜂窝中国)。所有版本的存储容量有 16、32、64 或 128 GB 可选。在软件方面,最初使用的是 iOS 7.0.3。目前仍然支持最新版本(iOS 9.3.4),并且将继续支持 iOS 10。该设备的生产在本书出版时仍在进行中。
iPad mini 第三代
第三代 iPad mini,即iPad mini 第三代,自 2014 年 10 月起上市。它配备了 64 位 1.3 GHz S5L8960 ARM 处理器(即 Apple A7)和 1 GB 内存。还配有运动协处理器 Apple M7。该设备有三种版本:仅 Wi-Fi 版(型号 A1599)、Wi-Fi 及蜂窝版(型号 A1600)和 Wi-Fi 及蜂窝中国版(型号 A1601)。有三种硬件标识:iPad4,7(仅 Wi-Fi);iPad4,8(Wi-Fi 和蜂窝);iPad4,9(Wi-Fi 和蜂窝中国)。所有版本的存储容量有 16、64 或 128 GB 可选。在软件方面,最初使用的是 iOS 8.0。目前仍然支持最新版本(iOS 9.3.4),并且将继续支持 iOS 10。这些设备的生产已于 2015 年 9 月停止。
iPad mini 第四代
第四代 iPad mini,即iPad mini 第四代,自 2015 年 9 月起上市。它配备了 64 位 1.5 GHz T7000 ARM 处理器(即 Apple A8)和 2 GB 内存。还配有运动协处理器 Apple M8。该设备有两个版本:仅 Wi-Fi 版(型号 A1538)和 Wi-Fi 及蜂窝版(型号 A1550)。有两种硬件标识:iPad5,1(仅 Wi-Fi)和 iPad5,2(Wi-Fi 和蜂窝)。所有版本的存储容量有 16、64 或 128 GB 可选。在软件方面,最初使用的是 iOS 9.0。目前仍然支持最新版本(iOS 9.3.4),并且将继续支持 iOS 10。该设备的生产在本书出版时仍在进行中。
iPod touch
iPod touch 设备是一款外观类似于 iPhone 的媒体播放器,运行 iOS 操作系统。它可以播放媒体和视频游戏。它包括 Wi-Fi 连接,可以通过 Safari 移动版访问互联网,在 iTunes Store 在线购买歌曲,并从 App Store 下载应用。
iPod touch(第一代)
第一款 iPod touch,简单称为iPod touch,自 2007 年 9 月起开始销售。它配备了 620 MHz 的 S5L8900 ARM 处理器和 128 MB 的 RAM 内存。其型号为 A1213,硬件标识为 iPod1,1。该设备提供 8 GB、16 GB 或 32 GB 的内存。关于其软件,最初使用的是 iPhone OS 1.1,最新支持的版本是 iPhone OS 3.1.3。该设备的生产于 2008 年 9 月停产。
iPod touch(第二代)
第二款 iPod touch,称为iPod touch(第二代),自 2008 年 9 月起开始销售。它配备了 620 MHz 的 S5L8720 ARM 处理器和 128 MB 的 RAM 内存。其型号为 A1288,硬件标识为 iPod2,1。该设备提供 8 GB、16 GB 或 32 GB 的内存。关于其软件,最初使用的是 iPhone OS 2.1.1,最新支持的版本是 iOS 4.2.1。该设备的生产于 2010 年 9 月停产。
iPod touch(第三代)
第三款 iPod touch,称为iPod touch(第三代),自 2009 年 9 月起开始销售。它配备了 833 MHz 的 S5L8922 ARM 处理器和 256 MB 的 RAM 内存。其型号为 A1318,硬件标识为 iPod3,1。该设备提供 32 GB 或 64 GB 的内存。关于其软件,最初使用的是 iPhone OS 3.1,最新支持的版本是 iOS 5.1.1。该设备的生产于 2010 年 9 月停产。
iPod touch(第四代)
第四款 iPod touch,称为iPod touch(第四代),自 2010 年 9 月起开始销售。它配备了 1 GHz 的 S5L8930 ARM 处理器(即苹果 A4 芯片)和 256 MB 的 RAM 内存。其型号为 A1367,硬件标识为 iPod4,1。该设备提供 8 GB、16 GB、32 GB 或 64 GB 的内存。关于其软件,最初使用的是 iOS 4.1,最新支持的版本是 iOS 6.1.6。该设备的生产于 2013 年 5 月停产。
iPod touch(第五代)
第五款 iPod touch,称为iPod touch(第五代),自 2012 年 10 月起开始销售。它配备了 1 GHz 的 S5L8942 ARM 处理器(即苹果 A5 芯片)和 512 MB 的 RAM 内存。其型号为 A1421 或 A1509,硬件标识为 iPod5,1。该设备提供 16 GB、32 GB 或 64 GB 的内存。关于其软件,最初使用的是 iOS 6.0,当前仍支持最新的版本(iOS 9.3.4),但将不再支持 iOS 10。该设备的生产于 2015 年 7 月停产。
iPod touch(第六代)
第六代 iPod touch,称为iPod touch(第六代),自 2015 年 7 月起开始销售。它配备了 64 位 1.4 GHz T7000 ARM 处理器(即 Apple A8)和 1 GB 的 RAM 内存。它还拥有运动协处理器 Apple M8。其型号为 A1574,硬件字符串为 iPod7,1。它提供了 16、32、64 或 128 GB 存储容量。关于其软件,最初使用的是 iOS 8.4。现在仍然支持最新版本(iOS 9.3.4),并且将支持 iOS 10。该设备的生产在本书出版时仍在进行中。
Apple TV
Apple TV 设备是一款数字媒体播放器,可以接收来自各种来源的数字数据,并将其播放在电视屏幕上。它使用一种 iOS 操作系统的变种,称为Apple TV 软件。它包括 Wi-Fi 连接,因此可以访问互联网,并从 iTunes Store 在线购买歌曲和电影。
Apple TV(一代)
第一代 Apple TV,简称Apple TV,自 2007 年 1 月起开始销售。它配备了 1 GHz 的 Intel Pentium M 处理器和 256 MB 的 RAM 内存。其型号为 A1218,硬件字符串为 AppleTV1,1。它提供了 40 或 160 GB 存储容量。关于其软件,最初使用的是 Apple TV 软件 1.0。最新支持的版本是 Apple TV 软件 3.0.2。该设备的生产于 2010 年 9 月停止。
Apple TV(二代)
第二代 Apple TV,简称Apple TV 2G 或 第二代,自 2010 年 9 月起开始销售。它配备了 Apple A4 S5L8930 处理器和 256 MB 的 RAM 内存。其型号为 A1378,硬件字符串为 AppleTV2,1。它具有 8 GB 用于缓存的存储空间。关于其软件,最初使用的是 Apple TV 软件 4.0。最新支持的版本是 Apple TV 软件 6.2.1。该设备的生产于 2012 年 3 月停止。
Apple TV(三代)
第三代 Apple TV,简称Apple TV 3G 或 第三代,自 2012 年 3 月起开始销售。它配备了 Apple A5 Rev. A S5L8942 处理器和 512 MB 的 RAM 内存。其型号为 A1427,硬件字符串为 AppleTV3,1。它具有 8 GB 用于缓存的存储空间。关于其软件,最初使用的是 Apple TV 软件 5.0。最新支持的版本是 Apple TV 软件 7.2.1。该设备的生产于 2013 年 3 月停止。
Apple TV(三代 Rev. A)
Apple TV 3G 的修订版,亦称为 Apple TV 3G Rev. A 或 第三代 Rev. A,自 2013 年 1 月起上市。它配备了苹果 A5 Rev. 8 S5L8947 处理器和 512 MB 内存。它的型号为 A1469,硬件字符串为 AppleTV3,2。此设备有 8 GB 内存用于缓存。关于其软件,最初使用的是 Apple TV 软件 5.2,最新支持的版本是 Apple TV 软件 7.2.1。该设备的生产在本书出版时仍在进行。
Apple TV(第四代)
苹果 TV 第四代触控版,亦称为 Apple TV 4G 或 第四代,自 2015 年 10 月起上市。它配备了苹果 A8 T7000 处理器和 2 GB 内存。它的型号为 A1625,硬件字符串为 AppleTV5,3。此设备有 32 GB 或 64 GB 内存版本。关于其软件,最初使用的是 tvOS 9.0(重新设计版的 Apple TV 软件)。目前仍支持最新版本(tvOS 9.2.2)。该设备的生产在本书出版时仍在进行。
Apple Watch
Apple Watch 是一款智能手表,自 2015 年以来由苹果公司开发和生产。它使用基于 iOS 的 watchOS 操作系统。Apple Watch 需要通过 Wi-Fi 或蓝牙连接 iPhone 才能执行大部分功能,如打电话或发送短信。本书出版时,已有两种版本可供选择:38 毫米(A1553 型号,Watch1,1 字符串)和 42 毫米(A1554 型号,Watch1,2 字符串)。两种版本均有四种不同的变体(常规版、运动版、金色版和 Hermes 版),并且使用苹果 S1 S7002 处理器,配备 512 MB 内存和 8 GB 设备存储。
iOS 设备连接器
iOS 设备(iPhone、iPad 和 iPod Touch)使用两种不同类型的连接器:
-
30 引脚底座连接器 (
en.wikipedia.org/wiki/Dock_connector): 这是苹果公司在 2003 年设计的专有 30 引脚连接器,直到 2014 年才停止生产。它曾被用于 iPhone、iPhone 3G、iPhone 3GS、iPhone 4、iPhone 4s、iPad、iPad 2、iPad 3、iPod touch 第一代、iPod touch 第二代、iPod touch 第三代和 iPod touch 第四代。 -
Lightning 连接器 (
en.wikipedia.org/wiki/Lightning_(connector)): 这是苹果公司在 2012 年设计的专有 8 引脚连接器,至今仍在使用。它曾被用于 iPhone 5、iPhone 5c、iPhone 5s、iPhone 6、iPhone 6 Plus、iPhone 6s、iPhone 6s Plus、iPad 4、iPad Air、iPad Air 2、iPad Mini 第一代、iPad Mini 第二代、iPad Mini 第三代、iPad Mini 第四代、iPad Mini 第五代以及 iPod touch 第五代。
iOS 设备矩阵
在以下表格中,我们提供了一个实用的矩阵,便于轻松识别 iOS 设备的连接器:



-
iOS 型号 (
theiphonewiki.com/wiki/Models): 该页面包含设备名称、设备型号、FCC-ID、内部名称和硬件标识符的详细表格。有关 iOS 设备的其他有用信息,请参见以下链接:-
应用处理器 (
theiphonewiki.com/wiki/Application_Processor): 该页面包含安装在 iOS 设备上的处理器的详细列表 -
识别您的 iPhone 型号 (
support.apple.com/en-us/HT201296): 这是 Apple 官方页面,包含识别 iPhone 型号的信息 -
iPhone (
theiphonewiki.com/wiki/IPhone): 该页面包含每个 iPhone 型号的所有特性和特点的详细表格 -
识别您的 iPad 型号 (
support.apple.com/en-us/HT201471): 这是 Apple 官方页面,包含识别 iPad 型号的信息 -
iPad (
theiphonewiki.com/wiki/IPad): 该页面包含每个 iPad 型号的所有特性和特点的详细表格 -
识别您的 iPod 型号 (
support.apple.com/en-us/HT204217): 这是 Apple 官方页面,包含识别 iPod 型号的信息 -
iPod touch (
theiphonewiki.com/wiki/IPod_touch): 该页面包含每个 iPod touch 型号的所有特性和特点的详细表格 -
识别您的 Apple TV 型号 (
support.apple.com/en-us/HT200008): 这是 Apple 官方页面,包含识别 Apple TV 型号的信息 -
Apple TV (
www.theiphonewiki.com/wiki/Apple_TV): 该页面包含每个 Apple TV 型号的所有特性和特点的详细表格 -
识别您的 Apple Watch (
support.apple.com/en-us/HT204507): 这是 Apple 官方页面,包含识别 Apple Watch 型号的信息 -
iOS 支持矩阵 (
iossupportmatrix.com/): 该页面包含所有 iDevice 型号的硬件和软件特性及支持的可视化表示 -
iPhone IMEI (
iphoneimei.info/): 该页面包含一个搜索引擎,可以根据 IMEI 号码查找特定的 iPhone 型号 -
IMEI.info (
www.imei.info/): 这个链接与前述链接类似 -
iPhoneox (
www.iphoneox.com/):此链接与前述链接类似。
-
iOS 操作系统
本章中描述的所有设备都共同使用 iOS 操作系统,该系统最初称为 iPhone OS,直到版本 3。它由 Apple 专为 iPhone、iPad 和 iPod touch 开发。首次发布于 2007 年 1 月,并于同年 6 月与首款 iPhone 一起推出。
iOS 是一种基于旧版 Mac OS X 的操作系统,Mac OS X 是 BSD Unix 的衍生版本,具有基于 Darwin OS 的 Mach 内核 XNU。它使用以下四个抽象层级:
-
Core OS:此层包括文件系统、内存管理、安全性、电源管理、TCP/IP、套接字和加密。
-
Core services:此层包括网络、SQLite、地理位置和线程。
-
Media:此层包括 OpenAL、音频、图像、视频和 OpenGL。
-
Cocoa touch:此层包括核心动画、多任务处理和手势识别器。
主页屏幕,称为 SpringBoard,分为以下三部分:
-
顶部的条形区域显示电话信号、任何 3G/Wi-Fi/Bluetooth 活跃连接以及电池状态。
-
中央部分包含设备中应用程序的图标。
-
底部的条形区域包含最常用的应用程序,例如以下这些:
-
iPhone:电话、邮件、Safari 和音乐。
-
iPad/iPod touch:消息、邮件、Safari 和音乐。
-
当用户解锁设备或在另一个应用程序中按下主页按钮时,主页屏幕会显示。
所有由 Apple 发布的操作系统版本的完整列表已发布,并在theiphonewiki.com/wiki/Firmware上定期更新,所有具体版本及其子版本的详细说明可以在en.wikipedia.org/wiki/IOS_version_history找到。此外,您可以在www.ipswdownloader.com/下载所有型号的固件。
以下表格提供了包含的应用程序的详细列表,并标明应用程序最初引入的具体版本。此表格来自并已从网址en.wikipedia.org/wiki/IOS中提取和编辑。


iDevice 识别
对于法医调查员来说,能够在进行搜索和扣押或进行数据获取活动之前识别出特定的 iOS 设备型号是非常有用的。
识别阶段可以通过以下四种方式进行:
-
识别设备的形状和所使用的连接器。
-
检查设备背面的型号编号。
-
将设备连接到笔记本电脑并直接与之通信。
-
通过操作系统直接导航到设置 | 通用 | 关于本机
第一种方法可以通过实践识别每个型号的独特特征来使用。在某些情况下,这可能是一个复杂的评估,因此建议通过其他三种方法中的任何一种来确认第一次评估。
第二种方法需要从设备背面识别型号编号。如前面表格所示,通过型号编号可以轻松识别设备类型。在以下截图中,可以识别出该设备是 A1303 型号,或者是一部内存为 16 GB 的 iPhone 3GS:

第三种方法是直接获取设备信息,通过与连接到计算机的设备交互。如我们稍后将探讨的,一旦启动 iDevice,它可能会被密码保护,并显示一个输入锁定密码的界面。无论是否知道密码或能否突破或绕过它,设备在连接到计算机时仍然可以传输一些信息。
在此背景下,非常有用的工具和库集成在www.libimobiledevice.org/中,并预安装在 Linux 发行版 Santoku(santoku-linux.com/)和 DEFT 8.1(www.deftlinux.net)中。
使用ideviceinfo命令,可以从设备中提取一些信息,无需解锁设备。
可提取的信息如下:
-
设备名称
-
设备类别
-
硬件型号
-
iOS 版本
-
通话功能
-
唯一设备 ID
-
蓝牙 MAC 地址
-
Wi-Fi MAC 地址
在以下截图中,可以识别出连接的设备是仅支持 Wi-Fi 的 iPad mini 1(硬件型号 P105AP),搭载 iOS 6.1.2(构建版本 10B146),设备名为iPad di Mattia:

另一个有用的工具是 iFunBox(www.i-funbox.com/),用于提取设备信息。只需右键单击文件浏览器窗口中的设备名称,然后选择属性:

在这个例子中,可以识别出连接的设备是iPhone 4s(硬件型号MD235-IP/A),搭载 iOS 9.2 (13C75),设备名为 EpiPhone:

iOS 文件系统
所有 iDevices 都使用 HFSX 作为文件系统,这是 HFS+的一种变体。它允许在同一文件夹中存储多个同名文件,只是每个文件名的字符大小写不同(例如,iOS.jpg和ios.jpg)。
HFS+ 文件系统
HFS Plus(或 HFS+)是由苹果公司开发的文件系统,从 Mac OS 8.1 开始,HFS 成为 Mac 计算机的默认文件系统。根据苹果的官方文档,它被称为Mac OS Extended。
HFS+是 HFS 的改进版,它允许用户支持更大的文件(得益于 32 位块地址,而不是 16 位)并使用 Unicode 作为文件系统对象(文件和文件夹)的名称,从而允许每个文件名最多 255 个字符。在 Mac OS X Tiger 之前,HFS+仅支持使用 Unix 文件系统权限来访问文件。Tiger 版本引入了基于访问控制列表(ACL)的安全检查,这在 Microsoft 环境中很常见。
HFS+卷是分配块,可能包含一个或多个扇区(通常是硬盘中的 512 字节)。分配块的数量取决于卷的总大小。HFS+文件系统使用 32 位来寻址分配块,从而允许访问 232 个块(4,294,967,296)。
一个典型的 HFS+卷由以下六个主要数据结构定义,这些结构包含管理数据卷所需的信息:
-
卷头文件:此文件定义了卷的基本结构,包括每个分配块的大小、已使用和空闲块的数量,以及其他特殊文件的大小和位置。 -
分配文件:此文件包括一个位图,显示卷内已使用和未使用的块。 -
目录文件:此文件定义了文件系统中文件夹的结构,并用于识别特定文件或文件夹的位置。 -
扩展溢出文件:此文件包含指向需要超过八个连续分配块的文件的附加扩展的指针。 -
属性文件:此文件包含文件的可自定义属性。 -
启动文件:此文件包含系统启动所需的信息。
数据结构可以通过以下图示表示:

特殊文件和用户文件都存储在分支中,或存储在一组分配块中。空间通常以块组的形式分配,其中一个块组的大小是块大小的倍数。给定文件的连续分配块被分组成扩展。每个扩展由一个起始分配块和块的数量来描述,表示有多少个块包含该特定文件的数据。
在引导块和启动文件中,卷的前 1,024 字节被保留为引导块,可能包含在系统启动时请求的信息。或者,引导信息可以在启动文件中找到,允许存储更多的信息。
volume header 文件是一个 512 字节的数据结构,包含卷信息,包括其他数据结构的位置。它总是位于第 2 块的开始或卷开始后 1,024 字节的位置。volume header 文件的副本,称为备用卷头,位于卷末前 1,024 字节的位置。卷的前 1,024 字节和最后 512 字节是保留的。
卷头文件中包含的信息如下:
| 字段名称 | 大小 | 描述 |
|---|---|---|
signature |
2 字节 | 该字段表示卷标志,如果卷是 HSF Plus,则必须为 'H+',如果卷是 HFSX,则为 'HX' |
version |
2 字节 | 该字段表示格式版本,'4' 代表 HFS Plus,'5' 代表 HFSX |
attributes |
4 字节 | 该字段表示卷属性(例如,启用了日志记录) |
lastMountedVersion |
4 字节 | 该字段描述安装的操作系统 |
journalInfoBlock |
4 字节 | 该字段是管理日志记录的分配块 |
createDate |
4 字节 | 该字段表示卷的创建日期 |
modifyDate |
4 字节 | 该字段表示卷最后修改的日期 |
backupDate |
4 字节 | 该字段表示卷最后备份的日期 |
checkedDate |
4 字节 | 该字段表示卷最后一致性检查的日期 |
fileCount |
4 字节 | 该字段表示卷中文件的数量,不包括特殊文件 |
folderCount |
4 字节 | 该字段表示卷中文件夹的数量,不包括根文件夹 |
blockSize |
4 字节 | 该字段表示分配块大小(字节) |
totalBlocks |
4 字节 | 该字段表示分配块的总数 |
freeBlocks |
4 字节 | 该字段表示可用的分配块数 |
nextAllocation |
4 字节 | 该字段表示下一个可用分配块的地址 |
rsrcClumpSize |
4 字节 | 该字段表示资源分支的默认块大小 |
dataClumpSize |
4 字节 | 该字段表示数据分支的默认块大小 |
nextCatalogID |
4 字节 | 该字段表示第一个可用的 CatalogID |
writeCount |
4 字节 | 该字段表示卷挂载的次数 |
encondingsBitmap |
8 字节 | 该位图描述了文件和文件夹名称使用的编码 |
finderInfo |
32 字节 | 该字段表示 Mac OS Finder 和系统软件引导过程使用的信息 |
allocationFile |
80 字节 | 该字段表示文件分配的位置和大小 |
extentsFile |
80 字节 | 该字段表示范围文件的位置和大小 |
catalogFile |
80 字节 | 该字段表示目录文件的位置和大小 |
attributesFile |
80 字节 | 该字段表示属性文件的位置和大小 |
startupFile |
80 字节 | 该字段表示启动文件的位置和大小 |
allocation(位图)文件用于跟踪卷上哪些分配块当前已分配给某个结构(文件或文件夹)。它是一个位图,包含卷中每个分配块的一个位。如果一个位是 1,则对应的分配块正在使用中。如果该位是 0,则对应的分配块当前未使用,因此可以分配给文件或文件夹。
catalog 文件用于保存 HFS+ 上文件和文件夹的层次结构信息。catalog 文件组织为二叉树(B 树类型),因此由头节点、索引节点和叶子节点组成。catalog 文件的第一个数据块位置(即文件的 head 节点)存储在 volume header 文件中。catalog 文件包含卷上所有文件和文件夹的元数据,包括创建、修改和访问日期、权限、文件标识符以及创建文件的用户信息。
catalog 文件中每个文件的数据结构如下:
struct HFSPlusCatalogFile {
SInt16 recordType;
UInt16 flags;
UInt32 reserved1;
HFSCatalogNodeID fileID;
UInt32 createDate;
UInt32 contentModDate;
UInt32 attributeModDate;
UInt32 accessDate;
UInt32 backupDate;
HFSPlusBSDInfo permissions;
FileInfo userInfo;
ExtendedFileInfo finderInfo;
UInt32 textEncoding;
UInt32 reserved2;
HFSPlusForkData dataFork;
HFSPlusForkData resourceFork;
};
确定文件位置时最感兴趣的两个区域是 dataFork 和 resourceFork(均为 HFSPlusForkData 类型)。
dataFork 字段包含有关文件位置和大小的信息,或文件当前内容的信息,而 resourceFork 字段包含文件的应用程序元数据。
HFSPlusForkData 数据结构由以下四个字段定义:
struct HFSPlusForkData {
UInt64 logicalSize;
UInt32 clumpSize;
UInt32 totalBlocks;
HFSPlusExtentRecord extents;
};
logicalSize 字段定义数据的字节大小,totalBlocks 字段定义分配的块数量,extents 字段存储文件描述符的前八个扩展(扩展是文件的连续段)。如果文件需要更多描述符扩展,这些扩展存储在 extents overflow 文件中。构成文件的每个扩展都在 HFSPlusExtentDescriptor 数据结构中描述,并由以下两个字段定义:
struct HFSPlusExtentDescriptor {
UInt32 startBlock;
UInt32 blockCount;
};
startBlock 字段标识扩展中的第一个分配块,blockCount 字段标识扩展的长度(按分配块数量计算)。文件的起始偏移量可以通过找到第一个扩展并将对应的 startBlock 字段与分配块的大小相乘来确定,分配块的大小在 volume header 文件中定义。由于文件不总是可以完全存储在磁盘上连续的块中,且可能会被碎片化,HFS+ dataFork 定义了一种结构,可以容纳最多八个扩展。当文件需要超过八个扩展时,它会使用 extents overflow 文件,将文件与额外的扩展结合起来。
对于extents overflow文件,如果一个 HFS+卷中的文件由超过八个扩展(或在卷的连续位置上被分割为超过八个部分)组成,超出部分将存储在extents overflow文件中。该文件的结构类似于content文件(二叉树,B 树);然而,由于只有一个数据结构(HFSPlusExtentKey)存在,其结构大大简化。
attributes文件允许通过文件系统直接管理文件的附加属性。这些属性被定义为键/值对。
与 HFS+相关的一个有趣概念是文件系统日志记录,用于在卷没有安全卸载时的恢复过程。此文件存储文件事务(create、delete、modify等),并可能包含存储在属性文件或catalog文件中的相同元数据。它在 iOS 设备上默认启用,并可用于恢复删除的内容。
设备分区
i 设备使用 NAND 类型内存,分为两个分区:系统分区或固件分区以及数据分区。
系统分区包含 iOS 操作系统和所有预装的应用程序,标识为/dev/disk0s1或/dev/disk0s1s1。此分区通常无法由用户在写入模式下访问,只有操作系统更新时才能修改。由于它不能包含用户安装的应用程序和数据,因此其大小较小,具体大小取决于设备型号。
数据分区占据了 NAND 内存大部分空间,标识为/dev/disk0s2或/dev/disk0s2s2。该分区包含用户数据和用户安装的应用程序,操作系统会在运行时将其挂载在/private/var目录下。
系统分区
如果设备处于正常状态,所有与调查相关的信息都位于包含用户数据的分区。因此,系统分区通常不涉及调查内容。有关文件夹内容的完整描述可以在theiphonewiki.com/wiki/找到,且该分区看起来与下面的截图相似:

需要注意的是,/private/etc/passwd(如以下截图所示)包含设备上配置的用户的密码(mobile和root):

对于所有 i 设备,mobile和root用户的默认密码是alpine。除非执行越狱操作,否则用户无法修改该密码,具体操作如下面的截图所示:

数据分区
数据分区的结构在不同版本的操作系统中发生了变化。以下截图展示了从越狱后的 iPad mini 1G(运行 iOS 9.0.2)提取的文件夹结构示例:

对于 iDevice 的分析,将在第六章,分析 iOS 设备中讨论有用的元素。然而,在这里,我们想要回顾 数据分区 部分中各文件夹的一般内容,主要参考资料为 iPhone Wiki:
-
backups:通常为空且未被 iOS 使用。 -
cache:通常为空且未被 iOS 使用。 -
db:保存系统组件使用的数据库,例如设备获得的时区信息和 DHCP 租约。如果存在stash子文件夹,则设备已越狱。 -
ea:通常为空且未被 iOS 使用。 -
empty:通常为空且未被 iOS 使用。 -
folder:通常为空且未被 iOS 使用。 -
keychains:存储 iOS 中使用的密码。 -
keybags:包含 keybags,类似于 keychains,但不同之处在于 keybags 会在重启时清除,而 keychains 会在重启后保留。它只包含一个文件(systembag.kb),例如,存储 iTunes 使用的托管密钥包。自 iOS 4.0 起存在。 -
lib:保存已安装应用程序的状态信息。如果存在cydia子文件夹,则设备已越狱。 -
local:通常为空且未被 iOS 使用。 -
lock:通常为空且未被 iOS 使用。 -
log:存储一些系统日志(例如;asl,revision,ecc)。 -
logs:存储其他系统日志(例如,CrashReporter)。 -
Managed Preferences:存储通过 ActiveSync 与 Microsoft Exchange 相关的文件。 -
mobile:包含移动用户的主文件夹,并保存从取证角度来看最有用的信息。 -
MobileDevice:包含配置文件,通常用于开发阶段。 -
MobileSoftwareUpdate:用于无线更新,自 iOS 5.0 起存在。 -
msgs:通常为空且未被 iOS 使用。 -
networkd:包含由 networkd 使用的文件,networkd 是与网络服务相关的守护进程。 -
preferences:保存一些系统配置。 -
root:包含移动用户的home文件夹。 -
run:包含仅在运行时使用的文件,通常由 lockdownd 使用。 -
spool:通常为空且未被 iOS 使用。 -
tmp:包含临时文件,其内容通常不会在设备重启后保留。 -
vm:为空且未被 iOS 使用,并且不支持交换文件和休眠。 -
wireless:包含与设备运营商提供的电话服务相关的数据。
最后,需要指出的是,iDevices 使用属性列表和 SQLite 数据库作为数据和配置容器。
属性列表文件
property list 文件(也称为 plist 文件)由 Apple 用于管理操作系统和关键应用程序的配置。通常,这些是格式为 XML 的简单文本文件。在大多数情况下,plist 文件包含文本字符串和布尔值;在某些情况下,它可能包含以二进制格式编码的数据,如下图所示。尽管它们可以通过简单的文本编辑器轻松分析,但通过专用阅读器浏览层次结构会更加方便。关于 plist 格式的完整描述超出了本书的范围,但可以在线找到完整的参考资料,链接为 developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man5/plist.5.html。

在 Mac 环境中,可以安装由 Apple 开发的免费工具 Property List Editor。它可以从 XCode 开发平台的官方网站下载 (developer.apple.com/xcode/)。
在 Windows 环境中,我们可以使用 plist Editor for Windows (www.icopybot.com/plist-editor.htm)。
SQLite 数据库
iOS 设备使用 SQLite 数据库来存储信息和用户数据。关于 plist 格式的完整描述超出了本书的范围,但可以在线找到完整的参考资料,链接为 www.sqlite.org/。分析这些文件需要最低限度的 SQL 命令知识来选择数据;然而,有多种免费的软件选项可以解读并轻松显示数据库中的数据。一款跨平台的软件是 SQLite Database Browser (sqlitebrowser.org/),它可以让我们可视化数据库结构并在数据中进行导航,如下图所示:

在 Windows 环境中,建议使用软件 SQLite Expert(个人和商业许可证均可通过 www.sqliteexpert.com/ 获得)。
概述
本章介绍了在移动取证活动中与 iOS 设备相关的特性。特别是,它介绍了不同的机型,并提供了基于型号或硬件型号的识别技术指导。还包含了 iOS 操作系统的介绍,特别是文件系统(HFSX)、分区(系统和数据)以及主要的数据结构(property list 文件和 SQLite 数据库)。这些内容是对 iDevice 进行取证活动的基础,并且对于理解下一章的内容非常有用,在那一章中你将学习各种工具和技巧,帮助你在处理数据获取和分析时使用。
自测题
Q1. iPhone 4 支持的最新 iOS 版本是什么?
-
iOS 5.1.1
-
iOS 6.1.2
-
iOS 7.1.2
-
iOS 8.1.2
-
iOS 9.0.2
Q2. 哪些是与 iPhone 6s 相关的型号?
-
A1522 和 A1524
-
A1549 和 A1586
-
A1633 和 A1688
-
A1428 和 A1429
Q3. iOS 使用的文件系统是什么?
-
NTFS
-
EXT3
-
HFS+
-
HFSX
Q4. iOS 文件系统中用于保存文件和文件夹信息的元文件是什么?
-
卷头
-
分配
-
目录
-
范围
Q5. 默认的 root 用户密码是什么?
-
apple
-
iphone
-
leopard
-
alpine
Q6. 哪种文件类型主要用于保存 iOS 配置?
-
文本
-
Json
-
Plist
-
HTML
第三章:从 iDevices 获取证据
本章的目的是介绍用于从 iDevice 获取数据的技术和工具。在本章的第一部分,我们将讲解启动过程、数据安全特性和 Apple 使用的加密技术。第二部分则涉及不同的获取方法,包括 Apple 文件通道(AFC)协议、iTunes 备份、Apple 文件中继协议和物理获取等,并提供了破解或绕过锁定代码的先进技术的描述。最后,在最后一部分,我们将介绍越狱的概念,这对于最新设备的物理数据获取非常有用。
iOS 启动过程和操作模式
iOS 设备的启动过程由三个步骤组成:低级引导加载程序(LLB)、iBoot 和 iOS 内核。为了保证不同组件的完整性,启动过程中涉及的所有步骤都会进行签名。LLB 的签名通过包含在 Boot ROM 代码中的 Apple 根证书公钥进行验证。然后,LLB 验证并执行 iBoot,iBoot 接着验证并执行 iOS 内核。因此,所有组件都由 Apple 签名。关于 iOS 启动过程以及如何绕过 Apple 实施的保护措施,已经有许多研究、论文和书籍(所有细节可以在 附录 A 和 参考文献 中找到)。我们建议您阅读 Apple 的最新论文 iOS 安全性,Apple,2016 年 5 月。
从取证分析师的角度来看,了解 iDevice 可以在以下三种不同模式下运行是很重要的:
-
正常模式:这是传统的 iOS 用户界面模式。
-
恢复模式:此模式用于在 iDevice 上执行激活和升级。通过在设备关闭时按住 Home 键并通过 USB 电缆将其连接到计算机来激活此模式。
-
设备固件升级模式(DFU):此模式在 iOS 升级过程中或当验证启动链中的某个过程失败时,iDevice 会进入该模式。通过同时按住 Home 键和 Power 键 10 秒钟(无论设备是开机还是关机),然后松开 Power 键并继续按住 Home 键 10 秒钟,即可激活此模式。
恢复模式和 DFU 模式对于 iDevices 的物理数据获取非常有用,正如我们稍后在专门部分中展示的那样。
iOS 数据安全
本书并不涵盖 iOS 数据安全的完整描述,但我们希望为您提供一个概览(摘自 Apple 的 iOS 安全性 论文和 Christian D'Orazio 的论文;请参阅 附录 A,参考文献)有关硬件和软件安全特性。
硬件安全特性
从 iPhone 3GS 开始,每台 iDevice 设备都内置了一个专用的 AES 256 位加密引擎,该引擎位于闪存存储和主系统内存之间。这个处理器的目的是加速加密和解密操作,并保护用户数据,使其在设备的闪存上保持加密状态。每个设备都与一个唯一 ID(UID)相关联,允许将数据加密地绑定到特定设备。UID 无法直接读取,并且它被用作 AES 256 位密钥来生成保护用户数据的加密密钥。这些加密密钥被称为EMF和Dkey(Class D Key),存储在闪存的特定区域,称为PLOG 块(或可删除存储)。当设备删除此区域时,整个卷会变得无法读取,内容完全加密且无法恢复。
文件数据保护
如苹果在文档 iOS Security 中所描述(参考 附录 A, 参考资料):
“除了 iOS 设备内建的硬件加密功能外,苹果还使用一种叫做数据保护的技术来进一步保护设备上闪存存储的数据。”
苹果实现了加密的 HFS+卷,其中每个文件会根据数据类型和所需的安全级别分配一个类别。文中还指出:
“每当数据分区上的文件被创建时,数据保护会生成一个新的 256 位密钥(每个文件的密钥),并将其交给硬件 AES 引擎,后者使用该密钥在使用 AES CBC 模式写入闪存时对文件进行加密。”
然后,每个文件的密钥会被该文件所属类别的密钥加密。加密后的文件密钥会存储在cprotect属性中,该属性是文件元数据的一部分,包含在Attributes文件中。文中进一步指出:
“当一个文件被打开时,它的元数据会使用文件系统密钥解密,从而揭示出加密的每个文件密钥以及标明保护它的类别的注释。每个文件的密钥通过类别密钥解密,然后提供给硬件 AES 引擎,后者在从闪存读取文件时进行解密。”
需要注意的是,文件系统密钥可以被擦除,在这种情况下,每个文件的内容将变得完全无法读取。有四个基本类别使用不同的策略来确定文件内容何时可访问,以及类别密钥存储的位置。除了 Dkey 外,所有类别密钥都存储在Keybag系统中,这是一个包含每个类别主密钥的文件,如下图所示:

D 类提供最低的安全级别,因为 Dkey 不是从密码派生的,而是被包装在 PLOG 区域中,且有一个可以通过与内核通信来检索的值(Key0x835)。从取证的角度来看,重要的是要注意,除了电子邮件消息及其附件外,所有由原生 iOS 应用程序创建的文件都属于 D 类。这意味着,解密文件所需的所有加密密钥都可以在无需知道或破解密码的情况下被检索。
唯一设备标识符
每一台生产的 iDevice 都有一个 唯一设备 ID (UDID),如 The iPhone Wiki 所解释的那样。它可以通过以下方法计算得到:对特定的 60 或 59 个字符长的字符串进行 SHA-1 哈希运算,且该字符串可以通过以下方式获得:
-
一个 11 或 12 个字符长的序列号(在较新的设备上),与 设置 应用中显示的一致。
-
一个没有空格的 15 个字符的 IMEI 号码(在较老的设备上),对于 iPod touch 和 Wi-Fi 型 iPad 设备为空字符串,或者一个没有前导零的 13 个字符的十进制 ECID(在较新的设备上)
注意事项
ECID 是电子芯片 ID。欲了解更多信息,请参阅
theiphonewiki.com/wiki/ECID。 -
一个 17 个字符长的 Wi-Fi MAC 地址(字母为小写,包括冒号)。对于第一代 iPod touch,使用
00:00:00:00:00:00 -
一个 17 个字符长的蓝牙 MAC 地址(字母为小写,包括冒号)
案例研究 - iPhone 6s 上的 UDID 计算
在 iPhone 6s 上,UDID 的计算方法如下:

如果设备已解锁,序列号、Wi-Fi MAC 地址和蓝牙地址可以通过点击设备主屏幕上的 设置 | 通用 中的 关于 来获取,如下截图所示:

ECID 可以通过以下步骤获得:
-
将设备置于恢复模式。
-
打开 Windows 设备管理器,导航到 通用串行总线控制器 | Apple Mobile Device USB 驱动程序,右键点击它,并选择 属性。
-
点击 详细信息,在下拉菜单中搜索并选择 设备实例路径,并将文本复制到文本文件中。
-
在 Mac OS X 上,导航到 系统信息 | 系统报告,并在 硬件 下的 USB 条目中查看。
![案例研究 - iPhone 6s 上的 UDID 计算]()
在此示例中,我们有以下条目:
-
序列号:
F17QT811GRY9 -
ECID:
0016611E28BB0226 -
Wi-Fi MAC 地址:
1C:5C:F2:7F:7A:20 -
蓝牙 MAC 地址:
1C:5C:F2:7F:7A:21
在计算 UDID 之前,我们需要将 ECID 的十六进制值转换为十进制数字,因此 16611E28BB0226 对应 6299231647892006。此外,Wi-Fi MAC 地址和蓝牙 MAC 地址中的字母必须转换为小写字母。
UDID 可以按以下方式计算:
SHA1(F17QT811GRY962992316478920061c:5c:f2:7f:7a:201c:5c:f2:7f:7a:21) = 3bf682ebc55c5673d586e0273af0dfb72d1994a2
计算得到的值可以通过 iTunes 进行验证,方法是将设备连接到计算机,如下图所示:

否则,也可以使用ideviceinfo工具来验证 UDID,该工具在第二章《iOS 设备简介》中介绍,如下图所示:

锁定证书
第一次将解锁的 iDevice 连接到计算机并运行 iTunes 软件时,会在计算机硬盘上创建一个配对/同步证书,称为锁定证书。根据 iTunes 安装的操作系统,锁定证书会存储在以下文件夹中:
-
Windows 7/8/10:
C:\Program Data\Apple\Lockdown -
Windows Vista:
C:\Users\[用户名]\AppData\roaming\Apple Computer\Lockdown -
Windows XP:
C:\Documents and Settings\[用户名]\Application Data\Apple Computer\Lockdown -
Mac OS X:
/var/db/lockdown
在旧版本的 Mac OS X 中,锁定证书存储在/Users/[用户名]/Library/Lockdown/目录下。
在这些路径下,每个曾经连接到计算机的设备都有一个锁定证书。该证书是一个plist文件,名为<UDID>.plist,其中UDID对应 iDevice 的唯一标识符,如下图所示:

一旦为特定设备生成证书,它将一直有效,直到用户将设备重置为出厂设置。如果设备已经开启且在过去 48 小时内至少解锁过一次(从 iOS 8 开始),该证书可以绕过密码,既可以获取备份,又可以通过 AFC 服务提取文件。对于数据取证来说,至关重要的一点是,证书可以被复制到另一台机器上。
从 iOS 7.0 开始,当你连接设备时,会显示两个弹出授权窗口。第一个弹出窗口出现在计算机上的 iTunes 中,要求用户点击继续。

第二个弹出窗口会在 iDevice 解锁后出现在屏幕上,用户需要点击信任按钮以允许与计算机配对。

搜查和扣押
如果你需要处理 iDevice 的搜查和扣押,执行一些步骤非常重要。我们有三种情况:设备关闭、设备在搜查和扣押时已经开启且解锁、设备在搜查和扣押时已开启但锁定:
-
如果设备已开启并且已锁定,请执行以下操作:
如果已设置密码,请尽快从设备采集内容,或者保持设备开机并充电。
如果未设置密码,关闭该选项。
-
如果设备关闭,请保持其关闭。
-
在设置 | 通用 | 自动锁定中,将自动锁定设置为永不。
-
检查是否设置了密码,路径为设置 | 密码。
-
如果设备已开机且解锁,请在设置中打开飞行模式:
检查设备是否显示iPhone 重启后需要输入密码的消息,如以下截图所示:
![搜索与扣押]()
-
使用苹果控制中心打开飞行模式,通过简单滑动即可激活,即使设备已锁定,只要用户未禁用此访问权限。
-
保持手机开机并充电。
-
扣押任何可能曾用于同步或简单授权 iDevice 的计算机,因为在这些设备上,你可能找到一个锁定证书,允许访问数据。
-
尽快采集数据,因为锁定证书仅在设备保持开机状态且最长不超过 48 小时有效。
iOS 设备采集
一旦确定了需要采集的具体型号,了解使用最佳技术变得至关重要。采集类型基本上取决于以下七个参数:
-
设备型号
-
iOS 版本
-
密码(未设置、简单密码或复杂密码)
-
设备状态(开机或关机)
-
是否有配对证书
-
是否设置了备份密码
-
设备是否越狱
目前,在法医界,以下四种技术被用来访问存储在 iDevices 上的数据:
-
Apple 文件通道:此技术通过与已开机设备的直接交互,通常通过非法医软件,允许获取文件系统的简化版本。
-
iTunes 备份:此技术通过 iTunes 备份功能或使用通过 iTunes 库进行的法医采集工具,进行部分文件系统的采集。
-
高级逻辑:此技术基于 Apple File Relay,由研究人员 Jonathan Zdziarski 首次引入。
-
物理:此技术生成一个传统的法医镜像,涵盖系统和数据分区。
Apple 文件通道采集
通过 AFC 服务进行的获取可以在所有 iDevices 上进行,无论操作系统版本如何。要求设备没有设置密码,或者密码已知,或者分析员拥有有效的锁定证书。通过不同版本的 iOS,这种获取方式及可获取的数据类型发生了很大变化。
从 iOS 9 开始,如果设备解锁或具有有效的锁定证书,则只能提取多媒体信息(照片、视频、音乐等)及相关配置文件(例如,iTunes 库、照片应用的数据库等)。此外,在 iOS 8.3 及更早版本中,只要设备解锁或具有有效的锁定证书,也可以访问第三方应用程序的数据文件夹。值得注意的是,这种方法还允许我们从设备中提取 Crash Reports 文件夹,其中包含操作系统和已安装应用程序生成的错误日志以及实时系统日志。通过 iTunes 备份获取的数据中将不包含这些文件,正如在第六章,分析 iOS 设备中将解释的那样,某些情况下,这些文件可能包含非常重要的信息。因此,在选择获取方法时,建议考虑这一点。
要进行这种类型的获取,可以使用各种被称为 iDevice 浏览器的软件。
注意
该操作使用的是非取证工具,且该工具也允许写入操作,因此分析人员必须非常小心操作,以避免意外擦除数据。
在 Windows 和 Mac 上,最常用的工具有 iFunBox、iTools、iBackup Bot、iMazing、iExplorer 和 WonderShare Dr.Fone。这些工具需要安装更新版本的 iTunes,因为它们使用 iTunes 的库与设备进行通信。在将设备连接到计算机之前,应确保在 iTunes | 偏好设置 | 设备 中启用了 防止 iPods、iPhones 和 iPads 自动同步 选项,如下图所示:

案例研究 - 使用 iBackupBot 进行 AFC 获取
iBackupBot 是一款用于 Windows 的商业工具,可以访问连接的 iOS 设备,通过 AFC 协议直接提取数据并生成 iTunes 格式的备份。试用版允许从设备加载和提取信息。
下载、安装并运行软件后,只需连接设备以开始获取,等待相关信息加载。在以下截图中,您可以看到与运行 iOS 8.3 的 iPad 2 (GSM) 相关的示例,显示设备的主要特征(序列号、唯一标识符、蓝牙地址、Wi-Fi 地址等)以及备份加密配置状态(即是否启用)。

点击 用户应用程序 可以查看用户安装的所有应用程序列表,报告应用程序及其数据的大小,以及当前安装的版本:

应用文件共享选项提供了对应用程序数据的访问,这些数据是由开发者决定共享的。这个功能通常通过 iTunes 来允许设备和电脑之间的文件交换。所有从应用程序共享的文件都可以直接从设备中提取。这项功能通常用于需要创建和/或修改内容的应用程序(例如 Office 套件应用)或管理文件的应用程序(例如压缩应用)。
以下截图展示了 WinZip 应用程序中的一个示例。通过右键点击一个或多个文件,你可以将它们导出到电脑上的文件夹。请注意,这种访问方式是读写权限,图形界面还提供了一个新建文件夹按钮,允许在设备上创建内容。

原始文件系统选项允许你在通过 AFC 协议提供的设备文件系统部分内导航。如前所述,它主要包括媒体数据(DCIM 文件夹)、加载到 iBooks 应用中的书籍(Books 文件夹)、iTunes 库(iTunes_Control 文件夹)以及用户或应用程序下载的文件(Downloads 文件夹)。与之前的选项类似,文件和文件夹可以从设备提取到电脑。

最后,工具选项允许提取 系统日志 和 崩溃报告 文件夹中的文件。
系统日志可以导出为文本格式,包含设备活动的最新信息。如果在即时性情况下提取,它非常有用,通常也可以支持附加到采集报告中的信息,并至少部分证明在提取过程中对系统所做的不可避免的更改。

崩溃报告文件夹可以通过与前述选项相似的方式提取。通常,它包含设备过去 24-48 小时使用的信息,但信息的具体数量无法预先确定,因为它会受到多个参数的影响。正如在第六章《分析 iOS 设备》中详细描述的那样,分析 iOS 设备,这些日志可能包含无法通过其他方法提取的信息。

iTunes 备份
iTunes 备份 获取使分析员能够恢复比 AFC 获取更多的信息,并且以更为取证的方式进行,因为它为设备创建备份而不更改任何数据。关于密码条件,类似于直接获取:分析员必须知道密码或拥有有效的锁定证书才能执行此类获取。在连接设备之前,还需要在 iTunes 软件中禁用自动同步功能。此获取可以通过两种方式执行,使用 iTunes 或 使用取证软件。
使用 iTunes 进行数据获取
通过 iTunes 进行的获取可以通过设备的备份功能非常简单地完成。一旦启动 iTunes,需要点击设备的名称以访问详细信息。此时,需要检查设备与备份操作的配置情况。可能会有以下三种情况:
-
设备已配置为执行不受密码保护的本地备份
-
设备已配置为执行带有设备所有者先前设置的密码的本地备份
-
该设备已配置为备份到 iCloud
在前两种情况下,只需点击 立即备份 按钮即可在计算机上开始备份,如下图所示:

如果用户没有选择密码,则创建的备份可以使用各种工具进行分析。否则,分析员在开始分析之前需要破解备份密码。密码破解和备份结构将在第四章,来自 iTunes 备份的证据获取与分析中讨论。
在第三种情况下,在开始备份之前,分析员必须将选项从 iCloud 更改为 此计算机。这样,备份将在本地执行,并且不会覆盖 iCloud 上先前备份中的任何现有数据。来自 iCloud 的数据获取将在第五章,来自 iCloud 备份的证据获取与分析中解释。

使用取证工具进行数据获取
市场上有多种取证工具可以执行备份获取,例如 Cellebrite UFED 4PC/UFED Touch/UFED Physical Analyzer、Oxygen Forensic® Starter/Analyst/Detective、Mobile Phone Examiner、MobilEdit!、Lantern 和 XRY。
注意
有关详细的参考列表,请参阅附录 B,iOS 取证工具。
案例研究 - 使用 Oxygen Forensic Analyst 进行 iTunes 备份获取
Oxygen Forensic 软件是一个商业产品,允许取证分析员执行 iOS 设备的 iTunes 备份获取。它提供三种许可模式,Starter、Analyst 和 Detective。
要开始提取,必须点击主屏幕上的连接设备按钮,如下图所示:

软件将开始提取过程,您可以选择开始连接的方式。您可以选择自动设备连接或手动选择设备,如下图所示。对于 iDevice,通常选择第一个选项即可。

软件开始搜索连接的 iDevice。如果设备设置了密码,软件会要求分析员输入密码或提供锁定证书。软件提供 iDevice 的 UDID,这样分析员可以更容易地在之前与该设备同步过的计算机上搜索该设备。如果分析员知道密码,需将其输入设备,授权计算机,并点击我输入了密码,点击连接。否则,他/她可以选择选择锁定 plist选项并提供有效的锁定证书。

如果证书正确,软件会显示一个确认界面,提供一个按钮以开始连接设备,如下图所示:

此时,软件会显示与连接设备相关的信息(如型号、IMEI 号码、iOS 版本和引导加载程序),如下图所示:

调查员可以输入案件的相关信息,如果已知,可以输入设备的备份密码。

然后,分析员可以通过选择此方法支持的数据来选择他们希望提取的数据,如下图所示:

点击下一步按钮后,获取过程将开始并显示进度条。需要注意的是,在提取过程中,软件还会解析所有找到的数据,包括在手机中存储的数据库内搜索已删除记录(例如,通话记录、短信、聊天记录等)。因此,获取过程可能需要较长时间,但在此之后,分析员就可以在软件中解析数据,如下图所示:

如果设备之前设置了备份密码,Oxygen 可以与Passware Kit Forensic(如果安装在用来获取数据的计算机上)协同工作,尝试对备份密码进行攻击。如果检查员知道密码,他/她有机会完成攻击并手动输入密码。在破解过程结束时,如果密码被找到,软件将按照之前描述的方式提取所有数据。如果密码未找到,软件仅提取多媒体内容(如图片、视频、书籍等),并且不会提供有关预装或用户安装的应用程序的信息:

高级逻辑获取
高级逻辑获取方法最早是由 iOS 安全研究员 Jonathan Zdziarski 在 2013 年 6 月发布的工具Waterboard中引入的。作者在其文章中的描述如下:
"Waterboard 是一个开源的 iOS 取证成像工具,能够通过利用 Apple 内建的锁定服务中的扩展服务和后门,执行 iOS 设备的高级逻辑获取。这些服务可以绕过 Apple 的移动备份加密和其他加密,提供大部分文件系统的明文副本到任何能够或曾经与设备配对的机器。"
详细说明可参见Jonathan Zdziarski的论文《识别 iOS 设备中的后门、攻击点和监控机制》(Identifying Back Doors, Attack Points, and Surveillance Mechanisms in iOS Devices)(参见附录 A,参考文献)。目前,Waterboard 工具已不再由 Zdziarski 提供和支持,但仍有少数取证工具提供相同功能,如 UFED Physical Analyzer、Oxygen Forensics Toolkit 和 AccessData MPE。
从 iOS 8 开始,由于 Zdziarski 的发现,这种方法已不再可用。在尚未更新、仍运行 iOS 7 的设备上,这种方法仍然可用;但即便如此,设备必须解锁或有有效的锁定证书才行。
案例研究 - 使用 UFED Physical Analyzer 进行高级逻辑获取
UFED Physical Analyzer 是 Cellebrite UFED 的一个软件产品,并与 UFED Touch 或 UFED 4PC 的购买一起提供。UFED Physical Analyzer 中的高级逻辑获取可以通过软件主界面的提取菜单项下的iOS 设备提取启动,如下图所示:

分析师现在可以选择高级逻辑提取。

软件要求您使用正确的电缆(30 针连接器或 Lightning 8 针连接器)连接已开启的设备,如下所示:

设备必须处于开机状态并且解锁,否则,软件将显示一条消息,声明iOS 设备已锁定或不受信任。为了继续操作,分析员必须通过密码解锁设备或提供正确的锁定证书。

软件会检查备份设备是否设置了密码,并显示两种获取方法:方法 1对应于设备备份,而方法 2允许分析员使用 AFC 协议和锁定服务(高级逻辑获取)提取数据。如果设备已越狱,则会显示方法 3,以允许完整的文件系统转储。

如果设备有备份密码,并且使用方法 1,分析员必须知道密码或者破解密码(如第四章中所述,来自 iTunes 备份的证据获取与分析),而使用方法 2时,即使没有破解备份密码,也可以提取部分数据。因此,当需要获取带有备份密码的设备时,建议进行两种方式的获取。通过这种方式,您可以通过方法 2确保获取某些信息,并尝试通过破解方法 1进行的加密获取来恢复更多细节。
如果设备没有备份密码,则 Physical Analyzer 会提出使用已知密码加密备份的选项。因为某些文件(如钥匙串)在这种情况下是用选择的备份密码加密的,因此可以恢复更多信息(即用户存储的密码)。
一旦选择了提取方法,软件将启动程序,要求用户设置目标文件夹。扫描时间根据选择的方法不同而有所变化(方法 1在一步中完成,比需要三步的方法 2更快),还取决于设备的内存大小和文件占用空间(尤其是媒体文件,如图片、视频、音乐等)。
获取完成后,软件会显示一个报告,显示提取的数据量和所花费的时间,如以下截图所示。在此窗口中,分析员可以选择是否返回主屏幕,或者打开在 UFED Physical Analyzer 中进行的获取操作以进行分析活动。

使用取证工具进行物理获取
物理采集允许从 iOS 设备中提取大部分内容。与 AFC、备份和高级逻辑方法不同,分析员可以获取设备内部 NAND 存储的法医副本,并访问存储在那里所有的文件。通过物理采集唯一能够检索到的一些重要信息包括设备的电子邮件消息和日志文件。物理采集基于引导过程中的硬件漏洞。因此,这一操作不会对 iDevice 上存储的数据造成侵入性影响,因为它通过直接将替代操作系统上传到 RAM,从而可以启动采集命令。目前,支持的设备包括第一代 iPhone 3G/3GS/4,iPad 1,以及 iPod touch 1/2/3/4。
如果设备没有受到密码保护,可以通过创建系统和数据分区的镜像来顺利进行物理采集。
如果 iDevice 受密码保护,需要特别注意以下两种情况:
-
如果密码较简单(4 位数字),可以在 20 到 30 分钟内破解,具体时间取决于设备类型。
-
如果密码复杂(多位数字或字母数字组合),分析员有以下两种选择:
-
尝试对密码进行暴力破解或字典攻击。
-
在不破解密码的情况下执行物理采集。在这种情况下,物理采集将解码所有不依赖密码加密的数据,而其他数据(例如电子邮件、存储的密码等)则无法解密。
许多法医工具可以执行物理采集,例如 iPhone 数据保护工具、UFED Physical Analyzer、Elcomsoft iOS Forensic Toolkit、Lantern、AccessData MPE+、iXAM 和 XRY。
注意
欲了解更多关于物理采集的工具、书籍和论文的全面详细列表,请参考附录 A,参考文献,以及附录 B,iOS 法医工具。
案例研究 - 使用 UFED Physical Analyzer 进行物理采集
可以通过软件的主界面中的菜单项iOS 设备提取,在提取下启动 UFED Physical Analyzer 进行物理采集,操作步骤如下:

设备必须关闭,然后分析员可以将正确的电缆连接到计算机(但尚未连接到 iDevice)。

现在,调查员必须将设备连接到恢复模式。这意味着他们需要按住 Home 按钮并连接设备,操作方法如下图所示:

软件会显示与设备相关的信息(如iOS 版本、序列号、板卡、IBoot 固件版本、芯片 ID等),如以下截图所示:

现在,必须通过同时按住电源和主屏按钮,将设备设置为 DFU 模式,并在设备屏幕变黑后 3 秒钟释放电源按钮。

软件将启动加载程序到内存,并为分析员提供两种选项:物理提取和文件系统提取,如以下截图所示。第一个选项提取加密数据分区的物理镜像,提取的内容可以在 UFED Physical Analyzer 和其他分析工具中查看。UFED 还提供有关密码保护的信息。如果设备没有密码保护,可以立即开始获取并解密所有文件。

否则,取决于密码类型。如果设备设置了简单的密码(四位数字),可以通过选择密码恢复选项在 20 到 30 分钟内破解(具体时间取决于 iDevice 类型)。



在破解阶段结束时,软件会显示密码并提供开始获取的机会,如下所示:

如果设备有复杂密码,分析员有两个选择:要么在不破解密码的情况下获取物理镜像(这意味着某些数据无法获取,例如电子邮件和存储的密码),要么尝试使用字典攻击破解密码。



处理已锁定的 iDevice
如前所述,在各种获取方法的描述中,主要问题是用户设置的锁定密码。
对于 iPhone 4、iPad 1 和 iPod touch 4 及以下版本的设备,可以通过加载与原始 iOS 不同的操作系统来绕过锁定码。如果密码简单(四位数字),暴力破解时间最多为 30 分钟,随着密码复杂度的增加,破解时间会增加几个数量级(数月或数年)。无论如何,对于这些类型的设备,数据加密仅限于某些文件类型(主要是电子邮件和第三方应用数据),而对于系统数据,加密与密码无关:因此,物理获取可以访问这些数据。
对于更新的设备,也就是所有兼容 iOS 9 的设备,提供了三种技术来破解或绕过密码锁:
-
使用有效的锁定证书
-
使用一款工具,通过 USB 端口而不是触摸屏提交密码到设备
-
寻求开发了专有技术并能暴力破解密码的公司提供支持
第一种技术适用于所有版本的 iOS,包括 iOS 9。在这种情况下,需要满足两个条件:设备即使被锁定,也必须处于开机状态并保持此状态,而且该设备必须在过去 48 小时内至少解锁过一次。因此,可以看出,这种方法应当在设备被查获或发现后立即使用,立刻寻找可能拥有有效证书的计算机,并尽可能快速地进行数据获取。使用有效证书可以对所有设备进行数据获取,包括 iOS 9 版本的设备,支持通过 AFC 协议和备份获取数据。对于 iOS 7 设备,它还允许进行高级逻辑数据获取。
第二种方法可以用于所有设备,但仅限于 iOS 8.1 及以下版本。市面上已有多款硬件设备,基本上都是基于通过 USB 提交密码而非通过触摸屏的原理。最著名且最常用的取证软件是 Cellebrite 的 UFED 用户锁定代码恢复工具,随 UFED 4PC 和 UFED Touch 软件许可提供。它支持 iOS 7 版本。其他一些虽然不是专门为取证设计,但在社区中广泛使用的设备有 IP-BOX、MFC dongle、SecureView 的 svStrike 和 HDB Box。
这些设备,通过额外的适配器,也可以用于 iOS 8.1 及以下版本的操作系统。值得注意的是,这些工具都无法克服用户可能启用的安全擦除功能,该功能会在输入密码错误 10 次后激活:即使通过 USB 端口将密码提交到手机,这个限制也会依然存在。因此,只有在确定设备没有激活擦除功能的情况下,才能应用这些技术。

替代方案是从一些专业公司获得支持,这些公司已经开发出专有技术来恢复尚未在市场上的软件和硬件中实现的密码。撰写本书这一版时,唯一提供此服务的公司是 Cellebrite,通过Cellebrite 高级调查服务(CAIS)中心。如公司网站所报道的 (www.cellebrite.com/Pages/cellebrite-unlocking-services-now-available-for-apple-ios-9-and-samsung-galaxy-s6-and-s7-devices),该服务适用于所有配备 32 位处理器的设备(即 iPhone 4s/5/5c,iPad 2/3G/4G,iPad mini 1G,iPod touch 5G),并且支持任何版本的 iOS 8 操作系统(即 8 - 8.0/8.0.1/8.0.2/8.1/8.1.1/8.1.2/8.1.3/8.2/8.3/8.4/8.4.1)或 iOS 9 操作系统(即 9.0/9.0.1/9.0.2/9.1/9.2/9.2.1/9.3/9.3.1/9.3.2)。该公司确保设备不会遭受物理侵入(即无需任何硬件干预),且在 10 次错误尝试后不会激活擦除功能。
注意
来自一个真实案例
在 2016 年初,本书的作者之一被米兰法院任命为专家证人,参与对亚历山大·博特彻(Alexander Boettcher)的刑事诉讼,该案指控博特彻与女友马尔蒂娜·莱瓦托(Martina Levato)一起,实施了四起针对其前男友的酸性攻击。当时,这对情侣于 2014 年 12 月被逮捕,博特彻的 iPhone 5(运行 iOS 8.0)被扣押,设备锁定了一个四位数字的密码,他表示自己不记得密码了。当时,没有已知的技术可以绕过密码而不激活苹果的保护系统(例如,10 次错误输入后擦除加密密钥),因此检察官和司法警察决定分析其他设备,发现嫌疑人计算机上有一份 2014 年 9 月的备份。在 2016 年 1 月的听证会上,法官们认为评估新的数据访问方式是有用的。随后,他们委托其中一位作者提供技术咨询,以评估在这方面的新方法。于是,顾问决定联系 Cellebrite 公司提供的 CAIS 服务,并于 2016 年 2 月将手机送到该公司位于德国慕尼黑的欧盟总部,经过两天的工作,成功破解了密码,这样通过备份模式和 AFC 协议就可以获取设备数据。由于案件的知名度,此消息引起了意大利国家媒体和国际媒体的关注,尤其是在与苹果与 FBI 案件的时间接近的背景下(例如,参见Apple-FBI 案件:这就是如何解锁米兰酸攻击案件中的 iPhone - www.lastampa.it/2016/03/01/tecnologia/news/come-stato-sbloccato-liphone-nel-caso-delle-aggressioni-con-lacido-a-milano-3hmkkOwVQsiCFtkjjJbt5O/pagina.html,以及可能仅需 1500 美元就能进入恐怖分子 iPhone:www.forbes.com/sites/thomasbrewster/2016/03/23/cellebrite-apple-iphone-fbi-syed-farook-alexander-boettcher/)。
除了这些技术方法外,实践中还使用了其他方法来绕过锁屏密码。最著名的方法包括利用操作系统特定版本的漏洞,允许访问设备屏幕(通常与 Siri 应用程序有关),或强制生成备份到 iCloud,并将设备带入已知的 Wi-Fi 网络附近。
iOS 设备越狱
iOS 越狱是通过利用软件和硬件漏洞去除 iOS 设备限制的过程。它使得可以访问 iOS 文件系统的 root 权限,并允许下载 Apple 官方 App Store 中不可用的额外应用程序。已经开发了各种越狱工具;一个始终更新的工具列表可以在 theiphonewiki.com/wiki/Jailbreak 找到。目前,最新可用的工具有 Evasi0n (evasi0n.com/) 用于 iOS 7,Taig (www.taig.com/en/) 用于 iOS 8,以及 Pangu (en.pangu.io/) 用于 iOS 7、8 和 9。
越狱是对设备系统分区的侵入性操作,因此不能视为取证操作。然而,值得注意的是,对于 iPhone 4 之后的设备,它是进行物理采集的唯一方式。因此,设备必须已经越狱,或者调查员能够越狱设备。对于较新的设备,越狱设备需要分析人员知道密码,因为这需要直接在解锁的设备上执行操作。
案例研究 - 使用 Elcomsoft iOS Forensic Toolkit 进行物理采集
在写作时,Pangu 越狱支持到 iOS 9.3.3,Elcomsoft iOS Forensic Toolkit(EIFT)软件是唯一支持对越狱设备进行物理采集的商业工具。它目前支持 32 位和 64 位设备,但在 32 位设备上,它可以提取物理镜像,而在 64 位设备上,它可以恢复设备的完整文件系统转储。值得提到的是,虽然物理镜像与文件系统镜像不同,但在目前的技术水平下,从可用内容的角度来看,设备的文件系统镜像和物理镜像实际上没有区别,因为物理镜像中的未分配空间是加密的,目前还没有已知的技术可以从未分配空间中恢复并解密。因此,你实际上是在获取文件系统镜像的内容,因为你无法读取未分配区域。此外,Cellebrite 和 MPE+ 都支持获取越狱设备的完整文件系统转储。
如果被扣押的设备已经越狱且用户没有更改 root 密码(请参阅 第一章,数字与移动取证,默认的 root 密码是 alpine),也可以尝试破解密码。
该商业工具可在 Windows 或 Mac 上使用。以下屏幕截图展示了使用 EIFT 2.0 版本在一台越狱的第一代 iPad mini 上进行物理采集的过程,该设备有密码且运行 iOS 9.0.2。

向导非常简单,基本上包括以下步骤:
-
获取密码(选项
3) -
提取加密密钥(选项
4) -
系统分区(明文)和数据分区(加密)的物理获取(选项
6) -
使用提取的密钥解密数据分区(选项
7)
第一步在设备上加载一个工具来破解密码,然后,在这种情况下,使用一个简单的密码开始破解活动。最后,它会在屏幕上打印出密码,并将其保存在.txt文件中。

第二步从设备中提取加密密钥;这些密钥是解密物理获取所必需的。它将解密密钥保存在plist文件中(默认名称为keys.plist),并在屏幕上打印备份密码(如果存在)以及设备的 AppleID。

第三步创建系统和数据分区的法医镜像。第一个分区没有加密,而第二个分区是加密的。此步骤输出两个 DD 文件;第二个文件需要解密。

第四步将加密的数据分区和keys.plist文件作为输入,输出未加密的 DD 镜像版本。这个镜像可以导入并在各种工具中进行分析,既可以是专门用于移动设备的工具(例如,UFED Physical Analyzer、Oxygen Forensic 和 Internet Evidence Finder),也可以是传统的法医工具包(例如,Encase、FTK 和 X-Ways)。

苹果公司对执法机构的支持
苹果公司定期在其网站上发布一份名为美国执法机构法律流程指南的文件。这些指南包含如何请求苹果公司支持从 iCloud 或 iDevice 恢复信息的相关信息,并指定在某些情况下,苹果公司可以从受密码保护的设备中提取的数据。苹果公司最新版本的文档(www.apple.com/privacy/docs/legal-process-guidelines-us.pdf)指出:
“对于所有运行 iOS 8.0 及以上版本的设备,Apple 将不会进行 iOS 数据提取,因为数据提取工具已不再有效。待提取的文件受到加密密钥的保护,该密钥与用户的密码相关联,而 Apple 并不拥有该密码。对于运行 iOS 8.0 之前版本的 iOS 设备,在收到有效的搜查令并且显示出合理的理由后,Apple 可以从密码锁定的 iOS 设备中提取某些类别的活动数据。具体来说,iOS 设备中由用户生成并存储在 Apple 原生应用中的活动文件,这些文件的数据未通过密码加密(“用户生成的活动文件”),可以被提取并通过外部媒体提供给执法部门。Apple 可以在运行 iOS 4 至 iOS 7 版本的 iOS 设备上执行此数据提取过程。请注意,依据有效的搜查令,Apple 只能提供以下类别的用户生成的活动文件:SMS、iMessage、MMS、照片、视频、联系人、音频录音和通话记录。Apple 无法提供:电子邮件、日历条目或任何第三方应用数据。”
这种方法被南非警方使用,他们向 Apple 请求帮助,以便访问存储在奥斯卡·皮斯托瑞乌斯(Oscar Pistorius)iPhone 上的数据。
Apple 与 FBI 的对决 - 圣伯纳迪诺枪击案
2015 年 12 月,在圣伯纳迪诺恐怖袭击事件中,14 名无辜的生命丧生。枪手在袭击前被警方击毙,他们设法摧毁了除一部设备外的所有设备,那部设备是赛义德·里兹万·法鲁克(Syed Rizwan Farook)的工作手机。
法鲁克的手机是 iPhone 5s,运行 iOS 8,并且有一个四位数的 PIN 码保护,且在被发现时处于关闭状态(尽管在这一点上有一些混淆,因为在最初阶段该设备似乎是开机的)。正如你在本章中所学到的,在这种情况下,目前没有已知的技术能够绕过并解锁该设备。FBI 唯一的机会就是在设备因连续 10 次密码错误后自动擦除之前,尝试在前 9 次尝试内猜测或暴力破解正确的 PIN 码。因此,在 2016 年 2 月,FBI 向 Apple 提出了一个强制命令(assets.documentcloud.org/documents/2714005/SB-Shooter-Order-Compelling-Apple-Asst-iPhone.pdf),请求提供帮助以完成以下任务:
-
它将绕过或禁用自动擦除功能,无论该功能是否已启用。
-
它将使 FBI 能够通过物理设备端口、蓝牙、Wi-Fi 或其他可用协议,将密码提交给受试设备进行电子测试。
-
它将确保在 FBI 提交密码到受试设备时,设备上运行的软件不会故意引入任何额外的延迟,超出 Apple 硬件所产生的延迟。
此外,法院命令中还明确指出,苹果的协助可能包括为 FBI 提供软件,该软件将由苹果使用唯一的手机标识符进行编码,以便该软件仅在目标设备上加载和执行。所有这些意味着,FBI 要求苹果为 iOS 设备开发后门。
苹果拒绝遵守这一命令,并在其首席执行官蒂姆·库克的公开信中声明 (www.apple.com/customer-letter/),称:
“美国政府要求苹果采取前所未有的措施,这一措施威胁到我们客户的安全。我们反对这一命令,它的影响远超当前的法律案件。这一时刻需要公开讨论,我们希望我们的客户以及全国人民能理解所面临的风险。”
3 月 28 日,FBI 宣布在第三方的帮助下成功解锁了嫌疑人的 iPhone,但未透露更多关于谁以及如何解锁的细节。巧合的是,就在同一天,FBI 向 Cellebrite 公司发出了218,004.85 美元的订单 (www.fpds.gov/ezsearch/fpdsportal?q=cellebrite+CONTRACTING_AGENCY_NAME%3A%22FEDERAL+BUREAU+OF+INVESTIGATION%22+PIID%3A%22DJF161200G0004569%22&s=FPDSNG.COM&templateName=1.4.4&indexName=awardfull&x=0&y=0&sortBy=SIGNED_DATE&desc=Y),这引发了关于能够解锁 iPhone 的第三方身份的猜测。然而,在 4 月 7 日,FBI 局长詹姆斯·科米表示,该工具的费用超过了 130 万美元,《华盛顿邮报》从一个匿名消息源获悉,FBI 支付了专业黑客费用,这些黑客利用零日漏洞绕过了 10 次 PIN 码输入限制,使 FBI 能够暴力破解四位数的 PIN 码,而无需担心清除设备数据的风险 (www.washingtonpost.com/world/national-security/fbi-paid-professional-hackers-one-time-fee-to-crack-san-bernardino-iphone/2016/04/12/5397814a-00de-11e6-9d36-33d198ea26c5_story.html)。
除去法律和伦理方面的问题,仍然有一些值得考虑的因素。首先,技术上讲,显然苹果是能够遵守法院命令的,但正如解决方案的最后一点所证明的那样,还有其他方法可以达到同样的结果。另一个值得注意的点是,FBI 能够提出这种请求的唯一原因是因为用户选择了一个简单的四位数字密码。如果他选择了一个复杂的密码,甚至没有 10 次尝试限制,由于苹果使用的密码衍生函数(PBKDF2),暴力破解也是不可行的。在这个函数中,加密程序会实施 80 毫秒的延迟来计算密钥,这样即便是破解一个六位数字母数字密码,也需要六年的时间,显而易见,破解更长密码的时间将是成倍增加的。
最后但同样重要的是,从取证角度来看,FBI 犯了一个大错。iPhone 恢复后,FBI 让圣贝纳迪诺县(手机的合法所有者)重置了 iCloud 密码。如果 iPhone 真的是关机找到的,这并不会造成影响,因为在连接 Wi-Fi 网络之前,至少需要输入一次有效的访问代码来启动设备。然而,如果手机是开机状态被发现的(从矛盾的陈述和证词来看可能是这种情况),重置密码会导致 iCloud 的自动备份无法进行,因为手机上的 iCloud 密码仍然是旧的(此时已经无效)。
最后,这无疑是一起因不同原因而备受争议的案例,但仍然是一个有趣的案例研究,值得学习。
iOS 获取 - 选择最佳方法
如你从本章中可能已经理解的那样,能够选择正确的技术来获取 iOS 设备并非易事,它取决于许多不同的参数。在本节中,我们尝试列出每个不同设备系列的最佳获取方法,这些方法依赖于操作系统的不同版本以及是否设置了密码。
iPhone 3G/3GS/4、iPad 1
对于这些设备,始终建议使用支持物理获取的法医软件进行获取。如果设置了简单的密码(四位数字),通常可以在短时间内破解,从而获得设备内部存储器的法医镜像(包括数据和系统分区)。如果设置了复杂密码,虽然可以进行物理获取,但其中的并非所有文件都会被解密。
iPhone 4s、5、5c、iPad 2/3/4、iPad Mini 1
对于这些设备,我们必须根据是否设置了密码以及操作系统版本来区分。
对于没有密码的设备,始终可以通过 AFC 协议进行获取(根据操作系统版本的不同结果有所不同,但始终可以提取 Crash Logs),并且可以通过 iTunes 备份获取数据。
注释
用户可能为备份设置了密码,该密码可以离线破解,详细说明请参考第四章,从 iTunes 备份获取证据与分析。
对于 iOS 7 设备,也可以通过高级逻辑进行数据获取。
对于受密码保护的设备,我们有多种技术可以根据操作系统版本来选择。直到 iOS 7,您可以执行以下操作:使用锁定证书直接进行数据获取(通过 AFC、高级逻辑或备份),使用 Apple 服务支持执法部门,使用 Cellebrite 提供的 CAIS 服务,使用硬件工具解锁设备(例如 IP-BOX)或检测 iCloud 备份的存在(详细信息请参考第五章,从 iCloud 获取证据与分析)。从 iOS 8 开始,不再可以从 Apple 获得支持,但在某些限制下,仍然可以使用锁定证书(仅限于备份和 AFC 获取,并且前提是设备在过去 48 小时内至少有一次处于开机并解锁状态)和硬件设备解锁(最多支持到 iOS 8.1)。Cellebrite 的 CAIS 服务和 iCloud 备份仍然是可行的选项。
iPhone 5s、6、6Plus、6s、6s Plus、iPad Air 1/2、iPad Mini 2/3/4、iPad Pro
与前一部分类似,解锁的设备始终可以通过 AFC 协议和 iTunes 备份进行获取。对于 iPhone 5s、iPad Air 和 iPad Mini 2 等运行 iOS 7 的设备,也可以通过高级逻辑进行获取。
在设备锁定的情况下,我们必须根据设备和操作系统版本进行区分。
对于 iPhone 5s、iPad Air 和 iPad Mini 2 等运行 iOS 7 的设备,可以使用锁定证书、请求 Apple 支持或使用解锁硬件设备。
对于所有 iOS 8 或 9 版本的设备,唯一可行的方式是使用有效的锁定证书或获取 iCloud 备份。
Apple TV
从 Apple TV 设备获取数据尤其复杂,因为没有可用的本地备份程序。作者在 Apple TV 3 版上进行的测试表明,AFC 协议在设备上是激活的。由于设备无法设置密码保护,因此这种方法始终适用。
以下截图展示了使用 iTools 软件从 Apple TV 3 版提取的基本信息:

实时日志让我们能够识别设备最近的活动(即最近几天的活动、Wi-Fi 连接等)。

使用 iTools,还可以提取崩溃日志,这有助于重建设备使用的时间线。

最后,还可以提取文件系统中的一部分,包含例如 iTunes 库,您可以从中找到使用的账户信息和已购买的内容。

Apple Watch
Apple Watch 数据的获取仍然是一个相对较少探索和测试的领域。特别值得关注的是 Sarah Edwards 和 Heather Mahalik 于 2015 年发表的演讲 Times a' Ticking... to Forensicate the Apple Watch。该演讲展示了分析与 Apple Watch 同步的 iPhone 备份设备的测试结果,并识别了不同的关键信息(如设备信息、已安装的应用、通讯录、电子邮件、语音邮件、钱包等)。
总结
本章介绍了四种最常用的 iDevice 数据获取方法——AFC、iTunes 备份、先进的逻辑获取和物理获取。备份获取可以在任何设备上执行,但设备需要解锁,分析员需要知道密码,或者分析员必须拥有从以前与设备同步过的计算机提取的有效锁定证书。如果用户为备份设置了密码,生成的获取结果会被加密,因此分析员需要尝试破解备份密码(这一话题将在第四章 从 iTunes 备份获取证据和分析 中详细讲解)。如果设备被锁定且分析员不知道密码,或者分析员没有有效的锁定证书,则可以使用其他方法,如请求苹果支持(最多支持到 iOS 7)、使用硬件解锁工具(最多支持到 iOS 8.1)、使用第三方服务(最多支持到 iOS 9.3.2,且仅限于 32 位设备),或在 iCloud 中查找备份。
先进的逻辑获取可以在与备份获取相同的条件下执行,但它可以绕过备份密码所施加的限制,并提取明文内容,无需破解备份密码。从 iOS 8.0 开始,苹果停止了这种方法的使用。
物理获取取决于设备和安装的操作系统,如下所示:
-
iPhone 2G/3G/3GS 和 iPod touch 1/2 在运行 iOS 3 时不实现加密,因此始终可以进行物理获取,并且锁屏密码可以瞬间破解。生成的镜像没有加密。因此,可以恢复已删除的记录。
-
在 iPhone 3GS/4、iPad 1 和 iPod touch 3/4 上,使用 iOS 4/5/6/7 系统时,始终可以执行物理获取。如果锁屏密码是四位数字的,可以在不到 20 分钟内破解。因此,所有文件都可以恢复。如果使用了复杂的密码,分析员可以尝试通过暴力破解或字典攻击来破解它。如果无法破解密码,仍然可以执行物理获取,并解码文件系统(使用提取的文件系统密钥)以及所有加密不依赖于密码的文件。
-
在 iPhone 4s/5/5c、iPad2/3/4、iPad mini 1 和 iPod touch 5 上,只有设备已经越狱或可以越狱时才能进行物理获取(这意味着分析员必须知道密码)。
-
在 iPhone 5s/6/6 Plus/6s/6s Plus、iPad Air 1/2、iPad mini 2/3/4 和 iPad Pro 上,虽然目前有相关研究,但尚无法执行物理获取。如果设备已越狱,则可以提取完整的文件系统转储。
在第四章中,来自 iTunes 备份的证据获取与分析,我们将学习如何获取和分析 iTunes 备份中的取证证据。
自测题
Q1. iOS 设备在升级操作系统时所处的模式叫什么?
-
正常
-
恢复
-
设备固件升级
-
更新
Q2. 在 Windows 7/8 上,锁定证书存储在哪里?
-
C:\Program Data\Apple\Lockdown -
C:\Users\[username]\AppData\Roaming\Apple Computer\Lockdown -
C:\Users\[username]\AppData\Local\Apple Computer\Lockdown -
C:\Windows\Apple Computer\Lockdown
Q3. 以下哪种工具可以用来对越狱的 iPhone 4s 执行物理获取?
-
iOS 取证工具包
-
Oxygen Forensics Suite
-
Cellebrite UFED Touch
-
手机检查员
Q4. 什么是即使没有越狱也可以物理获取的最新 iPhone 型号?
-
iPhone 3GS
-
iPhone 4
-
iPhone 5
-
iPhone 6
Q5. iOS 设备的设备标识符叫什么?
-
ECID
-
UDID
-
序列号
-
MAC 地址
第四章:来自 iTunes 备份的证据获取与分析
本章的目标是向您介绍不同类型的本地备份(加密或未加密)、备份的结构、从中提取有意义数据的技术和软件,并展示如何在提取备份中的密码时破解加密备份。这些概念非常有用,因为有时分析人员可能没有 iOS 设备或无法访问它,但可能可以访问包含 iTunes 备份的计算机。
iTunes 备份
苹果的 iTunes 软件允许用户创建两种不同类型的本地备份(即存储在本地计算机上)——加密和未加密。未加密的备份完全可以访问,而加密的备份则通过设备所有者选择的密码保护。用户第一次设置备份密码时,它会被保存在 iDevice 内,随后的每次备份都会使用相同的密码进行加密(直到用户决定更改或移除密码)。因此,如果在进行取证采集时密码已设置,我们将得到一个加密的备份(参见第三章,来自 iDevices 的证据获取,了解用于获取设置了备份密码的设备的不同技术)。
iTunes 备份文件夹
备份数据存储的文件夹取决于计算机的操作系统。iTunes 会将备份文件保存在以下文件夹中:
-
Mac:
~/Library/Application Support/MobileSync/Backup/ -
Windows XP:
\Documents and Settings\(用户名)\Application Data\Apple Computer\MobileSync\Backup\ -
Windows Vista, Windows 7, Windows 8, 和 Windows 10:
\Users\(用户名)\AppData\Roaming\Apple Computer\MobileSync\Backup\
在这些文件夹内,每个已备份的 iDevice 都会有一个子文件夹。子文件夹的名称相当于设备的 UDID,它是一个 40 个字符长的十六进制字符串。这意味着 iTunes 为每个设备仅保留一个备份,并且仅复制自上次备份以来被修改过的文件。当设备更新到新的操作系统版本并恢复时,更新之前创建的最后一个备份不会在第一次创建新备份时被覆盖。特别地,旧备份文件夹会被重命名,在文件夹名的末尾附加备份的时间戳。
iTunes 备份内容
根据苹果的规格说明(参见support.apple.com/kb/ht4946,如附录 A,参考文献所述),iTunes 备份包括设备几乎所有的数据和设置,但不包含以下内容:
-
来自 iTunes 和 App Store 的内容,或直接下载到 iBooks 的 PDF 文件
-
从 iTunes 同步的内容,如导入的 MP3 文件、视频、书籍和照片
-
已经存储在云端的照片,例如我的照片流和 iCloud 照片库
-
Touch ID 设置
-
Apple Pay 信息和设置
-
活动、健康、网站和钥匙串数据(尽管这些元素在加密备份中也可用)
未加密备份和加密备份之间的主要区别之一与钥匙串文件有关。在未加密备份中,该文件被使用设备的 UID 生成的密钥加密,因此无法离线破解或在不同于生成备份的设备上重新激活。而在加密备份中,钥匙串文件是用备份密码加密的。技术上可以这样解释:
-
如果设备没有由用户设置备份密码,在执行获取操作时,可以选择一个已知密码创建加密备份,之后可以访问存储在钥匙串中的密码,无需破解任何内容
-
如果设备由用户设置了备份密码,在执行获取操作时,可以创建加密备份,然后尝试破解密码以提取存储在钥匙串中的数据
特别地,钥匙串文件包含以下类型的密码:
-
设备已连接的 Wi-Fi 网络的密码和设置
-
在 Apple Mail 中配置的电子邮件账户的密码
-
VPN 凭证
-
所有使用钥匙串作为密码容器的第三方应用程序的凭证(密码或令牌)
iTunes 备份结构
在备份文件夹中,有一些标准文件,它们的名称和内容是固定的,并且有数百个文件,文件名由 40 个十六进制字符组成的长哈希值。文件名像一个唯一标识符,标识每个从 iDevice 复制的文件。事实上,每个文件的命名是对原始完整文件名计算 SHA-1 哈希后的结果,格式如下:
域-[子域-]完整路径/文件名.ext
考虑以下示例:
AppDomain-com.skype.skype-Library/Preferences/com.skype.skype.plist
在这里,AppDomain是域名,Com.skype.skype是子域名,Library/Preferences/com.skype.skype.plist是路径和文件名。
对AppDomain-com.skype.skype-Library/Preferences/com.skype.skype.plist计算 SHA-1 哈希得到bc0e135b1c68521fa4710e3edadd6e74364fc50a。
实际上,这就是我们在此上下文中提到的 40 个字符长的字符串。
域和子域中命名的元素的含义将在本章后面解释。
标准备份文件
这些文件由备份服务创建,并存储有关备份本身的信息。最有用的文件如下:
-
Info.plist: 这是一个纯文本格式的plist文件,存储有关备份设备的数据(如备份创建日期、电话号码、设备名称、GUID、ICCID、IMEI、产品类型、iOS 版本、序列号、同步设置、UDID 等)以及用于创建备份的 iTunes 软件(iTunes 版本号和 iTunes 设置):![标准备份文件]()
-
Manifest.plist: 这是一个plist文件,它描述了备份的内容。该文件中列出了备份设备上安装的所有应用程序。每个应用程序都有其名称和特定版本。文件中还包括备份创建日期、备份类型(加密与否)以及有关 iDevice 的一些信息(例如,在备份时设备是否设置了密码)和所用的 iTunes 软件:![标准备份文件]()
-
Status.plist: 这是一个二进制格式的plist文件,它存储了备份完成状态的信息,指示备份是否成功:![标准备份文件]()
-
Manifest.mbdb: 这是一个二进制文件,存储备份文件夹中所有其他文件的描述。它为备份中的每个元素(包括符号链接和文件夹,虽然文件夹在备份文件中没有相应的元素)存储一个记录。每个记录包含以下参数:-
域: 这显示了元素所属的域。域是设备备份中用来功能性分类元素的一种方式。
-
路径: 这显示了元素的完整路径。
-
链接目标: 这显示了元素的目标,如果该元素本身是符号链接。
-
数据哈希: 这包含了文件内容的 SHA-1 哈希值。
-
用户 ID 和组 ID: 这些包含了所有者和组的 ID。
-
m. 时间: 这显示了文件实际内容最后修改的时间(Unix 时间格式)。
-
a. 时间: 这显示文件最后访问的时间。
-
c. 时间: 这显示的是文件或文件夹节点最后修改的时间。
-
大小: 这显示文件的大小,以字节为单位(对于链接或文件夹,大小为 0)。
-
模式和 inode: 这些包含了 Unix 文件权限和 inode 号。从取证角度看,一个非常有趣的点是,即使备份是使用密码加密的,这四个文件也以未加密的形式存储。这意味着其中包含的信息在不破解密码的情况下也能访问。
-
关于加密备份分析的详细解释,我们建议您阅读 Hal Pomeranz 的研究(参见附录 A, 参考文献)。前面的参数在下图中有详细说明:

备份文件的层级结构的第一层是它们的域。每个文件的域名记录在其对应的Manifest.mbdb文件中的记录中。每个文件都有一个域名,从以下列表中选择:
-
应用域:此域包含与已安装应用相关的数据。
-
应用组域:此域从 iOS 9 开始出现,包含第三方应用的特定数据。
-
应用插件域:此域从 iOS 9 开始出现,包含第三方应用的插件。
-
相机胶卷域:此域包含与相机应用相关的多媒体元素,如图片、视频、视频预览和图片缩略图。
-
健康域:此域从 iOS 9 开始出现,包含个人健康数据。此域仅在加密备份中可用。
-
主屏域:此域包含与 iOS 预装的标准应用相关的数据。
-
钥匙串域:此域包含与钥匙串相关的加密数据。
-
管理偏好设置域:此域通常不包含数据。
-
媒体域:此域包含与相机应用无关的多媒体元素,如多媒体信息和音频录音。
-
移动设备域:此域包含配置文件。
-
根域:此域包含与设备的地理位置功能相关的缓存数据。
-
系统偏好设置域:此域包含 iOS 核心组件的配置文件。
-
无线域:此域包含设备的移动电话组件数据。
应用域中的元素进一步按它们所属的应用划分为子域,而其他域中的元素则不使用此功能。当使用子域时,域字符串写作<domain>-<subdomain>。关于备份结构的详细信息可以参考theiphonewiki.com/wiki/ITunes_Backup。
案例研究 - 使用 Mbdbls Python 脚本解析 Manifest.mbdb
Mbdbls 是由 Hal Pomeranz 编写的开源 Python 脚本,可以在他的 GitHub 账户上找到(参考附录 B,iOS 取证工具)。它解析Manifest.mbdb文件,对于每个文件,它提取域、路径和文件名、创建日期、最后访问日期、最后修改日期和大小。以下截图显示了在 SANS SIFT 工作站虚拟机上执行 Mbdbls 解析Manifest.mbdb文件:

该工具提供多种输出选项:例如,它可以按创建日期、最后修改日期或最后访问日期,或按文件大小排序。请注意考虑适当的时区设置。
iTunes 备份相关文件
本节提供了备份中最相关的文件和文件夹的完整概述。对于每个文件或文件夹,提供了完整路径(domain-subdomain)和描述。仅列出了系统和预装的应用程序。这些文件的更详细分析请参见第六章,分析 iOS 设备:
-
域:
SystemPreferencesDomain/SystemConfiguration/ -
文件名:
com.apple.accounts.exists.plist -
描述: 设备中配置的帐户信息,并按类型进行分组(例如,Apple、Google、Facebook、电子邮件等)。

-
域:
HomeDomain/Library/Accounts/ -
文件名:
Account3.sqlite -
描述: 设备中配置的帐户详细信息(例如,用户名和存储凭据类型,如密码、OAuth 等)。

-
域:
DatabaseDomain/lsd/ -
文件名:
com.apple.lsdidentifiers.plist -
描述: 启动服务守护进程标识符信息,以及应用程序名称与 GUID 之间的关联。

-
域:
HealthDomain/Health -
文件名:
healthdb.sqlite -
描述: 从
healthdb_secure.sqlite访问/更新用户健康信息的设备和应用程序的列表,以及事件的相关时间戳。 -
域:
RootDomain/Library/Preferences -
文件名:
com.apple.preferences.network.plist -
描述: 备份时飞行模式的启用或禁用状态。

-
域:
RootDomain/Library/Preferences -
文件名:
com.apple.MobileBackup.plist -
描述: 关于最后一次设备重置的信息。特别地,它包含了恢复时设备上安装的 iOS 版本、备份版本、恢复日期,以及备份是否来自 iCloud。

-
域:
RootDomain/Library/Preferences -
文件名:
GlobalPreferences -
描述: 语言设置。

-
域:
SystemPreferencesDomain/SystemConfiguration/ -
文件名:
com.apple.wifi.plist - preferences.plist -
描述: 设备中配置的 Wi-Fi 网络信息。

-
域:
SystemPreferencesDomain/SystemConfiguration/ -
文件名:
com.apple.network.identification.plist -
描述: 最新连接的 TCP/IP 设置(包括 Wi-Fi 和蜂窝网络)。

-
域:
SystemPreferencesDomain/SystemConfiguration/ -
文件名:
com.apple.radios.plist -
描述: 备份时飞行模式的启用或禁用状态。

-
域:
SystemPreferencesDomain/SystemConfiguration/ -
文件名:
com.apple.mobilegestalt.plist -
描述: 设备名称。

-
域:
WirelessDomain/Library/Preferences/ -
文件名:
com.apple.commcenter.plist -
描述:正在使用的电信提供商及 SIM 卡信息。

-
域:
WirelessDomain/Library/Preferences/ -
文件名:
com.apple.commcenter.counts.plist -
描述:关于数据和蜂窝网络使用情况的统计信息(例如,接收/发送的字节数,接收/发送的短信数等)。

-
域:
WirelessDomain/Library/Preferences/ -
文件名:
com.apple.commcenter.callservices.plist -
描述:iCloud 账户的电子邮件地址。

-
域:
WirelessDomain/Library/Preferences/ -
文件名:
csidata -
描述:设备的蜂窝网络设置(例如,启用/禁用蜂窝数据)。
-
域:
HomeDomain/Library/MobileBluetooth/ -
文件名:
com.apple.MobileBluetooth.ledevices.plist -
描述:关于 iOS 设备所看到的蓝牙设备的信息。
-
域:
HomeDomain/Library/TCC -
文件名:
TCC.db -
描述:分配给应用程序的访问权限(例如,地址簿、照片、Facebook、麦克风、相机等)。
-
域:
HomeDomain/Library/SpringBoard -
文件名:
IconState.plist -
描述:SpringBoard 中图标的排列方式,按窗口划分。
-
域:
HomeDomain/Library/AddressBook/ -
文件名:
AddressBook.sqlitedb -
描述:用户个人联系信息,例如姓名、电话号码、电子邮件地址等。
-
域:
HomeDomain/Library/AddressBook/ -
文件名:
AddressBookImage.sqlitedb -
描述:与地址簿中联系人相关的图片。
-
域:
HomeDomain/Library/Calendar/ -
文件名:
Calendar.sqlitedb -
描述:所有用户的日历及相关事件。
-
域:
HomeDomain/Library/CallHistoryDB/ -
文件名:
CallHistory.storedata -
描述:通过蜂窝网络进行的外呼、来电和未接来电列表,以及 FaceTime 通话。
-
域:
WirelessDomain/Library/CallHistory/ -
文件名:
Call_history.db -
描述:在 iOS 7 之前,作为通话历史数据库使用的文件。如果手机已经升级或恢复,你可以找到旧通话的信息。
-
域:
HomeDomain/Library/Voicemail/ -
文件名:
Voicemail.db -
描述:语音邮件数据库。
-
域:
HomeDomain/Library/SMS/ -
文件名:
sms.db -
描述:发送和接收的短信和 iMessages,包括接收、阅读和投递的日期(对于 iMessage),文本内容以及类型(发送/接收)。
-
域:
HomeDomain/Library/SMS/ -
文件夹名称:
Drafts -
描述:SMS 和 iMessage 的草稿。
-
域:
MediaDomain/Library/SMS/ -
文件夹名称:
Attachments -
描述:通过 MMS 接收到的附件。
-
域:
HomeDomain/Library/ -
文件夹名称:
DataAccess -
描述: 包含每个在 Mail 应用程序中配置的邮箱的子文件夹。每个子文件夹内都有一个名为
mboxCache.plist的文件,包含邮箱文件夹的结构。 -
域名:
HomeDomain/Library/Mail -
文件名:
Recents -
描述: 最近发送的电子邮件的收件人信息和发送日期。

-
域名:
AppDomain/com.apple.mobilemail/Preferences/ -
文件名:
com.apple.mobilemail.plist -
com.apple.MailAccount-ExtProperties.plist -
描述: Apple Mail 应用程序配置及已配置帐户的设置。
-
域名:
HomeDomain/Library/Notes -
文件名:
Notes.sqlite -
描述: 按帐户分组的保存的便签。从 iOS 9.3 开始,用户可以选择为每个便签设置密码进行加密。
-
域名:
HomeDomain/Library/Safari/ -
文件名:
bookmarks.db -
描述: Safari 收藏夹。
-
域名:
AppDomain/com.apple.mobilesafari/Library/Preferences/ -
文件名:
com.apple.mobilesafari.it -
描述: Safari 配置文件。
-
域名:
AppDomain/com.apple.mobilesafari/Library/Safari/ -
文件名:
History.db -
描述: Safari 导航历史记录。
-
域名:
AppDomain/com.apple.mobilesafari/Library/Safari/ -
文件名:
SuspendedState.plist -
描述: 包含 Safari 当前所有活动标签页的状态。
-
域名:
AppDomain/com.apple.mobilesafari/Library/Safari/ -
文件夹名称:
Thumbnails -
描述: 包含当前活动的 Safari 页面缩略图(PNG 格式)。
-
域名:
AppDomain/com.apple.mobilesafari/Library/WebKit/WebSiteData -
文件夹名称:
LocalStorage -
描述: 网站存储的
LocalStorage数据库。可能包含网站存储的特定信息,有助于确定访问的 URL,即使该 URL 已不再出现在历史记录中。 -
域名:
AppDomain/com.apple.Maps/Library/Preferences -
文件名:
com.apple.Maps.plist -
描述: Apple Maps 应用程序配置文件,包含最近搜索的地址列表。
-
域名:
AppDomain/com.apple.Maps/Library/ -
文件夹名称:
Maps -
描述: 包含与 Apple Maps 应用程序使用相关的多个文件。文件为二进制类型,并具有
.mapsdata扩展名(例如,History.mapsdata),但可以提取包含地址的字符串。 -
域名:
CameraRollDomain/Media/ -
文件夹名称:
DCIM -
描述: 包含通过设备相机拍摄或从其他第三方应用程序(例如 WhatsApp、Facebook 等)保存的图片和视频。通过设备相机拍摄的图片以 JPG 格式存储,视频以 MOV 格式存储。此外,它还包含多个子文件夹,实际存储文件的这些文件夹名称包含递增数字(如 100APPLE、101APPLE、102APPLE 等),每个文件夹可能包含最多 1000 个文件。
-
域名:
CameraRollDomain/Media/DCIM -
文件夹名称:
.THMB -
描述: 包含 JPG 格式的图片缩略图。
-
域名:
CameraRollDomain/Media/PhotoData/MISC/ -
文件名:
DCIM_APPLE.plist -
描述:有关活动文件夹的信息及文件数量。
-
域名:
CameraRollDomain/Media/PhotoData/ -
文件夹名称:
Thumbnails -
描述:四个专有 ITHMB 格式的文件,每个文件对应一个可能的缩略图大小。
-
域名:
CameraRollDomain/Media/PhotoData/Thumbnails/V2/ -
文件夹名称:
DCIM -
描述:包含每个图片的子文件夹,缩略图为 JPG 格式。
iTunes 备份数据提取
有多种工具可用于从 iTunes 备份中提取数据—一些是开源软件,还有一些是商业产品。这些工具允许在未加密的备份中完全访问数据,而在加密备份中则只能部分访问数据(特别是文件内容不可见,除非您知道备份密码或已经破解密码)。在访问和提取备份数据的最有趣和强大的工具中,有法医软件(UFED Physical Analyzer、Oxygen Forensic® Suite、AccessData MPE+、EnCase、Elcomsoft Phone Viewer 等)、商业数据提取软件(iBackup Bot、iPhone Backup Extractor、DiskAid、Wondershare Dr. Fone 等)以及免费的/开源的数据提取软件(iPhone Backup Analyzer 和 iPhone Analyzer)。在附录 B 中提供了详细的工具列表,iOS 法医工具。另一种选择是通过十六进制编辑器自行恢复备份内容。在这种情况下,我们建议您阅读 resources.infosecinstitute.com/ios-5-backups-part-1/ 上的文章。
案例研究 - 使用 iBackupBot 解析 iTunes 备份
iBackupBot 是一款适用于 Windows 的商业工具,可以访问存储在本地计算机上的 iTunes 备份。试用版允许加载并提取备份中的信息。
软件执行后,它会自动加载存储在预定义的 iTunes 备份文件夹中的所有备份,但也可以通过文件菜单打开其他备份。在左侧窗格中,列出了所有加载的备份,所有域可以浏览;在中央窗格中,显示了设备的基本信息(设备名称、iOS 版本、电话号码、序列号、UDID、IMEI 等)。

浏览备份会显示按特定域分组的文件。系统文件包含所有与 iOS 设置和数据相关的域。第三方应用程序数据位于用户应用程序文件、应用程序组文件和应用程序插件文件中。用户只需双击文件即可打开,因为该软件包含集成的 plist 和 SQLite 查看器:

用户信息管理器 选项解析了备份中存储的一些最常见数据,具体包括:联系人、短信/MMS 消息、通话记录、日历、备忘录、最近电子邮件(仅包含收件人电子邮件地址、日期和时间)、Safari 书签和 Safari 历史:

多媒体文件管理器 提供了对备份中存储的媒体文件的查看,具体包括 相机胶卷 域文件、语音邮件、语音备忘录 和 其他多媒体文件(例如,短信/MMS 附件、WhatsApp 媒体文件等)。

案例研究 - 使用 iPBA 分析 iTunes 备份
iPhone 备份分析器是由意大利研究员 Mario Piccinelli 开发的工具,提供了一种简单的方式来浏览备份文件夹并对 iDevice 备份进行法医分析。该工具作为开源软件在 MIT 许可证下发布,由于它是用 Python 编写的,因此应该是跨平台的(Mac、Linux 和 Windows)。
开发的主要目标是提供一种分析 iPhone 备份内容的方法。它旨在供任何想要轻松研究备份内容的人使用,无论是法医专家、iOS 开发者,还是仅仅对 iPhone 感兴趣的用户。该软件还内置了实用工具,方便浏览以可用格式呈现的内容,如信息、联系人、Safari 书签等。其完整功能集可以通过以下图示进行总结:

在 Windows 环境中,下载工具后,您需要将其解压到一个文件夹并启动可执行的 iPBA2.exe 文件。通过导航到 文件 | 打开归档,您可以选择包含备份的文件夹。该软件解析并分析备份,并提供一种图形化的方式来浏览备份内容:

通过右键点击 plist 或 SQLite 文件,分析人员可以查看文件内容。例如,在以下截图中,您可以看到 Manifest.plist 文件的内容:

在以下截图中,您可以看到一个通话记录 SQLite 数据库的内容:

通过从插件菜单选择一项,你还可以分析备份中的有用信息。目前,软件提供了 14 个插件:地址簿浏览器、通话记录、手机信息浏览器、已知网络、网络识别、笔记浏览器、Safari 历史记录浏览器、Safari 状态浏览器、Safari 书签、Skype 浏览器、消息浏览器、缩略图浏览器、Viber 浏览器和WhatsApp 浏览器。在下面的截图中,你可以看到例如已知 Wi-Fi 网络插件:

案例研究 - 使用 Oxygen Forensic Analyst 分析 iTunes 备份
Oxygen Forensic Analyst 是一款商业工具,已经在第三章,从 iDevices 获取证据中介绍过。该工具使你能够从 iDevice 中获取数据,也可以导入之前创建的 iTunes 备份。
为了导入备份,只需在主窗口点击导入文件,然后选择导入 Apple 备份/镜像 | 导入 iTunes 备份...:

在选择一个包含备份的文件夹时,工具会显示Manifest.plist文件,必须选择该文件:

软件会识别备份结构,并展示一个选项界面,调查员可以在此界面选择是仅进行备份转换,还是希望应用程序还能够解析应用程序的数据库。同样,也可以要求软件恢复数据库中的已删除记录:

软件接着启动分析过程,允许用户分析备份内容。在第六章,分析 iOS 设备中,我们将看到使用 Oxygen Forensic Analyst 进行分析的进一步示例:

加密的 iTunes 备份破解
正如我们在第三章,从 iDevices 获取证据中解释的,以及本章第一部分所讲的,iTunes 备份可以使用 iDevice 用户选择的密码进行加密。当你查获一个已经设置备份密码的 iDevice,或你拥有一台带有之前创建的加密备份的计算机时,你可以尝试使用专用工具破解备份。目前,我们只能找到三个可用于破解加密备份的软件包:EPB、Passware Forensic 和 iPhone Backup Unlocker。
案例研究 - 使用 EPB 破解 iTunes 加密备份
如产品网站所述,Elcomsoft Phone Breaker 可以为基于 Apple iOS 平台的智能手机和便携设备提供密码保护备份的法医访问。该密码恢复工具支持运行 iOS 的 Apple 设备,包括至今发布的所有代 iPhone、iPad 和 iPod touch 设备。
启动工具后,第一步是通过点击主窗口中的解密备份选项(工具)并选择解密备份来加载加密备份,如下图所示:

软件会自动提供加密备份的列表,这些备份保存在执行该工具的用户的默认备份文件夹中:

分析员可以选择提议的加密备份之一,或选择包含其他加密备份的文件夹。选择备份后,工具会询问分析员希望将解密后的备份保存到哪里,并在知道的情况下提供备份密码:

通过点击尝试密码恢复,用户可以选择想要执行的破解类型。可以选择两种选项之一:字典攻击或暴力破解攻击,如下图所示:

在第一种情况下,分析员可以提供自定义字典文件,如下图所示:

在第二种情况下,分析员可以决定暴力破解攻击的参数,如下所示:

如果破解过程成功,工具将向分析员提供密码,并提供解密备份的选项(以便使用前述工具之一进行分析):

否则,可以显示钥匙串内容,其中包括 Wi-Fi 网络连接的用户名和密码、在邮件应用中配置的电子邮件帐户、存储的互联网密码和来自其他应用程序的存储密码:

总结
在本章中,我们解释了有关 iTunes 备份中最有用的信息,特别是与 iOS 设备的法医分析相关的信息。我们详细说明了备份的结构以及如何使用商业工具和开源工具解析备份。我们还解释了未加密和加密备份之间的差异,并建议了一些尝试破解备份密码的方法。关于 iTunes 备份的一个非常有趣的点是,如果设备的所有者没有设置备份密码,在执行获取操作时,你可以创建一个加密备份,选择一个已知的密码,以便能够访问保存在钥匙串文件中的密码,而无需进行破解。相反,如果你恰好有一个无法破解密码的加密备份,仍然可以分析plist文件和Manifest.mbdb文件的内容,从而恢复该备份中所有文件的列表。在下一章中,将解释如何通过用户的 iCloud 帐户凭证或身份验证令牌恢复数据。
自测问题
Q1. 在 Windows 7 中,iOS 设备的备份存储在哪个文件夹中?
-
C:\Users\[username]\AppData\Roaming\Apple Computer\MobileSync\Backup -
C:\Users\[username]\AppData\Local\Apple Computer\MobileSync\Backup -
C:\Users\[username]\AppData\Apple Computer\MobileSync\Backup -
C:\Program Data\Apple Computer\MobileSync\Backup
Q2. 哪个文件包含有关备份的信息(例如备份日期、设备名称等)?
-
Manifest.plist -
Info.plist -
Status.plist -
Manifest.mbdb
Q3. 哪个文件包含备份文件夹中所有文件的描述?
-
Manifest.plist -
Info.plist -
Status.plist -
Manifest.mbdb
Q4. 哪个备份域包含与相机相关的多媒体元素?
-
应用域
-
相机胶卷域
-
媒体域
-
钥匙串域
第五章. 来自 iCloud 的证据获取与分析
本章的目标是介绍苹果公司为所有用户提供的云系统,通过该系统,用户可以将其设备和其他文件的备份保存在远程服务器上。在本章的第一部分,我们将展示该服务的主要特点,然后介绍如何创建和恢复备份以及从 iCloud 恢复其他文件的技术。
iCloud 服务
iCloud 是由苹果公司设计的云存储和云计算服务,自 iOS 5 起提供给 iOS 用户。iCloud 服务于 2011 年 6 月 6 日在苹果全球开发者大会上宣布,并于 2011 年 10 月 12 日向公众开放。到 2016 年 2 月,iCloud 拥有超过 7.8 亿用户。该服务允许用户将数据存储在 iCloud Drive 上,在不同设备和用户之间共享照片和视频,通过“查找我的 iPhone”进行设备定位,并通过 iCloud 钥匙串在远程服务器上保存个人密码。iCloud Drive 存储空间还可以被单个应用程序用来存储信息和特定的备份数据;例如,WhatsApp 在首次配置或版本升级后,会询问用户是否希望使用 iCloud 来存储聊天记录和 WhatsApp 媒体文件的备份,如果是的话,备份频率选择(每天、每周或每月)。iCloud 还允许用户在设备之间同步数据(例如电子邮件、联系人、日历、书签、备忘录、提醒事项、iWork 文档等)或将 iOS 设备(iPhone、iPad 或 iPod touch)备份到远程服务器,而不是使用 iTunes 和本地计算机。上传到 iCloud 的数据也可以与运行 Mac OS X 的苹果计算机(本地支持)或运行 Windows Vista 及更高版本的个人计算机共享,通过安装 iCloud 控制面板软件,该软件可以从苹果官网免费下载。
每个 iCloud 账户有 5 GB 的免费存储空间。通过 iTunes 购买的内容(如音乐、应用、视频、电影等)不计算在占用空间内,可以存储在 iCloud 中并在所有与用户 Apple ID 关联的设备上下载。此外,用户还可以选择购买额外存储,存储选项包括 50 GB(每月 $0.99)、200 GB(每月 $2.99)或 1,000 GB(每月 $9.99)。
iDevice 在 iCloud 上的备份
iCloud 允许用户在线备份 iDevice,这样即使更换设备(例如替换设备),也能恢复数据。用户可以直接在设备的设置中选择使用哪种备份模式,或者通过 iTunes 在设备连接到 PC 或 Mac 时进行选择,具体操作如以下截图所示:

一旦用户激活了该服务,设备会自动进行备份,至少每天一次,并且每次备份时都会满足以下所有条件:
-
设备连接了电源线
-
它连接到一个 Wi-Fi 网络
-
屏幕已锁定
-
iCloud 上有足够的空间可用
iCloud 在线备份通过后续快照是增量的,每个快照是其创建时设备的当前状态。存储在 iCloud 上的备份结构与使用 iTunes 制作的备份完全类似。
iDevice 备份获取
在线制作的备份在实质上是没有加密的。技术上说,它们是加密的,但加密密钥与加密文件一起存储。苹果之所以做出这样的选择,是为了让用户能够在不同设备上恢复备份。目前,iCloud 备份的获取受各种商业软件(Elcomsoft Phone Breaker(EPPB)、Passware、Oxygen Forensics Detective、Cellebrite Cloud Analyzer、iPhone Backup Extractor 和 Wondershare Dr.Fone)以及两款开源工具(iLoot,可在 github.com/hackappcom/iloot 获取,适用于 iOS 8 及以下版本;InflatableDonkey,可在 github.com/horrorho/InflatableDonkey 获取,适用于 iOS 9)的支持。有趣的是,这种技术曾在 2014 年的 iCloud 黑客攻击中使用过,从而导致个人照片和视频被黑客从 iCloud 服务中获取并发布到互联网上(更多信息请参见 en.wikipedia.org/wiki/2014_celebrity_photo_hack)。尽管目前没有强有力的证据描述这次黑客攻击是如何进行的,但人们普遍认为苹果的 查找我的 iPhone 服务对此负有责任,并且苹果并未在一定次数的错误登录尝试后实施任何安全措施,直接增加了利用(在这种情况下为暴力破解)的可能性。用于暴力破解 iCloud 密码的工具,名为 iBrute,仍可在 github.com/hackappcom/ibrute 获取,但自 2015 年 1 月以来已无法使用。一个名为 iBrutr 的新工具 github.com/Pr0x13/iBrutr,利用了不同的 iCloud 服务漏洞,于 2015 年 9 月发布。
案例研究 - iDevice 备份获取和带有用户名和密码的 EPPB
据软件制造商网站报道,EPPB 允许获取存储在在线备份中的数据。此外,即使没有原始 iOS 设备在手,也可以获取在线备份。要访问存储在云服务中的在线备份,只需使用原始用户的凭据,包括他们的 Apple ID,以及从计算机中提取的相应密码或认证令牌(本章后面详细描述)。
iCloud 登录凭据可以按以下步骤检索:
-
使用社会工程技术
-
从存储它们的 PC(或 Mac)中获取
-
使用 iTunes 密码解密工具 (
securityxploded.com/) -
使用 WebBrowserPassView (
www.nirsoft.net/) -
直接从设备(iPhone/iPad/iPod touch)中提取存储在钥匙串中的凭证,如第四章,iTunes 备份中的证据获取与分析中所述
一旦凭证提取完成,下载备份变得非常简单。按照程序提供的逐步说明,在从 iCloud 下载备份对话框中输入用户名和密码,进入工具 | Apple | 从 iCloud 下载备份 | 密码,然后点击登录,如以下截图所示:

此时,软件会显示一个界面,展示用户账户中所有的备份,并允许你下载数据,如下所示:

需要注意以下两种选项的使用可能性:
-
恢复原始文件名:启用时,该选项会解析
Manifest.mbdb文件的内容,并以相同的树结构将备份重建为域和子域,如第四章,iTunes 备份中的证据获取与分析中所描述。如果调查员打算使用传统的软件从备份中提取数据进行分析,建议禁用此选项,因为启用后,该软件将无法解析备份。 -
仅下载特定数据:当调查员只需要下载某些特定信息时,此选项非常有用。目前,软件支持通话记录、消息、附件、联系人、Safari 数据、Google 数据、日历、笔记、信息与设置、相机胶卷、社交与通讯等数据。在此情况下,恢复原始文件名选项会自动启用,且无法禁用:
![案例研究 - iDevice 备份获取和 EPPB,包含用户名和密码]()
选择下载目标文件夹后,备份开始下载。下载所需的时间取决于用户可用存储空间的大小以及该空间内存储的快照数量:

案例研究 - iDevice 备份获取和 EPPB,包含身份验证令牌
Elcomsoft 的 Phone Breaker 取证版是一款工具,能够让数字取证检查员在没有原始 Apple ID 和密码的情况下获取 iCloud 数据。这种访问是通过提取用户计算机中的身份验证令牌来实现的。这些令牌可以从任何安装了 iCloud 控制面板的嫌疑人计算机中提取。令牌可以在计算机运行时提取,也可以在计算机关闭后,从其硬盘中提取,通过提取特定的文件和文件夹。
在第一个案例中,在活跃的系统上,分析员需要在机器上使用一个名为atex.exe的小型可执行文件。该可执行文件可以在现场取证活动中通过外部 U 盘启动。
打开命令提示符,运行atex -l命令以列出所有本地 iCloud 用户,如下所示:

然后,再次启动atex.exe并添加--getToken参数,输入特定本地 Windows 用户的用户名(-n username)和该用户的 Windows 账户密码(-p password):

一个名为icloud_token_<timestamp>.txt的文件将会在atex.exe启动的文件夹中创建。此文件包含当前 iCloud 控制面板用户的 Apple ID 及其身份验证令牌:

现在,分析员已获得身份验证令牌,他们可以启动 EPPB 软件,导航到工具 | Apple | 从 iCloud 下载备份 | 令牌,复制并粘贴令牌(小心复制atex.exe工具创建的.txt文件中的第二行全部内容)到软件中,然后点击登录,如下图所示。此时,软件会显示下载存储在用户 iCloud 空间中的 iCloud 备份的界面,类似于你输入用户名和密码的方式:

Mac OS X 版本的程序与此完全相同。只需从 shell 启动atex Mac 版本,并按照之前在 Windows 环境中展示的步骤操作:
-
sudo atex -l:此命令用于获取所有 iCloud 用户的列表。 -
sudo atex --getTokenOnline -u <username>:此命令用于获取特定用户的身份验证令牌。当提示时,你需要输入该用户的系统密码。
令牌也可以从关闭的计算机中提取,无论是运行 Mac OS X 还是 MS Windows,并且安装和配置了 iCloud 控制面板。
在 MS Windows 环境中,为了获取令牌,你需要从计算机中提取以下文件和文件夹(或其取证镜像):
-
com.apple.AOSKit.plist文件,通常位于\Users\<username>\AppData\Roaming\Apple Computer\Preferences\ -
\Users\<username>\AppData\Roaming\Microsoft\Protect\<SID>\文件夹
还需要知道目标计算机上本地用户的账户密码。
一旦这些文件被提取,你可以启动 EPPB 软件并导航至 工具 | 苹果 | 提取身份验证令牌。软件会提示你提供 com.apple.AOSKit.plist 文件和本地用户密码:

下一步,你需要提供包含用户主密钥的文件夹路径:

如果提供的信息正确,软件将显示身份验证令牌,从而直接访问 iCloud 备份下载功能和 iCloud Drive 中的文件:

在 Mac OS X 环境下,为了获取令牌,你需要从计算机中提取以下文件和文件夹(或其法医镜像):
-
login.keychain文件,默认存储在/Users/<username>/Library/Keychains/中 -
存储身份验证令牌的文件夹,默认存放在
/Users/<username>/Library/Application Support/iCloud/Accounts/中
还需要知道目标计算机上本地用户的账户密码。
一旦这些文件被提取,你可以启动 EPPB 软件并导航至 工具 | 苹果 | 提取身份验证令牌。软件会提示你提供 login.keychain 文件和本地用户密码:

下一步,你需要提供包含身份验证令牌的文件夹路径:

点击 提取 后,令牌将被提取为一个 plist 文件,可以用于访问和备份存储在 iCloud 中的文件。
案例研究 - 使用 iLoot 获取 iDevice 备份
也可以使用名为 iLoot 的开源工具执行相同的操作(可在 github.com/hackappcom/iloot 获取),它支持到 iOS 8。该工具需要 Python 和一些依赖项。我们建议你查看该网站以获取最新版本和需求。
通过访问帮助(iloot.py -h),我们可以看到各种可用选项。我们可以选择输出文件夹,如果我们只想下载特定的快照,选择是否希望以原始 iTunes 格式下载备份或使用域名风格的文件夹,或者只下载特定的信息(例如,通话记录、短信、照片等)或仅下载特定的域,如下所示:

要下载备份,你只需要输入帐户凭证,如下图所示:

处理完成后,你将在输出文件夹中找到备份(默认文件夹名称为/output)。
案例研究 - 使用 InflatableDonkey 获取 iDevice 备份
在 iOS 9 上执行相同的操作,可以使用一个名为 InflatableDonkey 的开源工具(可在github.com/horrorho/InflatableDonkey获取)。该工具需要 Java SDK 和 Maven。我们建议你查看该网站以获取最新版本和要求。
注意
本书写作时,该工具仍然是一个概念验证工具(PoC),因此在实际调查中使用前请先进行测试。
通过访问帮助(java -jar InflatableDonkey.jar --help),我们可以看到各种可用选项。我们可以选择要访问的设备和要下载的特定备份快照,应用文件扩展名或基于域的过滤器,获取可用设备和快照的列表,并定义输出文件夹,如下所示:

我们可以通过提供有效的 iCloud 用户名和密码以及--snapshots选项来列出可用的设备和快照:

要下载备份,你需要输入帐户凭证并选择特定的设备和快照。在以下截图中,已经请求了来自可用设备的第二个快照:

处理完成后,你将在输出文件夹中找到备份(默认文件夹名称为/testoutput)。需要特别指出的是,无法以原始的 iTunes 格式下载备份,只能以域名风格的文件夹格式下载。
案例研究 - 使用 Elcomsoft Explorer for WhatsApp 获取 WhatsApp 备份
如前所述,你的 iOS 设备上安装的应用程序有机会将其数据备份到 iCloud Drive。其中一款支持此功能的应用程序是 WhatsApp(在应用菜单中导航至 设置 | 聊天 | 聊天备份)。你可以手动进行备份(立即备份),或者可以设置 自动备份 功能,备份频率为 每日、每周 或 每月:

Elcomsoft Explorer for WhatsApp 允许你提取存储在 iCloud 或 iCloud Drive 备份中的 WhatsApp 备份数据。与 EPPB 软件类似,它可以通过认证凭证(用户名和密码)或认证令牌访问 iCloud 上的数据:

下载后,可以直接在软件中查看数据,按类型分类:通话记录、联系人、媒体和消息:

计算机上的 iCloud 控制面板遗留物
安装 iCloud 控制面板,除了允许恢复用户的认证令牌(如前所示),还会在计算机硬盘中留下有用的日志文件。
在 Windows Vista/7/8 系统上,连接到 iCloud 服务的日志存储在 C:\Users\<用户名>\AppData\Roaming\Apple Computer\Logs 中。要查找相关日志,需要在文本文件中搜索与可执行文件 iCloud.exe 相关的日志。这些文件按标准格式命名,其中包括服务启动的日期和时间(例如,asl.113048_18Apr16.log),从而帮助分析人员创建 iCloud 使用时间线。
在 iCloud 控制面板软件中配置的用户信息存储在 C:\Users\<用户名>\AppData\Roaming\Apple Computer\Preferences\mobilemeaccounts.plist 文件中。
特别地,以下用户信息存储在该文件中:
-
AccountDSID:该键表示用户标识 -
AccountID:该键表示 iCloud 账户的用户名 -
DisplayName:该键表示账户所有者设置的显示名称 -
IsPaidAccount:如果用户购买了 Apple 的额外服务(如更多的 iCloud 存储空间),该键的值会被设置为True -
LoggedIn:该键表示用户是否已自动登录该服务![计算机上的 iCloud 控制面板遗留物]()
在 Mac OS X 系统上,用户信息存储在 /Users/<用户名>/Library/Preferences/MobileMeAccounts.plist 文件中。
你还会找到大量的 asl 日志(Apple 系统日志),因此,为了检查用户的 iCloud 活动,你需要解析以下日志文件:
-
/private/var/log/asl/YYYY.MM.DD.UID.asl -
/private/var/log/system.log
对于 Mac OS X 计算机上 iCloud 遗留物的详细分析,我们建议阅读 Ubiquity Forensics - Your iCloud and You 演示文稿,您可以在www.mac4n6.com/resources/查看。
使用存储的令牌从云端获取数据
在 第四章,从 iTunes 备份中获取和分析证据 中,我们看到加密备份中包含存储在钥匙串中的应用程序登录凭证。根据应用程序的不同,有可能直接找到密码,例如原生邮件应用,或者是身份验证令牌,例如许多第三方应用,如 Facebook 和 Twitter。
因此,知道备份的密码(无论是特意设置以提取凭证,还是通过破解获得)后,您可以提取应用程序的凭证,并利用这些凭证直接访问用户的云服务门户。这样,对于存储令牌的应用程序,就不需要知道用户的特定服务密码,访问将由相同的令牌保证。
一些商业移动取证解决方案将此功能集成到它们的软件中,或者作为附加软件与其取证工具结合使用。在最著名的解决方案中,值得一提的是 UFED Cloud Analyzer、Oxygen Forensic Detective 和 Paraben Device Seizure。
应强调的是,这种类型的软件可以远程访问不同的服务器,且数据并非物理存储在被分析的设备中。因此,我们需要考虑至少两个方面:首先,确保拥有进行此活动的合法权限;其次,要牢记这种类型的采集会留下痕迹,可能会产生通知给设备的所有者。基于这些原因,我们在使用时必须特别小心。
案例研究 - 使用 UFED Cloud Analyzer 进行云数据采集
UFED Cloud Analyzer 是由 Cellebrite 开发的商业软件,是移动设备获取和分析取证套件的补充。此软件允许您在不同平台上访问数据:Google(Gmail、联系人、Drive、位置历史和搜索历史)、Dropbox、Facebook、Twitter、Instagram、Kik 和 Vk。
软件可以通过手动输入(用户名和密码)或通过导入使用 UFED Physical Analyzer 软件导出的账户包来获取登录凭证。以下截图展示了导出过程:

软件的起始屏幕允许您查看已存在的人物或创建新的人物。它将其称为人物,因为我们在谈论用户的个人账户:

插入新人员时,可以指定他们的身份信息和参考时区,如下所示:

然后可以继续进行数据提取,甚至提供相关的法律信息(例如,搜查令):

然后需要选择你想要采集的账户,在账户包中选择可用账户。在以下示例中,Dropbox、Twitter 和 Google 的凭证可用:

用户的凭证会被认证,以验证其正确性和有效性:

最后,还可以为每个要采集的账户指定参数,如内容类型(例如,消息、联系人、图片、视频等)以及感兴趣的时间范围。一旦选择了这些选项,就可以开始提取数据:

一旦提取完成,软件会显示已采集数据的摘要,按每个账户进行分类:

软件还允许通过提供不同类型的可视化方式来筛选和搜索数据,如 时间轴表、时间轴动态、文件、联系人、地图 和 个人资料:

以下截图显示了一个 Google Drive 账户的文件可视化示例:

案例研究 - 使用 Oxygen Forensic Detective 进行云数据采集
Oxygen Forensic Detective 是由 Oxygen Forensic 开发的商业软件,是该厂商提供的最完整版本。特别是,除了 Analyst 版本中具备的提取和分析功能外,这个版本还包括了特定的功能,能够访问存储在云中的数据。该软件允许你访问不同平台上的数据:Google(日历、书签、历史记录、联系人、Drive、位置历史、邮件、照片、任务和 WhatsApp 备份)、iCloud(日历、联系人和 iOS 备份)、Live(日历、联系人和 OneDrive)、Box、Dropbox、Facebook、Twitter、Instagram 和 Swarm(Foursquare)。
软件可以手动输入登录凭证(用户名和密码)或通过导入使用 Oxygen Forensic Detective 软件导出的 Oxygen 凭证包。以下截图显示了获取Apple iPhone 6S(iOS 9.3.1)数据的示例。重要的是要记住,提取凭证时需要加密备份:

可以通过访问特定帐户部分来查看认证凭证。对于每个帐户,都提供密码或认证令牌以及凭证的输入文件。在这里的具体示例中,凭证与 Facebook 帐户相关:

使用保存帐户数据选项,您可以将凭证导出为 Oxygen 凭证包格式,并将文件保存到计算机:

当您从软件的主屏幕获取到凭证包后,只需点击右上角的云按钮,即可访问设置向导:

为了继续,您必须选择导入凭证包选项并选择上一步导出的文件。然后,它会显示用户视图,通常包含姓名、姓氏、个人资料照片、电子邮件地址和电话号码,如下所示:

然后,可以选择要访问的帐户,验证凭证的正确性,并设置每个提取参数。在 Facebook 的具体案例中,您可以指定要提取的内容(图片、视频、音频、消息、联系人、文件等)以及感兴趣的时间范围:

一旦启动提取,软件会提供一个详细的实时视图,显示提取数据和任务完成百分比:

提取完成后,软件会显示提取数据的详细摘要,按帐户和类型进行划分:

提取的数据可以在 Oxygen Forensic Detective 中查看,也可以保存在归档的Oxygen 云备份(OCB)中以供以后分析:

在软件中打开备份后,您可以轻松浏览提取的数据:

在当前示例的具体情况下,你将能够访问社交网络部分,并以结构化的方式查看所有提取的数据:

总结
在本章中,我们介绍了 Apple 提供的 iCloud 服务,用于将文件存储在远程服务器上并备份其设备。特别地,我们展示了当你知道用户凭证(Apple ID 和密码)并且可以访问安装了 iCloud 控制面板的计算机(无论是 Windows 还是 Mac OS X,开机或关机)时,如何下载存储在 iCloud 上的备份。在下一章中,我们将介绍你可以在 iDevices 上找到的最有趣和最有用的证据。
自测题目
Q1. 当何时 iCloud 会自动创建一个新的备份?
-
每 5 分钟
-
这取决于 iOS 版本
-
当设备连接到电源线、Wi-Fi 网络并且被锁定时
-
当设备被锁定时
Q2. 以下哪些工具可以用来从 iCloud 下载备份?
-
iPhone 备份分析器
-
InflatableDonkey
-
UFED 物理分析器
-
iOS 法医工具包
Q3. 哪个工具可以用来从安装了 iCloud 控制面板的 PC 恢复认证令牌?
-
Oauth.exe -
Iloot.exe -
Token.exe -
Atex.exe
Q4. 在 Windows 7 中,与 iCloud 控制面板相关的日志文件存储在哪里?
-
C:\Users\[用户名]\AppData\Local\Apple Computer\Logs -
C:\Users\[用户名]\AppData\Local\Apple\Logs -
C:\Users\[用户名]\AppData\Roaming\Apple Computer\Logs -
C:\Users\[用户名]\AppData\Roaming\Apple\Logs
第六章:分析 iOS 设备
本章的目标是引导你分析 iDevice 中存在的重要数据。第一部分将重点分析由系统功能或用户与系统交互产生的数据,主要涉及 iOS 配置文件和 iOS 原生应用程序。第二部分,我们将手动分析一些最常见的第三方应用程序,目的是为你提供一个通用的方法,你可以将其应用到遇到的所有不同应用程序中。关于这个主题,也有一些已发布的文献,其中一些也在附录 A 中提到,参考文献。我们将以案例研究结束,为你提供一个专有分析软件的示例。所有这些内容都聚焦于两种主要的存储数据格式:SQLite 数据库和属性列表(plist)文件。
数据如何存储
在真正开始分析 iDevice 内部的文件之前,让我们先看一下数据是如何结构化的,以及它是以何种格式存储的。在 Apple 文件系统中,大多数用户数据存储在 /private/var/mobile/ 下,或者简单地说是 /User/,这是指向前者的符号链接。在本章的测试中,我们使用的是运行 iOS 9.0.2 的 iPhone 4s:
# tree -d -L 2 /private/var/mobile/
|-- Applications
|-- Containers
| |-- Bundle
| |-- Data
| `-- Shared
|-- Documents
| `-- com.apple.springboard.settings
|-- Library
| |-- Accounts
| |-- AddressBook
| |-- AggregateDictionary
...
| |-- Keyboard
| |-- Logs
| |-- Mail
...
| |-- Preferences
| |-- SMS
| |-- Safari
...
| |-- SoftwareUpdate
| |-- Spotlight
| |-- SpringBoard
...
|-- Media
| |-- AirFair
| |-- Books
| |-- DCIM
| |-- Downloads
...
`-- MobileSoftwareUpdate
在 iOS 8 之前,应用程序及其数据都存储在 /private/var/mobile/Applications/ 下,而从 iOS 8 开始,文件系统布局发生了变化,应用程序的数据与其包分开存储。当前的文件夹结构如下:
-
/private/var/mobile/Containers/Bundle/Application/<UUID>/:这个路径是实际存储应用程序包的路径。 -
/private/var/mobile/Containers/Data/Application/<UUID>/:该路径是实际存储大部分应用程序数据的路径。 -
/private/var/mobile/Containers/Shared/AppGroup/<UUID>/:顾名思义,这个路径是应用程序存储数据的路径,目的是与其他应用程序或扩展共享数据。这个文件夹也非常重要,因为你会在其中找到一些非常流行应用程序的关键数据,例如 WhatsApp、Chat db 等等。
虽然你可以通过前面的 tree 命令输出轻松猜测大部分文件夹的含义,但你可能会好奇 Application 文件夹内那些名字代表什么。这些是应用程序的名称,通过其全局唯一标识符(UUID)表示。在每个应用程序文件夹内,你通常会看到与以下类似的结构:
# tree -L 1 FAA3360F-18A5-4EA2-A331-53F2A49C5A8E/
FAA3360F-18A5-4EA2-A331-53F2A49C5A8E/
|-- Documents
|-- Library
|-- StoreKit
`-- tmp
以下结构特别重要:
-
<Application_Bundle_Home>/AppName.app:该文件是应用程序包,不会被备份。 -
<Application_Data_Home>/Documents/:该路径包含特定于应用程序的数据文件。 -
<Application_Data_Home>/Library/:该路径包含应用程序特定的文件 -
<Application_Data_Home>/Library/Preferences/:该路径包含应用程序偏好设置文件 -
<Application_Data_Home>/Library/Caches/:该路径包含应用程序特定的支持文件,这些文件不会被备份 -
<Application_Data_Home>/tmp/:该路径包含应用程序启动之间不会持久保存的临时文件,这些文件不会被备份
在应用程序包文件夹内,iTunesMetadata.plist 文件包含与产品、Apple 账户名和购买日期相关的信息,这些信息在某些情况下可能会非常有用。你可以在每个应用程序包文件夹中找到这个文件。
在每个数据应用文件夹内,都有一个名为 .com.apple.mobile_container_manager.metadata.plist 的隐藏文件。该文件包含与 UUID 对应的名称标识符。如果你在 shell 上进行分析,并且需要快速识别存在哪些应用程序,这个文件会非常有用:
iLab1:/private/var/mobile/Containers/Data/Application root# find . - type f -name ".com.apple.mobile_container_manager.metadata.plist" - exec plutil {} \; | grep "MCMMetadataIdentifier"
...
MCMMetadataIdentifier = "com.facebook.Messenger";
MCMMetadataIdentifier = "com.apple.Maps";
MCMMetadataIdentifier = "com.apple.mobilenotes";
MCMMetadataIdentifier = "org.mozilla.ios.Firefox";
MCMMetadataIdentifier = "com.facebook.Facebook";
MCMMetadataIdentifier = "com.apple.mobilemail";
MCMMetadataIdentifier = "net.whatsapp.WhatsApp";
MCMMetadataIdentifier = "com.google.chrome.ios";
MCMMetadataIdentifier = "com.skype.skype";
MCMMetadataIdentifier = "com.getdropbox.Dropbox";
MCMMetadataIdentifier = "com.apple.ServerDocuments";
MCMMetadataIdentifier = "com.apple.SafariViewService";
MCMMetadataIdentifier = "com.google.Gmail";
MCMMetadataIdentifier = "com.toyopagroup.picaboo";
MCMMetadataIdentifier = "com.apple.mobilesafari";
MCMMetadataIdentifier = "ph.telegra.Telegraph";
MCMMetadataIdentifier = "com.apple.iCloudDriveApp";
MCMMetadataIdentifier = "com.google.Drive";
...
同样,特别有用的是通过匹配 UUID 与你正在寻找的应用程序名称,来确定你的目标文件夹:
iLab1:/private/var/mobile/Containers/Data/Application root# find . - type f -name ".com.apple.mobile_container_manager.metadata.plist" - exec grep -iF "Skype" {} \;
Binary file ./86212B35-B575-4E69-89F1- 81F0CD8886A2/.com.apple.mobile_container_manager.metadata.plist matches
最后但同样重要的是,关于 Apple 用来存储文件的格式,你将遇到两种主要格式,plist,主要用于配置文件,和 SQLite 数据库。我们将在下一节详细讨论这两种格式。
时间戳
分析师必须特别注意的一个重要方面是使用的时间戳约定。这一点尤其重要,尤其是当你在没有专门商业工具的情况下手动分析数据时。与经典的 UNIX 纪元时间(表示自 1970 年 1 月 1 日 00:00:00 以来经过的秒数)不同,iOS 设备采用 MAC 绝对时间,它表示自 2001 年 1 月 1 日 00:00:00 以来经过的秒数。这两者之间的差异为 978,307,200 秒。网上有很多资源可以用来计算这个差值,或者你可以通过在 Mac 上将前述值加到 MAC 绝对时间值来计算,如以下示例所示:
$ date -u -r `echo '314335349 + 978307200' | bc`
Sat Dec 18 03:22:29 UTC 2010
注
记得插入 -u 开关,以便以 UTC 时间显示,否则系统会以你的本地时间(或者你机器上设置的本地时间)输出。
数据库
在 iOS 设备上(与其他移动平台类似)最常见的数据存储方式是使用 SQLite 数据库。无论是原生应用还是第三方应用,都大量使用 SQLite 数据库文件来存储数据,稍后我们将详细讨论。
有几种工具可供使用,包括免费/开源和商业工具,例如 SQLite Database Browser,它提供了图形界面,以及来自官方 SQLite 网站的 SQLite 命令行工具,www.sqlite.org/。如果你使用的是 Mac OS X 进行分析,它会预装 sqlite3 工具。
属性列表文件
属性列表文件(plist)是 iOS 设备(以及 Mac OS X)中使用的另一种常见数据格式。plist 文件主要用于存储配置信息、偏好设置和设置。其格式可以与 XML 格式相比,通常表示为二进制或纯文本文件。
在 Windows 下解析 plist 文件的常用工具是 plist Editor Pro,而如果你使用的是 Mac OS X,你可以使用 XCode 查看 plist 文件,或者使用命令行工具 plutil。
iOS 配置文件
iOS 有许多偏好设置和配置文件,其中存储了大量在调查过程中可能变得有价值的数据。本节为你提供了一些有用的文件清单(尽管并不详尽),供你在调查时参考:
-
账户和设备信息:查看
/private/var/root/Library/Lockdown/data_ark.plist。此文件包含有关设备和其账户持有者的各种信息。 -
账户信息:查看
/private/var/mobile/Library/Accounts/Accounts3.sqlite。此文件包含账户信息。 -
账户信息:前往
/private/var/mobile/Library/DataAccess/AccountInformation.plist。在这里你可以找到用于设置应用程序的账户信息。 -
飞行模式:检查
/private/var/root/Library/Preferences/com.apple.preferences.network.plist。此文件指定设备当前是否启用了飞行模式。 -
配置信息和设置:前往
/private/var/mobile/Library/Preferences/。此文件包含系统配置和 Apple 应用程序的设置plist文件。 -
锁定证书信息:导航至
/private/var/root/Library/Lockdown/pair_records/。此文件包含关于锁定/配对证书的信息,以及 iOS 设备曾经配对过的计算机信息。 -
网络信息:前往
/private/var/preferences/SystemConfiguration/com.apple.network.identification.plist。此文件包含 IP 网络信息的缓存,如先前使用的网络地址、路由器地址和名称服务器。每个网络的时间戳也被提供。此文件在 iOS 9 上已经不再存在,但如果设备是从较旧的 iOS 版本恢复过来的,你仍然可能找到它。 -
密码:前往
/private/var/Keychains/。此文件包含设备上保存的密码。 -
SIM 卡信息:现在查看
/private/var/wireless/Library/Preferences/com.apple.commcenter.plist。此文件包含设备上最后使用的 SIM 卡的 ICCID 和 IMSI。 -
Springboard:前往
/private/var/mobile/Library/Preferences/com.apple.springboard.plist。此文件包含每个屏幕上应用程序的排列顺序。 -
Wi-Fi 网络:现在查看
/private/var/preferences/SystemConfiguration/com.apple.wifi.plist。此文件包含已知 Wi-Fi 网络的列表、上次连接的时间戳以及其他有用的信息。如需了解更多信息及深入分析,您可以查看此文章:articles.forensicfocus.com/2013/09/03/from-iphone-to-access-point/。
原生 iOS 应用
iDevices 配备了一些由 Apple 预安装的原生应用程序,如 Safari 浏览器、电子邮件客户端、日历,以及与一些基本电话功能相关的实用工具,如相机、通话历史记录或 SMS/iMessage。由这些原生应用程序和功能生成的大部分证据位于除了应用程序文件夹本身外的Library文件夹中:
-
/private/var/mobile/Library/:在物理提取或设备内部 -
Backup Service/mobile/Library/:在文件系统提取的情况下 -
Library:在逻辑提取的情况下
在这里,我们可以找到与通信、偏好设置、互联网历史和缓存、键盘输入以及更多内容相关的数据。除了Library文件夹外,另一个非常重要的位置是Media文件夹,/private/var/mobile/Media/,其中通常存储用户创建的图片和音频文件等内容。
地址簿
如你所料,Library下的AddressBook文件夹指的是与联系人应用程序相关的个人联系人信息,并以 SQLite 数据库格式存储。有两个主要的数据库:AddressBook.sqlitedb和AddressBookImages.sqlitedb。
AddressBook.sqlitedb包含每个联系人保存的实际信息,如姓名、姓氏、电话号码、电子邮件地址等。在这个数据库中,主要包含相关信息的表是ABPerson和ABMultiValue。
AddressBookImages.sqlitedb是包含用户可能为联系人关联的图片的数据库,基本上就是每次与该联系人通话时显示的图片。该数据库中主要感兴趣的表是ABFullSizeImage。
音频录音
预装在 iDevices 上的语音备忘录应用程序允许用户录制语音备忘录。这些备忘录存储在/private/var/mobile/Media/Recordings/文件夹中。在此文件夹中,有一个名为Recordings.db的数据库,包含每个语音备忘录的相关信息,如日期、时长、备忘录名称以及实际音频文件的文件名,音频文件存储在同一文件夹中。
日历
日历应用程序允许用户手动创建事件,并将其与其他应用程序同步,如相关的 Mac OS X 版本应用程序或其他第三方应用程序和服务。这些信息存储在以下两个数据库中:
-
/private/var/mobile/Library/Calendar/Calendar.sqlitedb -
/private/var/mobile/Library/Calendar/Extras.db
Calendar.sqlitedb数据库是主要数据库,包含与日历中所有事件相关的基本信息,而Extras.db则包含其他信息,如日历设置。
通话记录
当我们按下电话应用程序图标时,我们会看到很多信息,这些信息几乎都来自同一个数据库/private/var/wireless/Library/CallHistoryDB/CallHistory.storedata。在这里,我们可以找到关于来电、去电和未接来电的记录,包括发生的时间、日期和通话时长。该数据库既包含标准电话记录,也包含 FaceTime 通话记录。如以下示例所示,感兴趣的表是call:
# ls -l
-rw-r--r-- 1 mobile mobile 36864 Oct 22 2015 CallHistory.storedata
# sqlite3 CallHistory.storedata
SQLite version 3.8.10.2
Enter ".help" for instructions
sqlite> .mode line
sqlite> .tables
ZCALLDBPROPERTIES Z_METADATA Z_PRIMARYKEY
ZCALLRECORD Z_MODELCACHE
sqlite> select * from ZCALLRECORD;
...
ZANSWERED = 0
ZCALLTYPE = 1
ZDISCONNECTED_CAUSE =
ZFACE_TIME_DATA =
ZNUMBER_AVAILABILITY = 0
ZORIGINATED = 1
ZREAD = 1
ZDATE = 490357911.066614
ZDURATION = 0.0
ZDEVICE_ID =
ZISO_COUNTRY_CODE = ch
ZLOCATION = Switzerland
ZNAME =
ZUNIQUE_ID = E49FF4D0-8AF7-4A74-9D8D-43E2B5D7A574
ZADDRESS = +4179******4
...
最有趣的字段如下:
-
ZANSWERED:表示通话是否被接听(1)或拒绝(0)。 -
ZCALLTYPE:表示通话类型,是标准电话(1)、仅 FaceTime 语音通话(16)还是完整的 FaceTime 音视频通话(8)。 -
ZORIGINATED:表示通话是外拨(1)还是接入(0)。 -
ZDATE:表示通话发生的日期和时间。请注意,这个值是以 Mac 绝对时间表示的,Mac 绝对时间表示的是自 2001 年 1 月 1 日 00:00:00 GMT 以来的秒数。因此,如果没有转换时间的应用程序,您只需加上 978307200,然后使用date命令,如下所示(来自 Mac 的示例):$ echo '490357911.066614+978307200' | bc 1468665111.066614 $ date -ur 1468665111 Sat Jul 16 10:31:51 UTC 2016 -
ZISO_COUNTRY_CODE:如其名称所示,表示根据ZADDRESS字段中电话号段的前缀对应的两位 ISO 国家代码。 -
ZLOCATION:表示根据前述字段,国家的全名。 -
ZADDRESS:最后但同样重要的,这个字段表示通话的电话号码,无论是来电还是去电。
从 iOS 8 开始,路径略有变化,从/private/var/wireless/Library/CallHistory/call_history.db更改为/private/var/wireless/Library/CallHistoryDB/CallHistory.storedata。如果设备是从 iOS 7 升级到 iOS 8,您会同时找到旧数据库和新数据库,其中包含升级前的通话记录数据。
还有另外两个与电话应用相关的重要文件需要分析。plist 文件 /private/var/mobile/Library/Preferences/com.apple.mobile phone.plist 中有 DialerSavedNumber 值,它表示最后一次手动输入并实际拨打的电话号码。这里需要注意的重要事项是,即使用户从通话历史记录中删除了最后一次拨出的电话,这个值仍会保留,当然,通话历史记录中的该条目也会从我们刚刚分析过的 CallHistory.storedata 数据库中删除。另一个在调查过程中可能感兴趣的文件是 /private/var/mobile/Library/Preferences/com.apple.mobilephone.speeddial.plist,它包含添加到电话快捷拨号列表中的电话号码。
电子邮件
与 Apple Mail 客户端相关的数据存储在 /private/var/mobile/Library/Mail/ 中,该目录包含存储在设备上的发送、接收和草拟的电子邮件消息数据库,以及每个在 Mail 应用中配置的单独帐户(POP/IMAP)文件夹。所以,你可能想查看其中的所有内容。举个例子,文件夹内容可能如下所示:
# ls -l
drwxr-xr-x 2 mobile mobile 68 Oct 26 2015 AttachmentPlaceholders/
-rw-r--r-- 1 mobile mobile 42 Jul 17 19:24 AutoFetchEnabled
-rw-r--r-- 1 mobile mobile 196608 Jul 17 19:24 Envelope\ Index
-rw-r--r-- 1 mobile mobile 32768 Jul 17 19:24 Envelope\ Index-shm
-rw-r--r-- 1 mobile mobile 0 Jul 17 19:24 Envelope\ Index-wal
drwx------ 3 mobile mobile 136 Jul 17 19:24 IMAP- demo.room.004\@gmail.com\@imap.gmail.com/
-rw-r--r-- 1 mobile mobile 468 Jul 17 19:24 MailboxCollections.plist
drwx------ 2 mobile mobile 102 Jul 17 19:24 Mailboxes/
-rw-r--r-- 1 mobile mobile 86016 Jul 17 19:24 Protected\ Index
-rw-r--r-- 1 mobile mobile 32768 Jul 17 19:24 Protected\ Index-shm
-rw-r--r-- 1 mobile mobile 0 Jul 17 19:24 Protected\ Index-wal
-rw-r--r-- 1 mobile mobile 4096 Jul 13 21:18 Recents
-rw-r--r-- 1 mobile mobile 32768 Jul 17 19:11 Recents-shm
-rw-r--r-- 1 mobile mobile 366712 Jul 17 19:24 Recents-wal
drwxr-xr-x 2 mobile mobile 68 Jul 17 19:24 SceneThumbnailCache/
drwx------ 2 mobile mobile 68 Oct 20 2015 Vault/
-rw-r--r-- 1 mobile mobile 462 Jul 17 19:24 metadata.plist
虽然没有任何扩展名,但这些文件大多数都是 SQLite 数据库(你可以从存在的 -shm 和 -wal 文件中猜到)。例如,Envelope Index 数据库包含邮箱列表和元数据,而 Protected Index 数据库包含收件箱中邮件的列表,其中最后一封邮件是最新的:
# sqlite3 Protected\ Index
SQLite version 3.8.10.2
Enter ".help" for instructions
sqlite> .mode line
sqlite> .tables
message_data messages
sqlite> SELECT * FROM messages;
message_id = 9
sender = "Facebook" <update@facebookmail.com>
subject = You have more friends on Facebook than you think
_to = Demo < <account_username>@gmail.com>
...
message_id = 130
sender = "PayPal" <paypal@e.paypal.it>
subject = Accordi legali PayPal
_to = <account_username>@gmail.com
...
图片和照片
用户在 iDevice 中的照片存储在 /private/var/mobile/Media/,该目录下有两个主要文件夹如下:
-
DCIM:此文件夹包含通过内置相机用户创建的照片(通常是.jpg格式)以及用户通过同时按下电源键和主页键截取的屏幕截图(通常是.png格式) -
PhotoData:此文件夹包含其他数据,其中包括与计算机或云同步的相册
此外,非常重要的是不要忘记 缩略图。事实上,对于每张照片,iOS 会生成一个缩略图,存储在 /private/var/mobile/Media/PhotoData/Thumbnails/ 中,并将关于原始图片的任何信息保存在 PhotoData 文件夹内的 Photos.sqlite 数据库中。这一点很重要,因为即使原始图片不再可用,缩略图和与原始图片相关的信息仍可能可用或可以从 SQLite 删除的条目中恢复(稍后在本章中将涉及相关部分)。
在分析照片时,重要的是要记得检查 Exif 元数据,它可能包含其他宝贵的信息,例如拍摄照片的地理坐标。
注意
对于该主题的深入分析,我们建议读者查看以下文章:linuxsleuthing.blogspot.it/2013/05/ios6-photo-streams-recover-deleted.html
地图
自 2012 年 iOS 6 发布以来,苹果自带了地图应用。相关文件和位置位于主文件夹 /private/var/mobile/Containers/Data/Application/2EA1D4AC-1C04-4CA5-8A77-349D47468457/ 中,其中包含用户搜索历史以及已收藏的地点列表,还包括 Library/Preferences/com.apple.Maps.plist 文件,该文件包含与用户最近搜索相关的信息,例如经纬度坐标和搜索查询内容。

便签
Notes 应用程序将用户创建的便签信息存储在 /private/var/mobile/Library/Notes/notes.sqlite 中。主要关注的表是 ZNOTE 和 ZNOTEBODY,它们包含便签标题、内容、创建和修改日期等信息。
# sqlite3 notes.sqlite
SQLite version 3.8.10.2
Enter ".help" for instructions
sqlite> .mode line
sqlite> .tables
ZACCOUNT ZNOTEATTACHMENT ZPROPERTY Z_MODELCACHE
ZNEXTID ZNOTEBODY ZSTORE Z_PRIMARYKEY
ZNOTE ZNOTECHANGE Z_METADATA
注意
从 iOS 9.3 开始,苹果引入了通过密码保护/锁定便签的功能。由于用户必须选择每个需要密码保护的便签(这不是一个 全有或全无 的模式),因此你可能无法直接访问这些便签。
Safari
Safari 是苹果设备中预装的浏览器。它允许用户浏览网页、保存书签等。所有这些活动都会存储在两个位置:/private/var/mobile/Library/Safari/ 和 Safari 主应用文件夹 /private/var/mobile/Containers/Data/Application/C6254D15-92CE-4989-9427-26A589DFA8B7/ 中。具体文件夹详情如下:
-
Safari 书签:这些信息存储在
/private/var/mobile/Library/Safari/Bookmarks.db中。它包含保存的书签数据库。 -
Safari Cookies:这些信息存储在
/private/var/mobile/Library/Cookies/Cookies.binarycookies中。网站的 Cookies 存储在这里。要解析这个二进制文件,你可以使用 GitHub 上的BinaryCookieReader.pyPython 脚本(gist.github.com/sh1n0b1/4bb8b737370bfe5f5ab8)。 -
Safari 临时文件:这些信息存储在
<app_folder>/Library/Caches/WebKit/NetworkCache/Version 4/中。该文件夹包含两个子文件夹,Blob和Record,它们存储着访问页面的临时文件和代码。这一点很重要,因为这样就可以查看/重建用户曾经访问过的页面。另一个需要记住的重要点是,当用户删除浏览器缓存时,这些文件夹将被清空。 -
Safari 搜索历史:这些信息存储在
<app_folder>/Library/Preferences/com.apple.mobilesafari.plist中。它包含了通过 Safari 进行的最近搜索记录。一个重要的要点是,当用户删除浏览器缓存或历史记录时,这个文件不会被删除,但在 iOS 9 中,文件内容会被清除。 -
Safari 暂停状态:这些信息存储在
<app_folder>/Library/Safari/SuspendState.plist中。它包含了用户按下 Home 按钮、iPhone 关机或浏览器崩溃时 Safari 的最后状态。为了在浏览器恢复时能够恢复此状态,该文件包含了在上述事件发生并关闭浏览器时打开的窗口和网站的列表。 -
Safari 缩略图:这些信息存储在
<app_folder>/Library/Caches/Safari/Thumbnails/中。这个文件夹包含了通过 WebKit 浏览器查看的最后一个活跃网页的截图,例如通过第三方应用程序。 -
Safari 网页缓存:这些信息存储在
Library/Caches/com.apple.mobilesafari/Cache.db中。它包含了最近下载并缓存的 Safari 浏览器对象。 -
Safari 历史记录:这些信息存储在
<app_folder>/Library/Safari/History.db中。它包含了 Safari 浏览器的历史记录。当然,如果用户已清除历史记录,则此文件将不包含清除前的历史。
短信/iMessage
类似于通话历史,有一个数据库存储用户发送或接收的短信、彩信和 iMessage。该数据库位于/private/var/mobile/Library/SMS/sms.db,还包含与彩信或 iMessage 附件相关的信息。在这些情况下,彩信或 iMessage 中的文件存储在子文件夹Library/SMS/Attachments/中。最后,关于短信的另一个有趣文件夹是Library/SMS/Drafts,其中每个草稿都有自己的文件夹,存储plist文件,并且带有时间戳,标识消息何时被输入并被放弃。
语音邮件
/private/var/mobile/Library/中的Voicemail文件夹包含了每个语音邮件录音的音频文件,这些文件存储为 AMR 编解码音频文件,同时还有voicemail.db数据库,保存了与每个语音邮件音频文件相关的信息,例如发送者、日期、时长等。
其他 iOS 法医痕迹
在本节中,我们将列出一些其他有趣的文件位置。这里列出的内容并不严格与特定应用相关,而是由用户与系统的交互所产生的设备使用数据。
剪贴板
/private/var/mobile/Library/Caches/com.apple.UIKit.pboard 下的 pasteboardDB 文件是一个二进制文件,包含了设备剪贴板上数据的缓存副本,这意味着用户剪切/复制并粘贴的数据(例如密码或其他可能相关的文本部分)也会出现在其中。
键盘
iOS 的两个功能是自动修正和自动完成用户输入的文本。为此,每当用户输入时,iOS 会将文本缓存到 dynamic-text.dat 文件中:

这个文件位于 /private/var/mobile/Library/Keyboard。这是默认文件,但当然,iOS 会为每个配置并使用的语言创建一个文件,并将其存储在同一文件夹中。在以下示例中,第二个文件与意大利语键盘配置相关:
# ls -l
drwxr-xr-x 4 mobile mobile 136 Oct 26 2015 CoreDataUbiquitySupport/
drwxr-xr-x 2 mobile mobile 102 Oct 22 2015 de-dynamic.lm/
-rw------- 1 mobile wheel 307 Jul 17 18:35 dynamic-text.dat
drwxr-xr-x 2 mobile mobile 272 Jul 17 20:00 en-dynamic.lm/
drwxr-xr-x 2 mobile mobile 272 Jul 17 20:00 it-dynamic.lm/
-rw------- 1 mobile wheel 65 Jul 17 19:57 it_IT-dynamic-text.dat
位置
在 iOS 4 中,曾有 合并的 GPS 缓存,这是一个包含与设备接触过的每个 Wi-Fi 热点和基站塔相关位置信息的数据库。这个数据库位于 /private/var/root/Library/Caches/locationd/consolidated.db,其中的 WifiLocation 和 CellLocation 表包含了设备本地缓存的信息,包括当时在设备范围内的 Wi-Fi 接入点和基站塔,并且包含了一个水平精度(单位:米),被认为是设备与这些位置之间的估计距离。这些数据除了永远保存在该数据库中外, reportedly 还会定期发送给苹果。所谓的 位置门 丑闻,就是在发现这个数据库后爆发的,苹果最终基本上放弃了该数据库。
然而,取代 consolidated.db 的新数据库是 cache_encryptedA.db、lockCache_encryptedA.db 和 cache_encryptedB.db,这些文件存储在 /private/var/root/Library/Caches/locationd/ 文件夹下。与其前身一样,这些数据库包含频繁和最近位置的地理坐标、Wi-Fi 接入点,以及显然是设备范围内的基站塔。这些数据的唯一区别在于,它们仅保存 8 天后会被清除。为了导出这些数据库,你还可以使用 Sarah Edwards(她的 Twitter 账号是 @iamevltwin)提供的 Python 脚本 iOS Location Scraper,可以从 GitHub 仓库下载:github.com/mac4n6/iOS-Locations-Scraper。
另一个非常重要的需要记住的关于地理位置信息的要点是,许多其他应用程序,尤其是第三方应用程序(如人们用来追踪跑步路径的健身应用程序)可能也会存储地理坐标和相关时间戳,且通常以明文存储。
快照
每当用户按下 Home 按钮从应用屏幕返回桌面时,iOS 会使用渐变消失效果在两个屏幕之间进行过渡。为此,iOS 会截取当前屏幕的截图,并将渐变消失效果应用到该截图上。这些截图存储在以下位置:
-
/private/var/mobile/Library/Caches/Snapshots/ -
/private/var/mobile/Containers/Data/Applications/<UUID>/Library/Caches/Snapshots/
第一个路径指的是预装的 Apple 应用,而第二个路径则是每个应用的快照存放位置。显然,这个特性可能是一个信息宝库。例如,其中可能包含已经被删除的短信或电子邮件的截图,这些信息现在已经无法恢复。
注意
重要的是要记住,每个应用只会截取最后一张快照。因此,分析人员应尽量减少与设备的交互和浏览,以免覆盖和丢失可能至关重要的证据。
壁纸
当前用作壁纸的图片存储在/private/var/mobile/Library/SpringBoard/中。有两张不同的图片:HomeBackgroundThumbnail.jpg,表示设备解锁时的壁纸;以及LockBackgroundThumbnail.jpg,表示设备锁定时的壁纸。
iOS 崩溃报告
iOS 操作系统使用崩溃报告来跟踪原生应用和第三方应用的错误和崩溃。崩溃日志通常包含应用生成错误或终止时的系统状态描述。崩溃报告由一个服务管理,该服务负责收集和汇总日志。有关崩溃报告服务的运行和崩溃日志结构的分析,请参阅以下网页:
-
理解和分析 iOS 应用崩溃报告:
developer.apple.com/library/ios/technotes/tn2151/_index.html -
理解 iPhone OS 上的崩溃报告:
developer.apple.com/videos/play/wwdc2010/317/ -
解密 iOS 应用崩溃日志:
www.raywenderlich.com/23704/demystifying-ios-application-crash-logs
通常,设备配置为每次连接并运行 iTunes 时,自动同步崩溃日志到 PC/Mac。因此,建议在计算机中检查,确保所有已连接设备的崩溃日志都已同步到一起。根据操作系统的不同,崩溃日志存储在不同位置:
-
Windows XP:
C:\Documents and Settings\<USERNAME>\Application Data\Apple Computer\Logs\CrashReporter\MobileDevice\<DEVICE_NAME> -
Windows Vista/7/8/10:
C:\Users\<USERNAME>\AppData\Roaming\Apple Computer\Logs\CrashReporter\MobileDevice\<DEVICE_NAME> -
Mac OS X:
~/Library/Logs/CrashReporter/MobileDevice/<DEVICE_NAME>
崩溃报告也可以直接从 iOS 设备中提取,通过与崩溃报告服务(是的,它的名字就是这个)进行对话,通过 PC 或 Mac 上的 iTunes,或者 Mac 上的 XCode。如 第三章 来自 iDevice 的证据采集 中所解释的那样,一些第三方软件提供了移除日志并保存以供后续分析的功能;在这些软件中,我们记得有 iBackupBot 和 iTools。它们可以从解锁的设备中提取,或者从开启且已锁定的设备中提取,只要该设备有有效的配对证书,并且如果用户设置了备份密码。以下截图展示了从 iPhone 6s 使用 iBackupBot 提取崩溃报告的示例:

从法医角度来看,通过分析崩溃日志可以识别出各种有价值的信息,例如:
-
从各种日志(如 PowerLog、安全性和 OnDemand)中提取的已安装应用程序列表及使用情况
![iOS 崩溃报告]()
-
来自
itunesstored.2.log的 iTunes 用户名![iOS 崩溃报告]()
-
来自 MobileMail 日志的电子邮件附件文件名
![iOS 崩溃报告]()
-
Wi-Fi 网络列表和最新连接历史来自 Wi-Fi 日志
![iOS 崩溃报告]()
跟踪设备使用情况
Sarah Edwards 对追踪设备使用情况的文物做了广泛的研究。通过关联应用程序、数据和网络使用情况、健康信息(例如,锻炼)、时间戳和地理位置数据,确实可以了解在某一时刻被调查用户的行为及其所在位置。特别是,她研究了以下文物:
-
CoreDuet:
/private/var/mobile/Library/CoreDuet/coreduetd.db(31 个表)coreduetdClassA.db(31 个表)coreduetdClassD.db(31 个表)Knowledge/knowledgeC.db(5 个表)People/interactionC.db(9 个表) -
电池寿命(PowerLog):
/private/var/mobile/Library/BatteryLife/CurrentPowerlog.PLSQL(257 个表)Archives/powerlog_YYYY-MM-DD_XXXXXXXX.PLQSQL.gz(前 ~5 天) -
健康:
/private/var/mobile/Library/Health/healthdb.sqlite(11 个表)healthdb_secure.sqlite(16 个表) -
Aggregate Dictionary:
/private/var/mobile/Library/AggregateDictionary/ADDataStore.sqlitedb(4 个表) -
networkd:
/private/var/networkd/netusage.sqlite(13 个表) -
routined:
/private/var/mobile/Library/Caches/com.apple.routined/cache_encryptedB.db(5 个表)StateModel1.archiveStateModel2.archive -
locationd:
/private/var/root/Library/Caches/locationd/cache_encryptedA.db(79 个表)lockCache_encryptedA.db(51 个表)cache_encryptedB.db(167 个表)cache_encryptedC.db(9 个表)这里提到的 Sarah 工作的详细信息可以在她的网站上找到,具体来说是《Sauron 的 iOS:iOS 如何跟踪你所做的一切》的演讲(
www.mac4n6.com/resources/)。
第三方应用程序分析
在前面的段落中,你已经看到了与 iOS 系统设置和偏好、原生 iOS 应用程序以及设备功能相关的重要工件的位置。这些位置需要注意,并且了解如何分析它们非常重要,因为它们是所有 iDevice 共享的。接下来,我们将展示一些最常用的第三方应用程序的实际分析。
社交网络和即时通讯应用程序
社交网络和即时通讯应用程序可能是最广泛使用的类别,对于分析人员来说,它们可以代表一个宝藏,因为现在它们已成为主要的通讯工具。在本节中,我们将为你概述在一些最流行的应用程序中可能找到的主要工件,以及在分析过程中需要特别注意的地方。
Skype
Skype 可能是最为知名和广泛使用的 VoIP 和聊天软件:
# tree -L 3 86212B35-B575-4E69-89F1-81F0CD8886A2/
|-- Documents
| |-- Skype.htrace0
| |-- Skype.htrace0.bak
| `-- _MediaStackETW.etl
|-- Library
| |-- Application\ Support
| | |-- RootTools
| | `-- Skype
| |-- Caches
| | |-- Snapshots
| | |-- com.plausiblelabs.crashreporter.data
| | |-- com.skype.skype
| | |-- net.hockeyapp.sdk.ios
| | |-- offline-storage-ecs.data
| | |-- offline-storage.data
| | |-- <skype_name>
| | |-- skype-cache-501.<skype_name>.ContactsListAdapter-Contacts-SingleSelect.plist
| | |-- skype-cache-501.<skype_name>.ContactsListAdapter-Favorites-SingleSelect.plist
...
| | |-- skype-cache-501.<skype_name>.chathistory-viewmodels
<contact_name>.plist
...
| | |-- skype-cache-501.<skype_name>.chatinput-saved-<contact_name>.plist
| | `-- skype-cache-501.<skype_name>.conversations.plist
| |-- Cookies
| | `-- Cookies.binarycookies
| `-- Preferences
| `-- com.skype.skype.plist
|-- StoreKit
| `-- receipt
`-- tmp
从Library/Preferences文件夹开始,我们可以在com.skype.skype.plist文件中找到第一个重要信息——用户名,如下截图所示:

然而,前面的截图只显示了最后一次登录的用户名。如果我们想要了解所有曾在此设备上登录的个人资料,必须查看Library/Application Support/Skype/下的其他文件夹,在这些文件夹中,每个文件夹都代表一个曾使用该设备登录的账户:

在每个用户的文件夹内,我们可以找到所有存储信息的数据库,如联系人列表、聊天记录等。这里的结构与 PC/桌面版本几乎相同。实际上,你可以打开main.db文件,在那里你可以清晰地看到所有信息,正如以下表格名称的有趣之处所展示:
# sqlite3 main.db
SQLite version 3.8.10.2
Enter ".help" for instructions
sqlite> .mode line
sqlite> .tables
Accounts Chats MediaDocuments Translators
Alerts ContactGroups MessageAnnotations VideoMessages
AppSchemaVersion Contacts Messages Videos
CallMembers Conversations Participants Voicemails
Calls DbMeta SMSes tracker_journal
ChatMembers LegacyMessages Transfers
请参阅以下截图:

这意味着你可以使用任何你喜欢的 Skype 分析工具来解析这些文件,比如Nirsoft的SkypeLogView等等。最后,在应用程序文件夹内,你还可能找到语音邮件消息和截图,正如我们在快照部分所讨论的,除此之外还包括通过 Skype 传输的文件、日志等。
尽管它在技术上是一个即时消息应用程序,WhatsApp 几乎完全取代了传统的短信。因此,在进行移动取证分析时,你很可能会遇到它。让我们来看看它的内部文件夹结构,正如你可能已经意识到的,它与不同应用程序之间的差异非常小:
# tree -L 3 6E3B21B5-9E07-4F65-B7FD-57E12CEF9E2C/
|-- Documents | |-- StatusMessages.plist
| |-- SyncHistory.plist
| |-- blockedcontacts.dat
| |-- calls.backup.log
| `-- calls.log
|-- Library
| |-- Caches
| | |-- ProfilePictures
| | |-- Snapshots
| | `-- mmap-images
| |-- FieldStats
| | `-- fieldstats.active
| |-- Logs
| | |-- Handoff
| | |-- whatsapp-2016-07-29-20-58-09.227.7.log
| | `-- whatsapp-2016-07-30-18-50-21.581.8.log
| `-- Preferences
| `-- net.whatsapp.WhatsApp.plist
|-- StoreKit
| `-- receipt
`-- tmp
我们现在已经理解了,要获得一些有用的初步信息以便开始分析一个应用程序,我们可以从Library/Preferences/下的plist配置文件开始查看。在这个案例中,我们要寻找的是net.whatsapp.WhatsApp.plist。在这里,你将再次找到一些基本信息,如用户名、WhatsApp 账户关联的电话号码等。
然而,我们可能会发现一个问题,那就是我们没有找到聊天数据库——著名的ChatStorage.sqlite文件。这是因为 WhatsApp 是那些将数据存储在/private/var/mobile/Containers/Shared/AppGroup/文件夹中的应用之一:
iLab1:/private/var/mobile/Containers/Shared/AppGroup root# tree 332A098D-368C-4378-A503-91BF33284D4B
|-- Axolotl.sqlite
|-- ChatSearch.sqlite
|-- ChatStorage.sqlite
|-- Contacts.sqlite
|-- Jobs.sqlite
|-- Jobs.sqlite-shm
|-- Jobs.sqlite-wal
|-- Library
| |-- Caches
| `-- Preferences
| `-- group.net.whatsapp.WhatsApp.shared.plist
|-- Media
| `-- Profile
| |-- 393205573087-1420495528.thumb
| |-- 393205573087-1456251558-1456251649.thumb
| |-- 393497320069-1432382263.thumb
| |-- 393930831043-1402697710.thumb
| |-- 41788236232-1467887746-1467901783.thumb
| `-- 41788236232-1468256570.jpg
|-- cck.dat
`-- connection.lock
关于交换消息的实际内容,主要的数据库是Documents/ChatStorage.sqlite,其结构如下:
# sqlite3 ChatStorage.sqlite
SQLite version 3.8.10.2
Enter ".help" for instructions
sqlite> .mode line
sqlite> .tables
ZWABLACKLISTITEM ZWAGROUPMEMBER ZWAMESSAGEINFO
ZWACHATPROPERTIES ZWAGROUPMEMBERSCHANGE ZWAPROFILEPICTUREITEM
ZWACHATPUSHCONFIG ZWAMEDIAITEM Z_METADATA
ZWACHATSESSION ZWAMESSAGE Z_MODELCACHE
ZWAGROUPINFO ZWAMESSAGEDATAITEM Z_PRIMARYKEY
ZWAMESSAGE表包含了交换的消息,它们的时间戳,用户与谁聊天的名字等信息,如下图所示:

ZWACHATSESSION表存储关于打开的聊天信息,包括单人聊天和群聊,你可以将这些数据与ZWAGROUPMEMBER和ZWAGROUPINFO表中的数据进行关联,从而找出哪些用户属于哪个群聊。最后,ZWAMEDIAITEM表存储着交换的多媒体文件(图片、语音消息和视频)的引用,包含参与用户、时间戳以及多媒体文件在 iDevice 中存储的位置。

然而,你也可以在Documents/ChatSearch.sqlite文件的docs_content表中找到聊天内容,如前面的截图所示。
Facebook 和 Messenger
Facebook 是最著名和广泛使用的社交网络。因此,除了它现在与 iOS 集成之外,您在几乎所有调查中都很可能需要分析 Facebook 应用。正如您所想,Facebook 存储的信息量非常大,特别涉及三个方面:用户个人信息、与个人资料和访问页面相关的图像缓存,以及通过帖子上的链接在 Facebook 应用内访问的外部网站信息。由于 Facebook 应用可以检索的大量信息以及书籍的页面限制,本节的目标是让您对可能的证据和它们的存储位置有所了解。
账户信息保存在Library/Preferences/com.facebook.Facebook.plist中。除了其他信息外,您可以找到配置在应用中的个人资料的电子邮件地址和 Facebook ID,以及应用最后一次使用的日期。
与联系人相关的信息保存在Library/Caches/_store_<ID>/messender_contacts_v1/fbsyncstore.db中的people表格内。
在Library/Caches/_store_<ID>/image_cache_v7/中存储了在浏览社交网络页面时查看的图像(例如,其他用户的帖子等),而在Library/WebKit/WebsiteData/LocalStorage/StorageTracker.db数据库和Library/Caches/WebKit/NetworkCache/文件夹中,存储了通过应用内部浏览器访问的其他网站内容,包括相关的 URL 和对应的文件(例如 JPG 图像、HTML 页面、CSS 样式表等)。
从 2014 年 4 月起,即时通讯功能已完全从 Facebook 应用转移到 Facebook Messenger 应用,该应用由 Facebook 于 2009 年 8 月推出。因此,所有 Facebook 用户都被迫下载并使用 Messenger 进行相互通讯。
同样,在这种情况下,相关的有趣数据存储在.../Containers/Data/...和.../Containers/Shared/...应用文件夹中。特别是,您会在/private/var/mobile/Containers/Shared/AppGroup/<UUID>/_store_<ID>/messenger_messages_v1/orca2.db中找到聊天内容数据库。在这个数据库中,聊天记录作为 blob 数据字段保存在表格中。
Telegram
Telegram 可能是仅次于 Whatsapp 的第二大即时通讯应用,因此在分析过程中需要处理它的可能性也相当高。像往常一样,账户信息可以在<App_folder>/Library/Preferences/中找到,文件名为ph.telegra.Teleraph.plist。
类似于 WhatsApp、Facebook 和 Messenger,Telegram 将其许多数据存储在.../Container/Shared/AppGroup/文件夹中,以下是该文件夹结构的示例:
-- 9C8C5F63-4EF3-4D6C-9F7F-6C71B9A0970A
| |-- Caches
| | |-- com.plausiblelabs.crashreporter.data
| | | `-- ph.telegra.Telegraph
| | | `-- queued_reports
| | |-- net.hockeyapp.sdk.ios
| | `-- ph.telegra.Telegraph
| | `-- com.apple.opengl
| | |-- compileCache.data
| | |-- compileCache.maps
| | |-- linkCache.data
| | |-- linkCache.maps
| | |-- shaders.data
| | `-- shaders.maps
| |-- Documents
| | |-- mtkeychain
| | | |-- Telegram_meta.bin
| | | |-- Telegram_persistent.bin
| | | |-- Telegram_primes.bin
| | | `-- Telegram_temp.bin
| | |-- tgdata.db
| | |-- tgdata.db-journal
| | |-- tgdata_index.db
| | |-- tgdata_index.db-journal
| | `-- wallpaper-data
| | `-- _currentWallpaper.jpg
| |-- Library
| | `-- Caches
| `-- shared-auth-info
更具体来说,在Documents文件夹下,我们可以找到tgdata.db数据库,它包含所有关于联系人、对话、交换的文件等信息。
一些特别有趣的表如下:
-
users_v29:这包含联系人列表和相关的 Telegram 用户 ID(uid)。 -
contacts_v29:这是所有 uid 的列表。 -
messages_v29:这包含所有交换的消息列表,包含发送方和接收方字段来识别消息源和目标,并有一个对话 ID(cid),以便更容易将属于同一对话的消息分组。秘密聊天中的消息也清楚地存储在这里。 -
convesations_v29:它包含应用程序聊天屏幕中显示的所有活动对话列表,并且还包含最后交换的消息。表的名称并不是我们写错的,而是确实缺少了r! -
encrypted_cids_v29:这包含秘密聊天的对话 ID。所有与秘密聊天相关的 cid 都以-(减号)符号开头。
这里列出的只是一些有趣的表,旨在给你展示你可以找到的一些内容,但正如从前面的sqlite3命令输出中可以看到的,还有更多:

Signal
最后但同样重要的是,我们不能将Signal排除在这份分析的即时通讯应用列表之外。不幸的是,对于取证分析员来说,幸运的是对于终端用户来说,Signal 确实做到了它承诺的,所有消息都在设备内安全加密(静态数据),仅在通过网络发送/接收时才会是加密的(传输中的数据)。文件夹结构如下:
iLab1:/private/var/mobile/Containers/Data/Application/6B6D8B22-F0D1-47A2-8818-134AE95B2DEC root# tree
|-- Documents
| |-- Attachments
| | `-- 4034125268946418778.jpeg
| |-- Signal.sqlite
| |-- Signal.sqlite-shm
| `-- Signal.sqlite-wal
|-- Library
| |-- Caches
| | |-- Logs
| | | `-- org.whispersystems.signal\ 2016-07-31\ 15-59.log
| | |-- Snapshots
| | | `-- org.whispersystems.signal
| | | |-- 52A21AE5-A070-40AF-B91B-711C86867100@2x.png
| | | |-- A8B33136-73B0-4FBB-9AA4-436A0557C595@2x.png
| | | `-- downscaled
| | | `-- 90479DEB-F853-4097-9C31-5F1B58617EBA@2x.png
| | `-- org.whispersystems.signal
| | |-- Cache.db
| | |-- Cache.db-shm
| | |-- Cache.db-wal
| | `-- fsCachedData
| | `-- 691B3FAC-2F2A-435D-9A23-B14DCB253298
| `-- Preferences
| `-- org.whispersystems.signal.plist
|-- StoreKit
`-- tmp
Signal 的所有数据(即聊天消息、联系人列表等)都存储在Document/Signal.sqlite数据库中,如我们之前所说,它是加密的。然而,有两件事情是没有加密的,它们如下:
-
附件:奇怪的是,交换的附件被清楚地存储,并可以从
Document/Attachments/文件夹中提取。 -
快照:Signal 有一个启用屏幕安全的选项,可以防止这种情况发生,但由于某些原因,默认情况下并未设置。因此,有可能会在
Library/Caches/Snapshots/文件夹中找到屏幕快照(我们在本章前面的部分中已经讨论过快照)。
正如我们所说,信息并不多,但请记住附件和快照,因为它们可能会揭示对你调查非常重要的线索。
云存储应用
云存储应用在移动设备上非常流行,因为云存储在某种程度上扩展了设备的存储能力,并允许用户随时随地访问数据。因此,在分析过程中,你很可能会遇到至少一种此类应用。在本节中,我们仅想给你展示一下在两个最流行的云存储服务中可以找到的一些文物。
Dropbox
Dropbox iOS 应用存储在 /private/var/mobile/Containers/Data/Applications/9238CCE2-5C38-4843-9F76-D73B7C0CAB23/。在 Documents/Users/<user_id>/ 文件夹中有若干个有趣的数据库,特别是以下几个:
-
Dropbox.sqlite:此数据库位于ZCACHEDFILE表中,包含用户与所有文件交互的信息,例如打开、保存或仅浏览过的文件。 -
Uploads.sqlite:此数据库位于ZQUEUEDUPLOAD表中,包含上传文件的名称/路径、文件的 MIME 类型和上传时间戳。
Library/Caches/ 文件夹包含了已打开文件的本地副本,但只有在我们能够进行物理采集时(而非逻辑/备份采集)才能访问。
最后,另一个有趣的文件夹是 Library/Application Support/Dropbox/<hex_ID>/Account/contact_cache/,其中包含两个非常有趣的 JSON 文件,此外还有其他文件:
-
me:此项包含账户持有者的相关信息,如姓名、姓氏和注册在当前账户上的电子邮件地址。 -
all_searchable:此项包含用户曾与其共享文件的每个账户的账户信息,如姓名、姓氏和电子邮件地址。此列表还包含历史记录,指的是用户当前已不再共享文件的账户,但在过去曾与之共享过文件。
Google Drive
Google Drive iOS 应用存储在 /private/var/mobile/Containers/Data/Application/F86EB4B3-5DB1-4C72-B576-546694440A5D/。文件夹结构与常规结构相同,Documents 和 Library 是你可以找到有趣文物的主要文件夹。更具体地说,在 Documents/drivekit/users/<user_ID>/cello/cello.db 中,你将找到包含关于 Drive 文件夹结构、访问的文件、移入垃圾桶的文件(包含时间戳)或已彻底删除的文件(没有删除时间戳)等信息的数据库,以及保存至 我的云盘 或标记为 离线可用 的文件副本。
Library/Caches/com.google.commmon.SSO/<user_ID>/ 文件夹中包含多个文件,其中包括 Profile.plist 文件,顾名思义,它显示了用于存储用户信息的位置,如姓名、姓氏、用户名和电子邮件地址。
删除数据恢复
在本节中,我们将简要介绍在 iOS 设备上执行文件雕刻操作的难点,并帮助你理解为什么以及有哪些可能性。我们还将看到恢复 SQLite 删除记录的特殊情况。
文件雕刻 - 这是否可行?
苹果使用一种名为数据保护的技术,进一步保护 iDevice 上闪存存储的数据。每当创建一个文件时,都会生成一个新的 256 位每文件密钥,并使用 AES 加密算法加密文件内容。每文件密钥随后被包装在其中一个数据保护类密钥中,并存储在文件的元数据中,这些元数据反过来又被文件系统密钥(EMF 密钥)加密,而 EMF 密钥是通过唯一的硬件 UID 生成的。下图直接取自苹果 iOS 安全官方文档(最后更新于 2016 年 5 月,参见附录 A,参考文献),总结了整个过程:

在这一前提下,很明显经典的文件雕刻方法将不起作用,因为未分配空间中将只有加密的内容。D'Orazio 等人发布了一种有趣的关于如何从 iOS 设备中雕刻已删除图像的方法(参见附录 A,参考文献)。他们建议利用 iOS 文件系统 HFS+的日志功能。事实上,通过分析和比较 HFS+文件系统的目录文件和日志文件,有可能识别出有关已删除文件的信息,如文件和元数据的位置、时间戳等。基于来自日志的信息,分析员应该能够搜索并恢复已删除的文件,找到加密密钥,然后解密图像文件。Heather Mahalik(她的 Twitter 用户名是@HeatherMahalik)在她的书《Practical Mobile Forensics》中也描述了类似的方法,该书由Packt Publishing出版。当然,这些方法需要目标设备进行物理获取才可实现。
然而,这种方法可能仅在设备未被恢复、擦除或升级到新操作系统版本的情况下有效,因为在这些情况下,文件系统密钥(EMF)将被擦除,并且会重新创建一个新密钥。因此,若没有原始的 EMF 密钥,所有指向恢复/擦除/升级之前的未分配空间的内容将永远丢失。
SQLite 已删除记录的雕刻
我们不会深入讨论 SQLite 结构的细节(更多信息请参见附录 A,参考文献),因为它超出了本书的范围。然而,了解除了已删除的文件外,还可以恢复 SQLite 数据库中的已删除记录是很重要的。Mari DeGrazia(她的 Twitter 用户名是@maridegrazia)开发了一个有用的 Python 脚本,它解析数据库文件并雕刻出已删除的条目。它的使用方法非常简单,只需要运行如下的单行命令:
$ python sqlparse.py -f mmssms.db -r -o report.txt
你可以在她的网站和 GitHub 库中找到它;她还提供了该工具的 GUI 版本(请参考附录 A,参考资料,以及附录 B,iOS 取证工具)。此外,运行strings命令对数据库文件进行分析也是非常有用的。你可能能够恢复一些被工具遗漏的已删除条目内容。
案例研究 - 使用 Oxygen Forensics 进行 iOS 分析
使用 Oxygen Forensics 获取的 iPhone 数据可以直接在同一工具中进行分析。事实上,在获取数据的过程中,所有文件都会被软件解析,软件为用户提供了一个完整的图形用户界面(GUI),可以访问和搜索数据中的信息。以下截图展示了软件的不同功能,显示了一个从运行 iOS 9.3 的 iPhone 6s 进行的逻辑经典类型的获取。Oxygen Forensics Suite 的一些功能描述直接来自供应商网站www.oxygen-forensic.com。
以下截图总结了与已获取设备型号、操作系统版本、序列号、获取类型、提取日期、调查员姓名、案件编号和证据编号相关的主要信息:

此外,还存在两个单独的区域,第一个区域涉及常见部分,即与本地应用程序相关的信息以及软件提供的分组功能;第二个区域则涉及用户在设备上安装的主要应用程序的活动。

对本地应用程序的分析可以让分析员恢复大量信息,如带有分配照片的电话簿、日历事件和备忘录、通话记录(FaceTime、拨打、接听和未接来电)、短信(SMS/MMS 和 iMessages)以及语音邮件。以下截图展示了通话历史的示例:

此外,使用 Oxygen Forensics Suite,可以恢复与 Wi-Fi 接入点、IP 连接和位置相关的信息。以下截图展示了设备中存储的 Wi-Fi 网络的详细信息。对于每个网络,列出了 SSID、路由器/接入点的 MAC 地址以及连接的时间戳(最后连接时间和最后自动连接时间)。通过网站如www.wigle.net/,可以追踪 MAC 地址并找到设备所在的物理位置。

关于用户安装应用程序的分析,软件会提取并解读数据库和配置文件(通常是 plist 格式)来分析 Apple Store 上常见的应用程序。这些应用程序被分为以下几类:
-
消息应用:Facebook、Skype、WhatsApp、Viber、Telegram、Facebook Messenger、ChatON、Fring、Kakao Talk、Tango、WeChat、Yahoo、Google Hangouts、KiK Messenger、QQ、testPlus、Line 等等
-
导航:Google Maps、Apple Maps、Waze 等等
-
浏览器:Safari、Google Chrome、Mercury、Dolphin、Yandex 等等
-
社交网络:Facebook、LinkedIn、Twitter、Instagram、Google+、Tinder、Grindr、Foursquare、Snapchat、Vkontakte、Pokemon Go 等等
-
旅行:Booking、SkyScanner、TripAdvisor 等等
-
生产力业务:Google Drive、Dropbox、Google Mail、OneDrive、Yahoo Mail、iBooks 等等
以下截图展示了 Kik Messenger 分析的一个示例:

最后,软件提供了以下的高级功能,用于数据的交叉搜索:
-
汇总联系人:本节分析了来自多个来源的联系人,如通讯录、短信、事件日志、Skype、聊天和消息应用中的联系人。在汇总联系人中,本节自动识别不同来源中相同的人,并将其分组为一个元联系人。
-
字典:本节显示了设备中所有曾输入过的单词,包括消息、备忘录和日历中的内容。
-
链接与统计:本节揭示了正在调查的移动设备用户与其联系人之间的社交关系。链接与统计部分提供了一个工具,通过分析电话、短信、多媒体和电子邮件信息以及 Skype 活动,探索设备用户之间的社交关系。
-
时间线:本节将所有通话、短信、日历事件、地理数据和其他活动按时间顺序组织,以便分析师可以在不需要切换不同部分的情况下跟踪对话历史。
-
社交图谱:本节是一个工作区,允许分析师查看移动设备所有者与其联系人之间的连接,确定多个设备所有者之间的连接,并检测他们的共同联系人。
除了自动分析,Oxygen Forensics Suite 还提供了在文件系统中导航的功能,可以查看所有不同类型的文件(文档、图片、视频和音频)。此外,还有两个嵌入式工具,用于查看 SQLite 数据库和 plist 文件。第一个工具还提供了从数据库中恢复已删除记录的功能,因此可以检索通话记录、短信、照片缩略图、联系人照片、应用程序数据库等。
使用此软件也使得没有高技术技能的用户变得非常容易操作。它允许以非常直观的方式进行关键字搜索,还可以在每个分析过的应用程序字段上应用过滤器。最后,它还允许导出结果,并自动生成多种格式的报告(Word、Excel、PDF、HTML 等)。
iOS 设备的详细功能列表可以在www.oxygen-forensic.com/en/compare/devices/software-for-iphone找到。
总结
本章展示了如何分析 iOS 设备上自带的原生应用程序以及第三方应用程序。我们探讨了一些最常见的应用程序,但方法适用于任何其他应用程序。解析plist文件和 SQLite 数据库的重要性也变得显而易见,因为这是分析师在每次分析中必须处理的两个主要数据结构,同时还需从后者中恢复已删除的记录。最后,本章为您提供了有关有趣取证数据的丰富位置,并附带了分析这些数据的工具。请记住,深入分析、参考资料和工具可以在附录 A、参考资料,以及附录 B、iOS 取证工具中找到。
下一章将专门分析移动应用程序,无论它们是否具有恶意或可疑性。我们将讲解分析环境的搭建,然后学习应用程序分析原理,这将使您能够分析移动应用程序的完整行为。
自我测试问题
Q1. 用户的大部分关键信息保存在 iOS 的哪个文件夹中?
-
/private/var/mobile/ -
/Users/mobile/ -
/private/var/user/mobile/ -
/private/user/mobile/
Q2. iOS 中使用的时间戳格式是什么?
-
UNIX 纪元时间
-
Apple 时间
-
Windows 时间
-
MAC 绝对时间
Q3. 文件/private/var/root/Library/Lockdown/data_ark.plist包含什么内容?
-
最近的商店搜索
-
关于设备及其账户持有人的信息
-
安装的应用程序列表
-
密码保存在 iDevice 中
Q4. 哪个文件中存储了 iDevice 中与 SIM 卡相关的信息?
-
ClearedSections.plist -
com.apple.network.identification.plist -
com.apple.commcenter.plist -
com.apple.springboard.plist
Q5. 包含用户地址簿的数据库名称是什么?
-
AddressBook.db -
AddressBook.sqlitedb -
AddressBook.sqlite -
AB.db
Q6. 通话历史记录保存在哪个文件夹中?
-
/private/var/CallHistory -
/private/var/wireless/Library/CallHistory/ -
/private/var/wireless/Library/CallHistoryDB/ -
/private/var/Library/CallHistory/
Q7. 哪种文件用于存储 Safari 浏览历史?
-
SQLite
-
Txt
-
Plist
-
HTML
Q8. 包含键盘缓存用于自动校正和自动完成的文件叫什么?
-
UserDictionary.txt -
Dict.dat -
Dynamic-Text.dat -
Text.dat
第七章:应用程序与恶意软件分析
尽管 iOS 设备的恶意软件并不常见,但在越狱设备中却更为常见。作为法医分析师,你可能需要分析一个恶意应用程序,或者更一般地说,分析一个你以前从未见过的可疑应用程序的行为。虽然我们并不打算编写一个全面的 iOS 应用程序静态逆向工程指南,但本章将概述如何分析一个应用程序,无论它是否恶意。在本章中,你将首先学习如何设置工作环境,并安装和配置 iOS 应用分析所需的基本工具。然后,我们将进入应用分析原则,学习数据可能存在的状态及其查找位置。最后,我们将看到一些工具的实际应用,这些工具有助于加速分析并自动化某些任务。
设置环境
为了正确设置 iOS 应用分析的测试环境,第一步是越狱你的测试设备。作为分析师,你需要完全控制设备上发生的事情,能够访问所有类型的信息,无论它们是存储在内存中还是通过网络传输的。
如何越狱 iPhone 并不在本书的讨论范围之内,因此我们不会详细讲解如何操作。这也非常简单。只需下载一个可用的软件选项,如 Evasi0n(适用于 iOS 7)、Redsn0w(适用于 iOS 8)、PanGu(适用于 iOS 8 或 9)和 TaiG9(适用于 iOS 9),并按照说明操作即可。
一旦设备已越狱并安装了 Cydia,你还需要安装以下工具:
-
OpenSSH:此工具允许你通过 Wi-Fi 或 USB 登录到越狱设备,并获得 root shell 访问权限
-
MTerminal:此工具允许你直接在设备上运行终端命令,而不是通过 SSH 从其他系统登录
-
BigBoss 推荐工具:此包包含一系列有用的命令行工具,如
apt、make、wget、sqlite3等
分析恶意应用程序时,你总是需要通过 shell 与 iPhone 进行交互,无论是安装新工具还是从 shell 启动特定命令;这就是我们安装 OpenSSH 的原因。你需要做的第一件事是更改默认的 root 密码,默认密码是 alpine,以防止其他人通过远程登录到你的设备(并获取 root 权限)。为此,启动你刚安装的 MTerminal 应用并运行以下命令:
# su root
Password:
# passwd
Changing password for root.
New password:
Retype new password:
#
现在,有一种更加方便舒适的方式可以通过 USB 连接到你的 iPhone,而无需强制使用 Wi-Fi。在你的电脑上,通过编辑 ~/.ssh/config 文件并添加以下条目:
Host usb
HostName 127.0.0.1
Port 2222
User root
RemoteForward 8080 127.0.0.1:8080
这将把usb主机名映射到具有所需参数的ssh连接。此外,最后一行设置了端口转发,使得对 iPhone 端口8080的任何连接都会被转发到本地笔记本的端口8080。当你需要设置代理来拦截网络通信时,这将非常有用,正如你在本章后面会看到的那样。现在,你需要某个程序监听端口2222:usbmuxd。这个守护进程负责通过 USB 复用到 iDevice 的连接。要在 OS X 上完成此过程,你只需使用以下命令:
$ brew install usbmuxd
$ iproxy 2222 22
$ ssh usb
完成!现在,你可以通过 USB 在 iPhone 上使用 Shell 了。
在安装其他工具之前,最好确保基准系统是最新的。为此,只需在你的根 Shell 中执行以下命令:
# apt-get update
# apt-get upgrade
update命令从默认仓库获取最新的包列表,而upgrade命令将根据之前运行的update命令获得的信息,提取设备上已安装但没有最新版本的包的更新版本。
以下部分将快速介绍三个重要的工具,这些工具对从内存中提取加密内容(例如代码)以及 Keychain 密码容器非常有用。
class-dump
class-dump是一个命令行工具,用于提取(解密后的)iOS 应用程序中的Objective-C类信息,它与 Cydia 包一起安装。请注意,它仅适用于 Objective-C 应用程序,而不适用于 Swift 应用程序。
最后,请注意,旧版的class-dump-z与 64 位架构不兼容,这意味着从 iPhone 5s 开始就无法使用。
Keychain Dumper
一个非常有趣且实用的工具是 Keychain Dumper,顾名思义,它可以让你从 Keychain 中提取内容。通常,应用程序访问 Keychain 的方式在其权限中指定,这些权限定义了应用程序可以访问的信息。这个工具的工作方式是,二进制文件使用带有通配符权限的自签名证书进行签名。因此,它能够访问所有 Keychain 项。要安装keychain_dumper,只需从 GitHub 仓库github.com/ptoomey3/Keychain-Dumper下载zip压缩包并解压。然后,只需将keychain_dumper二进制文件复制到手机中,方法如下:
$ scp keychain_dumper root@usb:/tmp/
然后,确保keychain_dumper是可执行文件,并验证/private/var/Keychains/keychain-2.db是否对所有用户可读。如果不是,你可以按如下方式设置:
# chmod u+x keychain_dumper
# chmod +r /private/var/Keychains/keychain-2.db
你现在应该能够顺利运行该工具:
# ./keychain_dumper
Generic Password
----------------
Service: AirPort
Account: ******** Work
Entitlement Group: apple
Label: (null)
Generic Field: (null)
Keychain Data: s***iami**********
...
...
如前面的输出所示,默认情况下,keychain_dumper仅提取通用密码和互联网密码。然而,你也可以指定可选标志,以提取 Keychain 中的更多信息,如下所示(通过-h命令获取帮助):
# ./keychain_dumper -h
Usage: keychain_dumper [-e]|[-h]|[-agnick]
<no flags>: Dump Password Keychain Items (Generic Password, Internet
Passwords)
-a: Dump All Keychain Items (Generic Passwords, Internet Passwords,
Identities, Certificates, and Keys)
-e: Dump Entitlements
-g: Dump Generic Passwords
-n: Dump Internet Passwords
-i: Dump Identities
-c: Dump Certificates
-k: Dump Keys
dumpDecrypted
从 App Store 下载的应用程序的可执行文件在下载时已加密。由 Stefan Esser 开发的dumpDecrypted工具(他的 Twitter 用户名为@i0n1c),运行目标应用程序并将其从内存解密并转储到磁盘。要安装dumpDecrypted,请在 Mac 上从其 GitHub 页面(github.com/stefanesser/dumpdecrypted)下载zip存档,解压缩并首先在 Mac 上进行编译。或者,可以通过 idb 安装dumpDecrypted作为工具。
应用程序分析
在分析应用程序时,需要通过分析系统运行时和运行后留在系统上的所有迹象和工件来查看其所有活动和与系统的交互,以及与系统之间的数据收发来了解应用程序如何以及与谁通信。因此,需要查看数据可能存在的三种状态。以下是数据可能存在的三种状态:
数据静止
数据静止时,我们指的是存储介质上记录的所有数据;在我们的案例中,是指移动设备的内部存储器。这些包括plist文件、sqlite数据库、日志以及我们可以直接从介质本身检索的任何其他信息。我们在这里不会详细介绍,因为这个过程与通过分析应用程序目录树结构来检查其文件并分析系统日志的特定应用程序的取证分析相同。有关更多详细信息,请参阅第六章,《分析 iOS 设备》。
数据使用
数据在使用中,顾名思义,指的是应用程序当前正在使用的所有数据。这些数据存储在设备的内存(RAM)中。在计算机恶意软件的标准恶意软件分析中,内存分析尽可能是游戏的一部分。不幸的是,对于 iOS,但一般而言,对整个移动景观来说,内存获取和分析尚未得到良好的发展,尽管已经实现了一些用于转储内存的实用程序/概念验证。然而,内存分析和运行时操纵/滥用超出了本书的范围,但您可以自行探索并参考memscan(hexplo.it/introducing-memscan/)或heapdump-ios(blog.netspi.com/ios-tutorial-dumping-the-application-heap-from-memory/)了解内存分析,以及Hacking and Securing iOS Applications,Jonathan Zdziarski,O'Reilly Media,了解运行时操纵/滥用。
另一个你可能希望保留在工具箱中的有趣工具是Frida(www.frida.re/),它是一个动态插桩框架,允许你将自己的脚本注入到进程中以执行自定义调试逻辑。Frida 采用客户端/服务器模型,这意味着你需要在计算机和 iDevice 上都安装它。
在 Mac 上,只需键入以下内容:
sudo pip install frida
在你的越狱 iDevice 上,启动 Cydia 并通过导航到管理 | 源 | 编辑 | 添加,输入build.frida.re来添加 Frida 的仓库。现在,你应该能够找到并安装 Frida 包。你可以在 Frida 的官方网站上找到更多文档细节。关于内存,基于 Frida 构建的一个非常有用的工具是 Fridump(github.com/Nightbringer21/fridump),一个开源内存转储工具。如果 Frida 在你的计算机和 iDevice 上都正确安装(请记住,最好在两者上安装相同版本),那么接下来的步骤是通过 Frida 使用以下命令获取进程名称:
$ frida-ps -U
PID Name
---- ----------------
1744 Cydia
137 Mail
1738 Settings
1808 Skype
78 BTServer
1792 CacheDeleteAppCo
...
注意
-U参数表示你正在针对通过 USB 连接的设备。
一旦你得到进程名称,就可以像下面的示例一样将它传递给fridump:
$ python fridump.py -u -s --max-size 1048576 Skype
______ _ _
| ___| (_) | |
| |_ _ __ _ __| |_ _ _ __ ___ _ __
| _| '__| |/ _` | | | | '_ ` _ \| '_ \
| | | | | | (_| | |_| | | | | | | |_) |
\_| |_| |_|\__,_|\__,_|_| |_| |_| .__/
| |
|_|
Current Directory: /Projects/iosmem/fridump
Output directory is set to: /Projects/iosmem/dump
Creating directory...
Starting Memory dump...
Progress: [########################################----]88.42%
上述示例将从通过 USB 连接的设备中转储 Skype 进程(-u),以 1MB 为块读取数据(--max-size),并且还会提取所有转储文件中的字符串(-s)。
Fridump 已经在 iOS 8 上成功测试过,但在 iOS 9 上偶尔会在接近结束时卡住。即使在这种情况下,大部分内容也会被转储,你将能够从任何经典计算机环境中的内存转储中检索到你期望的信息:配置文件、密码、执行的代码,一切都以明文呈现。更多信息以及一些案例示例,可以从作者的网站获取(pentestcorner.com/introduction-to-fridump/)。
传输中的数据
传输中的数据指的是在网络中的两个节点之间传输的任何信息,在我们的案例中,就是目标应用程序发送和接收的所有数据。能够观察和操控应用程序通过网络发送的数据,对于在分析可疑应用程序时的行为/动态分析是非常有趣和有用的。
注意
在开始之前,记得将设备与网络(所有网络)隔离,特别是当你正在分析恶意应用程序时。因此,创建一个与外部网络隔离的无线网络(不连接到互联网或你的内部网络),然后将你的 iPhone 设置为飞行模式,并且仅在之后打开 Wi-Fi,这样其他网络接口就保持关闭。
首先,你需要通过计算机将手机的流量路由过来,从而充当中间人角色。为了在ssh配置中使用这个技巧,正如我们之前所做的,首先启动iproxy并建立一个到手机的ssh连接,具体如下:
$ iproxy 2222 22
$ ssh usb
然后,从设备的网络配置中,设置 HTTP 代理为手动,指向本地主机127.0.0.1端口8080。它会被重定向到你的 Mac 的8080端口:

现在 iPhone 已经设置好,你需要在本地主机端口8080上设置一个代理监听。Burp Proxy可能是最受欢迎的代理工具(portswigger.net/burp/);它是跨平台的,而且有一个免费的版本,足以满足我们的需求。然而,市面上还有很多其他的代理工具,你可以选择你喜欢的一个。一旦 HTTP 请求被拦截,使用 Burp 你可以执行多种操作,如修改请求参数、拦截并修改响应等等:

然而,尽管 Burp 在拦截 HTTP/HTTPS 协议时表现非常出色,你可能希望查看所有流量,因为有些应用可能不会使用标准的 HTTP 协议进行通信,并且可能会记录这些流量以便后续分析。为此,你需要安装 Wireshark,这是一款标准的事实上的数据包分析工具,配合tcpdump使用,并在你的环回接口127.0.0.1上运行数据捕获:

当然,在越狱的 iPhone 上,你拥有完全控制权,可以选择直接在设备上安装并使用tcpdump。
自动化分析
本节将简要介绍一些工具,它们能在分析过程中帮助你,无论是加速最常见的任务,还是提供一些额外且非常有用的功能。
idb
idb 是由 Daniel Mayer(他的 Twitter 账号是@DanlAMayer)开发和维护的一个工具,它简化了与 iOS 应用分析相关的一些常见任务。最初是以渗透测试员/研究员为重点构建的,但由于它集成了许多工具并提供了丰富的功能,它对于任何类型的应用分析都非常有价值。idb 是用 Ruby 编写的,安装过程非常简单;你只需要运行以下命令:
$ rvm install 2.1 --enable-shared
$ gem install bundler
$ brew install qt cmake usbmuxd libimobiledevice
$ gem install idb
$ idb
这是 Mac OS X 的操作流程。关于在其他系统上构建和运行的更多信息,你可以参考官方网站www.idbtool.com/。
完成配置步骤并安装设备所需的附加工具后,启动 idb 后,你需要将 idb 连接到 USB 设备,选择一个应用并开始分析。请注意,尽管它将运行一个漂亮的图形界面(GUI),但你仍然会在启动 idb 的 shell 中被提示输入 iDevice 的 root 密码。
点击分析二进制文件...,如下面的截图所示,将提供关于二进制文件的初步信息,验证包括PIE、堆栈溢出保护和ARC是否启用,这些都能降低发现并利用内存损坏漏洞的可能性。此外,如果二进制应用被加密,idb将运行dumpdecrypted来解密它,再进行分析:

你还可以从二进制标签中提取与二进制应用相关的其他信息。正如你将看到的,idb 会提取解密后的二进制文件中的所有字符串。这是分析标准计算机恶意软件时会执行的标准步骤。这个功能非常有用,因为你可以在这里找到 API 密钥、凭证、加密密钥、URL 和其他有用的线索。从静态分析的角度来看,idb 的二进制分析允许你提取所有类的信息。
说到静态数据,在存储标签下,你可以分析所有与目标应用相关的文件,例如plist、sqlite数据库和Cache.db,其中包含缓存的 HTTP 请求/响应以及 Web 应用缓存的离线数据,如图片、HTML、JavaScript、样式表等。idb 工具还允许你从文件系统标签中浏览应用的树状结构,并拍摄和存储不同的快照,以便后续在不同阶段进行导航和比较:

另外两个有趣的功能是URL 处理程序,它显示 URL 处理程序的列表,并包括一个基础的模糊测试工具,可以通过 URL 方案模糊输入数据,以及Keychain转储工具,它允许你使用keychain_dump转储 Keychain。
工具标签包含几个非常实用的工具,具体如下:
-
后台截图:尽管该工具更适用于取证/安全目的,但它会寻找系统在将应用置于后台(通过按下 Home 按钮)时拍摄的最终截图。
-
证书管理器:此工具可以加速 CA 证书的管理和安装。例如,在使用 Burp 进行 HTTPS 流量分析时,它非常有用,尤其是当应用程序检查 SSL 是否正常时。
-
/etc/hosts 文件编辑器:正如我们之前所看到的,应用程序并不总是使用 HTTP/S 协议,因此 Burp 无法拦截。使用此编辑器,你可以快速访问并修改 iPhone 的
/etc/hosts文件,以便将流量重定向到你为分析启动的自定义服务。

最后但同样重要的是,idb 通过 日志 和 粘贴板 标签分别提供实时日志(syslog)和粘贴板查看器(参考以下截图)。虽然在你自己测试应用时监控粘贴板可能看起来并不是特别有用,但你可能会惊讶地发现,应用程序也使用粘贴板进行 进程间通信 (IPC)。默认情况下,idb 只监控主(默认)粘贴板,但你可以在右侧列表中添加其他粘贴板名称,这样你也可以监控私人粘贴板。
关于日志面板,idb 包含了系统消息和应用程序通过 NSLog 产生的任何日志信息,这些日志通常会暴露敏感数据:

总结
在本章中,我们介绍了一些分析 iOS 应用程序的工具,无论它们是否可疑,主要从行为/动态角度出发。你学习了如何快速分析二进制文件,审查目标应用程序产生的数据和日志,拦截、操作和分析通过网络发送和接收的数据,并使用临时工具包(如 idb)自动化大多数任务。
自测题
Q1. 哪个工具可以用来提取 iOS 应用程序中的 Objective-C 类信息?
-
OpenSSH
-
MTerminal
-
class-dump
-
Keychain Dumper
Q2. 哪个工具可以用来从内存中转储未加密的应用程序?
-
usbmuxd
-
Keychain Dumper
-
dumpDecrypted
-
OpenSSH
Q3. 哪个工具可以用来验证粘贴板内容?
-
dumpDecrypted
-
iRet
-
iLoot
-
idb
Q4. 你会使用哪些工具来分析传输中的数据?
-
Burp Proxy + Wireshark
-
iproxy + Wireshark
-
dumpDecrypted + tcpdump
-
tcpdump + iproxy
Q5. 哪一组工具可以实现任务自动化,以便分析和逆向工程 iOS 应用程序?
-
iLoot
-
idb
-
class-dump
-
dumpDecrypted
附录 A. 参考文献
免费提供的出版物
下面是一些可免费获取的出版物列表:
-
移动设备取证指南,Rick Ayers,Sam Brothers,Wayne Jansen,NIST 特别出版物 800-101,2014 可通过
nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-101r1.pdf获取。 -
企业中移动设备安全管理指南,Murugiah Souppaya,Karen Scarafone,NIST 特别出版物 800-124,2013 可通过
nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-124r1.pdf获取。 -
审核第三方移动应用的技术考虑(草案),Jeffrey Voas,Steve Quirolgico,Christoph Michael,Karen Scarafone,NIST 特别出版物 800-163(草案),2014 可通过
csrc.nist.gov/publications/drafts/800-163/sp800_163_draft.pdf获取。 -
iOS 取证,Christian Javier D'Orazio,2013 可通过
wiki.cis.unisa.edu.au/wki/images/7/7c/DORAZIO_iOS_Forensics_Final_Revise.pdf获取。 -
iOS 取证调查方法,Jonathan Zdziarski,2012 可通过
www.zdziarski.com/blog/wp-content/uploads/2013/05/iOS-Forensic-Investigative-Methods.pdf获取。 -
SIM 与 USIM 文件系统,取证视角,Antonio Savoldi,Paolo Gubian,2007 年 ACM 应用计算研讨会论文集,2007 可通过
www.researchgate.net/publication/220998796_SIM_and_USIM_filesystem_a_forensics_perspective获取。 -
基于假设的方法进行数字取证调查,Brian Carrier,CERIAS 技术报告 2006-06 可通过
www.cerias.purdue.edu/assets/pdf/bibtex_archive/2006-06.pdf获取。 -
数字取证研究路线图,2001 是第一次 数字取证研究研讨会(DFRWS)的报告,可通过
www.dfrws.org/sites/default/files/session-files/pres-social_networking_applications_on_mobile_devices.pdf获取。
工具、手册和报告
下面是一些在线工具、手册和报告的列表:
-
Elcomsoft iOS 取证工具包指南,Colby Lahaie,尚普兰学院 可通过
www.champlain.edu/Documents/LCDI/Elcomsoft_iOS_Forensic_Toolkit_Guide.pdf获取。 -
Cellebrite iOS 设备物理提取手册,Cellebrite,详情请见
www.ume-update.com/UFED/iOS_User_Manual.pdf -
按下那个按钮会发生什么?,Cellebrite,详情请见
www.cellebrite.com/collateral/Explaining_Cellebrite_UFED_Data_Extraction_Processes.pdf -
Phone Forensics Express v2.1.2.2761 移动设备采集工具测试结果,详情请见
www.dhs.gov/sites/default/files/publications/508_Test%20Report_NIST_Mobile_Phone%20Forensics%20Express%20v2.1.2.2761_December%202015.pdf -
Lantern v4.5.6 移动设备采集工具测试结果,详情请见
www.dhs.gov/sites/default/files/publications/508_Test%20Report_NIST_Lantern%20v4.5.6_August%202015_Final_1.pdf -
移动设备采集工具测试结果:Lantern v2.3,NIST,详情请见
ncjrs.gov/pdffiles1/nij/241154.pdf -
iOS 法医分析与开源工具,Andrey Belenko,Zeronights,2014,详情请见
2014.zeronights.org/assets/files/slides/belenko.pdf -
Elcomsoft iOS 法医工具包,64 位设备和 iOS 9 支持的物理采集,详情请见
www.elcomsoft.com/PR/eift_151118_en.pdf -
Cellebrite 解锁服务现已提供,适用于 Apple iOS 9,详情请见
www.cellebrite.com/Pages/cellebrite-unlocking-services-now-available-for-apple-ios-9-and-samsung-galaxy-s6-and-s7-devices -
Apple iOS 和 Watch OS 证据,详情请见
docs.google.com/spreadsheets/d/1zAqSSiLZ-Fw6RrXg7qegkxbE7ejXI_mpxQre_ybWRWw/ -
IP Box 用户教程,详情请见
www.champlain.edu/Documents/LCDI/IP_BOX_User_Tutorial_Edited.docx -
IP Box 文档,详情请见
www.teeltech.com/wp-content/uploads/2014/11/IP-Box-documentation-rev2-1-16-2015.pdf
Apple 官方文档
官方 Apple 文档可直接从 Apple 官网下载。关于安全性和法医领域,以下是一些最有趣的论文:
-
法律流程指南,美国执法机关的信息可以在
www.apple.com/privacy/government-information-requests查看 -
iOS 安全性,2016 年 5 月可以在
www.apple.com/business/docs/iOS_Security_Guide.pdf查看 -
iPhone 用户指南可以在 http://help.apple.com/iphone/和
manuals.info.apple.com/MANUALS/1000/MA1565/en_US/iphone_user_guide.pdf查看 -
iPhone 技术规格可以在
support.apple.com/specs/#iphone查看 -
iPad 用户指南可以在
support.apple.com/manuals/#ipad和manuals.info.apple.com/MANUALS/1000/MA1595/en_US/ipad_user_guide.pdf查看 -
iPad 技术规格可以在
support.apple.com/specs/#ipad查看 -
iPod touch 用户指南可以在
support.apple.com/manuals/#ipodtouch和manuals.info.apple.com/MANUALS/1000/MA1596/en_US/ipod_touch_user_guide.pdf查看 -
iPod Touch 技术规格可以在
support.apple.com/specs/#ipodtouch查看 -
如何查找 iOS 设备的序列号、IMEI、MEID、CDN 和 ICCID 号码可以在
support.apple.com/kb/ht4061查看 -
使用 iCloud 或 iTunes 备份和恢复 iOS 设备的信息可以在
support.apple.com/kb/HT1766查看 -
关于 iOS 备份(iTunes)的信息可以在
support.apple.com/kb/ht4946查看 -
使用
support.apple.com/kb/HT5874上的信息保护你的 iOS 设备 -
忘记密码或设备禁用(iOS)相关信息可以在
support.apple.com/kb/HT1212查看 -
iCloud 存储和备份概述可以在
support.apple.com/kb/PH12519查看 -
关于故障排除和创建 iCloud 备份的信息可以在
support.apple.com/kb/TS3992查看 -
HFS Plus 卷格式信息可以在
developer.apple.com/legacy/library/technotes/tn/tn1150.html查看
设备安全与数据保护
如果读者对了解 iOS 设备的安全性感兴趣,以下是一些最有趣的研究:
-
识别 iOS 设备中的后门、攻击点、和监控机制,Jonathan Zdziarski,《数字调查》,第 11 卷,第 1 期,2014 年 3 月 可在
www.sciencedirect.com/science/article/pii/S1742287614000036阅读。相关的演示文稿可在pentest.com/ios_backdoors_attack_points_surveillance_mechanisms.pdf获取。 -
iPhone 安全模型与漏洞,Cedric Halbronn,Jean Sigwald,Sogeti Lab,2010 可在
esec-lab.sogeti.com/dotclear/public/publications/10-hitbkl-iphone.pdf阅读。 -
iPhone 数据保护深入分析,Jean-Baptiste Bédrune,Jean Sigwald,Sogeti Lab,2012 可在
esec-lab.sogeti.com/static/publications/11-hitbamsterdam-iphonedataprotection.pdf阅读。 -
iOS 法医分析,Jean-Baptiste Bédrune,Jean Sigwald 可在
www.sstic.org/media/SSTIC2012/SSTIC-actes/forensicsios/SSTIC2012-Slides-forensicsios-sigwald_bedrune.pdf阅读。 -
克服数据保护以重新启用 iOS 法医分析,Andrey Belenko,Black Hat USA,2011 可在
media.blackhat.com/bh-us-11/Belenko/BH_US_11_Belenko_iOS_Forensics_Slides.pdf阅读。 -
在法医调查中处理 iOS 加密,Jochem van Kerkwijk,阿姆斯特丹大学,2011 可在
http://www.delaat.net/rp/2010-2011/p26/report.pdf阅读。 -
iOS 钥匙串弱点 FAQ,Jens Heider,Rachid El Khayari,弗劳恩霍夫信息安全技术研究所(SIT),2012 可在
sit.sit.fraunhofer.de/studies/en/sc-iphone-passwords-faq.pdf阅读。 -
丢失的 iPhone?丢失的密码!,Jens Heider,Matthias Boll,弗劳恩霍夫信息安全技术研究所(SIT),2011 可在
www.sit.fraunhofer.de/fileadmin/dokumente/studien_und_technical_reports/Whitepaper_Lost_iPhone.pdf阅读。 -
iOS 加密系统,Peter Teufl,Thomas Zefferer,Christof Stromberger,Christoph Heckhenblaikner,应用信息处理与通信研究所,2014 可在
www.a-sit.at/pdfs/Technologiebeobachtung/ios-encryption-systems.pdf阅读。
设备加固
关于如何加强 iOS 设备安全的信息可以在以下论文中找到:
-
终端用户设备安全指南,Apple iOS 9,2015 可通过以下链接获取:
www.gov.uk/government/publications/end-user-devices-security-guidance-apple-ios-9/end-user-devices-security-guidance-apple-ios-9 -
CIS Apple iOS 9 基准,互联网安全中心,2016 可通过以下链接获取:
benchmarks.cisecurity.org/downloads/show-single/?file=appleios9.100 -
CIS Apple iOS 7 基准,互联网安全中心,2014 可通过以下链接获取:
benchmarks.cisecurity.org/downloads/show-single/?file=appleios7.110 -
iOS 强化配置指南,澳大利亚政府-国防部,2012 可通过以下链接获取:
www.asd.gov.au/publications/iOS5_Hardening_Guide.pdf -
Apple iOS 5 设备的安全配置建议,美国国家安全局,2012 可通过以下链接获取:
cryptome.org/2012/06/apple-ios5-sec.pdf
iTunes 备份
在与 iTunes 备份结构和分析相关的论文和文章中,最有趣的包括以下几篇:
-
关于 MBDB 和 MBDX 格式的信息可以通过以下链接获取:
code.google.com/p/iphonebackupbrowser/wiki/MbdbMbdxFormat -
iPhone 3GS 取证:使用 Apple iTunes 备份工具进行逻辑分析,Mona Bader,Ibrahim Baggili,小型数字设备取证期刊,2010 可通过以下链接获取:
securitylearn.net/wp-content/uploads/iOS%20Resources/iPhone%203GS%20Forensics%20Logical%20analysis%20using%20Apple%20iTunes%20Backup%20Utility.pdf -
iPhone 备份的取证分析 可通过以下链接获取:
www.exploit-db.com/wp-content/themes/exploit/docs/19767.pdf -
关于加密的 iTunes 备份的信息,由 Hal Pomeranz 在视频Forensic Lunch中提供,2014 年,视频可通过以下链接观看:
www.youtube.com/watch?v=mNLOokxME5A -
关于iTunes 备份分析的更多信息,由Vladimir Katalov提供,2013,Elcomsoft 博客,可通过以下链接获取:
blog.crackpassword.com/2013/09/itunes_backup_analysis/ -
高级智能手机取证,Vladimir Katalov,ElcomSoft 有限公司,2014 可通过以下链接获取:
elcomsoft.com/presentations/nullcon2014.pdf -
查找 iPhone 备份文件以提取证据,克林顿·卡彭,计算机与安全科学学院,伊迪斯·科文大学 可在
ro.ecu.edu.au/cgi/viewcontent.cgi?article=1091&context=adf上找到 -
iPhone 备份文件,渗透测试者的宝藏,达伦·曼纳斯,SANS 学院,2011 可在
www.sans.org/reading-room/whitepapers/testing/iphone-backup-files-penetration-testers-treasure-33859上找到 -
Mac OS X:iOS 设备备份位置 可在
forensicartifacts.com/2015/10/mac-os-x-ios-device-backup-locations/上找到
iCloud
关于 iCloud 的各种演讲从安全性和取证角度展示了最有趣的概念:
-
Ubiquity 取证:你的 iCloud 与您,由 Sarah Edwards 主讲,可在
github.com/mac4n6/Presentations/blob/master/Ubiquity%20Forensics%20-%20Your%20iCloud%20and%20You/Ubiquity_Forensics-Your_iCloud_and_You.pdf上找到 -
高级智能手机取证,弗拉基米尔·卡塔洛夫,ElcomSoft 公司,2014 可在
elcomsoft.com/presentations/nullcon2014.pdf上找到 -
iCloud 钥匙串和 iOS 7 数据保护,安德烈·贝连科,ViaForensics,2013 可在
speakerdeck.com/belenko/icloud-keychain-and-ios-7-data-protection上找到 -
现代智能手机取证,弗拉基米尔·卡塔洛夫,HITBSecConf,2013 可在
conference.hitb.org/hitbsecconf2013kul/materials/D2T2%20-%20Vladimir%20Katalov%20-%20Cracking%20and%20Analyzing%20Apple's%20iCloud%20Protocol.pdf上找到 -
苹果 iCloud 深入解析,弗拉基米尔·卡塔洛夫,HITBSecConf,2013 可在
deepsec.net/docs/Slides/2013/DeepSec_2013_Vladimir_Katalov_-_Cracking_And_Analyzing_Apple_iCloud_Protocols.pdf上找到 -
破解和分析苹果 iCloud 备份,查找我的 iPhone,文档存储,奥列格·阿福宁,REcon,2013 可在
www.elcomsoft.com/PR/recon_2013.pdf上找到 -
关于 iCloud 及其与 Apple®设备同步的数字取证分析,马歇尔大学,2013可以在
www.marshall.edu/forensics/files/FRIEDMANRACHEL-Research-Paper-08242012.pdf查看。
应用数据分析
关于特定应用数据分析的专门文章、演示文稿和论文请参见以下列表:
-
iOS 8.3 版本对取证人员的影响可以在
www.blackbagtech.com/blog/2015/05/06/changes-examiners-face-with-ios-8-3/查看。 -
iOS 8.3:iOS 取证的终结?可以在
blog.digital-forensics.it/2015/06/ios-83-end-of-ios-forensics.html查看。 -
iOS 8 及其对调查的影响可以在
www.blackbagtech.com/blog/2014/09/24/ios-8-and-its-impact-on-investigations/查看。 -
Sauron 的 iOS:iOS 如何追踪你的一切行为可以在
github.com/mac4n6/Presentations/blob/master/iOS%20of%20Sauron%20-%20How%20iOS%20Tracks%20Everything%20You%20Do/iOS_of_Sauron_04162016.pdf查看。 -
解析 iOS“常用位置”可以在
www.mac4n6.com/blog/2015/12/20/parsing-the-ios-frequent-locations查看。 -
Apple iOS:最近删除的图片可以在
forensenellanebbia.blogspot.it/2015/10/apple-ios-recently-deleted-images.html查看。 -
Kik Messenger 取证可以在
www.xploreforensics.com/blog/kik-messenger-forensics.html查看。 -
时间在滴答作响...为 Apple Watch 做取证!演示文稿可以在
github.com/mac4n6/Presentations/blob/master/Apple%20Watch%20-%20Times%20a'%20Tickin'/Apple_Watch_Times_a_Tickin.pdf查看。 -
iOS 应用取证可以在
www.scribd.com/doc/57611934/CEIC-2011-iOS-Application-Forensics查看。 -
第三方应用取证:Apple 移动设备上的应用取证,亚历克斯·莱文森,比尔·斯塔克波尔,达里尔·约翰逊可以在
www.researchgate.net/publication/224221519_Third_Party_Application_Forensics_on_Apple_Mobile_Devices查看。 -
iOS 手机镜像、文件转储和备份调查 文章可以在
www.magnetforensics.com/investigating-ios-phone-images-file-dumps-backups/获取。 -
iOS Notes 应用的分析 文章可以在
articles.forensicfocus.com/2013/11/02/analysis-of-ios-notes-app/获取。 -
ChatOn 即时消息应用的取证痕迹,Iqbal A,Marrington A,Baggili I,IEEE 文章可以在
ieeexplore.ieee.org/xpl/articleDetails.jsp?reload=true&arnumber=6911538获取。 -
移动设备社交网络应用的取证分析,Noora Al Mutawa,Ibrahim Baggili,Andrew Marrington,Elsevier Ltd. 文章可以在
github.com/mac4n6/Presentations/blob/master/Apple%20Watch%20-%20Times%20a'%20Tickin'/Apple_Watch_Times_a_Tickin.pdf获取。 -
从 iPhone 到接入点 文章可以在
articles.forensicfocus.com/2013/09/03/from-iphone-to-access-point/获取。 -
iPhone 上的微信分析,冯高,张颖,Atlantis Press 可以从
www.atlantis-press.com/php/download_paper.php?id=10185下载。 -
了解你的嫌疑人 - 通过 Oxygen Forensics 揭示移动设备中的隐藏证据 文章可以在
www.forensicfocus.com/c/aid=74/webinars/2014/know-your-suspect---uncovering-hidden-evidence-from-mobile-devices-with-oxygen-forensics/获取。 -
关于 iPhone 通话历史数据库的信息可以在
avi.alkalay.net/2011/12/iphone-call-history.html获取。 -
iPhone 通话历史,侦探 Richard Gilleland 文章可以在
cryptome.org/isp-spy/iphone-spy2.pdf获取。 -
谁在发短信?iOS6 sms.db 文章可以在
linuxsleuthing.blogspot.com/2012/10/whos-texting-ios6-smsdb.html获取。 -
解析 iPhone 短信数据库 文章可以在
linuxsleuthing.blogspot.it/2011/02/parsing-iphone-sms-database.html获取。 -
解决 iOS 6 通讯录与 SQLite 陷阱文章可在
linuxsleuthing.blogspot.it/2012/10/addressing-ios6-address-book-and-sqlite.html找到 -
iOS 6 照片流:恢复已删除的相机胶卷照片文章可在
linuxsleuthing.blogspot.it/2013/05/ios6-photo-streams-recover-deleted.html找到 -
从删除的 SQLite 记录中恢复数据:Redux文章可在
linuxsleuthing.blogspot.it/2013/09/recovering-data-from-deleted-sqlite.html找到 -
SQLite 数据解析器以恢复已删除记录博客可在
az4n6.blogspot.com/2013/11/python-parser-to-recover-deleted-sqlite.html找到 -
Tango VoIP 的取证采集与分析,Nhien-An Le-Khac,Christos Sgaras,M-Tahar Kechadi,可在
www.insight-centre.org/sites/default/files/publications/icciet-2014.pdf找到 -
从移动设备获取和分析信息的挑战,Davydov,2014,可在
computerforensicsblog.champlain.edu/wp-content/uploads/2014/05/Challenges-in-Obtaining-and-Analyzing-Information-from-Mobile-Devices-DavydovO-5-20-2014.pdf找到 -
高级智能手机取证海报由SANS DFIR提供,链接地址:
digital-forensics.sans.org/media/DFIR-Smartphone-Forensics-Poster.pdf
相关书籍
其他相关书籍如下:
-
Bommisetty, Satish, Tamma, Rohit, Mahalik Heather,实用移动取证,由Packt Publishing出版,2014
-
Zdziarski, Jonathan,破解与保护 iOS 应用程序,由O'Reilly出版,2012
-
Miller, Charlie, Blazakis, Dyonysus, Dai Zovi, Dino, Esser, Stefan, Iozzo, Vincenzo, Weinmann, Ralf-Philip,iOS 黑客手册,由John Wiley & Sons出版,2012
-
Hogg, Andrew, Strzempka, Katie,iPhone 和 iOS 取证:调查,分析与 Apple iPhone、iPad 和 iOS 设备的移动安全,由Syngress出版,2011
-
Casey, Eoghan,数字证据与计算机犯罪:法医学、计算机与互联网 第三版,由Academic Press出版,2011
-
Morrissey, Sean,iOS 取证分析:iPhone、iPad 和 iPod touch,由Apress出版,2010
-
Jonathan, Zdziarski,iPhone 取证,由O'Reilly出版,2008
-
Kubasiak, Ryan, Morrissey, Sean,Mac OS X、iPod 和 iPhone 取证分析工具包,由Syngress出版,2008
-
Casey, Eoghan,《数字证据与计算机犯罪 第一版》,学术出版社,2000
附录 B. iOS 取证工具
获取工具
以下是物理获取工具(iPhone 2G/3G/3GS/4,iPad 1,iPod touch 1/2/3/4)的列表:
-
UFED Physical Analyzer:
www.cellebrite.com -
Elcomsoft iOS Forensic Toolkit:
www.elcomsoft.com/ -
AccessData Mobile Phone Examiner Plus:
www.accessdata.com/solutions/digital-forensics/mobile-phone-examiner -
Lantern:
katanaforensics.com/ -
XRY:
www.msab.com/ -
iXAM forensics:
www.ixam-forensics.com/ -
iPhone 数据保护工具:
code.google.com/p/iphone-dataprotection/ -
Paraben's Device Seizure:
www.paraben.com/device-seizure.html
对于越狱的 iPhone 4s/5/5c,iPad 2/3/4,iPad mini 1 的物理获取工具,你可以使用 Elcomsoft iOS Forensic Toolkit。
对于高级逻辑获取工具(所有型号),你可以选择 UFED Physical Analyzer 和 Oxygen Forensic。
以下是备份获取工具(所有型号)的列表:
-
iTunes:
www.apple.com/itunes/download/ -
Libimobiledevice:
www.libimobiledevice.org/ -
iMobileDevice:
quamotion.mobi/iMobileDevice/Download -
UFED Physical Analyzer/UFED 4PC/Ufed Touch:
www.cellebrite.com -
Oxygen Forensic® Suite Standard/Analyst:
www.oxygen-forensic.com/en/ -
Mobiledit Forensic:
www.mobiledit.com/forensic -
AccessData Mobile Phone Examiner Plus:
www.accessdata.com/solutions/digital-forensics/mobile-phone-examiner -
Lantern:
katanaforensics.com/ -
XRY:
www.msab.com/ -
Mobilyze:
www.blackbagtech.com/software-products/mobilyze-9/mobilyze.html -
SecureView:
secureview.us/ -
Paraben's Device Seizure:
www.paraben.com/device-seizure.html
iDevice 浏览工具和其他非取证工具
以下是 iDevice 浏览工具和其他非取证工具的列表:
-
iFunBox:
www.i-funbox.com/ -
iBackupBot:
www.icopybot.com/itunes-backup-manager.htm -
iTools:
sale.itools.cn/ -
Wondershare Dr.Fone iOS:
www.wondershare.com/data-recovery-mac/mac-iphone-data-recovery.html -
iSkysoft iPhone Data Recovery:
www.iskysoft.com/iphone-data-recovery/ -
iMazing:
imazing.com/ -
iExplorer:
www.macroplant.com/iexplorer/ -
Syncios:
www.sync-droid.com/ -
PhoneView:
www.ecamm.com/mac/phoneview/
iDevice 备份分析器
以下是 iDevice 备份分析器的列表:
-
UFED Physical Analyzer/UFED 4PC/Ufed Touch:
www.cellebrite.com -
Oxygen Forensic® Suite Standard/Analyst:
www.oxygen-forensic.com/en/ -
Elcomsoft Phone Viewer:
www.elcomsoft.com/epv.html -
Mobiledit Forensic:
www.mobiledit.com/forensic -
AccessData Mobile Phone Examiner Plus:
www.accessdata.com/solutions/digital-forensics/mobile-phone-examiner -
iPhone Backup Analyzer:
github.com/PicciMario/iPhone-Backup-Analyzer-2 -
iPhone Analyzer:
sourceforge.net/projects/iphoneanalyzer/ -
iPhone Backup Browser:
code.google.com/p/iphonebackupbrowser/ -
Super Crazy Awesome iPhone Backup Extractor:
supercrazyawesome.com/ -
Apple iTunes Backup Parser EnScript:
www.proactivediscovery.com/apple-itunes-backup-parser/ -
iBackupBot:
www.icopybot.com/itunes-backup-manager.htm -
iPhone Backup Extractor:
www.iphonebackupextractor.com/ -
iPhone Backup Viewer:
www.imactools.com/iphonebackupviewer/ -
iBackup Extractor:
www.wideanglesoftware.com/ibackupextractor/ -
Smsiphone.org:
www.smsiphone.org/ -
Logical iOS Forensic Examiner:
www.unhcfreg.com/#!datasetsandtools/c18k6 -
iTunes Backup Extractor:
www.backuptrans.com/itunes-backup-extractor.html
iDevice 加密备份
以下是分析 iDevice 加密备份的工具列表:
-
Elcomsoft Phone Password Breaker:
www.elcomsoft.com/eppb.html -
iPhone Backup Unlocker:
www.windowspasswordsrecovery.com/product/iphone-backup-unlocker.htm -
Mbdb 文件解析器:
github.com/halpomeranz/mbdbls
iCloud 备份
分析 iCloud 备份的工具列表如下:
-
Elcomsoft Phone Password Breaker:
www.elcomsoft.com/eppb.html -
Passware Kit Forensic:
www.passware.com/kit-forensic/ -
iPhone Backup Extractor:
www.iphonebackupextractor.com/ -
Wondershare Dr.Fone iOS:
www.wondershare.com/data-recovery-mac/mac-iphone-data-recovery.html -
iSkysoft iPhone 数据恢复:
www.iskysoft.com/iphone-data-recovery/ -
iPhone 数据恢复:
www.tenorshare.com/products/iphone-data-recovery-win.html -
InflatableDonkey:
github.com/horrorho/InflatableDonkey -
iLoot:
github.com/hackappcom/iloot
越狱工具
有关越狱工具的更多信息,请参考 iPhone Wiki 上的越狱工具页面:theiphonewiki.com/wiki/Jailbreak。
iOS 9
对于 iOS 9,请参考以下列表:
- Pangu:
en.pangu.io/
iOS 8
对于 iOS 8,请参考以下列表:
-
Pangu:
en.8.pangu.io/ -
Taig:
www.taig.com/en/
iOS 7
对于 iOS 7,请参考以下列表:
-
Pangu:
en.7.pangu.io/ -
Evasi0n7:
evasi0n.com/ -
Geeksn0w:
geeksn0w.it/
iOS 6
对于 iOS 6,请参考以下列表:
-
Evasi0n:
evasi0n.com/iOS6/ -
Redsn0w:
blog.iphone-dev.org/tagged/redsn0w -
Sn0wbreeze:
ih8sn0w.com/ -
P0sixspwn:
p0sixspwn.com/
数据分析
前面提到的所有获取工具也具有分析功能;因此,在此我们仅列出专门用于数据分析/解析的工具。
法医工具包
法医工具包列表如下:
-
AccessData FTK:
accessdata.com/solutions/digital-forensics/forensic-toolkit-ftk -
GuidanceSoftware Encase Forensic:
www.guidancesoftware.com/products/Pages/encase-forensic/overview.aspx -
X-Ways Forensics:
www.x-ways.net/forensics/index-m.html -
WinHex:
www.x-ways.net/winhex/ -
BlackBag Blacklight:
www.blackbagtech.com/software-products/blacklight-7/blacklight.html
SQLite 查看器
分析 SQLite 数据库的工具如下:
-
SQLite Database Browser:
sqlitebrowser.org/ -
SQLite Expert:
www.sqliteexpert.com/ -
SQLite Studio:
sqlitestudio.pl/ -
SQLite Manager:
addons.mozilla.org/en-US/firefox/addon/sqlite-manager/ -
SQLite Spy:
www.yunqa.de/delphi/doku.php/products/sqlitespy/index -
SQLite Forensic Reporter:
www.filesig.co.uk/sqlite-forensic-reporter.html
SQLite 记录恢复工具
用于 SQLite 记录恢复的工具如下:
-
SQLite Recovery Python Parser:
az4n6.blogspot.it/2013/11/python-parser-to-recover-deleted-sqlite.html和github.com/mdegrazia/SQLite-Deleted-Records-Parser -
Epilog:
www.cclgroupltd.com/product/epilog-sqlite-forensic-tool/ -
Oxygen Forensics SQLite Viewer:
www.oxygen-forensic.com/en/features/analyst/data-viewers/sqlite-viewer -
SQLite Recovery:
sandersonforensics.com/forum/content.php?190-SQLite-Recovery -
Undark:
pldaniels.com/undark/
Plist 查看器
分析 Plist 文件的工具如下:
-
Plist Editor Pro for Windows:
www.icopybot.com/plist-editor.htm -
Oxygen Forensics Plist Viewer:
www.oxygen-forensic.com/en/features/analyst/data-viewers/plist-viewer -
PlistEdit Pro:
fatcatsoftware.com/plisteditpro/
iOS 分析套件
最有趣的 iOS 分析工具套件如下:
-
Internet Evidence Finder:
www.magnetforensics.com/ -
Belkasoft Evidence Center:
belkasoft.com/ec -
BlackBag Blacklight:
www.blackbagtech.com/software-products/blacklight-6/blacklight.html -
iPhone Tools:
code.google.com/p/linuxsleuthing/downloads/list
应用程序分析工具
应用程序分析工具如下:
-
Elcomsoft Explorer for WhatsApp:
www.elcomsoft.com/exwa.html -
SkypeExtractor:
www.skypextractor.com/ -
SkypeLogView:
nirsoft.net/utils/skype_log_view.html -
Safari Forensic Tools:
jafat.sourceforge.net/files.html -
Andriller:
andriller.com/ -
iPhone History Parser:
az4n6.blogspot.it/2014/07/safari-and-iphone-internet-history.html -
iThmb Converter:
www.ithmbconverter.com/ -
Ultra File Opener:
www.ultrafileopener.com/formats/ithmb/ -
class-dump-z:
code.google.com/p/networkpx/wiki/class_dump_z -
Keychain Dumper:
github.com/ptoomey3/Keychain-Dumper
Consolidated.db
Consolidated.db 的工具如下:
-
iStalkr:
www.evigator.com/free-apps/ -
iPhone Tracker:
petewarden.github.io/iPhoneTracker/ -
iOS Tracker:
tom.zickel.org/iostracker/
应用程序反向工程工具
应用程序反向工程工具如下:
-
class-dump-z:
code.google.com/p/networkpx/wiki/class_dump_z -
Keychain Dumper:
github.com/ptoomey3/Keychain-Dumper -
Dump Decrypted:
github.com/stefanesser/dumpdecrypted -
Read Mem:
github.com/gdbinit/readmem -
iOS Reverse Engineering Toolkit (iRET):
github.com/S3Jensen/iRET
附录 C. 自测答案
第一章:数字取证与移动取证

第二章:iOS 设备简介

第三章:从 iDevice 获取证据

第四章:从 iTunes 备份获取证据及分析

第五章:从 iCloud 获取证据及分析

第六章:分析 iOS 设备

第七章:应用程序与恶意软件分析
















浙公网安备 33010602011771号