移动取证实践指南第四版-全-

移动取证实践指南第四版(全)

原文:annas-archive.org/md5/6efd6e14f5596709cdc9a37a8f4a6218

译者:飞龙

协议:CC BY-NC-SA 4.0

前言

手机取证是指在法医学条件下从手机中提取数据的科学。这是我们成功出版的《实用移动取证》一书的第四版,深入探讨了移动取证的概念及其在当今世界的重要性。

本书重点教授你在各种移动平台上进行移动设备调查时的最新取证技术。你将学习多种操作系统版本的取证技巧,包括 iOS 12、iOS 13、Android 9、Android 10 以及 Windows 10。你将深入了解最新的开源和商业移动取证工具,帮助你有效地分析和提取数据。你将学习如何检查设备,如何从云端获取数据,并成功地记录调查报告。你还将探索应用程序的逆向工程和识别恶意软件的方法。你还将接触到流行的第三方应用程序解析,例如 Facebook 和 WhatsApp。

在阅读完本书后,你将掌握各种移动取证技术,利用开源解决方案分析和提取手机设备中的数据。

本书适用对象

本书适合那些在移动取证或开源解决方案方面经验较少或只有基础经验的法医检查员。本书对计算机安全专业人士、研究人员以及任何希望深入了解移动设备内部结构的人也会有帮助。对数字取证实践有一定了解会更为有益。

本书内容

第一章,移动取证概述,为你介绍了移动取证的概念、核心价值以及相关挑战。本章还概述了执行移动取证时的实际方法和最佳实践。

第二章,了解 iOS 设备的内部结构,为你提供了 iOS 取证的洞察。你将了解文件系统的布局、安全特性以及 iOS 设备上文件的存储方式。

第三章,从 iOS 设备获取数据,讨论了帮助你从 iOS 设备获取数据并进行法医检查的工具。并非所有工具都是平等的,因此了解哪些工具最适合完成工作非常重要。

第四章,从 iOS 备份中获取数据,详细讨论了 iOS 设备的备份文件,包括用户备份、法医备份、加密备份和 iCloud 备份文件,以及进行法医检查的方法。

第五章,iOS 数据分析与恢复,通过展示如何分析从备份文件中恢复的数据,进一步深入到法医调查中。具有潜在证据价值的数据区域将详细解释。

第六章,iOS 取证工具,为便于了解,本章介绍了多种商业工具的使用,例如 Elcomsoft iOS Forensic Toolkit、Cellebrite(UFED4PC、Touch 和 Physical Analyzer)、BlackLight、Oxygen Forensic Detective、AccessData MPE+、EnCase、Belkasoft Evidence Center、MSAB XRY 等,这些工具可用于 iOS 设备的取证采集和分析。本章详细介绍了执行 iOS 设备采集与分析所需的流程。

第七章,理解 Android,介绍了 Android 平台的基础知识、内置的安全功能以及其文件系统。本章建立了基本的取证知识,为后续章节提供了帮助。

第八章,Android 取证环境设置与数据提取前技术,告诉你在设置数字取证检查环境时需要考虑的事项。本章提供了关于如何 root 一台 Android 设备并绕过屏幕锁功能的逐步信息。

第九章,Android 数据提取技术,帮助你识别 Android 设备上的敏感位置,并解释了可以应用于该设备的各种逻辑和物理技术,以提取所需信息。

第十章,Android 数据分析与恢复,解释了如何从镜像文件中提取相关数据,如通话记录、短信和浏览历史。我们还将介绍数据恢复技术,帮助我们恢复设备上被删除的数据。

第十一章,Android 应用分析、恶意软件与逆向工程,解释了尽管早期章节讨论的数据提取与恢复技术提供了获取宝贵数据的途径,但本章中的应用分析帮助我们获取有关应用程序的具体信息,如偏好设置和权限。

第十二章,Windows Phone 取证,讨论了 Windows Phone,尽管它在移动市场中占比不大,因此大多数取证人员对设备上的数据格式、嵌入式数据库及其他证据不太熟悉。本章概述了 Windows Phone 取证,描述了获取和检查 Windows 移动设备数据的各种方法。

第十三章,解析第三方应用程序文件,将向你介绍在 Android 设备、iOS 设备和 Windows 手机上看到的各种应用程序。每个应用程序会因版本和设备不同而有所不同,但它们的基本结构是相似的。我们将研究数据如何存储,以及为什么首选项文件对你的调查很重要。

为了最大限度地利用本书

确保你有一个测试用的移动设备,用来实验本书中解释的技术。不要在个人手机上尝试这些技术。

本书中解释的一些技术,如设备 root 操作,特定于设备品牌和运行的操作系统。在尝试这些技术之前,确保你已经进行充分的研究并收集了足够的信息。

如果你使用的是本书的数字版本,建议你自己输入命令。这样做可以帮助你避免因复制和粘贴代码而产生的潜在错误。

下载彩色图像

我们还提供了一个 PDF 文件,包含了本书中使用的带颜色的截图/图表。你可以在这里下载:www.packtpub.com/sites/default/files/downloads/9781838647520_ColorImages.pdf

使用的约定

本书中使用了一些文本约定。

CodeInText:表示文本中的代码单词、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 用户名。以下是一个例子:“将下载的WebStorm-10*.dmg磁盘映像文件作为另一个磁盘挂载到你的系统中。”

代码块如下所示:

html, body, #map {
 height: 100%; 
 margin: 0;
 padding: 0
}

当我们希望引起你对代码块中特定部分的注意时,相关的行或项目会使用粗体显示:

[default]
exten => s,1,Dial(Zap/1|30)
exten => s,2,Voicemail(u100)
exten => s,102,Voicemail(b100)
exten => i,1,Voicemail(s0)

任何命令行输入或输出都以如下形式写出:

$ mkdir css
$ cd css

粗体:表示一个新术语、一个重要词汇或你在屏幕上看到的单词。例如,菜单或对话框中的词汇在文本中会以这种形式出现。以下是一个例子:“从管理面板中选择系统信息。”

警告或重要提示以这种形式出现。

提示和技巧以如下形式出现。

免责声明

本书中的信息仅用于道德方式使用。如果没有设备所有者的书面许可,不得使用本书中的任何信息。如果进行非法操作,你可能会被逮捕并依法起诉。Packt 出版公司对你误用书中任何信息不承担责任。本书中的信息仅应在获得相关负责人书面授权的测试环境中使用。

联系我们

我们始终欢迎读者的反馈。

一般反馈:如果您对本书的任何方面有疑问,请在邮件主题中注明书名,并通过 customercare@packtpub.com 与我们联系。

勘误:虽然我们已尽最大努力确保内容的准确性,但错误仍然可能发生。如果您在本书中发现错误,我们将不胜感激,如果您能向我们报告。请访问 www.packtpub.com/support/errata,选择您的书籍,点击“勘误提交表单”链接,并填写详细信息。

盗版:如果您在互联网上发现任何形式的我们作品的非法复制品,我们将非常感激您提供该材料的位置信息或网站名称。请通过电子邮件联系我们,地址为 copyright@packt.com,并附上相关链接。

如果您有兴趣成为作者:如果您在某个领域有专业知识,并且有兴趣写作或参与编写书籍,请访问 authors.packtpub.com

评论

请留下您的评论。阅读并使用本书后,为什么不在您购买本书的网站上留下评论呢?潜在的读者可以看到并参考您的公正意见,以便做出购买决策,Packt 也能了解您对我们产品的看法,而我们的作者也可以看到您对他们书籍的反馈。谢谢!

如需了解更多有关 Packt 的信息,请访问 packt.com

第一章:移动取证简介

毋庸置疑,移动设备已经成为我们生活的一部分,并彻底改变了我们进行大多数活动的方式。因此,移动设备现在已经成为一个庞大的存储库,保存着关于其拥有者的敏感和个人信息。这反过来促进了移动设备取证学的发展,取证学是数字取证的一个分支,专门处理从移动设备中提取数据。本书将帮助你了解在三个主要平台上进行取证的技术——Android、iOS 和 Windows。我们将介绍可以用来收集不同移动设备证据的各种方法。

本章将覆盖以下主题:

  • 移动取证的需求

  • 了解移动取证

  • 移动取证的挑战

  • 手机证据提取过程

  • 实用的移动取证方法

  • 手机中存储的潜在证据

  • 检查与分析

  • 证据规则

  • 良好的取证实践

移动取证的需求

根据 Statista 的报告(statista.com),全球手机用户数预计在 2020 年将超过 50 亿。世界正见证技术和用户从桌面电脑迁移到手机的过程。移动市场的大部分增长可以归因于智能手机需求的持续增加。

根据爱立信的一份报告,到 2022 年,全球移动数据流量将达到每月 71 艾字节(exabytes),相比 2017 年的 8.8 艾字节,年复合增长率为 42%。如今的智能手机,如苹果的 iPhone 和三星的 Galaxy 系列,是具有高性能、大容量存储和增强功能的紧凑型计算机。手机是用户访问的最具个人性的电子设备。它们用于执行简单的通信任务,如拨打电话和发短信,同时也支持浏览互联网、收发电子邮件、拍照和录像、创建和存储文档、通过 GPS 服务定位以及管理商业事务。

随着新功能和应用程序的不断加入,手机上存储的信息量也在不断增长。

手机已经成为便携的数据载体,跟踪你所有的活动。随着手机在日常生活和犯罪中的普及,从手机中获取的数据已经成为与刑事、民事甚至高调案件相关的调查中不可或缺的证据来源。很少有数字取证调查不包括手机。2010 年,纽约时代广场的未遂炸弹袭击案件中,手机通话记录和 GPS 数据被用来帮助破案。

案件的详细信息可以在www.forensicon.com/forensics-blotter/cell-phone-email-forensics-investigation-cracks-nyc-times-square-car-bombing-case/找到。

从手机中恢复数字证据的科学被称为手机取证,我们将在下一节讨论它。数字证据被定义为存储在电子设备上、由电子设备接收或传输的信息和数据,这些数据可用于调查。数字证据包括所有可以作为案件证据使用的数字数据。

了解手机取证

数字取证是法医学的一个分支,专注于恢复和调查存储在电子或数字设备中的原始数据。该过程的目标是在不改变设备上现有数据的情况下,提取并恢复数字设备中的任何信息。随着计算机和各种其他数字设备的快速发展,数字取证也与时俱进。根据涉及的数字设备类型,数字取证有多个分支,如计算机取证、网络取证和手机取证。

手机取证是数字取证的一个分支,专门处理从移动设备中获取和恢复证据的问题。取证有效性是数字取证领域中广泛使用的术语,用来确认和证明某一特定取证技术或方法的使用。确保取证过程不改变原始证据是有效取证检查的核心原则之一,而这对于移动设备来说是极其困难的。有些取证工具需要与移动设备进行通信,因此标准的写保护在取证过程中无法有效工作。

其他取证获取方法可能涉及在提取数据进行取证检查之前,从移动设备上拆卸芯片或安装自定义引导程序。在无法在不改变设备配置的情况下进行检查或数据获取的情况下,必须仔细测试并记录程序及更改,以供以后参考。遵循正确的方法和指南对于检查移动设备至关重要,因为这样可以获得最有价值的数据。与任何证据收集一样,不按照正确的程序进行检查可能会导致证据丢失或损坏,或者使其在法庭上无法作为有效证据。

移动取证过程分为三个主要类别——扣押获取检查/分析。在扣押手机作为证据来源时,取证员面临一些挑战。在犯罪现场,如果发现手机已关机,你作为检查员应将设备放入法拉第袋中,以防设备自动开机后发生变化。法拉第袋专门设计用来隔离手机与网络的连接。

如果手机被发现开机,关机的操作涉及很多需要考虑的问题。如果手机被 PIN 码或密码锁定,或经过加密,你需要绕过锁定或确定 PIN 码才能访问设备。手机是联网设备,可以通过不同的方式发送和接收数据,例如电信系统、Wi-Fi 接入点和蓝牙。因此,如果手机处于开机状态,犯罪分子可能通过执行远程擦除命令来安全地清除手机上存储的数据。当手机开机时,应将其放入法拉第袋中。如果可能,在将移动设备放入法拉第袋之前,你应断开它与网络的连接,通过开启飞行模式并禁用所有网络连接(Wi-Fi、GPS、热点等)来保护证据。这还可以延长电池寿命,因为电池在法拉第袋中会消耗电量,并防止法拉第袋出现泄漏。一旦移动设备被正确扣押,检查员可能需要几种取证工具来获取和分析存储在手机上的数据。

移动设备取证获取可以通过多种方法进行,具体方法将在后面定义。这些方法会影响所需的分析量,具体内容将在后续章节中详细讨论。如果某种方法失败,必须尝试另一种方法。可能需要多次尝试和不同的工具,以便从移动设备中获取最大量的数据。

手机是动态系统,在提取和分析数字证据时给我们带来了很多挑战。不同制造商的不同类型手机数量的快速增长使得开发单一的流程或工具来检查所有类型的设备变得困难。随着现有技术的进步和新技术的引入,手机不断发展。此外,每部手机都设计有多种嵌入式操作系统。因此,取证专家需要特别的知识和技能来获取和分析这些设备。

移动取证中的挑战

当涉及移动平台时,最大的取证挑战之一是数据可以在多个设备之间访问、存储和同步。由于数据易变且可以迅速在远程进行转换或删除,需要更多的努力来保留这些数据。移动取证与计算机取证不同,并对取证人员提出独特挑战。

执法部门和取证人员经常难以从移动设备中获取数字证据。以下是其中一些原因:

  • 硬件差异:市场上充斥着来自不同制造商的不同型号的手机。取证人员可能会遇到不同尺寸、硬件、功能和操作系统不同的手机型号。此外,由于产品开发周期短,新型号经常出现。随着移动设备领域每天都在发生变化,对于您来说,适应所有挑战并保持对各种设备上的移动设备取证技术的更新至关重要。

  • 移动操作系统:与个人计算机不同,Windows 多年来一直主导市场,移动设备广泛使用更多操作系统,包括苹果的 iOS、谷歌的 Android、RIM 的 BlackBerry OS、微软的 Windows Phone OS、惠普的 webOS 等。即使在这些操作系统中,也有几个版本,这使得您的任务变得更加困难。

  • 移动平台安全功能:现代移动平台包含内置的安全功能,用于保护用户数据和隐私。这些功能在取证获取和检查过程中起到障碍作用。例如,现代移动设备从硬件层到软件层都配备了默认加密机制。您可能需要突破这些加密机制才能从设备中提取数据。FBI 与苹果之间的加密争端在这方面是一个分水岭时刻,苹果的安全实施阻止了 FBI 破解从圣贝纳迪诺案件中袭击者手中夺取的 iPhone。

  • 防止数据修改:取证中的一个基本规则是确保设备上的数据不被修改。换句话说,从设备中提取数据的任何尝试都不应更改该设备上的数据。但这在移动设备上实际上是不可能的,因为只需打开设备就可能改变该设备上的数据。即使设备看起来处于关闭状态,后台进程仍可能在运行。例如,在大多数手机中,闹钟即使手机关闭也仍在工作。从一个状态突然转变到另一个状态可能导致数据的丢失或修改。

  • 反取证技术:反取证技术,如数据隐藏、数据混淆、数据伪造和安全擦除,使数字媒体的调查变得更加困难。

  • 密码恢复:如果设备受到密码保护,取证专家需要在不损坏设备数据的情况下访问设备。虽然有一些技术可以绕过屏幕锁定,但它们可能并不适用于所有版本的操作系统。

  • 资源不足:如前所述,随着手机数量的增加,取证专家所需的工具数量也在增加。为了获取这些设备,必须维护取证配件,如用于不同手机的 USB 数据线、电池和充电器。

  • 证据的动态性质:数字证据可能会被轻易修改,无论是有意还是无意。例如,在手机上浏览某个应用程序可能会改变该应用程序在设备上存储的数据。

  • 意外重置:手机提供了重置所有内容的功能。在检查过程中如果不小心重置设备,可能会导致数据丢失。

  • 设备修改:设备修改的方式可能包括移动应用数据、重命名文件或修改制造商的操作系统。在这种情况下,应考虑嫌疑人的专业技能。

  • 通信屏蔽:手机设备通过蜂窝网络、Wi-Fi 网络、蓝牙和红外进行通信。由于设备通信可能会改变设备数据,因此在获取设备后,应消除进一步通信的可能性。

  • 工具不可用:手机设备种类繁多。需要使用多种工具组合,因为单一工具可能无法支持所有设备或执行所有必要功能。因此,选择适合特定手机的工具可能很困难。

  • 恶意程序:设备可能包含恶意软件,如病毒或木马。这些程序可能尝试通过有线或无线接口传播到其他设备。

  • 法律问题:手机设备可能涉及跨越地理边界的犯罪。为了处理这些跨辖区问题,取证专家应熟悉犯罪的性质和地区法律。

接下来,让我们看看证据提取的过程。

手机证据提取过程

证据提取和不同手机设备的取证检查可能会因多种因素而有所不同。然而,遵循一致的检查流程将帮助取证专家确保从每部手机中获取的证据有良好的记录,并且结果可靠。对于手机取证,目前没有公认的标准流程。

然而,以下图示提供了从手机设备提取证据时的一些过程考虑。所有提取数据的方法都应经过测试、验证并详细记录:

移动电话证据提取过程

处理和处理移动设备的一个重要资源可以在digital-forensics.sans.org/media/mobile-device-forensic-process-v3.pdf中找到。

如前面图示所示,移动设备的取证包括几个阶段,从证据接收阶段到归档阶段。以下各节提供了各个阶段中需要考虑的各种事项的概述。

证据接收阶段

证据接收阶段是开始阶段,涉及记录业主信息和移动设备涉及的事件类型的文书工作,并概述请求者所寻求的数据类型。为每个检查制定具体目标是此阶段的关键部分。这有助于明确你的目标。在开始物理扣押过程之前,你应熟悉与个人权利相关的联邦、州和地方法律。如果未按照正确程序进行,调查可能会在法庭上被认为是非法的。程序和合法性可能根据你是政府代理人还是私人方有所不同。例如,在美国,第四修正案权利禁止政府代理人在没有适当搜查令的情况下进行任何搜查或扣押。搜查令应明确授权扣押移动设备以及需要收集的数据类型。成功扣押后,应注意确保建立设备和数据收集的链条证据。

根据 NIST(csrc.nist.gov/),链条证据是指通过记录每个处理证据的人、收集或转移的日期/时间以及转移目的,跟踪证据在收集、保护和分析生命周期中的移动过程。

此外,在扣押设备时,应小心不要修改设备上存在的任何数据。同时,任何有助于调查的机会都不应错过。例如,在扣押设备时,如果设备没有锁定,可以尝试禁用密码。

标识阶段

取证检查员应为每次对移动设备的检查识别以下详细信息:

  • 法律授权

  • 需要提取的数据

  • 设备的制造商、型号和标识信息

  • 数据存储介质

  • 其他潜在证据来源

我们将在接下来的各节中讨论这些内容。

法律授权

对于法医检查员而言,确定并记录获取和检查设备的合法授权非常重要,还需要了解在设备检查之前对媒体的任何限制。例如,如果设备的调查是基于搜查令进行的,则搜索应仅限于搜查令中定义的区域。简而言之,在扣押设备之前,你需要回答以下问题:

  • 如果没有搜查令,设备所有者是否同意进行搜查?

  • 如果有搜查令,设备是否包含在原始搜查令中?

  • 如果设备包含在搜查令中,是否也定义了可以收集的数据?

  • 如果是企业调查,设备是个人所有还是属于其雇主?

  • 企业政策是否允许收集和后续分析?

需要提取的数据

你将根据所请求的数据确定检查的深度。检查的目标在选择检查手机的工具和技术时具有重要影响,并提高检查过程的效率。

设备的制造商、型号和识别信息

在检查过程中,确定手机的制造商和型号有助于判断哪些工具可以与手机配合使用。若有可能,建议记录被扣押设备的以下细节:

  • 设备制造商

  • 设备型号

  • 移动设备的序列号

  • 设备的颜色

  • 设备屏幕或锁屏壁纸

  • 设备是否具有任何硬件组件(如前置摄像头、耳机插孔等)

  • 设备的任何特定细节描述(如划痕、破损的屏幕等)

接下来,我们来看一下数据存储介质。

数据存储介质

许多移动电话提供使用可拆卸存储设备扩展内存的选项。如果在提交检查的移动电话中发现了这类可拆卸介质,存储卡应当移除,并使用传统的数字取证技术进行处理。最好在移动设备中获取存储卡,以确保手机内存和存储卡上的数据能够关联,便于分析。相关内容将在接下来的章节中详细讨论。

其他潜在证据来源

移动电话是良好的指纹和其他生物证据来源。在检查移动电话之前,应该先收集此类证据,以避免污染问题,除非收集方法会损坏设备。检查员在处理证据时应佩戴手套。

准备阶段

一旦确定了手机型号,准备阶段就包括对要检查的特定手机及其获取和检查所需的适当方法和工具进行研究。通常,这基于设备型号、底层操作系统及其版本等信息进行。这时,需要使用哪些工具也要根据设备以及检查的范围和目标来决定。

隔离阶段

移动电话的设计目的是通过蜂窝电话网络、蓝牙、红外和无线(Wi-Fi)网络功能进行通信。当电话连接到网络时,新的数据通过来电、短信和应用程序数据传入手机,这些数据会修改手机上的证据。

数据的完全销毁也可以通过远程访问或远程擦除命令实现。因此,在获取和检查设备之前,将设备与通信源隔离是非常重要的。网络隔离可以通过将手机放入射频屏蔽布中,然后将手机设置为飞行模式来完成。飞行模式会禁用设备的通信渠道,如蜂窝网络、Wi-Fi 和蓝牙。然而,如果设备已锁屏,这种方法就不可行。此外,由于现在飞机上可以提供 Wi-Fi 服务,一些设备在飞行模式下也能够启用 Wi-Fi 访问。

另一种解决方案是通过使用法拉第袋隔离手机,这些袋子可以阻挡手机的信号收发。法拉第袋包含能够屏蔽外部静电场(包括无线电波)的材料。因此,法拉第袋可以屏蔽被扣押的移动设备免受外部干扰,防止数据擦除和定位追踪。为了更方便地处理扣押的设备,法拉第帐篷和房间也已出现。

处理阶段

一旦手机与通信网络隔离,手机的实际处理工作就开始了。你将在这一阶段面临的挑战之一是确定使用哪些工具,因为这受多种因素的影响,例如价格、易用性、适用性等。移动取证软件价格昂贵,而且与计算机取证不同,有时你需要使用多个工具来访问数据。在选择工具时,请确保它具有内建功能以保持取证完整性。保持取证完整性需要一个能够以一种可能难以轻易修改或篡改的格式打包收集数据的工具。

手机应通过一种经过验证的、可重复的方法获取,并且尽可能具有法医有效性。物理获取是首选方法,因为它可以提取原始内存数据,并且在获取过程中设备通常是关闭的。在大多数设备上,物理获取过程中设备发生的变化最少。如果物理获取不可行或失败,应尝试获取移动设备的文件系统。逻辑获取应始终执行,因为它可能只包含已解析的数据,并提供检查原始内存映像的线索。这些获取方法将在后续章节中详细讨论。

验证阶段

处理完手机后,需要验证从手机中提取的数据的准确性,以确保数据未被修改。提取数据的验证可以通过多种方式完成:

  • 将提取的数据与手机数据进行比较:检查从设备提取的数据是否与设备显示的数据一致(如果适用)。提取的数据可以与设备本身的数据或逻辑报告进行比较,具体取决于偏好。请记住,处理原始设备可能会对唯一证据——设备本身,造成更改。

  • 使用多个工具并比较结果:为了确保准确性,使用多个工具提取数据并比较结果。

  • 使用哈希值:所有映像文件在获取后都应进行哈希计算,以确保数据保持不变。如果支持文件系统提取,您可以提取文件系统,然后计算提取文件的哈希值。之后,可以计算并检查任何单独提取文件的哈希值与原始值的匹配情况,以验证其完整性。哈希值出现任何不一致必须有解释(例如,设备开机后再次获取,因此哈希值不同)。

文档编制和报告阶段

法医检查员需要在整个检查过程中记录所有与获取和检查过程中所做的工作相关的内容。一旦完成调查,结果必须经过某种形式的同行评审,以确保数据已被检查且调查完成。您的笔记和文档可能包含以下信息:

  • 检查开始的日期和时间

  • 手机的物理状态

  • 手机和单个组件的照片

  • 收到时手机的状态——是开机还是关机

  • 手机品牌和型号

  • 用于获取的工具

  • 用于检查的工具

  • 在检查过程中发现的数据

  • 同行评审记录

在整个调查过程中,确保从移动设备提取和记录的信息能够清晰地呈现给其他检查员或法庭是非常重要的。文档记录是你最重要的技能之一。在获取和分析过程中,从移动设备提取的数据的取证报告非常重要。这可能包括纸质和电子格式的数据。

你的发现必须以一种能让证据在法庭上自行说明的方式进行文档记录和呈现。发现应该清晰、简洁且可重复。许多商业移动取证工具提供的时间线和链接分析功能,将有助于跨多个移动设备报告和解释发现。这些工具可以帮助你将多个设备的通信方式联系在一起。

存档阶段

保留从移动电话提取的数据是整体过程中的一个重要环节。同样重要的是,数据必须以可用格式保留,以便在持续的法庭过程中使用,以防当前的证据文件损坏,以及为记录保存的需要。法院案件可能会持续多年,直到最终裁决做出,大多数司法管辖区要求为了上诉的目的长时间保留数据。随着该领域和方法的进展,可能会出现从原始物理镜像中提取数据的新方法,到时候你可以通过从档案中提取副本来重新审视数据。

现在我们已经了解了证据提取过程的工作原理,我们将研究实际移动取证中的不同方法。

实际移动取证方法

类似于任何法医调查,获取和检查/分析来自手机的数据可以使用几种不同的方法。移动设备的类型、操作系统和安全设置通常决定了法医过程中的程序。每个调查都有其独特的情况,因此不可能为所有案件设计一种确定的程序方法。以下细节概述了提取移动设备数据时的一般方法。

理解移动操作系统

移动电话的数据获取和检查/分析的主要因素之一是操作系统。从低端手机到智能手机,移动操作系统已经发展了很多,具有许多功能。移动操作系统直接影响你如何访问移动设备。例如,Android 提供终端级访问权限,而 iOS 则没有此选项。

对移动平台的全面理解帮助法医检查员做出合理的法医决策并进行有结论的调查。尽管智能移动设备种类繁多,但随着黑莓的没落,目前市场上主要由两大操作系统主导,分别是谷歌的 Android 和苹果的 iOS(其次是遥不可及的 Windows Phone)。更多信息请参见www.idc.com/promo/smartphone-market-share/os。本书涵盖了这三种移动平台的法医分析。我们将简要概述领先的移动操作系统。

Android

Android 是一个基于 Linux 的操作系统,是谷歌为手机提供的开源平台。Android 是全球使用最广泛的智能手机操作系统。数据显示,苹果的 iOS 排名第二(www.idc.com/promo/smartphone-market-share/os)。Android 由谷歌开发,作为硬件制造商和手机运营商的开放免费选择。这使得 Android 成为那些需要低成本、可定制、轻量化操作系统的公司首选,且不必从头开始开发新操作系统。

Android 的开放性进一步鼓励开发者构建大量应用并将其上传到 Google Play。之后,最终用户可以从 Android Market 下载这些应用,这使得 Android 成为一个强大的操作系统。据估计,在本书撰写时,Google Play 商店中有 330 万个应用程序。关于 Android 的更多细节请见第七章,理解 Android

iOS

iOS,前身为 iPhone 操作系统,是由苹果公司开发和分发的唯一移动操作系统。iOS 正逐步发展为所有苹果移动设备的通用操作系统,例如 iPad、iPod Touch 和 iPhone。iOS 源自 macOS,因此基于类似 Unix 的操作系统。iOS 管理设备硬件,所需的本地应用程序实现技术也由 iOS 提供。iOS 还附带了各种系统应用,如 Mail 和 Safari,提供标准的系统服务。iOS 本地应用程序通过 App Store 分发,并由苹果公司进行严格监管。有关 iOS 的更多细节请见第二章,理解 iOS 设备内部结构

Windows Phone

Windows Phone 是微软为智能手机和口袋电脑开发的专有移动操作系统。它是 Windows Mobile 的继任者,主要面向消费者市场,而非企业市场。Windows Phone 操作系统类似于 Windows 桌面操作系统,但它针对存储空间较小的设备进行了优化。第十二章中讨论了 Windows Phone 的基本知识和取证技术,Windows Phone 取证

移动取证工具分级系统

移动电话取证获取和分析涉及手动操作和自动化工具的使用。有多种工具可供执行移动取证。所有工具都有其优缺点,理解没有单一工具适用于所有目的这一基本原则非常重要。因此,了解各种类型的移动取证工具对取证检查员来说至关重要。

在确定适合进行手机取证获取和分析的工具时,由 Sam Brothers 开发的移动设备取证工具分类系统(如下图所示)对于检查员非常有用:

手机工具分级金字塔(Sam Brothers,2009)

移动设备取证工具分类系统的目标是使检查员能够根据工具的检查方法对取证工具进行分类。从金字塔底部到顶部,分析方法和工具通常变得更加技术化和复杂,并且需要更长的分析时间。每一层使用的不同技术都有优缺点。取证检查员在应用特定技术之前,应当意识到这些问题。如果给定的方法或工具没有得到正确使用,证据可能会被完全销毁。随着金字塔向上移动,这种风险会增加。因此,为了从移动设备中获取数据并取得最高成功率,必须进行适当的培训。

每个现有的手机取证工具都可以归类为一个或多个五个级别中的某一类。以下部分包含了每个级别的详细描述。

手动提取

手动提取方法仅仅通过滚动设备上的数据并直接通过设备的键盘或触摸屏查看手机上的数据。然后,发现的信息会通过拍照进行记录。提取过程快速且易于使用,几乎适用于所有手机。此方法容易出现人为错误,例如由于不熟悉界面而遗漏某些数据。在这个级别上,无法恢复已删除的信息或提取所有数据。

有些工具,如 Project-A-Phone,已被开发出来帮助检查员轻松记录手动提取过程。然而,这也可能导致数据的修改。例如,查看未读的短信会将其标记为已读。

逻辑分析

逻辑分析涉及通过 USB 电缆、RJ-45 电缆、红外线或蓝牙将移动设备连接到取证硬件或取证工作站。连接后,计算机会发送指令到设备,设备的处理器将解释该指令。接着,从设备内存中接收请求的数据并发送回取证工作站。之后,你可以查看数据。

当前大多数可用的取证工具都在此分类系统层级工作。该提取过程快速且易于使用,且对用户的培训要求较低。但另一方面,这个过程可能会向手机写入数据,从而可能改变证据的完整性。此外,使用此过程通常无法访问已删除的数据。

十六进制转储

十六进制转储,也称为物理提取,是通过将设备连接到取证工作站,将未签名的代码或引导加载程序推送到手机,并指示手机将内存数据从手机转储到计算机来实现的。由于生成的原始图像是二进制格式,因此需要技术专长来分析它。该过程成本较低,提供更多的数据供检查员使用,并且允许从大多数设备的未分配空间恢复已删除的文件。

芯片提取

芯片提取指的是直接从设备中的内存芯片获取数据。在这个层级,芯片被物理地从设备中移除,并使用芯片读取器或第二部手机来提取其存储的数据。这个方法在技术上具有更大的挑战性,因为手机中使用了各种不同类型的芯片。该过程费用较高,并且需要硬件层面的知识,因为它涉及到内存芯片的去焊接和加热。执行芯片提取需要经过培训。若操作不当,可能会损坏内存芯片并使所有数据无法恢复。在可能的情况下,建议在进行芯片提取之前先尝试其他层级的提取方法,因为该方法具有破坏性。此外,从内存中提取出的信息是原始格式,需要解析、解码和解释。芯片提取方法在需要精确保留设备内存状态的情况下优先使用。当设备损坏但内存芯片完好时,它也是唯一可行的选项。

设备上的芯片通常通过联合测试行动小组JTAG)方法读取。JTAG 方法涉及连接到设备上的测试接入端口TAPs),并强制处理器传输存储在内存芯片上的原始数据。JTAG 方法通常用于那些操作正常但无法通过标准工具访问的设备。这两种技术即使在设备屏幕被锁定时也能工作。

微观读取

微观读取过程涉及手动查看和解释存储在内存芯片上的数据。检查员使用电子显微镜,分析芯片上的物理门,然后将门的状态转换为 0 和 1,以确定结果的 ASCII 字符。整个过程既耗时又昂贵,需要对内存和文件系统有广泛的知识和训练。由于微观读取涉及极其复杂的技术,它通常只在所有其他提取技术都已用尽后,针对类似国家安全危机的高调案件进行尝试。该过程很少执行,目前也没有充分的文档记录。此外,目前没有商业工具可用来执行微观读取。

数据采集方法

数据采集是指从数字设备及其他附加介质中成像或以其他方式提取信息的过程。从手机中获取数据并不像标准硬盘法医采集那样简单。以下几点细分了针对手机的三种法医采集方法:物理采集、逻辑采集和手动采集。这些方法可能与移动法医工具分级系统中讨论的某些级别有些重叠。可收集的数据量和类型将根据所使用的采集方法而有所不同。虽然我们将在接下来的章节中详细介绍这些方法,但以下是它们的简要描述。

物理采集

移动设备的物理采集仅仅是对物理存储的逐位复制。通过直接访问闪存,可以通过物理提取从设备中获取信息。闪存是非易失性存储器,主要用于存储卡和 USB 闪存驱动器作为固态存储。该过程创建了整个文件系统的逐位复制,类似于计算机法医调查中采取的方法。物理采集能够获取设备上所有的数据,包括已删除的数据,并且可以访问大多数设备上的未分配空间。

逻辑采集

逻辑获取是指从文件系统中提取逻辑存储对象,如文件和目录。手机的逻辑获取是通过设备制造商的应用程序接口来完成的,目的是将手机的内容与计算机同步。许多取证工具可以执行逻辑获取。对于取证工具来说,通过逻辑获取提取的数据更容易进行组织和呈现。然而,取证分析师必须了解获取过程是如何进行的,并且是否在过程中手机有被修改。根据手机和所使用的取证工具,可能会获取全部或部分数据。逻辑获取容易执行,只能恢复手机中的文件,无法恢复未分配空间中的数据。

手动获取

对于手机来说,物理获取通常是最佳选择,逻辑获取是第二选择。手动提取应该是执行手机取证获取时的最后选择。逻辑和手动获取都可以用来验证物理数据中的发现。在手动获取过程中,检查员使用用户界面来调查手机内存中的内容。设备通过按键或触摸屏和菜单导航正常使用,检查员拍摄每个屏幕内容的照片。手动提取带来更高的风险,容易出现人为错误,并且有可能删除证据。手动获取易于执行,仅获取手机上显示的数据。

接下来,我们来看一下可以从手机中提取的信息量。

存储在手机上的潜在证据

本节详细介绍了从手机中可以获取的信息范围。手机中的数据可以在多个位置找到——例如 SIM 卡、外部存储卡和手机内存。此外,服务提供商还会存储与通信相关的信息。本书主要集中于从手机内存中获取的数据。移动设备数据提取工具从手机内存中恢复数据。尽管在取证获取过程中恢复的数据取决于手机型号,但一般来说,以下数据在所有型号中都是常见的,并且有助于作为证据。请注意,以下大部分数据项都包含时间戳:

  • 通讯录:包含联系人姓名、电话号码、电子邮件地址等信息。

  • 通话历史:包含拨打、接听和未接来电及通话时长。

  • 短信 (SMS):包含发送和接收的文本信息。

  • 彩信 (MMS):包含发送和接收的照片和视频等媒体文件。

  • 电子邮件 (E-mail):包含发送、草稿和接收的电子邮件。

  • 网页浏览历史:包含已访问网站的历史记录。

  • 照片:这包含使用手机摄像头拍摄的照片、从互联网下载的照片以及从其他设备转移过来的照片。

  • 视频:这包含使用手机摄像头拍摄的视频、从互联网下载的视频以及从其他设备转移过来的视频。

  • 音乐:这包含从互联网下载的音乐文件和从其他设备转移过来的音乐文件。

  • 文档:这包含使用设备应用程序创建的文档、从互联网下载的文档以及从其他设备转移过来的文档。

  • 日历:这包含日历条目和约会。

  • 网络通信:这包含 GPS 位置。

  • 地图:这包含用户访问过的地点、查找的方向以及搜索和下载的地图。

  • 社交网络数据:这包含应用程序存储的数据,如 Facebook、Twitter、LinkedIn、Google+ 和 WhatsApp。

  • 删除的数据:这包含从手机中删除的信息。

接下来,我们将快速了解调查的最后一步:检查与分析。

检查与分析

这是调查的最终步骤,旨在揭示设备中存在的数据。检查通过应用经过验证的科学方法来确定结果,而分析阶段则专注于从其他数据中分离出相关数据,并深入探查与案件相关的数据。检查过程始于对之前使用某些技术获得的证据副本,这些技术将在接下来的章节中详细介绍。使用第三方工具进行的检查和分析通常是通过将设备的内存转储导入到移动设备取证工具中,这些工具将自动检索结果。了解案件的背景也对执行有针对性的数据分析至关重要。例如,涉及儿童色情的案件可能需要专注于设备上所有的图像,而不是查看其他数据。

了解你所使用的取证工具如何运作非常重要。熟练使用工具中的功能和选项将大大加快检查过程。有时,由于软件中的编程缺陷,工具可能无法识别或将数据转换为你能够理解的格式。因此,你需要具备必要的技能来识别这些情况,并使用替代工具或软件来构建结果。在某些情况下,个人可能故意篡改设备信息或删除/隐藏一些关键数据。取证分析师应该理解自己工具的局限性,并有时补偿这些局限,以获得最佳结果。

证据规则

法庭越来越依赖手机中的信息作为重要证据。法庭上有效证据的存在需要对证据规则有深入的理解。移动取证是一个相对较新的学科,关于证据有效性的法律并不广为人知,而且这些法律在不同国家之间有所不同。然而,有五条适用于数字取证的通用证据规则,必须遵循这些规则,证据才能在法庭上被采纳。忽视这些规则会导致证据不可接受,案件可能因此被驳回。这五条规则是可接受真实完整可靠可信

  • 可接受:这是最基本的规则,也是衡量证据有效性和重要性的标准。证据必须以一种可以在法庭或其他地方使用的方式被保存和收集。许多错误可能会导致法官裁定某一证据不可接受。例如,使用非法手段收集的证据通常会被判定为不可接受。

  • 真实:证据必须以相关的方式与事件联系在一起,以证明某个事实。取证专家必须对证据的来源负责。

  • 完整:当证据被呈现时,必须清晰、完整,并且能够反映出整个事件的经过。仅仅收集显示事件某一方面的证据是不够的。呈现不完整的证据比不提供任何证据更危险,因为这可能导致不同的裁决。

  • 可靠:从设备上收集的证据必须是可靠的。这取决于所使用的工具和方法。所使用的技术和收集的证据不能对证据的真实性产生怀疑。如果使用了无法重复的技术,除非相关人员,如法官和陪审团,明确指示,否则该证据不被视为有效。这包括可能破坏证据的提取方法,例如芯片提取。

  • 可信:取证专家必须能够清晰简洁地解释他们使用了哪些过程,以及如何保持证据的完整性。你所提供的证据必须清晰、易于理解,并且让陪审团相信。

现在让我们看看最佳实践。

良好的取证实践

良好的取证实践适用于证据的收集和保存。缺乏健全的取证实践甚至可能导致收集的证据在法庭上无效。无论是故意还是意外修改证据,都可能影响案件。因此,理解最佳实践对取证专家至关重要。

保护证据

随着智能手机功能的不断升级,比如查找我的 iPhone和远程擦除,确保手机的安全,使其无法被远程擦除变得尤为重要。此外,当手机开机并且有服务时,它会不断接收新的数据。为了确保证据的安全,应使用合适的设备和技术将手机与所有网络隔离。通过隔离,可以防止手机接收任何新数据,这些新数据可能会导致活动数据被删除。根据案件的需要,可能还需要使用其他取证技术,如指纹匹配,来建立设备与其所有者之间的关联。如果设备处理不当,物理证据可能会被无意篡改,从而失去其效力。

同时,收集现场存在的任何外设、相关媒体、数据线、电源适配器及其他配件也很重要。在调查现场,如果发现设备已连接到个人计算机,直接拔掉设备会停止数据传输。建议在拔掉设备之前先捕获个人计算机的内存,因为在很多情况下,这其中包含了重要的细节。

保存证据

随着证据的收集,必须以可接受的方式保存,以便法庭使用。直接操作原始证据可能会改变证据。因此,一旦恢复了原始磁盘镜像或文件,应该创建只读的主副本并进行复制。为了使证据具有可接受性,必须有科学的方法验证提交的证据与收集的原始证据完全一致。这可以通过生成图像的取证哈希值来实现。

取证哈希值用于确保收集的图像/数据的完整性,通过计算图像/数据的加密强哈希值,该值是不可逆的。

在复制原始磁盘镜像或文件后,计算并验证原始副本和复制品的哈希值,以确保证据的完整性得到维护。任何哈希值的变化都应记录并进行说明。所有后续处理或检查都应在证据的副本上进行。任何对设备的使用都可能改变手机上存储的信息。因此,只应执行绝对必要的任务。

记录证据和变化

在可能的情况下,应该创建所有可见数据的记录。建议拍摄手机设备及其周围的其他媒体,如电缆、外设等。这在以后如果对环境产生疑问时会有所帮助。拍照时请勿触摸或接触手机设备。确保记录下收集和提取证据时使用的所有方法和工具。详细记录您的笔记,以便其他检查员能够复现它们。您的工作必须是可复现的;如果不可复现,法官可能会裁定其不可采纳。记录整个取证过程,包括在采集和检查过程中所做的所有更改,非常重要。例如,如果用于数据提取的取证工具将磁盘镜像切割并存储,那么必须记录这一点。对手机设备的所有更改,包括电源循环和同步,都应该在案件记录中进行记录。

报告

报告是准备对所有步骤和结论进行详细总结的过程,作为检查的一部分。报告应包括您所执行的所有重要操作的详细信息、采集结果以及从结果中得出的任何推论。大多数取证工具都带有内置的报告功能,可以自动生成报告,同时提供定制的空间。一般来说,报告可能包含以下详细信息:

  • 报告机构的详细信息

  • 案件标识符

  • 法医调查员

  • 提交者的身份

  • 证据接收日期

  • 被查扣设备的详细信息,包括序列号、品牌和型号

  • 检查过程中使用的设备和工具的详细信息

  • 检查过程中采取的步骤的描述

  • 保管链文档

  • 发现或识别出的问题的详细信息

  • 在检查过程中恢复的证据,涵盖聊天消息、浏览历史、通话记录到已删除消息等

  • 检查过程中拍摄的任何图像

  • 检查和分析信息

  • 报告结论

总结

现代移动设备存储着各种各样的信息,如短信、通话记录、浏览器历史、聊天消息、位置信息等。因此,它们往往是许多刑事案件、事件重建、企业和法律案件中的关键因素。移动设备取证也面临着一些独特的挑战和概念,这些问题超出了传统数字取证的范围。在处理设备时,从证据采集阶段到归档阶段,都需要格外小心。负责移动设备检查的人员必须了解不同的获取方法,并理解在分析过程中处理数据的复杂性。从移动设备提取数据只是战斗的一半。操作系统、安全特性和智能手机类型将决定你对数据的访问程度。在调查过程中,遵循合理的取证实践并确保证据不被篡改是非常重要的。

下一章将深入探讨 iOS 取证。你将了解 iOS 设备的文件系统布局、安全特性以及文件存储的方式。

第二章:Section 1: iOS 取证

本节将为您提供 iOS 设备(如 iPhone 和 iPad)的概述,以及它们运行的操作系统和文件系统的概述。您将了解不同类型的取证方法,包括逻辑取证和文件系统取证,越狱的过程,对常见的取证证据来源进行取证分析的过程,以及如何使用流行的移动取证软件。

本节将包括以下章节:

  • 第二章,理解 iOS 设备的内部结构

  • 第三章,从 iOS 设备获取数据

  • 第四章,从 iOS 备份获取数据

  • 第五章,iOS 数据分析与恢复

  • 第六章,iOS 取证工具

第三章:理解 iOS 设备的内部结构

根据苹果公司数据,2019 年活跃的苹果设备达到 14 亿部,其中 9 亿部运行 iOS。尽管 iOS 是全球平板电脑的主要操作系统OS),但 Android 依然是智能手机的主导操作系统。不论统计数据如何,如果你是一名法医检查员,你很可能需要对 iOS 设备进行检查。

为了执行 iOS 设备的法医检查,作为检查员,你必须了解该设备的内部组件和内部工作原理。了解移动设备的基础组件将有助于你理解法医过程中的关键要素,包括可以获取哪些数据、数据存储的位置以及如何使用方法从该设备中访问数据。因此,在我们深入研究 iOS 设备检查之前,了解现有的不同型号及其内部组件是非常必要的。在本书中,我们将对 iOS 设备进行法医数据获取和分析,包括 iPhone、iPad 和 Apple Watch。

本章的目标是向你介绍 iOS 设备技术。我们将讨论一些常常被忽视的细节,但这些细节会在你的法医调查中提供帮助。在成功提取数据之前,你必须了解不同的 iOS 设备及其数据存储方式。

在本章中,我们将详细介绍以下主题:

  • iPhone 型号与硬件

  • iPad 型号与硬件

  • 分层文件系统HFS)Plus 和 苹果文件系统APFS)文件系统

  • iPhone 操作系统

iPhone 型号与硬件

iPhone 是市场上最受欢迎的智能手机之一。苹果公司于 2007 年 6 月发布了第一代 iPhone。自首次发布以来,iPhone 因其许多开创性的功能和易用性而变得极为流行。iPhone 的推出重新定义了整个移动计算世界。消费者开始寻求更快、更高效的手机。目前有多款 iPhone 型号,具备不同的功能和存储能力,以满足消费者的需求。

《实用移动取证》第三版 发布以来的 iPhone 型号——iPhone XR、XS、XS Max、11 和 11 Pro——在处理文件系统取证采集方法时可能会比较困难。就像自 iPhone 5 发布以来的设备一样,除非设备越狱,否则没有可用的方法或工具可以从这些设备中物理恢复数据。然而,如果 iPhone 已解锁,则可以进行逻辑采集。数据提取的采集方法将在 第三章 iOS 设备的数据采集 和 第四章 iOS 备份的数据采集 中讨论。现在,让我们学习如何识别正确的硬件型号。

识别正确的硬件型号

在检查 iPhone 之前,必须识别设备的正确硬件型号和安装的固件版本。了解 iPhone 的详细信息有助于你理解从 iPhone 获取证据的关键点和可能性。例如,在许多情况下,获取逻辑镜像需要设备的解锁密码。根据 iOS 版本、设备型号和密码复杂性,可能可以使用暴力破解攻击来获取设备的解锁密码。

有多种方法可以识别设备的硬件。识别某些设备硬件的最简单方法是观察设备背面的型号。为了让这项任务更简单,你可以使用 Apple 的知识库文章。有关 iPhone 型号的更多信息,请访问 support.apple.com/en-in/HT201296

iPhone 的固件版本可以通过访问“设置”选项,然后依次进入“通用 | 关于本机 | 软件版本”找到,如下图所示。固件的目的是启用某些功能并协助设备的正常运行:

显示软件版本 13.2 的 iPhone 关于本机页面

另外,可以使用 libimobiledevice 软件库中提供的 ideviceinfo 命令行工具(www.libimobiledevice.org/)来识别 iPhone 型号及其 iOS 版本。

在 Windows 10 工作站上获取 iPhone 型号及其 iOS 版本信息,请按照以下步骤操作:

  1. 从以下链接下载最新的二进制文件:dev.azure.com/libimobiledevice-win32/imobiledevice-net/_build/results?buildId=419(点击“Artifacts | Binaries”开始下载)。

  2. 解压包含 x86 或 x64 二进制文件的归档,具体取决于工作站的版本。

  3. 打开命令提示符并将目录切换到包含二进制文件的目录(使用 cd 命令)。

  4. 使用 Universal Serial Bus (USB) 数据线将 iPhone 连接到你的工作站(对于最新的 iOS 版本,还需要输入密码),然后运行带有 -s 选项的 ideviceinfo 命令,如下所示:

$ ideviceinfo -s

ideviceinfo 命令的输出显示了 iPhone 的标识符、内部名称以及 iOS 版本,如下图所示:

ideviceinfo 输出显示固件版本 13.2

一些其他工具,如 iExplorer,也可以提供类似的 iOS 设备信息,如下图所示。恢复 iPhone 设备信息的方法也适用于 iPad 设备。在这里,iExplorer 被用来从 iPhone 获取设备信息:

iExplorer 显示设备信息

每一次 iPhone 的发布都带来了改进或新增的功能。正如本章前面所述,了解 iPhone 的详细信息有助于你理解如何从中获取证据的关键性和可能性。你必须知道设备的型号,以确保所部署的工具和方法支持该特定型号的 iPhone。此外,必须确定 iPhone 的内部存储大小,以确保证据容器足够大,可以存放整个取证镜像。大多数工具在证据驱动器没有足够的磁盘空间时,不会提醒你,直到空间用完为止。这将浪费时间并迫使你重新获取设备。最后,还必须注意设备的网络功能,以便你能够正确隔离设备,防止在检查过程中远程访问或清除数据。更多内容将在第三章,iOS 设备数据获取中进一步讨论。

再次强调,对 iPhone 设备硬件的基本了解将有助于你在进行取证调查时判断如何处理该设备。某些型号启用了全盘加密,而较旧的型号则没有。加密设备在获取过程中需要额外的步骤——即使能够访问的话。你必须为获取和分析阶段可能遇到的所有障碍做好准备。此外,了解 iPhone 的功能——包括初始和当前的 iOS 版本——会对你能够从设备恢复的数据产生影响。苹果在不同的 iOS 版本中存储数据的位置并不一致。因此,你必须知道设备首次使用时安装的原始版本,以确保取证工具不会忽视可能有助于调查的数据。

有关识别 iPhone 型号的更多信息,请访问 support.apple.com/en-us/HT201296

理解 iPhone 硬件

iPhone 是由来自不同制造商的模块、芯片和电子组件组成的。由于 iPhone 的复杂性,硬件组件的列表非常庞大,每个设备都应研究其内部组件。

例如,iPhone 11 配备了 A13 仿生处理器;64 GB、128 GB 或 256 GB 存储;4 GB 内存;6.1 英寸液态视网膜液晶显示屏LCD);以及一个双镜头 12 MP 后置相机阵列。

所有 iPhone 的内部图像可以在www.ifixit.com/Device/iPhone的拆解部分找到。

iPad 型号与硬件

苹果 iPhone 改变了手机的生产和使用方式。同样,2010 年 1 月推出的 iPad——一种平板电脑版本——打击了笔记本电脑的销售。使用 iPad,个人可以拍摄视频、拍照、播放音乐、阅读书籍、浏览互联网以及做更多的事情。目前存在各种 iPad 型号——例如,iPad Air 3 和 iPad Pro——具有不同的功能和存储能力。有关如何识别 iPad 型号的更多信息,请访问support.apple.com/en-in/HT201471

与 iPhone 一样,并非所有版本的 iPad 都支持文件系统获取。此外,苹果在 iOS 版本中改变了数据存储位置,这也影响了 iPad 设备。你必须了解不同的型号、发布和当前安装的 iOS 版本、存储能力、网络访问路径等。

理解 iPad 硬件

苹果 iOS 设备成功的关键因素之一是正确选择其硬件组件。就像 iPhone 一样,iPad 也是由来自不同厂商的模块、芯片和电子组件组成。所有 iPad 的内部图像可以在www.ifixit.com/Device/iPad的拆解部分找到。

HFS Plus 和 APFS 文件系统

为了更好地理解 iOS 设备的取证过程,了解所使用的文件系统非常有用。最初,iPhone 和其他苹果 iOS 设备使用的文件系统是 HFSX。这是 HFS Plus 的一种变体,主要区别在于 HFSX 区分大小写,而 HFS Plus 则不区分大小写。其他差异将在本章稍后讨论。APFS 于 2016 年 6 月推出,作为 HFS Plus 的替代品,并在 iOS 10.3 发布时成为 iOS 设备的默认文件系统,macOS 10.13 发布时成为 macOS 设备的默认文件系统。

HFS Plus 文件系统

1996 年,苹果公司开发了一个新的文件系统 HFS,以适应大数据集的存储。在 HFS 文件系统中,存储介质被表示为卷。HFS 卷被划分为 512 字节的逻辑块。逻辑块在给定卷上从第一个到最后一个编号,并且保持与物理块相同的大小——即 512 字节。这些逻辑块被分组为分配块,HFS 文件系统通过这些分配块来更高效地跟踪数据。HFS 使用 16 位的值来定位分配块,这使得分配块的数量限制为 65,535。为了克服磁盘空间分配效率低下以及 HFS 的一些限制,苹果公司推出了 HFS Plus 文件系统(dubeiko.com/development/FileSystems/HFSPLUS/tn1150.html)。

HFS Plus 文件系统的设计旨在支持更大的文件大小。HFS 卷上的扇区通常为 512 字节。这些扇区组成了分配块。分配块的数量取决于卷的大小。HFS Plus 使用 32 位的块地址来定位分配块。HFS Plus 默认启用 日志记录 功能。日志记录是将每个事务写入磁盘的过程,这有助于防止文件系统损坏。HFS Plus 文件系统的主要特点包括以下几点:高效利用磁盘空间、支持文件名的 Unicode 编码、支持名称分叉、文件压缩、日志记录、动态调整大小、动态碎片整理,以及能够在 macOS 之外的操作系统上启动。

HFS Plus 卷

HFS Plus 卷包含多个内部结构,用于管理数据的组织方式。这些结构包括头部、备用头部以及五个特殊文件:分配文件、扩展溢出文件、目录文件、属性文件和启动文件。在这五个文件中,三个文件(扩展溢出文件、目录文件和属性文件)使用 B 树结构。这是一种数据结构,允许数据高效地搜索、查看、修改或删除。HFS Plus 卷结构如以下图所示:

HFS Plus 卷结构

卷结构描述如下:

  • 保留区(1024 字节):此区域保留给引导加载程序信息。

  • 卷头部:存储卷的信息,如分配块的大小、卷创建时的时间戳以及关于每个五个特殊文件的元数据。

  • 分配文件:此文件用于跟踪系统中哪些分配块正在使用。文件格式为每个分配块占 1 位。如果该位被设置,则该块正在使用;如果未设置,则该块为空闲。

  • 扩展溢出文件:该文件记录了在文件大小超过八个块时分配的分配块,帮助定位在引用时的实际数据。坏块也会在文件中记录。

  • 目录文件:该文件包含关于文件和文件夹层次结构的信息,用于定位卷中的任何文件和文件夹。

  • 属性文件:该文件包含内联数据属性记录、分支数据属性记录和扩展属性记录。

  • 启动文件:该文件包含协助引导不支持 HFS Plus 的系统所需的信息。

  • 替代卷头:这是卷头的备份,主要用于磁盘修复。

  • 保留(512 字节):这部分为 Apple 保留,在制造过程中使用。

接下来,让我们来看一下 APFS 文件系统。

APFS 文件系统

APFS 是一个用于 iOS、macOS、tvOS 和 watchOS 的新文件系统。它是一个 64 位文件系统,支持在单个卷上存储超过 9 quintillion 个文件。以下是其主要功能列表:

  • 克隆:这些是文件或目录的即时副本。修改内容会写入其他位置,并继续共享未修改的块;更改会作为克隆文件的增量进行保存。

  • 快照时间点PIT)只读实例的文件系统。

  • 空间共享:这允许多个文件系统共享物理卷上的相同底层空闲空间。

  • 加密:有三种模式,具体如下:

    • 无加密

    • 单密钥加密

    • 使用每个文件的密钥进行的多密钥加密,并为敏感元数据提供单独的密钥。

根据硬件的不同,使用 基于 AES-XTS 的高级加密标准 XEX 调整后的密码本模式,带有密文窃取AES-XTS)或 高级加密标准-密码块链AES-CBC)加密模式。

  • 崩溃保护:这是一种新颖的写时复制元数据方案;用于确保文件系统更新的崩溃保护。

  • 稀疏文件:这些文件允许文件的逻辑大小大于它们在磁盘上占用的物理空间。

  • 快速目录大小计算:它快速计算目录层次结构所占用的总空间,允许随着层次结构的发展进行更新。

APFS 结构

因此,APFS 结构是在一个单一容器中,容器内可以包含一个或多个卷。以下图示展示了 APFS 结构:

APFS 结构概述

每个 APFS 文件系统结构都以一个块头开始。块头从一个校验和(使用 Fletcher 校验和算法)开始,用于整个块,并且还包含块的写时复制版本、块 ID 和块类型。

APFS 结构可以解释如下:

  • 容器超级块包含块大小、块数量以及指向任务空间管理器的指针、所有卷的块 ID 和指向块映射 B 树的指针(B 树包含每个卷的条目以及其 ID 和偏移量)。

  • 节点用于存储不同类型的条目。它们可以是 B 树的一部分,也可以独立存在,并且可以包含灵活大小或固定大小的条目。

  • 空间管理器(Space Manager)管理 APFS 容器中已分配的块,存储空闲块的数量和指向分配信息文件的指针。

  • 分配信息文件存储分配文件的长度、版本和偏移量。

  • B 树管理多个节点并包含根节点的偏移量。

  • 卷超级块包含卷的名称、其 ID 和时间戳。

至于分配文件,它们是简单的位图,并没有块头和类型 ID。

磁盘布局

默认情况下,文件系统配置为两个逻辑磁盘分区:系统(根或固件)分区和用户数据分区。

系统分区包含操作系统及所有预加载的 iPhone 应用程序。系统分区在操作系统升级进行时或设备越狱时才会挂载为只读状态。该分区仅在设备进行固件升级时才会更新。在此过程中,iTunes 会格式化整个分区,但不会影响任何用户数据。系统分区仅占用少量存储空间,通常介于 0.8 GB 和 4 GB 之间,具体取决于 NAND 驱动器的大小。由于系统分区被设计为在 iPhone 的整个生命周期中保持在出厂状态,因此通常很少能从中获取有用的证据性信息。如果 iOS 设备被越狱,则可能有包含越狱和用户数据的信息文件驻留在系统分区中。越狱 iOS 设备允许用户获取 root 权限,但会使制造商的保修失效。本章后续将讨论越狱。

用户数据分区包含所有用户创建的数据,从音乐和联系人到第三方应用程序数据。用户数据分区占用了大部分 NAND 内存,并挂载到设备的/private/var目录。大多数证据性信息可以在此分区中找到。在文件系统获取过程中,应该捕获并保存用户数据分区的内容为.tar文件。获取的数据可以通过大多数商业移动取证工具轻松提取和解析。

iPhone 操作系统

iOS 是苹果公司最先进、功能最丰富的专有移动操作系统。它随第一代 iPhone 发布。刚推出时,它被命名为 iPhone OS,后来为了反映所有苹果 iOS 设备(如 iPhone、iPod touch、iPad 和 Apple TV)统一的操作系统特点,改名为 iOS。iOS 源自核心的 OS X 技术,并经过简化,旨在为移动设备提供紧凑且高效的操作系统。

它利用多点触控界面,通过简单的手势来操作和控制设备,比如用手指在屏幕上滑动翻页,或者用捏合手势来缩放。简单来说,iOS 协助设备的基本功能运作。

iOS 架构

iOS 是设备硬件组件和屏幕上的应用程序之间的中介。应用程序不会直接与底层硬件交互,而是通过一个明确的系统接口来与硬件交互,这样可以保护应用程序免受硬件变动的影响。这种抽象化使得在不同硬件能力的设备上构建应用变得更加容易。

iOS 架构由四层组成:Cocoa Touch 层、媒体层、核心服务层和核心操作系统层。每一层由多个框架构成,帮助构建应用程序,如下图所示:

iOS 层次

这些层可以描述如下:

  • Cocoa Touch:这一层包含开发 iOS 应用视觉界面所需的关键框架。该层的框架提供了基本的应用基础设施,并支持一些关键技术,如基于触摸的输入、多任务处理以及许多高级系统服务。

  • 媒体:这一层提供图形、音频和视频框架,旨在创造出在移动设备上最优质的多媒体体验。该层的技术帮助开发者构建外观和声音俱佳的应用程序。

  • 核心服务:这一层提供应用程序所需的基本系统服务。并非所有这些服务都会被开发者使用,虽然系统的许多部分都建立在这些服务之上。该层包含支持位置服务、iCloud 和社交媒体等技术。

  • 核心操作系统:这一层是基础层,直接位于设备硬件之上。它处理低级功能,并提供如网络(伯克利软件分发BSD)套接字)、内存管理、线程(可移植操作系统接口POSIX)线程)、文件系统处理、外部配件访问和进程间通信IPC)等服务。

现在我们已经了解了 iOS 架构,接下来让我们看看 iOS 安全性。

iOS 安全

更新版的 iOS 已将安全性作为其核心设计。在最高层次,iOS 安全架构如下:

iOS 安全架构

苹果的 iOS 设备如 iPhone、iPad 和 iPod Touch 设计时就考虑了多层次的安全性。低级硬件特性可以防范恶意软件攻击,高级操作系统特性则防止未经授权的使用。接下来的章节将简要概述 iOS 安全功能。

密码、Touch ID 和 Face ID

密码限制未经授权的设备访问。一旦设置密码,每次打开或唤醒设备时,系统都会要求输入密码才能访问设备。iOS 设备支持简单和复杂密码。iOS 9 发布了使用六位数简单密码的选项,替代了传统的四位数密码选项。iPhone 5S 及以后的设备还支持 Touch ID 指纹作为密码,且可通过简单或复杂密码进行备份。iPhone X 及以后的设备支持一种新的生物识别锁定方式——Face ID,用户可以使用自己的面部特征作为密码。它甚至更安全,因为使用 Touch ID 解锁你的 iPhone 的概率是 1/50,000,而使用 Face ID 的概率是 1/1,000,000。

代码签名

代码签名防止用户下载和安装未经授权的应用程序。苹果公司对此做出了如下说明:

“代码签名是您编译的 iOS 应用程序被密封并标识为您所有的过程。此外,iOS 设备不会运行未经过受信方签名的应用程序或加载库。为了确保所有应用来自已知且经过批准的来源且未被篡改,iOS 要求所有可执行代码必须使用苹果发布的证书进行签名。”

沙盒

沙盒技术通过将应用程序放入一个严格限制的区域,减轻了代码执行后的利用风险。安装在 iOS 设备上的应用程序都处于沙盒环境中,一个应用程序不能访问另一个应用程序存储的数据。本质上,沙盒是一种强制实施精细控制的机制,限制应用程序对文件、网络资源、硬件等的访问。

加密

在 iOS 设备(从 iPhone 4 开始)上,整个文件系统使用一个由设备唯一硬件密钥计算得到的文件系统密钥进行加密。这个密钥存储在可清除存储区域,该区域位于设备的操作系统和硬件层之间。这就是联合测试行动组JTAG)和芯片拆卸方法不适用于数据获取的原因,因为整个数据转储将被加密。

数据保护

数据保护旨在保护静态数据并使离线攻击变得困难。它允许应用程序利用用户的设备密码,并与设备硬件加密一起生成强加密密钥。之后,强加密密钥用于加密存储在磁盘上的数据。此密钥在设备锁定时保护数据免受未经授权的访问,因此即使设备被破解,关键信息也能得到保护。

地址空间布局随机化(ASLR)

地址空间布局随机化(ASLR)是一种在 iOS 4.3 中引入的漏洞缓解技术。ASLR 随机化应用程序对象在内存中的位置,使得利用内存损坏漏洞变得困难。

特权分离

iOS 运行时遵循最小权限原则PoLP)。它包含两个用户角色:rootmobile。系统中最重要的进程以 root 用户权限运行。所有其他用户可以直接访问的应用程序,如浏览器和第三方应用程序,均以 mobile 用户权限运行。

栈破坏保护

栈破坏保护是一种漏洞缓解机制。它通过在缓冲区和栈上的控制数据之间放置一个随机且已知的值(称为栈金丝雀),来保护设备免受缓冲区溢出攻击。

数据执行防护(DEP)

数据执行防护(DEP)是一种漏洞缓解机制,处理器可以通过它区分内存中可执行代码的部分和数据部分。例如,在代码注入攻击中,攻击者试图注入一个向量并执行它。但 DEP 防止了这种情况,因为它将注入的部分识别为数据而非代码。

数据擦除

iOS 提供了“抹掉所有内容和设置”选项来擦除 iPhone 上的数据。此类数据擦除通过删除保护数据的加密密钥来擦除用户设置和信息。由于加密密钥被从设备中删除,因此无法恢复已删除的数据,甚至在法证调查过程中也无法恢复。还有其他擦除方法,它们通过覆盖设备内存中的数据来进行数据擦除。关于擦除的更多信息,可以访问support.apple.com/en-in/HT201274

激活锁

激活锁,随着 iOS 7 的推出,是一种防盗机制,它通过利用“查找我的 iPhone”功能工作。当启用“查找我的 iPhone”时,它会启用激活锁,要求用户的 Apple ID 和密码才能关闭“查找我的 iPhone”、擦除设备以及重新激活设备。

应用商店

应用商店是 iOS 的一个应用程序分发平台,由 Apple 开发和维护。它是一个集中的在线商店,用户可以在其中浏览并下载免费和付费应用程序。这些应用程序扩展了移动设备的功能。截止到 2019 年第一季度,应用商店中已有 220 万个应用程序。

App Store 中的应用程序通常由第三方开发者编写。开发者使用 Xcode 和 iOS 软件开发工具包 (SDK) 来开发应用程序。之后,他们将应用程序提交给苹果进行审核。苹果会遵循一套严格的审核流程,检查应用是否符合公司的指南。如果苹果批准该应用,它将被发布到 App Store,用户可以下载或购买。严格的审核过程使得 App Store 不容易受到恶意软件的攻击,但并非 100%安全。

XcodeGhost,是一种感染了苹果 App Store 中 50 款应用程序的苹果恶意软件,首次在 2015 年 9 月被发现。这款恶意软件嵌入在 Xcode 中,使其更难被检测到,据报道已影响全球超过 5 亿用户。一旦被发现,苹果立即删除了这些感染的应用程序。

越狱

越狱是通过使用软件和硬件漏洞去除苹果移动操作系统(OS)所施加的限制的过程。越狱允许未签名的代码运行并获得操作系统的根权限。越狱的最常见原因是扩展苹果 App Store 所施加的有限功能集并安装未批准的应用程序。越狱有助于法医获取数据,但会使用户的保修失效,可能导致设备变砖,并且可能无法恢复到出厂设置。

如果你越狱了设备,最好假设它将永远处于越狱状态,并且保修不再有效。

许多公开的越狱工具会向设备添加一个非官方的应用程序安装器,例如 Cydia,它允许用户从在线文件库中安装许多第三方应用程序、工具、插件和应用。通过 Cydia 下载的软件为设备打开了无尽的可能性,而未越狱的设备则无法实现这些功能。最受欢迎的越狱工具包括 Pangu、TaiG、Electra 和 Unc0ver。并非所有 iOS 版本都可以越狱。下表将帮助您根据您的设备和 iOS 版本选择合适的越狱工具:

版本 发布日期 工具
iPhone OS 1.0 2007 年 6 月 29 日 (无名称)
iPhone OS 2.0 2008 年 7 月 11 日 PwnageTool
iPhone OS 3.0 2009 年 6 月 17 日 PwnageTool
iOS 4.0 2010 年 6 月 21 日 PwnageTool
iOS 5.0 2011 年 10 月 12 日 redsn0w
iOS 6.0 2012 年 9 月 19 日 redsn0w
iOS 7.0 - 7.0.6 2013 年 9 月 18 日 evasi0n7
iOS 7.1 - 7.1.2 2014 年 5 月 29 日 Pangu
iOS 8.0 - 8.1 2014 年 9 月 17 日 Pangu8
iOS 8.1.1 - 8.4 2014 年 11 月 17 日 TaiG, PP Jailbreak
iOS 8.4.1 2015 年 8 月 13 日 EtasonJB
iOS 9.0 2015 年 9 月 16 日 Pangu9
iOS 9.1 2015 年 10 月 21 日 Pangu9
iOS 9.3.5 2016 年 8 月 25 日 Phoenix
iOS 10.0 - 10.1.1 2016 年 9 月 13 日 Yalu
iOS 11.0 - 11.1.2 2017 年 9 月 19 日 LiberiOS
iOS 11.0 - 11.1.2 2017 年 9 月 19 日 Electra1112
iOS 11.0 - 11.4.1 2018 年 7 月 7 日 Electra1131
iOS 11.0 - 11.4.1 2018 年 10 月 14 日 Unc0ver
iOS 12.0 - 12.2, 12.4 - 12.4.2 2019 年 9 月 17 日 Chimera, Unc0ver
iOS 12.3 - 13.2.3 2019 年 11 月 10 日 checkra1n

我们现在已经了解了越狱过程,并且查看了当前可用的不同越狱工具。

概述

对 iOS 设备进行取证检查的第一步应该是识别设备型号。iOS 设备的型号可以帮助检查员了解设备的底层组件和功能,这些信息有助于制定获取数据和进行检查的方法。旧版 iOS 设备不应被忽视,因为它们可能会成为调查的一部分。你必须了解所有 iOS 设备,因为旧设备有时仍在使用,且可能与刑事调查有关。

下一章将提供一些工具,帮助从 iOS 设备中获取数据,以便进行后续的取证检查。并非所有工具都相同,因此了解哪些工具能有效完成任务非常重要。

第四章:从 iOS 设备获取数据

从犯罪现场恢复的 iOS 设备可能是一个丰富的证据来源。想想看,智能手机对用户来说有多个人化;没有任何其他数字设备能比得上这一点。我们很少在离开家或者走出家门时没有将智能手机放在触手可及的地方。它几乎像是我们日常活动的日记,深入窥视人类最私密的方面。根据多个新闻报道,奥斯卡·皮斯托瑞斯的 iPad 被一名移动专家检查,并在他的审判中展示,显示他在女友去世前几小时的互联网活动。当 iOS 设备能够提供所谓的铁证时,作为检查员的你必须确保知道如何正确处理、采集和分析该设备。

有多种方法可以从 iOS 设备获取取证数据。尽管每种方法都有其优缺点,但任何采集方法的基本原则都是尽可能获取更多的数据。

本章将涵盖以下主题:

  • iOS 设备操作模式

  • 密码保护和潜在的绕过方法

  • 逻辑采集

  • 文件系统采集

iOS 设备的操作模式

在我们深入探讨取证技术和采集方法之前,了解 iOS 设备的不同操作模式非常重要。许多取证工具和方法要求将设备置于某一操作模式。理解 iOS 设备的操作模式是执行特定操作所必需的。

尽管大多数商业工具会演示如何将设备置于某种特定模式,你必须理解该模式代表的含义。iOS 设备能够运行在不同的操作模式下:正常模式、恢复模式和 设备固件更新 (DFU) 模式。一些取证工具要求你知道设备当前使用的是哪种模式。本节将定义每种模式。

请注意,当提到 iPhone 时,应理解该说法适用于所有 iOS 设备。

正常模式

当 iPhone 开机时,它的操作系统会启动;这种模式称为正常模式。大多数常规活动(如拨打电话、发短信等)都会在正常模式下进行。

当 iPhone 开机时,内部会通过一个安全启动链,如下图所示。这在越狱设备上不会发生。启动过程中的每个步骤都包含由 Apple 加密签名的软件组件,以确保完整性:

正常模式下 iPhone 的安全启动链

*启动 ROM 反过来验证低级引导加载程序(LLB)是否经过 Apple 签名,并将其加载。LLB 由启动 ROM 加载并验证,但这只在配备 A9 或更早版本 A 系列处理器的设备上发生。

启动 ROM,也叫 安全 ROM,是 只读内存ROM),是 iPhone 上运行的第一段重要代码(www.apple.com/business/docs/iOS_Security_Guide.pdf)。iOS 设备的启动过程定义在以下步骤中:

  1. 启动 ROM 代码包含 Apple 根 证书授权CA)公钥,用于验证下一阶段的签名,然后才允许其加载。

  2. 当 iPhone 启动时,应用处理器执行来自启动 ROM 的代码。

  3. 启动 ROM 会验证 低级引导加载程序LLB)是否由 Apple 签名并加载它。LLB 会被启动 ROM 加载并验证,但这只会在配备 A9 或更早 A 系列处理器的设备上发生。

  4. 当 LLB 完成其任务时,它会验证并加载第二阶段引导加载程序(iBoot)。iBoot 会验证并加载 iOS 内核。

  5. iOS 内核会验证并运行所有用户应用程序。

当 iOS 设备处于此状态时,可以通过取证获取用户可访问的一部分内容。最常见的包括逻辑获取,稍后将在本章中讨论。

恢复模式

在启动过程中,如果某一步无法加载或验证下一步,则启动会停止,iPhone 会显示以下屏幕:

iOS 设备恢复模式

此模式被称为恢复模式,并且在执行升级或恢复 iPhone 时是必需的。要进入恢复模式,请执行以下步骤:

  1. 关闭设备。

  2. 按住 iPhone Home 按钮,并通过 USB 数据线将设备连接到计算机。设备应该会开启。

  3. 持续按住 Home 按钮,直到出现连接到 iTunes 的屏幕。然后,可以释放 Home 按钮(在越狱的 iOS 设备上,此屏幕可能会显示不同的图标)。大多数取证工具和提取方法会提醒您当前 iOS 设备的状态。

  4. 要退出恢复模式,请重新启动 iPhone。在 iPhone 6s 及更早版本上,可以通过同时按住 Home 按钮和睡眠/电源按钮,直到出现 Apple 标志来完成。在 iPhone 7 和 iPhone 7 Plus 上,可以通过同时按住侧边按钮和音量下按钮来完成。对于 iPhone 8 及更新版本,您需要先按音量加按钮,再按音量减按钮,然后长按侧边按钮。

您可以在 support.apple.com/en-in/HT201263 阅读有关 iOS 设备恢复模式的更多信息。

通常,重启过程会将 iPhone 从恢复模式恢复到正常模式。相同的方法适用于 Apple Watch。你可能会遇到 iPhone 不断重启到恢复模式的情况,这被称为恢复循环。当用户或检查员尝试越狱 iOS 设备时,若发生错误,可能会出现恢复循环。要摆脱恢复循环,必须将设备连接到 iTunes,以便恢复备份到设备。

这会对证据造成更改,因此请确保在尝试使用这些方法处理真实证据之前,已在测试设备上验证过你的获取方法。

DFU 模式

在启动过程中,如果 Boot ROM 无法加载或验证 LLB 或 iBoot(在较新的设备上),iPhone 将进入设备固件升级DFU)模式。DFU 模式是一个低级诊断模式,旨在为 iPhone 执行固件升级。

要进入 DFU 模式,请按照以下步骤操作适用于 iPhone 8 及更高版本:

  1. 使用 USB 数据线将设备连接到工作站。

  2. 按下音量加大按钮并迅速释放。

  3. 按下音量减小按钮并迅速释放。

  4. 按住侧边按钮,再次按音量减小按钮。

  5. 5 秒后,释放侧边按钮,但继续按住音量减小按钮,直到你看到恢复模式屏幕。

按照以下步骤操作适用于 iPhone 7:

  1. 使用 USB 数据线将设备连接到工作站。

  2. 同时按住侧边和音量减小按钮。

  3. 释放侧边按钮,但继续按住音量减小按钮,直到你看到恢复模式屏幕。

按照以下步骤操作适用于 iPhone 6s 及更早版本:

  1. 使用 USB 数据线将设备连接到工作站。

  2. 同时按住主屏和顶部(或侧边)按钮。

  3. 释放顶部(或侧边)按钮并继续按住主屏按钮。

对于 iPhone 6s 及更早版本,当设备处于 DFU 模式时,屏幕上不会显示任何内容。

在 macOS 上验证 iPhone 是否处于 DFU 模式时,启动系统报告并转到 USB 选项。你应该能看到类似以下截图的内容:

显示 DFU 模式设备的 MacBook 系统信息

接下来,我们将快速浏览设置取证环境所需的工具。

设置取证环境

如今,我们有一些工具可以供移动取证检查员使用,帮助在 macOS 和 Windows 系统主机上获取和分析 iOS 设备。例如,Elcomsoft iOS Forensic Toolkit 有 macOS 和 Windows 版本;至于免费和开源工具,libimobiledevice 库可以使用——不仅在 macOS 和 Windows 的取证工作站上,甚至在 Linux 上也可以使用!

我们将在本章后面介绍这些工具的使用,包括实践中的逻辑和文件系统获取,甚至越狱。但是让我们先从密码保护和可能的绕过方法开始,因为没有密码,我们无法从现代 iOS 设备中提取任何数据。

密码保护和潜在绕过方法

我们先从坏消息开始:如果你正在检查运行 iOS 8 或更高版本的 iPhone,特别是如果是较新的设备,比如 iPhone 6s,那么解锁的机会几乎为零。

当然,也有一些硬件解决方案,比如 IP-BOX 3,但它们都只能偶尔奏效,使用这些工具甚至可能导致设备变砖。随着 iOS 11 的发布,这个问题变得更加严重——即使检查的设备没有密码保护,你仍然需要输入密码,因为必须输入密码来确认设备与工作站之间的信任关系。

那么,移动取证专家该怎么办呢?使用锁定文件!这些锁定文件以plist文件的形式存储在受信任的计算机上,允许你欺骗设备,让它认为在取证工作站上已被解锁或信任

锁定文件位于以下位置:

  • macOS 中的/var/db/lockdown

  • Windows 7 及更高版本中的C:\ProgramData\Apple\Lockdown

你必须知道,只有设备在上次重启后至少一次通过密码解锁,才能通过锁定文件解锁设备。

还有一些高级技术存在。包括通过指纹模具欺骗 Touch ID、通过面具欺骗 Face ID,以及通过 NAND 镜像绕过密码输入限制。

第一种技术最早由 Jason Chaikin 演示。他展示了如何通过用常见的模具材料(如牙科模具和橡皮泥)提取他人指纹,从而绕过 Touch ID。

第二种技术由越南网络安全公司 Bkav 作为概念验证进行了演示。他们创建了一种面具,利用三维打印、化妆和二维图像的组合,可以欺骗 Face ID 功能。

最后一种技术由剑桥计算机实验室安全小组的高级研究员 Sergei Skorobogatov 演示。这项技术通过焊接掉 iPhone 的闪存芯片并克隆它,绕过了密码输入限制。这项技术应该适用于任何 iOS 设备,直到 iPhone 6s Plus。

逻辑获取

逻辑获取捕获了用户可访问的部分内容;换句话说,就是包含在 iTunes 备份中的内容。这意味着我们无法获取任何已删除的文件,但得益于 SQLite 数据库的空闲列表和未分配空间,我们可以恢复已删除的记录,包括短信和其他聊天记录、浏览历史等。我们将在第五章中讨论恢复 SQLite 数据和已删除的证据,iOS 数据分析与恢复

逻辑获取是确认设备是否解锁的最简单方式,因为它只是使用内置的备份机制。大多数支持 iOS 设备逻辑获取的工具和方法,如果设备被锁定,都会失败。有些人认为,如果捕获了物理镜像,就几乎不需要进行逻辑获取。然而,并不是所有数据都会在物理镜像中解析出来,这就是为什么获取逻辑镜像、获得可读数据能帮助你深入物理镜像,从中提取支持法医调查的证据。

逻辑获取是最快、最简单、最便宜的方式来获取存储在 iOS 设备上的数据。有各种工具,从商业工具到免费的工具,都能够捕获逻辑镜像。大多数这些工具要求设备已解锁,或者主机机器上可以轻松访问 plist 文件。

使用 libimobiledevice 进行实际的逻辑获取

理论掌握好是好事,但将其付诸实践更为重要。让我们使用 libimobiledevice 创建一个运行 iOS 13.2 的 iPhone 的逻辑镜像,它应该已经安装在你的工作站上,因为我们在上一章中使用它来收集设备信息。

好的,让我们开始:

  1. 首先,让我们使备份加密。将 iOS 设备连接到工作站并启动命令提示符。将目录更改为包含 libimobiledevice 的目录,并输入以下命令:
idevicebackup2.exe backup encryption on <your_password>
  1. 如果你看到“备份加密已成功启用”,那么你已经做对了,备份将会被加密。这将帮助你,作为法医检查员,获取更多关于用户密码、Safari 浏览历史等信息。

  2. 现在是时候创建备份了——我们的 iOS 设备逻辑镜像。为此,请输入以下命令:

idevicebackup2 backup --full <the_folder_you_want_the_image_to_be_saved>

就是这样。你可以在下面的截图中看到逻辑成像的过程:

使用 libimobiledevice 进行 iPhone 逻辑成像

接下来,让我们看看如何使用 Belkasoft Acquisition Tool 进行逻辑获取。

使用 Belkasoft Acquisition Tool 进行实际的逻辑获取

由于逻辑获取是现代 iOS 设备最常见的选项,我们将演示如何使用更多免费的工具。第一个工具是 Belkasoft Acquisition Tool。这个工具不仅可以用于 iOS 设备获取,还可以用于硬盘,甚至是云数据。

让我们使用 Belkasoft Acquisition Tool 获取一台运行 iOS 13.2.3 的 iPhone:

  1. 启动 Belkasoft Acquisition Tool 并选择移动设备选项:

选择源

  1. 在下一个窗口中,选择 Apple 选项:

选择移动类型

  1. 现在,选择获取方法和图像路径:

选择获取方法

该工具能够在设备未越狱的情况下创建 iTunes 备份,在设备越狱的情况下执行文件系统提取。

  1. 等待任务成功完成。你将找到设备的逻辑镜像文件,保存在你在上一步中选择的文件夹里:

创建备份

备份可以通过 Belkasoft Evidence Center 以及许多其他移动取证工具进行分析。

使用 Magnet ACQUIRE 进行实际的逻辑获取

另一个免费工具,Magnet Forensics 的ACQUIRE,也能进行逻辑获取。让我们再次进行逻辑获取,这次使用运行 iOS 12.2 的设备:

  1. 启动 Magnet ACQUIRE 并从列表中选择你想要获取镜像的设备:

选择设备

  1. 选择你想要获取的图像类型。我们想要获取逻辑图像,并且我们的设备没有越狱,所以我们将选择 Quick 选项:

选择图像类型

  1. 如果需要,你可以添加证据源的描述,并选择你希望保存图像的文件夹:

选择目标文件夹、图像名称和图像信息

  1. 等待任务成功完成;你将看到获取过程的总结:

创建镜像

所有提取的数据将保存在目标文件夹中的 ZIP 归档文件中。此外,目标文件夹将包含一个 TXT 文件,其中包含获取过程的日志和图像信息。

下一部分将指导你如何进行越狱和文件系统获取。

文件系统获取

Secure Enclave 为 iOS 取证专家带来了新的挑战。我们无法提取解密设备镜像所需的加密密钥,因此执行物理获取是无效的。但仍有文件系统获取。遗憾的是,在大多数情况下,这需要 iOS 设备越狱。接下来的章节将向你展示如何使用 Electra 对运行 iOS 11.4.1 的 iPhone 进行越狱,并使用 Checkra1n 对运行 iOS 13.2 的 iPhone 进行越狱。

实际的越狱操作

要执行文件系统获取,我们需要将 iOS 设备进行越狱。以下是越狱 iOS 11.4.1 设备的步骤:

  1. 从以下链接下载Electragithub.com/coolstar/electra-ipas/raw/master/Electra1141-1.3.2.ipa

  2. 下载Cydia Impactorwww.cydiaimpactor.com/),运行它并将设备连接到你的工作站:

运行 Cydia Impactor

  1. Electra IPA文件拖放到Cydia Impactor窗口中。

  2. 在新窗口中输入任何 Apple ID(你可以为每个检查的设备注册一个新的 Apple ID)。

  3. 使用此 Apple ID 登录 appleid.apple.com/ 并在安全部分生成一个应用专用密码。将此密码粘贴到下一个窗口中。等待过程完成。

  4. 在手机上,进入 设置 | 通用 | 设备管理 | Apple ID 并点击信任:

验证开发者

  1. 将手机置于飞行模式,关闭 Siri,然后重启设备。

  2. 在主屏幕上点击 Electra 图标,然后选择越狱。如果过程成功完成,你将在主屏幕上看到 Cydia 图标:

越狱设备

现在,手机已经越狱,可以进行文件系统获取了。

Checkra1n基于 bootrom 漏洞和利用,支持广泛的 iOS 设备,甚至包括运行最新(截至写作时)的 iOS 13.2 的设备。以下是越狱运行 13.2 的 iOS 设备的步骤:

  1. checkra.in/ 下载 Checkra1n

  2. 运行应用程序。写作时,Checkra1n仅适用于 macOS。

  3. 连接设备并将其置于 DFU 模式:

将设备置于 DFU 模式

  1. 等待利用过程完成:

利用过程

一旦设备重新启动,你将在主屏幕上看到 checkra1n 图标——设备现在已经越狱,并准备好进行文件系统获取。

如需更多越狱技术,请参考第二章中的越狱部分,理解 iOS 设备的内部结构

使用免费工具进行实用的文件系统获取

现在是进行文件系统获取的时候了。我们只需要libimobiledevice中的iproxy

  1. 打开命令提示符窗口,并使用以下参数运行iproxy

  1. 打开另一个命令提示符窗口,切换到你希望存储镜像的目录,并运行以下命令:
ssh root@127.0.0.1 -p 4444 "tar -cf - /private/var/" > userdata.tar

通过 SSH 连接时,会提示输入必要的密码。SSH 的默认密码是 alpine

一旦过程完成,你将在之前切换的目录中找到创建的文件系统镜像。它是一个 TAR 压缩文件,可以使用许多压缩软件(如 7-Zip)打开。

文件系统镜像内容

接下来,我们来看一下Elcomsoft iOS 取证工具包

使用 Elcomsoft iOS Forensic Toolkit 进行实际的文件系统获取

当然,商业工具更加稳定和可靠。能够进行文件系统获取的工具之一是 Elcomsoft iOS Forensic Toolkit。在这里,我们将获取一台运行 iOS 12.4.3 的越狱 iOS 设备。

执行此操作的步骤如下:

  1. 将设备连接到工作站并启动 Toolkit.cmd

  2. 选择用于 SSH 连接的端口(默认是 22,但由于我们使用了 checkra1n 越狱,端口改为 44),然后输入密码(默认是 alpine):

  1. 要获取设备的文件系统,请输入 F

  1. 选择镜像名称并启动该过程。

一旦过程完成,我们将拥有一个文件系统镜像,可以用我们选择的移动法医工具进行分析。

摘要

iOS 设备法医检查的第一步是从设备中获取数据。有几种不同的方法可以从 iOS 设备获取数据。本章涵盖了逻辑和文件系统获取技术,以及越狱和绕过密码的相关方法。

虽然文件系统获取是法医学上从 iOS 设备中获取大部分数据的最佳方法,但备份文件可能存在,或者可能是从设备提取数据的唯一方法。

下一章将详细讨论 iOS 设备的备份文件,包括用户、法医、加密和 iCloud 备份文件,以及您可以执行的法医学检查方法。

第五章:从 iOS 备份中获取数据

在上一章中,我们介绍了从 iOS 设备获取数据的技术,包括逻辑和文件系统获取。本章介绍了如何使用 Apple 的同步协议,将设备上的文件备份到计算机或 iCloud 的技术。

对 iOS 设备的物理获取在调查中提供了最多的数据,但你也可以在 iOS 备份中找到大量信息。iOS 设备用户有几种方式备份他们设备上的数据。用户可以选择将数据备份到他们的计算机,使用 Apple iTunes 软件,或备份到 Apple 的云存储服务 iCloud。每次 iPhone 与计算机或 iCloud 同步时,它都会通过复制设备中选择的文件来创建备份。用户可以确定备份中包含的内容,因此有些备份可能比其他备份更为全面。此外,用户还可以同时备份到计算机和 iCloud,每个位置的备份数据可能会有所不同。这通常是由于 iCloud 免费存储的限制。用户可能仅将照片和联系人备份到 iCloud,但可能会将所有数据的完整备份备份到计算机。如前所述,物理获取提供了对 iOS 设备上所有数据的最佳访问权限;然而,备份可能是唯一可用的数字证据来源,尤其是当我们处理最新的 iOS 设备时。

在本章中,我们将涵盖以下主题:

  • 使用 iTunes 备份

  • 创建并分析 iTunes 备份

  • 提取未加密的备份

  • 处理加密的备份文件

  • 使用 iCloud 备份

使用 iTunes 备份

在任何之前与 iOS 设备同步过的计算机上,都存储着大量信息。这些计算机通常被称为主机计算机,可能包含历史数据和密码绕过证书。在刑事调查中,可以通过搜索令状来扣押属于嫌疑人的计算机,从而访问备份和锁定证书。对于其他所有情况,需要获得同意或合法的访问权限。iOS 备份文件取证主要涉及分析由 iPhone 或 iPad 创建的离线备份。Apple Watch 的数据将包含在与其同步的 iPhone 备份中。

iTunes 备份方法在其他获取类型不可行的情况下也非常有用。在这种情况下,你实际上是创建了设备的 iTunes 备份,并使用取证软件进行分析。因此,了解备份过程和涉及的工具非常重要,以确保工具能够在不污染设备上其他现有数据的情况下创建取证备份。

可以使用 iTunes 软件创建 iPhone 备份文件,iTunes 适用于 macOS 和 Windows 平台。iTunes 是 Apple 提供的免费工具,用于在 iOS 设备和计算机之间同步和管理数据。iTunes 使用 Apple 的专有同步协议将数据从 iOS 设备复制到计算机。例如,可以使用数据线或 Wi-Fi 将 iPhone 与计算机同步。iTunes 提供了加密备份的选项,但默认情况下,每当 iPhone 同步时,它会创建一个未加密的备份。加密备份一旦破解,会提供对 iOS 设备上存储的数据的额外访问权限。此部分将在本章后面讨论。

用户通常会创建备份文件以保护数据,以防设备损坏或丢失。可以创建法医备份作为最佳证据,或者从现有的 iOS 备份文件中提取数据以搜索遗留信息。例如,如果你正在接受调查并删除了文件或擦除了 iPhone,你在 iCloud 和 Mac 上的备份文件依然存在。根据使用的是 iTunes 还是 iCloud,可能会有多个同一设备的备份。你必须对每个备份进行法医分析,以揭示与调查相关的痕迹。

iTunes 配置为在 iOS 设备连接到计算机后自动启动同步过程。为避免 iOS 设备与计算机之间发生无意的数据交换,请在将证据连接到法医工作站之前禁用自动同步功能。以下流程的第 2 步截图展示了在 iTunes 版本 12.9.4.102 中禁用自动同步的选项。

要禁用 iTunes 中的自动同步,请执行以下步骤:

  1. 转到 编辑 | 偏好设置 | 设备。

  2. 选中“防止 iPod、iPhone 和 iPad 自动同步”并点击确定按钮,如下截图所示:

禁用 iTunes 中的自动同步

  1. 如前述截图所示,iOS 备份文件存在于系统中。如果这是一个法医工作站,这些备份文件将不会存在,或者会被永久删除,以防止交叉污染。

  2. 一旦验证同步设置,使用通用串行总线USB)数据线将 iOS 设备连接到计算机。如果连接的设备没有设置密码保护,或者它最近已连接到计算机,iTunes 会立即识别设备;否则,你将需要输入密码。这可以通过 iTunes 界面左侧显示的 iPhone 图标进行验证,如以下截图所示:

一个被 iTunes 识别的 iPhone

  1. 在 iTunes 可以访问 iPhone 之前,你必须启用计算机和手机之间的信任。系统会提示你在计算机上点击“继续”(如下面的截图所示),并在 iPhone 上选择“信任”。在 iOS 11 中,你还必须输入设备的密码:

iTunes 提示访问权限

  1. 一旦 iTunes 识别到设备,单击 iPhone 图标即可显示 iPhone 概要,包括 iPhone 的名称、容量、固件版本、序列号、可用空间和电话号码。iPhone 概要页面还显示了创建备份的选项。创建备份的过程将在以下部分进行讨论。

现在,我们准备开始备份设备。接下来的部分将引导你完成这个过程。

使用 iTunes 创建和分析备份

在这一部分,我们将引导你通过使用 Apple iTunes 来备份 iOS 设备。我们使用的是 iTunes 版本 12.10.2.3 和运行 iOS 13.2 版本的 iPhone。请执行以下步骤:

  1. 连接设备并点击 iTunes 界面左侧显示的 iPhone 图标。

  2. 进入备份部分,你可以选择备份目标(本地计算机或 iCloud),并选择是否加密,如下图所示:

iTunes 备份部分

加密的 iTunes 备份包含未加密备份没有的数据,包括密码、Wi-Fi 设置和网页浏览历史,因此确保你创建了加密备份以供取证使用。

  1. 点击“立即备份”按钮并等待过程完成。完成后,最新的备份日期和时间将被更新。

如果你想使用 iTunes 并将备份保存到外部驱动器,按照以下说明操作(我们使用的是 iTunes 版本 12.10.2.3 和 Windows 10):

  1. 重命名原始备份文件夹。

  2. 连接外部驱动器并在其上创建一个备份文件夹。

  3. 打开命令提示符并输入以下命令:

mklink /J "C:\Users\<username>\AppData\Roaming\Apple Computer\MobileSync\Backup" "f:\Backup"
  1. 现在,你可以创建一个常规的本地备份,并将其保存到外部驱动器中。

现在,我们已经准备好备份进行进一步分析。让我们深入了解其结构。

理解备份结构

当 iPhone 备份到计算机时,备份文件会存储在备份目录中,该目录以 40 个字符的十六进制字符串存在,并与设备的唯一设备标识符UDID)对应。最新的设备已经更改了 UDID 格式——现在是 24 个字符的字符串,因此它们的备份名称也相应改变。备份过程可能需要相当长的时间,具体取决于第一次备份时 iPhone 上存储的数据大小。备份目录的位置取决于计算机的操作系统。以下表格列出了常见操作系统及其 iTunes 备份目录的默认位置:

操作系统 备份目录位置
Windows XP C:\Documents and Settings\<username>\Application Data\Apple Computer\MobileSync\Backup\
Windows Vista/7/8/10 C:\Users\<username>\AppData\Roaming\Apple Computer\MobileSync\Backup\
macOS ~/Library/Application Support/MobileSync/Backup/~代表主文件夹)

在第一次同步时,iTunes 会创建一个备份目录并进行设备的完整备份。目前,在后续的同步中,iTunes 只会备份设备上修改的文件并更新现有的备份目录。过去并非如此,因为每次 iOS 设备备份时,都会创建一个新的备份。此外,当设备更新或恢复时,iTunes 会自动启动备份并执行增量备份。增量备份与备份目录具有相同的名称,但会附加一个破折号(-)、备份的国际标准化组织ISO)日期、另一个破折号(-),以及 24 小时格式带秒的时间([UDID]+ '-' + [Date]+'-'+[Time stamp])。

iTunes 备份可能会对设备上的所有内容进行备份,包括联系人、短消息服务SMS)消息、照片、日历、音乐、通话记录、配置文件、文档、钥匙串、网络设置、离线网页应用缓存、书签、cookies、应用数据(如果选中),以及更多内容。例如,如果备份未加密,则电子邮件和密码将不会被提取。备份还包含设备的详细信息,如序列号、UDID、订户身份模块SIM)信息和电话号码。这些信息也可以用来证明备份与移动设备之间的关联。

备份目录包含四个标准文件,以及独立文件(直到 iOS 9)或文件夹(iOS 10 及更高版本)。在 iOS 9 之前,这四个文件分别是info.plistmanifest.pliststatus.plistmanifest.mbdb,但从 iOS 10 开始,以下是标准文件:

  • info.plist

  • manifest.plist

  • status.plist

  • manifest.db

这些文件存储有关备份及其来源设备的详细信息。

info.plist

info.plist文件存储有关备份设备的详细信息,通常包含以下信息:

  • Applications:这是设备上安装的应用程序列表。

  • Build version:这是 iOS 的构建版本号。

  • Device name and display name:这是设备的名称,通常包括所有者的名字。

  • GUID:这是设备的全局唯一标识符GUID)。

  • ICCID:这是集成电路卡标识符ICCID),它是 SIM 卡的序列号。

  • IMEI:这是国际移动设备身份码IMEI),用于唯一标识移动电话。

  • Installed Applications:这是已安装应用程序的列表。

  • Last backup date:这是上次成功备份的时间戳。

  • MEID:这是设备的移动设备识别码MEID)。

  • Phone Number:这是备份时设备的电话号码。

  • Product Name:这是设备的名称(例如,iPhone X)。

  • Product type and product version:这是设备的型号和固件版本。

  • Serial Number:这是设备的序列号。

  • Target Identifier and Unique Identifier:这是设备的 UDID。

  • iTunes Files:此项包含有关照片、文件夹、语音备忘录和 iTunes 偏好的信息。

  • iTunes Settings:此项包含关于已删除应用程序和应用程序库的信息。

  • iTunes version:这是用于创建备份的 iTunes 版本。

现在我们来看一下manifest.plist文件。

manifest.plist

manifest.plist文件描述了备份的内容,通常包含以下信息:

  • Backup keybagBackup keybag包含一组数据保护类密钥,这些密钥不同于System keybag中的密钥,备份数据会使用新的类密钥进行重新加密。Backup keybag中的密钥有助于以安全的方式存储备份。

  • Version:这是备份的版本。

  • Date:这是创建或最后更新备份的时间戳。

  • ManifestKey:这是用于加密manifest.db的密钥(采用保护级别 4 进行包装)。

  • WasPasscodeSet:此项标识设备上次同步时是否设置了密码。

  • Lockdown:此项包含设备详细信息、上次备份计算机的名称及其他远程同步配置。

  • Applications:这是备份设备上安装的第三方应用程序列表,包括版本号和包标识符。

  • IsEncrypted:此项标识备份是否加密。对于加密备份,值为True;否则为False

接下来,我们将查看status.plist文件。

status.plist

status.plist文件存储有关备份状态的详细信息,通常包含以下信息:

  • IsFullBackup:此项标识备份是否为设备的完整备份。

  • UUID:这是设备的 UUID。

  • Date:这是备份最后一次修改的时间戳。

  • BackupState:这标识备份是新的还是已更新的备份。

  • SnapshotState:这标识备份过程是否已经成功完成。

现在,我们将查看manifest.db文件。

manifest.db

manifest.db是一个 SQLite 数据库,包含了通过备份机制从 iPhone 提取的所有文件和文件夹的列表。该数据库的Files表包括以下字段:

  • fileID:这是安全哈希算法 1SHA1)对域名的哈希值,再加上-符号和文件或文件夹的相对路径。例如,ae94e0607ca39a88c18aca095cb5b4f8471291a0CameraRollDomain-Media/PhotoData/Thumbnails/V2/DCIM/102APPLE的 SHA1 哈希值。

  • domain:这是文件或文件夹所属的域(iOS 中的所有文件被划分为多个域,例如CameraRollDomainHomeDomain)。

  • relativePath:这是文件(包括文件名)或文件夹的相对路径。

  • flags:这些是文件标志。

  • file:这是一个嵌入的.plist文件。这些.plist文件包含了许多重要信息,包括但不限于:

    • LastModified:这是文件的最后修改时间戳,采用 Unix 格式。

    • Birth:这是文件的创建时间戳,采用 Unix 格式。字段如下面的截图所示:

manifest.db 内容

你可以使用例如DB Browser for SQLiteDB4S)这样的工具轻松导出这个嵌入的.plist二进制文件。操作步骤如下:

  1. 使用打开数据库按钮打开manifest.db

  2. 转到浏览数据标签页。

  3. 点击文件列中的一个单元格。

  4. 编辑数据库单元格面板中,使用导出按钮将数据保存为.plist文件,如下方截图所示:

使用DB4S导出嵌入的.plist 文件

自 iOS 10 以来,文件不再以 40 字符的十六进制字符串命名。相反,你会看到一系列以 2 字符的十六进制字符串命名的文件夹,这些文件夹包含你在早期版本中看到的文件,如下面的截图所示:

iPhone 备份文件

现在你已经了解了备份结构,接下来我们学习如何从中提取有价值的数据。

提取未加密的备份

有许多免费的和商业的工具可以用来分析未加密备份中的数据。这些工具分析manifest.db数据库,恢复文件名,并创建用户在 iOS 设备上看到的文件结构。一些流行的工具包括 iBackup Viewer、iExplorer,以及商业取证工具,如 Belkasoft Evidence Center、Magnet AXIOM 和 UFED Physical Analyzer。

iBackup Viewer

iBackup Viewer 是一款免费的工具,支持 Windows 和 macOS,可以从 www.imactools.com/iphonebackupviewer/ 下载。

该工具默认期望备份位于默认位置,但您可以将其更改为您选择的位置——例如,外部硬盘。

要提取备份,请按照以下步骤操作:

  1. 如果您想分析的备份没有保存在默认位置,请点击主屏幕上的首选项超链接,并选择正确的位置,如以下截图所示:

选择备份位置

  1. 您将在您选择的位置看到可用的备份。点击您想要检查的备份。

您将看到可用的潜在证据源,包括联系人、通话历史记录、消息、日历、笔记、语音邮件和浏览历史,如以下截图所示:

潜在证据源

  1. 需要注意的是,您可以使用原始数据模式(上一个截图中的最后一个图标)将备份浏览为文件系统,如以下截图所示:

原始数据模式

借助这个工具,您可以轻松查看和导出感兴趣的文件。当然,这不是唯一能解决此类任务的工具。让我们再看一个——iExplorer。

iExplorer

iExplorer 提供免费的版本,您可以从 macroplant.com/iexplorer 下载。此工具支持 Windows 和 macOS,也可以浏览 iTunes 备份。以下是如何使用它:

  1. 启动 iExplorer 并点击浏览 iTunes 备份。

  2. 若要从自定义位置添加备份,请点击添加/修改备份位置。

  3. 现在,点击添加备份位置按钮并选择路径,如以下截图所示:

添加自定义路径

  1. 现在,来自自定义位置的备份应该可用。

另外,还有一个有趣的选项——iExplorer 可以为您收集 SQLite 数据库。为此,请点击原始数据库按钮,进入以下屏幕(您将在接下来的章节中了解更多关于 SQLite 法医的数据):

iExplorer 原始数据库选项

您还可以通过 iExplorer 将备份浏览为文件和文件夹列表;为此,请使用左侧面板。您也可以使用备份浏览器按钮,然后使用主面板来浏览备份。

如您所见,有足够的工具可以从 iTunes 备份中提取有价值的数据,即使它是加密的。当然,通常如果您知道密码是可以的。但如果您不知道密码呢?您将在下一节中学习如何绕过它。

处理加密的备份文件

对于加密备份,备份文件使用 高级加密标准-256AES-256)算法在 密码块链模式CBC)下加密,并使用一个唯一的密钥和一个空的 初始化向量IV)。唯一的文件密钥由 Backup keybag 中的一组类密钥保护。Backup keybag 中的类密钥通过从 iTunes 中设置的密码生成的密钥保护,该过程通过 基于密码的密钥派生函数 2PBKDF2)进行 10,000 次迭代。在 iOS 10.2 中,该机制进行了升级,现在需要 10,000,000 次迭代。

许多免费的和商业的工具在知道密码的情况下支持加密备份文件的解析。不幸的是,这并非总是成立,因此有时法医检查员需要破解这些密码。下一部分将通过使用 Elcomsoft Phone Breaker 来引导你完成这个过程。

Elcomsoft Phone Breaker

Elcomsoft Phone Breaker 是一款由 Elcomsoft 开发的 图形处理单元GPU)加速的商业工具,适用于 Windows 平台。该工具可以在无法获取备份密码的情况下解密加密的备份文件。如果无法获得备份密码,工具提供了一种选项来启动密码暴力破解攻击。Elcomsoft Phone Breaker 通过字典和暴力破解攻击尝试恢复保护加密备份的明文密码。相对较短且简单的密码可以在合理的时间内恢复。然而,如果备份使用的是强大且复杂的密码,破解可能需要非常长的时间。

工具可在此处获得(包括免费试用版):www.elcomsoft.com/eppb.html

要暴力破解备份密码,请执行以下步骤:

  1. 启动 Elcomsoft Phone Breaker 工具,工具的主屏幕将出现,如下所示的截图:

Elcomsoft Phone Breaker 的主屏幕

  1. 进入 密码恢复向导 | 选择源 | iOS 设备备份。导航到你想要破解的备份文件,并选择 Manifest.plist 文件。

  2. 在攻击部分配置暴力破解模式,然后点击开始按钮以启动暴力破解攻击,如下截图所示:

密码恢复过程

如果暴力破解攻击成功,工具将在主屏幕上显示密码。

如果你有一部运行 iOS 11 或更高版本的 iPhone,并且知道其密码,你可以重置实际密码并使用新的已知密码进行备份。下面是如何操作:

  1. 在 iPhone 上,进入 设置 | 通用 | 重置。

  2. 选择“重置所有设置”并输入设备的密码。需要注意的是,这样做不会删除任何数据。

  3. 重置设置后,你可以创建一个新的备份,并设置你选择的密码。

如果设置了屏幕使用时间密码,你在重置备份密码时也需要输入该密码。

使用 iCloud 备份

iCloud 是苹果公司推出的一项云存储和云计算服务,发布于 2011 年 10 月。该服务允许用户将日历、联系人、提醒事项、照片、文档、书签、应用程序、笔记等数据在多个兼容设备(运行 iOS 5 或更高版本的 iOS 设备;运行 macOS X 10.7.2 或更高版本的计算机;以及 Microsoft Windows)之间同步,使用一个集中管理的 iCloud 帐户。该服务还允许用户无线并自动将其 iOS 设备备份到 iCloud。iCloud 还提供其他服务,例如 查找我的 iPhone(跟踪丢失的手机并远程擦除数据)和 查找我的朋友(与朋友共享位置并在设备到达某个位置时通知用户)。

注册 iCloud 是免费的,并且只需使用 Apple ID 即可轻松完成。当你注册 iCloud 时,Apple 会为你提供 5 GB 的免费云存储空间。如果你需要更多存储空间,可以购买升级计划。为了确保数据安全,Apple 强制要求用户在创建 Apple ID 并与 iCloud 一起使用时选择一个强密码。密码必须至少包含八个字符,其中包括一个数字、一个大写字母和一个小写字母。

运行 iOS 5 及更高版本的 iOS 设备允许用户将设备设置和数据备份到 iCloud。备份的数据包括照片、视频、文档、应用程序数据、设备设置、消息、联系人、日历、电子邮件和钥匙串,如下图所示。你可以通过进入 设置 | 密码与帐户 | iCloud | iCloud 来启用设备上的 iCloud 备份:

iPhone 上的 iCloud 备份选项

当你的手机插入电源、锁定并连接到 Wi-Fi 时,iCloud 可以自动备份你的数据。也就是说,只要有足够的空间进行当前备份,iCloud 备份将代表设备上信息的新鲜副本,并且几乎是实时的。

你也可以通过将设备连接到 iTunes 并选择 iCloud 选项来从计算机发起 iCloud 备份。iCloud 备份是增量的;也就是说,一旦初始 iCloud 备份完成,所有后续的备份只会复制设备上已更改的文件。iCloud 通过加密传输中的数据、以加密格式存储数据以及使用安全令牌进行身份验证来保护你的数据安全。

苹果的内置应用(例如,邮件和联系人)使用安全令牌来访问 iCloud 服务。使用安全令牌进行身份验证可以避免在设备和计算机上存储 iCloud 密码。

提取 iCloud 备份

存储在 iCloud 上的在线备份通常在原始 iOS 设备损坏、升级或丢失时进行恢复。要从 iCloud 提取备份,你必须知道用户的 Apple ID 和密码。知道 Apple ID 和密码后,你可以登录 www.icloud.com/ 并访问联系人、备忘录、邮件、日历、照片、提醒事项等数据。你还可以使用法医工具从 iCloud 中提取数据。例如,你可以使用 Belkasoft Acquisition Tool,这是 Belkasoft 提供的一款免费工具,可以从以下网址下载:belkasoft.com/get

要提取 iCloud 数据,请执行以下步骤:

  1. 启动 Belkasoft Acquisition Tool。

  2. 选择“云端”选项。

  3. 选择 iCloud。

  4. 输入 Apple ID 登录和密码,然后点击“下一步”。

  5. 选择你要下载的工件及目标文件夹,如下图所示:

可下载的数据类型

  1. 输入验证码。

  2. 等待过程完成。你会在所选文件夹中找到这些文件。

如果你更喜欢完整的备份,最佳选择是 Elcomsoft Phone Breaker。

要下载 iCloud 备份,请按照以下步骤操作:

  1. 启动 Elcomsoft Phone Breaker。

  2. 选择“备份”选项。

  3. 输入 Apple ID 和密码,或使用之前提取的令牌。

  4. 如果 Apple ID 启用了 双重身份验证 (2FA),请输入相应字段中的验证码。

  5. 选择你要下载的备份,如下图所示:

选择要下载的备份。

下载完成后,你可以使用你选择的工具分析备份文件——例如,本章讨论的某些工具。

总结

iOS 设备备份包含了可能是你唯一证据来源的重要信息。iOS 备份中存储的信息包括照片、视频、联系人、邮件、通话记录、用户账户和密码、应用程序以及设备设置。本章解释了如何创建备份文件并尽可能从 iTunes 和 iCloud 备份中恢复数据,包括加密的备份文件。

以下章节,第五章,iOS 数据分析与恢复,进一步深入法医调查,向你展示如何分析从备份文件中恢复的数据。

第六章:iOS 数据分析与恢复

iOS 设备取证的一个关键方面是检查和分析所获取的数据,以解读证据。在前面的章节中,你学习了从 iOS 设备获取数据的各种技巧。任何类型的获取的镜像都包含数百个数据文件,这些文件通常通过之前章节中描述的工具进行解析。即使数据已经通过取证工具进行解析,可能仍然需要手动分析以揭示更多的证据或仅仅是验证你的发现。

本章将帮助你理解 iOS 设备上数据的存储方式,并将指导你逐一检查在每次调查中应重点检查的关键证据,以尽可能多地恢复数据。

本章我们将涵盖以下主题:

  • 解读 iOS 时间戳

  • 操作 SQLite 数据库

  • 关键证据——重要的 iOS 数据库文件

  • 属性列表

  • 其他重要文件

  • 恢复已删除的 SQLite 记录

解读 iOS 时间戳

在检查数据之前,理解 iOS 设备上使用的不同时间戳格式非常重要。iOS 设备上的时间戳通常以Unix 时间戳Mac 绝对 时间格式呈现。你,作为检查员,必须确保工具能够正确转换这些时间戳。访问原始的 SQLite 文件将允许你手动验证这些时间戳。你将在接下来的几节中学到如何解码每种时间戳格式。

Unix 时间戳

Unix 时间戳是自 1970 年 1 月 1 日午夜以来经过的秒数。Unix 时间戳可以很容易地转换,可以使用 Mac 工作站上的date命令,或使用在线的 Unix 纪元转换工具,如www.epochconverter.com/

date命令在以下代码片段中展示:

$ date -r 1557479897
Fri May 10 12:18:17 MSK 2019

你可能会遇到以毫秒或纳秒格式表示的 Unix 时间戳。这并不是一个大问题;有许多在线转换工具,例如currentmillis.com/,如以下截图所示:

使用 http://currentmillis.com/转换的毫秒级 Unix 时间戳

Unix 纪元是 iOS 设备最常见的时间格式,但也有其他格式,包括 Mac 绝对时间和 WebKit/Chrome 时间。

Mac 绝对时间

iOS 设备自 iOS 5 开始采用了 Mac 绝对时间。Mac 绝对时间是自 Mac 纪元时间开始以来经过的秒数,Mac 纪元时间从 2001 年 1 月 1 日午夜开始。Unix 纪元时间和 Mac 时间之间的差异正好是 978,307,200 秒。这意味着你可以轻松地将 Mac 时间转换为 Unix 纪元时间,并使用相同的方法最终将其转换为人类可读的时间戳。当然,也有一些在线转换工具,如www.epochconverter.com/coredata,如以下截图所示:

使用 https://www.epochconverter.com/coredata 转换的 Mac 时间戳

当然,也有离线工具可以进行时间戳转换。我们将在下一节介绍其中一种。

WebKit/Chrome 时间

在分析 iOS 应用数据时,尤其是对于 Google Chrome、Safari 和 Opera 等网页浏览器,你可能会遇到另一种时间戳格式——WebKit/Chrome 时间。这是自 1601 年 1 月 1 日午夜以来的微秒数。对于这一格式,也有一个在线转换器:www.epochconverter.com/webkit

如果你不喜欢或由于某种原因不想使用在线转换器,你还可以使用一个免费的工具:Digital Detective 的 DCode。该工具可以用于转换多种不同格式的时间戳,包括 Unix 时间(秒和毫秒)、Mac 绝对时间和 WebKit/Chrome 时间,如下图所示:

使用 DCode 转换的 WebKit/Chrome 时间戳

许多商业移动取证套件能够轻松自动转换提取的时间戳,但在某些情况下,验证它是极其重要的,因此你必须清楚理解时间戳格式。

使用 SQLite 数据库

SQLite 是一个开源的进程内库,提供一个自包含、零配置和事务型的 SQL 数据库引擎。这是一个包含多个表、触发器和视图的完整数据库,所有内容都包含在一个跨平台的文件中。由于 SQLite 具有便携、可靠且小巧的特点,它成为了许多移动平台上流行的数据库格式。

与其他智能手机和平板电脑一样,Apple 的 iOS 设备大量使用 SQLite 数据库来存储数据。许多内置应用程序——如电话、信息、邮件、日历和笔记——都将数据存储在 SQLite 数据库中。除此之外,设备上安装的第三方应用程序也利用 SQLite 数据库进行数据存储。

SQLite 数据库可以有或没有文件扩展名。它们通常具有 .sqlitedb.db 文件扩展名,但也有些数据库使用其他扩展名。

SQLite 文件中的数据被拆分成包含实际数据的表。要访问存储在文件中的数据,你需要一个能够读取它的工具。大多数商业移动取证工具——如 Belkasoft Evidence Center、Magnet AXIOM 和 Cellebrite 通用取证提取设备 (UFED) Physical Analyzer——都支持对 SQLite 数据库的检查。如果你没有这些工具,以下是一些不错的免费工具:

macOS 默认包含 SQLite 命令行工具(sqlite3)。该命令行工具可以用来访问单个文件,并对数据库运行 SQL 查询。在接下来的部分中,我们将使用sqlite3命令行工具以及其他 SQLite 工具和浏览器来从各种 SQLite 数据库中检索数据。在检索数据之前,您需要学习的基本命令将在以下部分中进行说明。

连接到数据库

使用免费的工具,可以手动检查 iOS SQLite 数据库文件。以下是使用 Mac 本地命令在终端中检查数据库的示例:

  1. 确保您的设备镜像是只读挂载的,以防止对原始证据进行更改。

  2. 要通过命令行连接到 SQLite 数据库,请在终端中运行sqlite3命令并输入您的数据库文件。这将为您提供一个 SQL 提示符,您可以在其中执行 SQL 查询,如下所示的代码块所示:

$ sqlite3 sms.db
SQLite version 3.28.0 2019-04-15 14:49:49
Enter ".help" for usage hints. 
  1. 要断开连接,请使用.exit命令。这将退出 SQLite 客户端并返回终端。

下一部分将指导您使用sqlite3内置命令进行数据库分析。

探索 SQLite 特殊命令

连接到数据库后,您可以使用一些内置的 SQLite 命令,这些命令被称为点命令,可以用来从数据库文件中获取信息。

您可以通过在 SQLite 提示符下输入.help命令来获取特殊命令的列表。这些是 SQLite 特有的命令,不需要在末尾加分号。最常用的点命令包括以下几种:

  • .tables:此命令列出数据库中的所有表。以下截图显示了sms.db数据库中的表列表:

  • .schema table-name:此命令显示构建表所使用的SQL CREATE语句。以下截图显示了sms.db数据库中handle表的模式:

  • .dump table-name:此命令将表的全部内容导出为 SQL 语句。以下截图显示了sms.db数据库中handle表的导出内容:

  • .output file-name:此命令将输出重定向到磁盘上的文件,而不是显示在屏幕上。

  • .headers on:此命令在发出SELECT语句时显示列标题。

  • .help:此命令显示可用 SQLite 点命令的列表。

  • .exit:此命令用于断开与数据库的连接并退出 SQLite 命令行界面。

  • .mode:此命令设置输出模式,可以是.csv、HTML、制表符等。

确保 SQLite 提示符和点命令之间没有空格;否则,整个命令将被忽略。

探索标准 SQL 查询

除了 SQLite 点命令之外,还可以在命令行中向 SQLite 数据库发出标准 SQL 查询,如SELECTINSERTALTERDELETE。与 SQLite 点命令不同,标准 SQL 查询需要在命令末尾加上分号。

大多数你将检查的数据库只会包含合理数量的记录,因此可以执行SELECT *语句,打印表中包含的所有数据。本章将详细介绍这一部分内容。

使用商业工具访问数据库

虽然可以使用免费工具手动检查 iOS SQLite 数据库文件,但大多数检查员更倾向于在手动深入文件进行检查之前,先使用商业支持。以下是使用 SQLite(它包含在 Belkasoft Evidence Center 中)检查数据库的示例。

要打开并分析数据库,只需遵循以下几个简单步骤:

  1. 启动 Belkasoft Evidence Center,进入视图 | SQLite Viewer,选择要检查的数据库文件。

  2. 一旦选择了数据库,它会立即在 SQLite Viewer 中打开,准备好进行检查,如下图所示:

使用 Belkasoft Evidence Center 的 SQLite Viewer 打开的 sms.db 数据库

为什么检查员需要使用这些商业查看器,而不是免费的开源工具?例如,这个特定的查看器甚至支持损坏或部分覆盖的 SQLite 数据库。更重要的是,该工具支持从自由列表、预写日志WAL)和未分配空间中提取数据,如下图所示:

在 Belkasoft Evidence Center 的 SQLite Viewer 中看到的数据库未分配空间

当然,也有一些免费的开源工具可用于 SQLite 数据恢复。你将在接下来的章节中了解更多这类工具。

关键证据 – 重要的 iOS 数据库文件

按照第三章iOS 设备的数据获取和第四章iOS 备份的数据获取中的说明提取的文件系统和备份应包含以下 SQLite 数据库,这些数据库可能对您的调查很重要。如果这些文件未恢复,请确保您正确获取了 iOS 设备。这些文件是在运行 iOS 的设备上通过逻辑获取提取的。由于 Apple 在每次 iOS 版本发布时都会为内置应用程序添加新功能,因此不同 iOS 版本中的文件格式可能会有所不同。

通讯录联系人

通讯录包含有关所有者个人联系人丰富的信息。除第三方应用程序外,通讯录包含设备上存储的所有联系人的联系人条目。通讯录数据库位于/HomeDomain/Library/AddressBook.sqlitedbAddressBook.sqlitedb文件包含多个表,其中以下三个表特别值得关注:

  • ABPerson:此表包含每个联系人的姓名、组织、备注等信息。

  • ABMultiValue:此表包含ABPerson表中条目的电话号码、电子邮件地址、网站统一资源定位符URLs)等信息。ABMultiValue表使用record_id文件将联系人信息与ABPerson表中的ROWID关联起来。

  • ABMultiValueLabel:此表包含用于标识存储在ABMultiValue表中的信息类型的标签。

存储在AddressBook.sqlitedb文件中的部分数据可能来自第三方应用程序。您应手动检查应用程序文件夹,以确保所有联系人都已被统计和检查。

虽然以下所有命令都可以在 Mac 上本地运行,但我们将使用 DB4S 来检查 iOS 设备上最常见的数据库。这是一个免费工具,简化了过程,并为您提供清晰的数据视图。一旦数据库加载完成,您可以起草查询来检查最相关的数据,并将通讯录导出为名为AddressBook.csv.csv文件,如下截图所示:

DB4S 中的 AddressBook.sqlitedb 文件

在前面的截图中,您可以看到建议的查询,用于从ABPersonABMultiValue表中解析数据。

通讯录图片

除了通讯录数据外,每个联系人可能还包含与之关联的图像。每当用户接到某个特定联系人的来电时,图像会显示在屏幕上。这些图像可以由具有访问设备联系人权限的第三方应用程序创建。通常,联系人会与第三方应用程序的个人资料照片相关联。通讯录图像数据库可以在/HomeDomain/Library/AddressBook/AddressBookImages.sqlitedb中找到。

通讯录图像可以手动解析,但使用商业软件可以使这一过程变得更加实用。大多数免费和商业工具将提供访问通讯录图像的功能。然而,一些工具无法建立图像与联系人的关联,这可能需要一些手动重建。有时,免费解决方案在从 iOS 设备解析简单数据时效果最好。接下来,我们将检查在 iExplorer 中查看通讯录图像的过程,iOS 备份数据采集

在下面的截图示例中,iExplorer 自动将联系人数据与图像匹配:

在 iExplorer 中检查通讯录图像

相同的缩略图可以在ABThumbnailImage表的data列中找到。你可以手动将照片与联系人匹配,方法是使用AddressBookImages.sqlitedbABThumbnailImage表的record_id列和AddressBook.sqlitedbABPerson表的ROWID列。

通话记录

用户拨打、未接和接听的电话或 FaceTime 通话会与其他元数据(如通话时长、日期和时间)一起记录在通话历史中。通话历史数据库可以在/HomeDomain/Library/CallHistoryDB/CallHistory.storedata中找到。CallHistory.storedata文件是随着 iOS 8 引入的,目前在编写时使用的是(iOS 13.2)。

CallHistory.storedata数据库中的ZCALLRECORD表包含了通话记录。需要注意的是,只有有限数量的通话可能会存储在活动数据库中。由于数据库在需要空间时会删除最旧的记录,但这并不意味着数据被删除。它只是存储在 SQLite 数据库文件的空闲页面中,可以使用取证工具或手动恢复。ZCALLRECORD表中最重要的列如下:

  • ZDATE:此列包含通话的时间戳,采用 Mac 绝对时间格式。

  • ZDURATION:此列包含通话时长。

  • ZLOCATION:此列包含电话号码的位置。

  • ZADDRESS:此列包含电话号码。

  • ZSERVICE_PROVIDER:此列包含服务提供商——例如,电话、WhatsApp、Telegram 等。

你可以在 DB4S 中运行以下查询以解析通话历史。之后,你可以将其导出为.csv文件,如下图所示:

在 DB4S 中检查 CallHistory.storedata

这次查询非常简单,因为所有相关列都在同一张表中。请注意,我们使用了datetime将 Mac 的绝对时间戳转换为人类可读的日期。

短信服务(SMS)消息

SMS 数据库包含了从设备发送和接收的文本和多媒体消息,以及远程方的电话号码、日期和时间和其他运营商信息。从 iOS 5 开始,iMessage 数据也存储在 SMS 数据库中。iMessage 允许用户通过蜂窝或 Wi-Fi 网络向其他 iOS 或 macOS 用户发送 SMS 和多媒体消息服务MMS)消息,从而提供了一种替代 SMS 的方式。SMS 数据库可以在/HomeDomain/Library/SMS/sms.db找到。

你可以在 DB4S 中运行以下查询来解析短信消息。之后,你可以将其导出为.csv文件,如下图所示:

在 DB4S 中检查 sms.db

还有一个有趣的子目录可以在/HomeDomain/Library/SMS/下找到——Drafts。在里面,有更多的子文件夹,每个文件夹包含一个message.plist文件。每个文件都是一个属性列表,存储了用户开始输入但未发送的草稿消息。你将在接下来的章节中了解更多关于属性列表的内容。

日历事件

用户手动创建或通过邮件应用或其他第三方应用同步的日历事件存储在Calendar数据库中。Calendar数据库可以在/HomeDomain/Library/Calendar/Calendar.sqlitedb找到。

Calendar.sqlitedb文件中的CalendarItem表包含日历事件的摘要、描述、开始日期、结束日期等。你可以在 DB4S 中运行以下查询来解析日历,如下图所示:

在 DB4S 中检查 calendar.sqlitedb

如你所见,CalendarItem表以 Mac 的绝对时间格式存储日期,因此我们添加了978307200来揭示实际的时间戳,借助datetime函数。

笔记

Notes数据库包含用户通过设备内置的Notes应用创建的笔记。Notes是最简单的应用,通常包含最敏感和机密的信息。Notes数据库可以在/HomeDomain/Library/Notes/notes.sqlite找到。

notes.sqlite文件中的ZNOTEZNOTEBODY表包含每条笔记的标题、内容、创建日期、修改日期等。你可以运行以下查询来解析Notes数据库:

在 DB4S 中检查笔记

这个查询合并了两个表的数据,所以我们使用了来自ZNOTEBODYZOWNER、来自ZNOTEZ_PK,以及一个WHERE子句来执行。

Safari 书签和历史记录

在 iOS 设备上使用的 Safari 浏览器允许用户书签他们喜爱的网页。Bookmarks数据库可以在/HomeDomain/Library/Safari/Bookmarks.db找到。书签数据可以通过一个非常简单的查询提取,如以下截图所示:

在 DB4S 中检查书签

浏览历史记录可以在History.db中找到,路径为/HomeDomain/Library/Safari/。可以从history_itemshistory_visits表中提取关于访问过的网站的最重要信息,如下图所示:

在 DB4S 中检查历史记录

除了 Safari,其他浏览器也可以用来存储 iOS 设备上的数据。因此,我们建议使用专门解析互联网历史记录的工具,以确保不遗漏数据。解决此任务的好取证工具包括 Magnet Forensics 的 AXIOM、Cellebrite 的 Physical Analyzer 等。

语音邮件

Voicemail数据库包含关于存储在设备上的每个语音邮件的元数据,包括发件人的电话号码、回拨号码、时间戳和消息时长等。语音邮件录音以自适应多速率AMR)音频文件格式存储,可以通过任何支持 AMR 编解码器的媒体播放器播放(例如,QuickTime Player)。Voicemail数据库可以在/HomeDomain/Library/Voicemail/voicemail.db下找到。

录音

Recordings数据库包含关于存储在设备上的每个录音的元数据,包括时间戳、时长、存储位置等。该数据库可以在/MediaDomain/Media/Recordings找到。可以使用以下截图中显示的查询来提取元数据:

在 DB4S 中检查录音

如前面的截图所示,实际的录音文件存储在同一目录中。

设备交互

有一个 SQLite 数据库记录用户与不同应用程序的交互情况。该数据库名为interactionC.db,位于/HomeDomain/Library/CoreDuet/PeopleZINTERACTIONS表包含关于用户是否读取消息、发送消息、进行通话等信息。你可以通过以下截图中显示的查询从表中提取这些信息:

在 DB4S 中检查交互

同时,确保检查ZCONTACTS表——它包含关于用户与设备互动时涉及的联系人信息(如果适用)。

电话号码

通过分析位于/WirelessDomain/Library/DatabasesCellularUsage.db文件,你可以获取用户使用的所有电话号码的信息,即使他们更换了手机并从备份恢复。提取此数据的查询如以下截图所示:

提取电话号码

如您所见,这里不仅有电话号码,还有用户身份模块SIM)卡的集成电路卡标识符ICCID)。

属性列表

属性列表,通常称为plist,是一种结构化数据格式,用于存储、组织和访问 iOS 设备以及 macOS 设备上的各种类型数据。plist文件是二进制格式的,可以使用属性列表编辑器查看,该编辑器能够读取或将二进制格式转换为美国信息交换标准代码ASCII)格式。

Plist文件可能带有或不带有.plist文件扩展名。要访问这些文件中存储的数据,您需要一个可以读取它们的工具。一些好的免费工具包括以下:

您可以使用 Xcode 查看plist文件。macOS 默认包含plutil命令行工具。此命令行工具可以轻松地将二进制格式的文件转换为人类可读的文件。此外,大多数商业取证工具都很好地支持解析plist文件。

以下截图显示了com.apple.mobile.ldbackup.plist文件:

plist Editor Pro 中的 com.apple.mobile.ldbackup.plist

如您所见,这个plist揭示了最后一次本地和云备份的日期(当然是 Mac 绝对时间),它创建时的时区,以及备份是否加密的事实。

重要的 plist 文件

在第三章《iOS 设备数据获取》和第四章《iOS 备份数据获取》中提到的原始磁盘镜像或提取的备份,应包含对调查至关重要的以下plist文件。显示的文件是从 iOS 13.2 设备备份中提取的。对于您的 iOS 版本,文件位置可能会有所不同。

以下是包含可能与您的调查相关数据的plist文件:

plist 文件 描述
/HomeDomain/Library/Preferences/com.apple.commcenter.shared.plist 包含正在使用的电话号码
/HomeDomain/Library/Preferences/com.apple.identityservices.idstatuscache.plist 包含有关 Apple ID 使用的电子邮件地址和用户通过该 ID 与 FaceTime 或 iMessage 互动的人员的电话号码的信息
/HomeDomain/Library/Preferences/com.apple.mobile.ldbackup.plist 包含最后一次 iTunes 和 iCloud 备份的时间戳、最后一次 iTunes 备份的时区,以及是否加密
/HomeDomain/Library/Preferences/com.apple.MobileBackup.DemotedApps.plist 包含操作系统自动卸载的未使用应用程序列表
/HomeDomain/Library/Preferences/com.apple.mobilephone.speeddial.plist 包含用户最喜爱的联系人列表,包括他们的姓名和电话号码
/HomeDomain/Library/Preferences/com.apple.preferences.datetime.plist 包含用户设置的时区信息
/RootDomain/Library/Caches/locationd/clients.plist 包含使用位置服务的应用程序列表
/RootDomain/Library/Preferences/com.apple.MobileBackup.plist 包含有关从备份中恢复的最后信息,包括恢复开始日期、文件传输持续时间、传输的文件数量、源设备唯一设备标识符UDID)等
/SystemPreferencesDomain/SystemConfiguration/com.apple.mobilegestalt.plist 包含用户分配的设备名称
/SystemPreferencesDomain/SystemConfiguration/com.apple.wifi.plist 包含设备所有者使用的无线接入点信息
/WirelessDomain/Library/Preferences/com.apple.commcenter.plist 包含设备电话号码、网络运营商、ICCID 和国际移动用户身份IMSI)信息

当然,plist文件不像 SQLite 数据库那样包含大量信息,但它们在您的取证检查中仍然可以是有用的。接下来,我们将查看一些可能也有用的其他文件。

其他重要文件

除了 SQLite 和plist文件外,还有其他一些位置可能包含对调查有价值的信息。

其他来源包括以下内容:

  • 本地字典

  • 照片

  • 缩略图

  • 壁纸

  • 已下载的第三方应用程序

让我们逐一看看这些文件。

本地字典

用户添加到字典中的单词列表存储在LocalDictionary纯文本文件中,文件位置为/KeyboardDomain/Library/Keyboard/。由于该文件是纯文本格式,您可以使用您喜欢的文本编辑器查看。

照片

照片存储在位于/CameraRollDomain/Media/DCIM的目录中,该目录包含使用设备内置相机拍摄的照片、截图、自拍、照片流、最近删除的照片以及相关的缩略图。一些第三方应用程序也会将拍摄的照片存储在该目录中。存储在DCIM文件夹中的每张照片都包含可交换图像文件格式EXIF)数据。可以使用ExifTool提取存储在照片中的EXIF数据,ExifTool可以从sno.phy.queensu.ca/~phil/exiftool/下载。当照片被标记为用户的地理位置时,如果用户在 iOS 设备上启用了位置权限,EXIF数据可能包含地理位置信息。

缩略图

另一个与照片相关的重要证据来源是ithmb文件。你可以在/CameraRollDomain/Media/PhotoData/Thumbnails找到这些文件。这些文件不仅包含设备上实际照片的缩略图,还有已删除照片的缩略图。当然,有一个工具可以解析这些文件——iThmb Converter,可以从www.ithmbconverter.com/en/download/下载,以下截图展示了该工具:

使用 iThmb Converter 检查 3304.ithmb

由于这些文件可能包含已删除照片的缩略图,法医检查员不得忽视它们。更重要的是,其中一些文件包含相当大的缩略图,因此可以清楚地看出所拍摄的内容。

壁纸

当前设置为 iOS 设备的背景墙纸可以从/HomeDomain/Library/SpringBoard中的LockBackgroundThumbnail.jpgLockBackgroundThumbnaildark.jpg文件中恢复。

壁纸图片可能包含有关用户的身份信息,这些信息可能有助于失踪人员案件,或者可能在从盗窃调查中恢复的 iOS 设备上找到。

下载的第三方应用程序

从 App Store 下载并安装的第三方应用程序——包括 Facebook、WhatsApp、Viber、Threema、Tango、Skype 和 Gmail 等应用——包含大量对调查有用的信息。某些第三方应用程序使用 Base64 编码,需转换为可查看格式,此外还涉及加密。加密数据库文件的应用程序可能会阻止你访问表中存储的数据。加密方式根据应用程序和 iOS 版本的不同而有所差异。

/private/var/mobile/Containers/Data/Application目录中,为设备上安装的每个应用程序创建一个带有全局唯一标识符UUID)的子目录。应用程序目录中存储的大多数文件都是 SQLite 和plist格式。每个文件必须检查其相关性。我们建议在可能的情况下,使用 Belkasoft Evidence Center、Cellebrite UFED Physical Analyzer、Elcomsoft Phone Viewer 和 Magnet AXIOM 来快速提取这些证据,再回去手动运行查询并解析数据。

此外,关于已安装应用程序的信息可以从位于/HomeDomain/Library/FrontBoardapplicationState.db数据库中获取。这是另一个 SQLite 数据库,可以使用合适的查看器进行分析,具体选择由检查员决定。

恢复已删除的 SQLite 记录

SQLite 数据库将已删除的记录存储在数据库本身中,因此通过解析相应的 SQLite 数据库,可以恢复已删除的数据,如联系人、短信、日历、笔记、电子邮件、语音邮件等。如果 SQLite 数据库进行了 vacuum 或碎片整理,则恢复已删除数据的可能性非常小。这些数据库需要的清理量很大程度上取决于 iOS 版本、设备以及用户在设备上的设置。

一个 SQLite 数据库文件由一个或多个固定大小的页面组成,每个页面仅使用一次。SQLite 使用 B 树页面布局来存储索引和表内容。有关 B 树布局的详细信息,可以参考 github.com/NotionalLabs/SQLiteZer/blob/master/_resources/Sqlite_carving_extractAndroidData.pdf

商业取证工具提供对 SQLite 数据库文件的已删除数据恢复支持,但它们并不总是能恢复所有数据,也不支持从 iOS 设备上的所有数据库中提取数据。建议检查每个包含关键证据的数据库是否存在已删除数据。应使用免费的解析器、十六进制查看器,甚至是你的取证工具,检查本书中已讨论的关键证据或数据库,以确定用户是否删除了与调查相关的证据。

要提取 SQLite 数据库,你可以查看原始十六进制数据,或使用由 Mari DeGrazia 开发的免费 Python 脚本 sqliteparse.py。你可以从 github.com/mdegrazia/SQlite-Deleted-Records-Parser 下载该 Python 脚本。

以下示例从 notes.sqlitedb 文件中恢复已删除的记录,并将输出转储到 output.txt 文件中。这个脚本应适用于从 iOS 设备恢复的所有数据库文件。要验证脚本运行结果,只需在十六进制查看器中检查数据库,确保没有遗漏任何内容。代码可以在这里查看:

$python sqliteparse.py -f notes.sqlitedb -r -o output.txt

此外,对数据库文件执行 strings 转储也可以揭示已删除的记录,这些记录可能会被忽略,命令如下所示:

$strings notes.sqlitedb

如果你更喜欢图形界面,Mari DeGrazia 友好地创建了一个图形界面并将其发布在她的 GitHub 页面上。

你还可以使用另一个开源工具 Undark 来恢复已删除的 SQLite 记录。你可以在这里下载:pldaniels.com/undark/。使用该工具时,运行以下命令:

./undark -i sms.db > sms_database.csv

需要注意的是,Undark 不区分当前数据和已删除数据,因此你会得到完整的数据集,包括实际数据和已删除的数据。

概述

本章涵盖了各种数据分析技术,并指定了在 iOS 设备文件系统中常见工件的位置。在编写本章时,我们旨在涵盖大多数调查中涉及的最流行的工件。显然,不可能涵盖所有内容。我们希望一旦你学会如何从 SQLite 和plist文件中提取数据,直觉和毅力将帮助你解析那些未被覆盖的工件。

请记住,大多数开源和商业工具都能够从常见的数据库文件中提取活动数据和已删除数据,如联系人、通话记录、短信等,但它们通常忽略第三方应用程序的数据库文件。我们最好的建议是了解如何手动恢复数据,以防你需要验证你的发现或作证说明你的工具如何工作。

我们介绍了恢复已删除 SQLite 记录的技术,这在大多数 iOS 设备调查中非常有用。同样,获取方法、编码和加密方案会影响你在检查过程中可以恢复的数据量。

在下一章,iOS 取证工具中,我们将向你介绍最流行的移动取证工具——Cellebrite UFED Physical Analyzer、Magnet AXIOM、Elcomsoft Phone Viewer 和 Belkasoft Evidence Center。

第七章:iOS 取证工具

作为检查员,你不仅需要知道如何使用取证工具,还必须理解工具在调查中所采用的方法和获取技术。除了节省时间外,取证工具还使取证分析过程变得更加轻松。然而,每个工具都有其缺陷。你必须发现任何错误,并知道如何通过利用其他工具或技术来纠正它们。没有任何工具能支持所有设备。你需要学习并使用最佳的工具来完成工作。如我们在前面的章节中所讨论的,你必须理解 iOS 设备上的数据是如何存储的,以确保工具能够捕获所有可访问的数据。

当前,市面上有许多商业工具,如 Cellebrite UFED Physical Analyzer、BlackBag BlackLight、Oxygen Forensic Detective、Belkasoft Evidence Center、MSAB XRY、Magnet AXIOM 等,可用于 iOS 设备的取证获取和分析。本章将通过几个工具的使用,为你提供了解这些工具所需的步骤以及如何进行 iOS 设备的获取和分析的详细信息。

本章我们将涵盖以下主题:

  • 使用 Cellebrite UFED Physical Analyzer

  • 使用 Magnet AXIOM

  • 使用 Belkasoft Evidence Center

  • 使用 Elcomsoft Phone Viewer

使用 Cellebrite UFED Physical Analyzer

根据供应商的说法,Cellebrite Universal Forensic Extraction DeviceUFED)赋能执法机关、反恐和安全组织,从手机、智能手机、PDA 及各种便携手持设备中捕获关键的取证证据,包括针对新发布型号的更新。该工具通过法医数据提取、解码和分析技术,支持从不同移动设备中获取现有数据和已删除数据。截止 2019 年 2 月,UFED 已支持从近 28,000 种移动设备中提取数据。

Cellebrite UFED Physical Analyzer 的功能

以下是 Cellebrite UFED Physical Analyzer 的功能:

  • 支持不同类型的数据获取

  • 提取设备密钥,用于解密物理镜像和钥匙链项目

  • 解密物理镜像和钥匙链项目

  • 显示设备密码(并非所有锁定设备均可用)

  • 允许你使用已知密码打开加密的原始磁盘镜像文件

  • 支持密码恢复攻击

  • 支持对提取的应用数据进行高级分析和解码

  • 提供对在同一用户界面中提取的物理和逻辑数据的访问,使分析更加简便

  • 以几种流行格式生成报告,包括 Microsoft Excel、PDF 和 HTML

  • 转储原始文件系统分区,以便将其导入并在其他取证工具中进行检查

  • 除了 UFED 快捷文件外,还创建了一个二进制镜像文件,方便导入到其他取证工具进行验证

现在我们来看看高级逻辑采集与分析。

使用 Cellebrite UFED Physical Analyzer 进行高级逻辑采集与分析

正如我们之前提到的,Physical Analyzer 不仅可以用来解析从获取的镜像中提取的不同类型的取证证据,还可以执行来自 iOS 设备的逻辑、文件系统(甚至是物理提取,适用于老旧设备)等多种类型的提取。由于物理采集实际上仅适用于旧设备,最好的选择是高级逻辑采集。

我们将从运行 iOS 13.2.3 的 iPhone 获取并分析数据。开始吧:

  1. 通过适当的电缆将设备连接到工作站。确保它是可信的,并启动 Physical Analyzer。

  2. 转到 Extract | iOS 设备提取。iOS 设备数据提取向导窗口将弹出:

选择提取类型

  1. 由于我们正在处理一台现代的 iOS 设备,让我们选择高级逻辑提取。如果设备被识别,你将看到设备的名称、其 UDID 以及 iOS 版本:

连接设备

在我们的例子中,iPhone 的 iTunes 备份被已知密码保护,所以最好的方法是方法 1:

选择提取方法

  1. 如果你希望备份数据加密(推荐),可以在下一页选择此选项:

选择备份是否加密

  1. 现在是选择数据保存位置的时候了;在我们的例子中,保存位置是D:\驱动器的根目录:

选择保存提取数据的位置

  1. 现在,采集过程将开始。确保设备在整个过程中都保持连接:

提取数据

一旦提取过程完成,提取的数据将通过强大的 Physical Analyzer 插件进行解析。最终,你将获得一组分成多个类别的证据:

由 Physical Analyzer 提取和解析的手机数据

数据文件也可以做同样的处理:

由 Physical Analyzer 提取的数据文件

如你所见,括号中的红色数字代表已删除记录,这些记录已经通过 Physical Analyzer 的插件恢复。正如你所知,从广泛使用于 iOS 的 SQLite 数据库中恢复已删除的数据并不是奇迹。

说到 SQLite 数据库,Physical Analyzer 还有另一个令人惊叹的功能,可能对为你的移动取证报告添加自定义证据以及解析未知应用数据非常有用——SQLite 向导。你可以在 Tools | SQLite 向导下找到它:

  1. 首先选择一个数据库,当然,最好选择一个物理分析器不会自动解析的应用。在我们的例子中,这款应用叫做 Scan:

选择数据库

  1. 确保你已经选择了包括已删除行选项;这将帮助你自动恢复数据,但当然,这也会增加误报记录的数量:

启动 SQLite 向导

因此,我们的应用用于扫描二维码,并包含四个感兴趣的列——扫描日期和时间、纬度、经度和扫描结果。所有这些行都属于ZSCSCANEVENT

选择数据库表和列

  1. 下一步是选择时间戳。你已经了解了 iOS 时间戳的知识,应该能认出ZTIMELESSCREATIONDATE中的格式,但即使你没有,SQLite 向导也会为你做这件事:

选择时间戳格式

  1. 通用模型适用于任何数据库,但也有一些现有的物理分析器模型可以用于典型内容,例如聊天联系人。在我们的例子中,我们使用的是通用模型:

选择模型

一旦你选择了列的模型和字段类型,你就可以运行查询并将新解析的工件添加到你的提取中,之后再添加到报告中。

使用 Magnet AXIOM

Magnet AXIOM 是市场上最有用的数字取证工具之一。它可以用于计算机和移动取证;该套件的最新版本引入了全新的功能——云取证。至于 iOS 取证,它既可以用于逻辑采集和文件系统采集,并支持所有 iOS 版本——从最旧的到最新的。当然,它也可以用于解析 iTunes 备份和由第三方工具如 Elcomsoft iOS 取证工具包创建的物理镜像。

Magnet AXIOM 的最佳功能之一是它能够实时开始处理提取数据,因此你无需等采集过程完成后才开始取证分析。

Magnet AXIOM的特点

以下是Magnet AXIOM的特点:

  • 支持逻辑和文件系统(针对越狱设备)采集

  • 支持加密和未加密的 iTunes 备份

  • 恢复超过 500 种工件类型

  • 与其他流行的移动取证工具兼容,如 Cellebrite UFED 和 XRY

  • 包含内置的 SQLite 和 plist 查看器

  • 创建所谓的可移植案件,以便你可以与团队成员和第三方共享整个数据集

  • 可以生成几种流行格式的报告,如 Microsoft Excel、PDF 和 HTML

使用 Magnet AXIOM 进行逻辑采集和分析

如你所知,现代 iOS 设备的最常见获取方式是逻辑类型。以下是使用 Magnet AXIOM 获取 iOS 设备的步骤:

  1. 首先创建一个新案件:

创建新案件

  1. 由于我们正在处理的是一台 iOS 设备,因此我们将选择 MOBILE 选项:

选择证据来源

  1. 有多个选项可供选择,但在我们的情况下,iOS 选项是正确的:

选择证据来源

  1. 获取证据有三种选项——我们可以选择已经获取的镜像(例如,iTunes 备份或由第三方工具获取的文件系统镜像)、从设备中提取数据,或使用 GrayKey 进行获取。我们选择第二种选项:

选择获取证据

  1. 设备已被识别并准备好成像。如果你没有看到设备,请使用 UNKNOWN 选项:

选择设备

  1. 有两种提取方式——快速和完整。完整选项仅在你要获取的设备已越狱时才会显示。在我们的案例中,它没有越狱:

选择镜像类型

  1. 系统会提示你输入备份的密码。如你所记,这样做能获得更多数据,因此强烈推荐使用:

加密备份

  1. 在开始获取和处理之前,你可以选择感兴趣的关键字,使用 Magnet.AI 对聊天进行分类,或配置动态应用查找器:

处理详细信息

动态应用查找器是 Magnet IEF 和 AXIOM 的功能,能够在镜像中查找潜在的移动聊天应用数据库。你可以在以下链接中了解更多关于这个功能的内容:www.magnetforensics.com/mobile-forensics/using-dynamic-app-finder-to-recover-more-mobile-artifacts/

  1. 你可以从这里自定义 MOBILE ARTIFACTS。例如,如果你只关心聊天证据,最好只选择这些类型的证据,这样可以缩短处理时间:

选择移动证据

  1. 点击 ANALYZE EVIDENCE 按钮将开始获取和分析过程:

镜像证据来源

  1. Magnet AXIOM 有两个窗口——Process 和 Examine。第一个用于监控获取和处理证据来源的过程,第二个则用于分析已提取和解析的数据。如前所述,你可以在处理阶段结束之前开始分析。只需在 Magnet Examine 中点击 LOAD NEW RESULTS 即可:

正在加载新结果

  1. 处理阶段结束后,您可以在 Magnet Examine 的移动设备部分找到已解析的数据:

移动设备部分

当然,它不会包括所有内容;您还可以在其他有价值的部分找到从 iOS 设备提取的证据,例如 CHATMEDIADOCUMENTS

使用 Belkasoft Evidence Center

Belkasoft Evidence Center 是另一款流行的数字取证工具,能够执行 iOS 设备的获取和分析。像 AXIOM 一样,它可以用于计算机、移动设备和云端取证。

Belkasoft Evidence Center 最棒的功能之一是它能够处理损坏的 iTunes 备份。因此,如果您有一个没有任何工具能够处理的备份,尝试使用 Belkasoft Evidence Center;根据我们的经验,它会成功处理此备份。

Belkasoft Evidence Center 的功能

以下是 Belkasoft Evidence Center 的功能:

  • 支持逻辑和文件系统(对于越狱设备)获取

  • 支持加密和未加密的 iTunes 备份

  • 支持损坏的 iTunes 备份

  • 恢复超过 700 种证据类型

  • 与其他流行的移动取证工具兼容,如 Cellebrite UFED 和 XRY

  • 包含内置的 SQLite 和 plist 查看器

  • 包含免费的脚本模块 BelkaScript,允许检查员编写自己的脚本来自动化一些常见任务

  • 可以生成多种流行格式的报告,如 Microsoft Excel、PDF 和 HTML

使用 Belkasoft Evidence Center 进行逻辑获取和分析

由于备份处理和分析是 Belkasoft Evidence Center 最优秀的功能之一,我们将在此为您详细介绍该过程:

  1. 让我们开始创建一个新案件:

创建新案件

  1. 这里有多个选项——您可以处理先前获取的镜像文件,例如 iTunes 备份,或者选择先从设备提取数据。让我们从逻辑获取开始。选择“移动设备”选项:

选择数据源

  1. 由于我们正在处理 iOS 设备,请选择 Apple。您将看到一个可用设备列表:

可用设备进行获取

  1. 由于我们的设备没有越狱,因此我们的选择是逻辑获取或 iTunes 备份:

选择获取方法

  1. 一旦获取完成,您可以选择感兴趣的证据。确保只选择与 iOS 相关的证据;这将减少处理时间:

选择数据类型

  1. 处理完成后,提取的证据将显示在概览标签中:

概览标签

  1. 最后,如果你想浏览法医镜像的文件系统,请使用文件系统标签:

文件系统标签

其他可用的标签也可能很有用——Dashboard 标签显示你当前正在处理的案件的所有可用信息,任务管理器标签允许你监控处理进度,搜索结果标签显示关键词搜索结果。

使用 Elcomsoft Phone Viewer

Elcomsoft Phone Viewer 是一款能够解析和查看从 iOS 设备、BlackBerry 10 和 Windows Phone 设备提取的数据的工具。它提供只读、法医可靠的访问权限,适用于逻辑图像、文件系统图像,以及从云端提取的数据。

Elcomsoft Phone Viewer 的功能

以下是 Elcomsoft Phone Viewer 的功能:

  • 分析在线活动,包括网页浏览历史、书签和打开的标签页。

  • 提供对同步数据、密码和用户数据的访问,包括信息、通话记录和联系人。

  • 它将多媒体文件分类,以便你更容易理解一张照片是通过信息接收的,还是通过手机的摄像头拍摄的。

  • 汇总来自不同来源的位置信息。

  • 支持逻辑图像、文件系统图像以及 iTunes 和 iCloud 备份。

使用 Elcomsoft Phone Viewer 进行文件系统分析

Elcomsoft Phone Viewer 不支持设备采集,但可以解析并帮助你查看通过 Elcomsoft iOS Forensic Toolkit、Elcomsoft Cloud eXtractor 或几乎任何其他能够进行 iOS 设备采集的工具提取的数据。

若要查看之前使用 Elcomsoft iOS Forensic Toolkit 创建的文件系统图像,请按照以下步骤操作:

  1. 启动 Elcomsoft Phone Viewer 并选择合适的数据源。在我们的案例中,这个数据源是 iOS 设备图像:

选择数据源

  1. 选择你想要导入的文件和要解析的证据:

选择数据类型

  1. 等待提取过程完成:

提取过程

结果,你将获得设备的信息,以及按多个类别划分的解析证据:

解析的证据

现在,你可以轻松查看、筛选并导出任何可能对你的检查有用的数据——你只需要点击相应的图标。

总结

法医工具对检查员很有帮助,因为它们不仅节省了时间,还让过程变得更加简单。然而,并不是每个人都有足够大的预算来购买商业工具进行 iOS 采集。虽然有免费的采集工具,但支持可能有限,可能需要多次提取才能获得与商业工具相同数量的数据。

对于越狱设备,可以通过 SSH 将 iOS 设备连接到取证工作站进行实时检查,这也是一些工具获取必要数据的方法。然而,对于那些刚接触移动取证的人来说,这并不是一种推荐的方法。为了此目的,本章介绍了几种可用的 iOS 取证工具,并包括了你需要遵循的获取和分析步骤。

你应该采取进一步的措施来验证和理解可能作为调查一部分使用的每个工具。我们建议你使用已知数据的测试设备,以确保没有任何遗漏,证据没有被篡改,并且在可能的情况下,方法能够让你访问到感兴趣的数据。

下一章将介绍安卓取证,并涵盖安卓平台的基本概念。

第二部分:安卓取证

本节将涵盖关于安卓设备取证所需了解的一切内容。我们将从理解安卓平台及其文件系统开始,然后讨论设置、获取/提取和恢复等主题。我们还将讨论安卓恶意软件,并探讨如何使用开源工具对安卓应用进行逆向工程。

本章包含以下内容:

  • 第七章,了解安卓

  • 第八章,安卓取证设置与数据提取前技术

  • 第九章,安卓数据提取技术

  • 第十章,安卓数据分析与恢复

  • 第十一章,安卓应用分析、恶意软件与逆向工程

第八章:理解 Android

在前面的章节中,我们详细介绍了 iOS 设备的相关内容,包括文件系统结构、关键文件、备份文件以及获取和分析方法。从本章开始,我们将重点关注 Android 平台,以及如何对 Android 设备进行取证。对 Android 生态系统、安全限制、文件系统及其他特性的良好理解,将在取证调查中提供帮助。掌握这些基础知识将有助于取证专家在进行调查时做出明智的决策。

本章我们将涵盖以下主题:

  • Android 的演变

  • Android 架构

  • Android 安全性

  • Android 文件层级结构

  • Android 文件系统

Android 的演变

Android 是一款基于 Linux 的移动操作系统,专为触摸屏移动设备开发。它由一个名为 开放手机联盟OHA)的公司联盟开发,主要贡献者和商业推广者是 Google。自首次发布以来,Android 操作系统经历了显著的演变。Android 于 2008 年正式向公众推出,版本为 1.0。在 2009 年发布的 Android 1.5 杯形蛋糕版本中,Android 版本命名为糖果的传统正式诞生。接下来的十年中,版本名称按字母顺序发布。然而,在 2019 年,Google 宣布停止基于糖果的命名方式,未来版本将使用数字顺序命名。在最初的几年里,Android 版本每年更新超过两次,但近年来版本更新通常每年一次。最新的主要 Android 更新是 Android 11,它是 Android 操作系统的第十一大版本,于 2020 年 2 月 19 日由 Google 发布。

以下是截至本文写作时的 Android 版本历史概览:

版本 版本名称 发布日期
Android 1.0 苹果派 2008
Android 1.1 香蕉面包 2009
Android 1.5 杯形蛋糕 2009
Android 1.6 甜甜圈 2009
Android 2.0 闪电 2009
Android 2.2 冰激凌三明治 2010
Android 2.3 姜饼 2010
Android 3.0 蜂巢 2011
Android 4.0 冰淇淋三明治 2011
Android 4.1 果冻豆 2012
Android 4.4 奇巧 2013
Android 5.0 糖果 2014
Android 6.0 棉花糖 2015
Android 7.0 牛轧糖 2016
Android 8.0 奥利奥 2017
Android 9.0 甜品派 2018
Android 10.0 Q 2019
Android 11 R 2020

这一演变也大大影响了 Android 的安全性考虑以及取证技术的应用。例如,最初版本的 Android 并没有全盘加密FDE)机制,将数据以加密格式存储在设备内。因此,从设备中提取数据对取证调查员来说比现在容易得多。随着每个 Android 版本的更新,越来越多的安全功能,如应用权限、可信执行环境TEE)和安全内核,已经被添加到平台中,以提高整体安全性,但同时也使得数据提取的过程变得更加复杂。我们将在本章的其他部分详细讨论这些安全功能。

现在我们已经了解了 Android 的历史和版本,接下来我们将看一下 Android 的架构。

Android 架构

要有效理解在处理 Android 时的取证概念,你应该对 Android 架构有基本了解。就像一台计算机一样,任何与用户交互并执行复杂任务的计算系统都需要操作系统来有效处理任务。这个操作系统(无论是桌面操作系统还是移动操作系统)负责管理系统资源,为应用程序提供与硬件或物理组件交互的方式,以完成特定任务。Android 目前是最受欢迎的移动操作系统,旨在为移动设备提供支持。你可以在developer.android.com/about/android.html了解更多信息。

作为一个开源操作系统,Android 根据 Apache 许可证发布其代码,这是许多开源许可证之一。实际上,这意味着任何人(特别是设备制造商)都可以访问它,随意修改它,并根据任何设备的要求使用软件。这也是 Android 被广泛接受的主要原因之一。使用 Android 的知名厂商包括三星、HTC、索尼和 LG。

像任何其他平台一样,Android 由一层一层叠加在一起的各个层次组成。要理解 Android 生态系统,首先必须对这些层次及其作用有基本了解。

下图总结了 Android 软件栈中涉及的各个层次:

Android 架构

此图像是基于由 Android 开源项目创建并共享的作品进行修改的: developer.android.com/guide/platform

许可证: creativecommons.org/licenses/by/4.0/

每一层执行多个操作,以支持特定的操作系统功能。每一层为其上方的层提供服务。让我们稍微详细了解一下它们。

Linux 内核层

Android 操作系统建立在 Linux 内核之上,并且谷歌对其进行了一些架构上的修改。选择 Linux 内核的原因有多个,其中最重要的是,Linux 是一个可移植的平台,可以在不同硬件上轻松编译。内核充当软件和硬件之间的抽象层。以相机为例,当你使用设备上的相机按钮拍照时,会发生什么呢?在某个时刻,硬件指令(按下按钮)必须转换为软件指令(拍照并将其存储在相册中)。内核包含驱动程序来促进这一过程。当用户按下按钮时,指令会传递到内核中相应的相机驱动程序,该驱动程序向相机硬件发送必要的命令,这类似于按下键盘上的按键时的情况。简而言之,内核中的驱动程序控制着底层硬件。如 Android 架构模型所示,内核包含与 Wi-Fi、蓝牙、通用串行总线USB)、音频、显示等相关的驱动程序。

Linux 内核负责管理 Android 的核心功能,例如进程管理、内存管理、安全性和网络连接。Linux 在安全性和进程管理方面是一个经过验证的平台。Android 利用了现有的 Linux 开源操作系统,为其生态系统构建了坚实的基础。每个版本的 Android 都有不同版本的 Linux 内核。Oreo 版本的 Android 使用的是 Linux 内核 3.18 或 4.9,而 Pie 版本使用的是 Linux 内核 4.4、4.9 或 4.14。Android Q 版本则针对的是 Linux 内核 4.9、4.14 或 4.19。实际的内核取决于具体的设备。

硬件抽象层

设备的硬件能力通过 硬件抽象层HAL)暴露给高层 Java 框架。HAL 由多个库模块组成,这些模块实现了特定类型硬件组件的接口。这使得硬件供应商能够在不更改高层系统的情况下实现功能。

Android 架构中的下一层由 Android 的原生库组成。这些库是用 C 或 C++ 编写的,帮助设备处理各种不同的数据。例如,SQLite 库对于从数据库中存储和检索数据非常有用。其他库包括媒体框架、WebKit、Surface Manager 和 安全套接字库SSL)。

媒体框架库作为主要接口,向其他底层库提供服务。WebKit 库在网页浏览器中提供网页,而 Surface Manager 库负责维护图形。在同一层中,我们有 Android RuntimeART)和核心库。ART 负责在 Android 设备上运行应用程序。运行时(runtime)一词指的是应用程序启动到关闭的这段时间。

Dalvik 虚拟机(DVM)

您在 Android 设备上安装的所有应用程序都是用 Java 编程语言编写的。当 Java 程序被编译时,我们会得到字节码。虚拟机VM)是一种作为操作系统运行的应用程序——也就是说,可以使用虚拟机在 Mac 上运行 Windows 操作系统,反之亦然。Java 虚拟机JVM)就是这样一种可以执行前面提到的字节码的虚拟机。但 Android 5.0 之前的版本使用的是一种叫做 DVM 的虚拟机来运行它们的应用程序。

DVM 运行 Dalvik 字节码,这是通过Dalvik 可执行文件DEX)编译器转换的 Java 字节码。因此,.class 文件通过 dx 工具转换为 dex 文件。与 Java 字节码相比,Dalvik 字节码更适合低内存和低处理能力的环境。另外,需要注意的是,JVM 的字节码由一个或多个 .class 文件组成,具体取决于应用程序中存在的 Java 文件数量,而 Dalvik 字节码仅由一个 dex 文件组成。每个 Android 应用程序都运行自己实例的 DVM。这是 Android 安全性的重要方面,将在第八章《Android 取证设置与数据提取前技术》中详细讨论。

下图提供了 Android 的 DVM 与 Java 的 JVM 的差异:

JVM 与 DVM

现在我们已经理解了 JVM 和 DVM 之间的基本差异,让我们快速看一下 ART。

ART

从 Android 5.0 Lollipop 版本开始,Dalvik 被 ART 替代。Android 早期版本使用 即时编译JIT)与 Dalvik(频繁执行的操作会被识别并动态编译成本地机器代码)。这种频繁使用字节码的本地执行,称为追踪(traces),提供了显著的性能提升。

与 Dalvik 不同,ART 使用提前编译AOT)技术,在应用安装时将整个应用程序编译成原生机器代码。这会自动增加应用的安装时间,但其主要优势是消除了 Dalvik 的解释和基于跟踪的 JIT 编译,从而提高了效率并减少了功耗。ART 使用名为 dex2oat 的工具,接受 DEX 文件作为输入,并为目标设备生成已编译的应用可执行文件。使用 ART 后,优化的 DEX.odex)文件已被 可执行和可链接格式ELF)的可执行文件取代。

Java API 框架层

应用框架是处理手机基本功能的层级,例如资源管理、处理电话等。通过这一层,安装在设备上的应用可以直接与设备进行交互。以下是应用框架层中的一些重要模块:

  • 电话管理器:此模块管理所有语音电话。

  • 内容提供者:此模块管理不同应用之间的数据共享。

  • 资源管理器:此模块管理应用中使用的各种资源。

最后一层是系统应用层,接下来将讨论这一层。

系统应用层

这是最顶层的层级,用户可以直接与设备进行交互。这里有两种类型的应用——预安装应用和用户安装应用。预安装应用——如拨号器、网页浏览器和联系人——是随设备一起提供的。用户安装的应用可以从不同的地方下载,例如 Google Play 商店、亚马逊市场等。你在手机上看到的所有内容(联系人、邮件、相机等)都是应用。

到目前为止,我们已经了解了 Android 架构和重要的构建模块。接下来,我们将深入探讨 Android 操作系统中的一些固有安全特性。

Android 安全

Android 的设计重点之一就是安全性。Android 作为一个平台,提供并执行某些功能,通过多层次的安全保护用户数据。平台有一些默认的安全设置可以保护用户,同时开发社区可以利用某些功能来构建安全的应用程序。作为一名取证调查员,了解 Android 安全的内部机制至关重要,因为这有助于识别在特定情境下应采用的最佳技术、某些技术的技术限制等。

接下来的几个章节将帮助我们更好地了解 Android 的安全特性和功能。

关于 Android 安全的详细解释可以在 source.android.com/security/ 找到。

安全内核

内核是任何操作系统安全性的核心。通过选择 Linux,作为一个经过多年来发展的可信平台,Android 建立了一个非常稳固的安全基础。Linux 内核固有的大多数安全功能都被 Android 自动采纳。例如,Linux 的基于用户的权限模型,实际上在 Android 中也运作良好。如前所述,Linux 内核中内置了大量特定代码。随着每个 Android 版本的发布,内核版本也发生了变化。以下表格显示了 Android 版本及其对应的内核版本:

Android 版本 Linux 内核版本
1 2.6.25
1.5 2.6.27
1.6 2.6.29
2.2 2.6.32
2.3 2.6.35
3.0 2.6.36
4.0 3.0.1
4.1 3.0.31
4.2 3.4.0
4.2 3.4.39
4.4 3.8
5.0 3.16.1
6.0 3.18.1
7.0 4.4.1
8.0 4.10
9.0 4.4, 4.9 和 4.14
10.0 4.9, 4.14 和 4.19

Linux 内核自动将其一些固有的安全功能带到 Android 平台,包括以下内容:

  • 基于用户的权限模型

  • 运行进程的隔离(应用沙箱)

  • 安全的进程间通信IPC

现在我们来了解这些功能中的每一个。

权限模型

如下图所示,任何 Android 应用都必须获得用户的权限才能访问敏感功能——例如互联网、拨号器等。这为用户提供了一个机会,提前了解哪些设备功能正在被应用访问。简而言之,它需要用户的权限才能执行任何类型的恶意活动(窃取数据、破坏系统等)。

这种模型帮助用户防止攻击,但如果用户没有意识到并授予了很多权限,就会陷入麻烦(记住——在任何设备上安装恶意软件时,最弱的环节始终是用户)。

Android 中的权限模型

在 Android 6.0 之前,用户需要在安装时授予权限。用户必须接受所有权限才能安装应用,或者选择不安装应用。但是,从 Android 6.0 开始,用户在应用运行时授予应用权限。这种新的权限系统还允许用户更好地控制应用的功能,通过允许用户授予选择性权限。例如,用户可以拒绝某个应用访问他们的位置,但可以提供对互联网的访问权限。用户可以随时通过进入应用的设置界面撤销权限。从取证的角度来看,这意味着可以从设备中提取的信息不仅取决于设备和已安装的应用程序,还取决于用户配置的权限。

应用沙箱

在 Linux 系统中,每个用户都会被分配一个唯一的用户标识符UID),并且用户之间是隔离的,一个用户不能访问另一个用户的数据。然而,某个特定用户下的所有应用程序都以相同的权限运行。类似地,在 Android 中,每个应用程序都作为一个独立的用户运行。换句话说,每个应用程序都会被分配一个 UID,并作为一个独立的进程运行。这一概念确保了内核级别的应用程序沙盒。内核通过利用现有的 Linux 概念,如 UID 和 组标识符GID),来管理应用程序之间的安全限制。如果一个应用程序试图做一些恶意操作——比如读取另一个应用程序的数据——这是不允许的,因为该应用程序没有用户权限。因此,操作系统会保护应用程序,避免其访问其他应用程序的数据。

安全的进程间通信(IPC)

Android 提供了安全的进程间通信(IPC),通过这种方式,应用程序中的一个活动可以向同一应用程序或不同应用程序中的另一个活动发送消息。为了实现这一点,Android 提供了 IPC 机制:意图(Intents)、服务(Services)、内容提供者(Content Providers)等。这对于为 Android 平台编写第三方应用程序的开发者来说尤为重要。在后台,取证工具利用这些概念中的一些来获取设备信息。

应用程序签名

所有安装的应用程序必须进行数字签名。开发者只能在签名应用程序后,将其上传到 Google Play 商店。签名应用程序所使用的私钥由开发者持有。通过相同的密钥,开发者可以为应用程序提供更新、在应用程序间共享数据等操作。未经签名的应用程序,如果尝试安装,将会被 Google Play 或 Android 设备上的包安装器拒绝。在 Android 8.0 及以上版本中,用户必须进入“安装未知应用”设置,才能运行未经签名的应用程序,如下所示:

Android 中的安装未知应用屏幕

现在我们已经了解了一些关于数字签名应用程序的基本知识,接下来让我们来看一下 Android 中的一个安全特性。

安全增强 Linux(SELinux)

SELinux 是一种安全功能,它在 Android 4.3 中引入,并在 Android 5.0 中完全强制执行。在此之前,Android 安全基于 自主访问控制 (DAC),即应用程序可以请求权限,用户可以授予或拒绝这些权限。因此,恶意软件可以通过获取这些权限来在手机上制造破坏。但 SE Android 使用 强制访问控制 (MAC),确保应用程序在隔离的环境中运行。因此,即使用户安装了恶意应用,恶意软件也无法访问操作系统并破坏设备。SELinux 用于对所有进程执行 MAC,包括那些以 root 权限运行的进程。在 SELinux 中,任何没有明确允许的操作,默认都会被拒绝。SELinux 可以在两种全局模式下运行:宽容模式,记录权限拒绝但不强制执行;以及 强制模式,记录并强制执行权限拒绝。有关 SELinux 的更多详细信息,请参阅 source.android.com/security/selinux/concepts

FDE

从 Android 6.0 Marshmallow 开始,谷歌要求大多数设备启用 FDE,只要硬件符合某些最低标准。加密是将数据通过一个秘密密钥转换成密文的过程。在 Android 设备中,FDE 指的是使用秘密密钥加密所有用户数据的过程。该密钥又由用户设置的 个人识别号码 (PIN) /图案/密码进行加密。一旦设备被加密,所有用户创建的数据会在写入磁盘前自动加密,所有读取操作则会在返回数据给调用进程前自动解密。Android 中的 FDE 仅适用于 嵌入式多媒体卡 (eMMC) 和类似的闪存设备,这些设备在内核中以块设备的形式呈现。

从 Android 7.x 开始,谷歌决定将加密功能从 FDE 转移到 基于文件的加密 (FBE) 中。在 FBE 中,不同的文件使用不同的密钥进行加密。通过这种方式,这些文件可以独立访问,而无需解密整个分区。因此,系统现在可以显示开放通知或访问与启动相关的文件,而无需等待用户解锁手机。

Android 密钥库

Android 密钥库用于保护敏感的加密密钥免受未授权访问。存储在密钥库中的密钥可以用于执行加密操作,但无法从密钥库中提取出来。硬件支持的密钥库提供了硬件级别的安全性——也就是说,即使操作系统被攻击,硬件模块中的密钥仍然安全。

TEE

TEE 是一个隔离区域(通常是一个独立的微处理器),旨在保证存储在其中的数据的安全性,同时确保代码的完整性执行。移动设备上的主处理器被认为是不可信的,不能用于存储机密数据(如加密密钥)。因此,TEE 专门用于执行这些操作,主处理器上运行的软件将任何需要使用机密数据的操作委托给 TEE 处理器。

验证启动

验证启动旨在确保在 Android 设备上执行的所有代码来自合法的来源,而非来自攻击者或欺诈行为。它建立了完整的信任链,并防止任何其他操作系统的侧加载。在设备启动过程中,每个阶段都会在交给下一个阶段执行之前,验证其完整性和真实性。

现在,我们将探讨 Android 设备上可用的各种分区和文件系统。

Android 文件层次结构

为了对任何系统(桌面或移动)进行取证分析,了解底层的文件层次结构非常重要。基本了解 Android 如何组织文件和文件夹中的数据,能够帮助取证分析师将研究范围缩小到特定问题。就像其他操作系统一样,Android 使用多个分区。本章提供了一些最重要分区及其存储内容的概述。

值得再次提到的是,Android 使用 Linux 内核。因此,如果你熟悉类 Unix 系统,你将会非常了解 Android 的文件层次结构。对于那些不太了解 Linux 模型的人,以下是一些基本信息:在 Linux 中,文件层次结构是一个单一的树形结构,树的顶部表示为 /(称为 根目录)。这与在驱动器中组织文件(如 Windows 系统)是不同的。无论文件系统是本地的还是远程的,都将位于根目录下。

Android 文件层次结构是现有 Linux 层次结构的定制版本。根据设备制造商和底层 Linux 版本,这一层次结构可能会有一些不显著的变化。以下是大多数 Android 设备常见的几个重要文件夹列表。列出的一些文件夹仅通过 root 权限可见。Rooting 是在 Android 设备上获得特权访问权限的过程。关于 rooting 和执行 adb 命令(下文列表中展示的命令)的更多详细信息,请参见第八章,Android 取证设置与数据提取前技巧

  • /boot:顾名思义,这个分区包含手机启动所需的信息和文件。它包含内核和随机存取存储器RAM)磁盘,因此没有这个分区,手机无法启动其进程。RAM 中的数据非常有价值,应该在取证采集时进行捕获。

  • /system:该分区包含与系统相关的文件,除了内核和 RAM 磁盘之外。这个文件夹绝不能删除,否则设备将无法启动。可以通过以下命令查看此分区的内容:

/system 分区

    • /recovery:该分区用于备份目的,并允许设备进入恢复模式。在恢复模式下,您可以找到修复手机安装的工具。
  • /data:这是包含每个应用数据的分区。大多数属于用户的数据——如联系人、短信和拨打的号码——都存储在这个文件夹中。从取证角度来看,这个文件夹具有重要性,因为它保存着宝贵的数据。可以通过以下命令查看数据文件夹的内容:

/data 分区

    • /cache:这是用于存储频繁访问的数据和一些日志文件以便快速检索的文件夹。/cache 分区对于取证调查也很重要,因为这里的数据可能在 /data 分区中已经不存在。
    • /misc:顾名思义,这个文件夹包含杂项设置的信息。这些设置主要定义设备的状态——即开/关。关于硬件设置、USB 设置等信息可以从此文件夹中访问。
  • /sdcard:这是保存所有Secure DigitalSD)卡上信息的分区。它非常重要,因为它可以包含图片、视频、文件、文档等信息。

现在我们已经理解了 Android 文件层级结构,并查看了其中的重要文件夹,接下来我们将在下一部分看看文件系统。

Android 文件系统

理解文件系统是取证方法中的一个重要部分。了解文件系统的属性和结构对于取证分析非常有用。文件系统指的是从存储卷中存储、组织和检索数据的方式。基本安装可能基于一个卷,分成多个分区;在这里,每个分区都可以由不同的文件系统管理。正如 Linux 中的情况一样,Android 使用挂载点,而不是驱动器(即 C:E:)。

在 Linux 中,挂载是将一个额外的文件系统附加到计算机当前可访问的文件系统中的操作。Linux 中的文件系统不是通过驱动器名称访问的,而是组织成一个多级层次结构,最顶层是一个名为root的目录。每个新的文件系统在挂载时都会加入这个单一的文件系统树中。

无论文件系统是存在于本地设备上,还是远程设备上,都没有任何区别。所有内容都在一个从root开始的单一层次结构中。每个文件系统定义了自己的规则来管理卷中的文件。根据这些规则,每个文件系统在文件检索、速度、安全性、大小等方面提供不同的性能。Linux 使用多个文件系统,安卓也是如此。从法医角度来看,了解安卓使用的文件系统并识别与调查相关的文件系统是非常重要的。例如,存储用户数据的文件系统是我们关注的重点,而用于启动设备的文件系统则相对次要。

查看安卓设备上的文件系统

可以通过查看proc文件夹中的filesystems文件内容来确定安卓内核支持的文件系统。可以使用# cat /proc/filesystems命令查看该文件的内容:

安卓设备上的文件系统

在前面的输出中,第一列告诉我们文件系统是否已挂载在设备上。具有nodev属性的文件系统未挂载在设备上。

第二列列出了设备上存在的所有文件系统。简单的mount命令会显示设备上可用的不同分区,如下所示:

安卓设备上的分区

接下来,我们来看一下安卓上的常见文件系统。

安卓上的常见文件系统

安卓中的文件系统主要可以分为以下三类:

  • 闪存存储文件系统

  • 基于媒体的文件系统

  • 虚拟文件系统

让我们详细看看它们。

闪存存储文件系统

闪存存储是一种持续通电的非易失性存储器NVM),即在没有电源供应的情况下仍能保持数据。闪存可以在称为块的内存单元中被擦除和重新编程。虽然支持的文件系统根据设备和底层 Linux 内核的不同而有所变化,但常见的闪存存储文件系统如下:

  • 扩展文件分配表exFAT)是微软专有的文件系统,专门设计用于像 USB 闪存盘和 SD 卡这样的闪存驱动器。由于许可要求,它并不是标准 Linux 内核的一部分。但仍然有一些厂商为此文件系统提供支持。

  • 闪存友好文件系统F2FS)于 2013 年 2 月发布,用于支持运行 Linux 3.8 内核的三星设备。F2FS 采用基于日志的结构化方法,优化 NAND 闪存。该文件系统的离线支持功能是其亮点,尽管它仍在不断更新中,且处于过渡阶段。

  • 另一个闪存文件系统 2YAFFS2)是一个开源的单线程文件系统,发布于 2002 年。它主要设计用于处理 NAND 闪存时的高效性。YAFFS2 使用 带外OOB),但在取证过程中,这通常无法正确捕获或解码,这使得分析变得困难。我们将在第九章中进一步讨论,Android 数据提取技术。YAFFS2 曾是最受欢迎的版本,并且至今仍广泛应用于 Android 设备中。YAFFS2 是一个基于日志的文件系统,即使在突然断电的情况下,也能保证数据的完整性。2010 年曾宣布,在 Gingerbread 版本之后,设备将从 YAFFS2 转向 第四扩展文件系统EXT4)。目前,YAFFS2 不再被较新的内核版本支持,但某些移动厂商可能仍会继续支持它。

  • 健壮文件系统RFS)支持三星设备上的 NAND 闪存。RFS 可以总结为 文件分配表 16FAT16)或 FAT32 文件系统,其中启用了通过事务日志的日志记录。许多用户抱怨三星应坚持使用 EXT4。RFS 已知存在延迟问题,导致 Android 功能变慢。

接下来是基于媒体的文件系统。

基于媒体的文件系统

以下是一些 Android 设备支持的基于媒体的文件系统。

扩展文件系统EXT),1992 年专为 Linux 内核推出,是最早的文件系统之一,并且采用了虚拟文件系统。EXT2、EXT3 和 EXT4 是后续版本。EXT3 相较于 EXT2 的主要优点是日志记录功能。有了 EXT3,如果发生意外关机,就不需要验证文件系统。EXT4 文件系统在实现双核处理器的移动设备中变得越来越重要。已知 YAFFS2 文件系统在双核系统上存在瓶颈。随着 Android 的 Gingerbread 版本,YAFFS 文件系统被替换为 EXT4。

以下是三星 Galaxy 移动设备上使用 EXT4 的挂载点:

/dev/block/mmcblk0p9 /system ext4 ro,noatime,barrier=1,data=ordered 0    0
/dev/block/mmcblk0p3 /efs ext4 rw,nosuid,nodev,noatime,barrier=1,journal_async_commit,data=ordered 0 0
/dev/block/mmcblk0p8 /cache ext4 rw,nosuid,nodev,noatime,barrier=1,journal_async_commit,data=ordered 0 0
/dev/block/mmcblk0p12 /data ext4 rw,nosuid,nodev,noatime,barrier=1,journal_async_commit,data=ordered,n oauto_da_alloc,discard 0 0  

虚拟文件分配表VFAT)是对 FAT16 和 FAT32 文件系统的扩展。微软的 FAT32 文件系统被大多数 Android 设备所支持,并且几乎所有主要操作系统(包括 Windows、Linux 和 macOS)都支持它。这使得这些系统可以轻松地读取、修改和删除 Android 设备上 FAT32 部分的文件。大多数外部 SD 卡都是使用 FAT32 文件系统格式化的。

请观察以下输出,显示了 /sdcard/secure/asec 挂载点使用 VFAT 文件系统:

Android 中的 mount 命令输出

最后一类是假文件系统。

假文件系统

假文件系统,顾名思义,并非实际的文件,而是文件的逻辑分组。以下是 Android 中一些重要的假文件系统:

  • 根文件系统(rootfs)是 Android 的主要组件之一,包含了启动设备所需的所有信息。当设备开始启动过程时,需要访问许多核心文件,因此它会挂载根文件系统。如前所示的 mount 命令行输出所示,这个文件系统挂载在/root 文件夹)下。因此,这是所有其他文件系统逐步挂载的文件系统。如果这个文件系统损坏,设备将无法启动。

  • sysfs 文件系统挂载 /sys 文件夹,该文件夹包含有关设备配置的信息。以下输出显示了 Android 设备中 sys 目录下的各个文件夹:

Android 中 /sys 目录下的文件夹

由于这些文件夹中的数据大多数与配置相关,因此对于法医调查员来说通常意义不大。但在某些情况下,我们可能希望检查手机上某个特定设置是否已启用,在这种情况下,分析这个文件夹可能会有所帮助。

请注意,每个文件夹包含大量文件。通过法医采集捕获这些数据是确保数据在检查过程中未发生更改的最佳方法。

  • devpts 文件系统为 Android 设备上的终端会话提供接口。它挂载在 /dev/pts 下。每当建立一个终端连接时——例如,当 adb shell 连接到 Android 设备时——一个新的节点会在 /dev/pts 下创建。以下是当 adb shell 连接到设备时的输出:
shell@Android:/ $ ls -l /dev/pts ls -l /dev/pts
crw------- shell shell 136, 0 2013-10-26 16:56 0
  • cgroup 文件系统代表 控制组。Android 设备使用这个文件系统来跟踪它们的任务。它们负责聚合任务并进行跟踪。此数据在法医分析中通常不太有用。

  • proc 文件系统包含有关内核数据结构、进程以及其他系统相关信息,这些信息存储在 /proc 目录中。例如,/sys 目录包含与内核参数相关的文件。同样,/proc/filesystems 显示设备上可用的文件系统列表。以下命令显示设备的 中央处理单元 (CPU) 的所有信息:

在 Android 设备上运行 cpuinfo 命令的输出

类似地,还有许多其他有用的文件,在你浏览它们时提供了宝贵的信息。

  • tmpfs 文件系统是设备上的一种临时存储设施,它将文件存储在 RAM(易失性内存)中。使用 RAM 的主要优点是访问和检索速度更快。但一旦设备重新启动或关闭,这些数据将无法再访问。因此,取证调查员必须在设备重启之前检查 RAM 中的数据,或通过 RAM 获取方法提取数据。

当今的取证工具可以轻松挂载这些文件系统,并在 图形用户界面 (GUI) 屏幕上显示其内容,从而使取证调查员能够轻松地浏览和解析这些文件。在 Android 取证的初期,调查员通常需要运行一系列 Linux 或 Windows 命令来格式化并查看这些文件系统。

总结

在本章中,我们介绍了 Android 操作系统的基础特性、文件系统以及在取证调查中有用的其他细节。我们了解了 Android 中内置的有趣安全功能。与 iOS 不同,Android 存在多个变种,因为许多设备运行 Android 操作系统,每个设备可能具有不同的文件系统和独特的功能。Android 是开放和可定制的,这也改变了数字取证的竞争格局。这些知识将有助于理解取证获取技术。

在下一章中,我们将讨论如何在执行分析之前设置取证工作站。

第九章:安卓法医设置和数据提取前的技术

在上一章中,我们介绍了安卓架构、安全特性、文件系统以及其他功能的基础知识。在开始检查之前,建立一个法医环境非常重要,因为这确保了数据的保护,同时你作为检查员能够控制工作站。本章将解释设置数字法医检查环境的过程,并阐述设置时需要考虑的事项。始终保持对法医环境的控制至关重要;这可以防止污染物的引入,从而影响法医调查。

本章将涵盖以下主题:

  • 为安卓设置法医环境

  • 将安卓设备连接到工作站

  • 屏幕锁绕过技术

  • 获得 root 权限

为安卓设置法医环境

作为一名法医检查员,在调查过程中你可能会遇到各种类型的手机。因此,有必要在此基础上设置一个基本环境,根据需求进行扩展。同时,始终保持对环境的完全控制也非常重要,以避免任何意外情况的发生。设置一个合适的实验室环境是法医过程中的一个重要环节。安卓法医设置通常包括以下步骤:

  1. 从一个全新或法医无菌的计算机环境开始。这意味着系统中不存在其他数据,或者数据以一种方式进行存储,避免污染当前的调查。

  2. 安装连接设备所需的基本软件。安卓法医工具和方法可以在 Windows、Linux 和 macOS 平台上运行。

  3. 获得对设备的访问权限。你必须能够启用设置或绕过它们,以便从安卓设备中提取数据。

  4. 使用本章和第九章中定义的方法,安卓数据提取技术,向设备发出命令。

以下章节提供了设置基本安卓法医工作站的指导。

安装软件

安卓软件开发工具包SDK)帮助开发者构建、测试和调试在安卓上运行的应用程序。安卓 SDK 包括安卓 Studio,这是开发安卓应用的官方集成开发环境IDE)。安卓 Studio 提供了有价值的文档和其他工具,在安卓设备调查过程中能提供很大的帮助。或者,你也可以仅下载平台工具,它们是安卓 SDK 的一部分,包含与安卓平台交互的工具,如 ADB、fastboot 等;这些将在以下章节中详细描述。

对 Android SDK 有良好的理解将帮助你掌握设备的细节及其数据。

Android Studio 包含软件库、API、工具、模拟器和其他参考材料。你可以从developer.android.com/studio/index.html免费下载。平台工具可以从developer.android.com/studio/releases/platform-tools下载。

在进行取证调查时,拥有这些工具可以帮助你连接到 Android 设备并访问其中的数据。Android SDK 更新非常频繁,因此确认你的工作站也保持更新非常重要。Android SDK 可以在 Windows、Linux 和 macOS 上运行。

安装 Android 平台工具

在对取证设备进行调查时,必须安装并正确配置 Android SDK 或 Android 平台工具。Windows 版的 Android Studio 大约是 718MB,相较于仅为 20MB 的 Android 平台工具软件来说较为庞大。

以下是在 Windows 10 机器上安装 Android 平台工具的逐步步骤:

  1. 在安装 Android Studio 或平台工具之前,请确保你的系统已安装Java 开发工具包(JDK),因为 Android SDK 依赖于 Java SE 开发工具包。

JDK 可以从www.oracle.com/technetwork/java/javase/downloads/index.html下载。

  1. developer.android.com/studio/releases/platform-tools下载平台工具的最新版本。

  2. 右键点击并将 ZIP 文件解压到一个文件夹。安装位置由你选择,并且必须记住以便未来访问。在本示例中,我们将其解压到C:\ folder

  3. 打开目录(C:\platform-tools),并注意到以下工具列出在其中:

Android 平台工具

这完成了基础的 Android 工具安装。如果你安装的是完整的 Android Studio 版本,你仍然应该能在新安装的 Android 目录下看到平台工具文件夹。

创建 Android 虚拟设备

使用 Android Studio,你可以创建一个Android 虚拟设备AVD),也叫做模拟器,这通常在开发者创建新应用时使用;然而,从取证的角度来看,模拟器也具有重要意义。模拟器在理解应用程序如何在设备上运行和执行时非常有用。这在确认在取证调查过程中发现的某些结果时会有所帮助。

此外,在使用运行较旧平台的设备时,您可以为相同的平台设计仿真器。此外,在将取证工具安装到真实设备之前,可以使用仿真器来了解取证工具如何工作以及如何更改 Android 设备上的内容。要在 Windows 工作站上创建新的 AVD,请按照以下步骤操作:

  1. 打开 Android Studio 并导航到工具 | AVD 管理器。Android 虚拟设备管理器窗口如下图所示:

Android 虚拟设备管理器

  1. 点击“创建虚拟设备”以创建新的虚拟设备。在接下来的屏幕中,选择适当的硬件、系统映像、API 级别、AVD 名称等,并继续操作。例如,以下截图显示选择了 Android Pie:

虚拟设备配置

  1. 设备成功创建后,会显示一个确认消息。现在,选择 AVD 并点击播放按钮。

  2. 这应该会启动仿真器。请注意,这可能需要几分钟,甚至更长时间,具体取决于工作站的 CPU 和内存。仿真器确实会消耗系统大量资源。成功启动后,AVD 将运行,如下图所示:

Android 仿真器

从取证的角度来看,分析师和安全研究人员可以利用仿真器的功能来了解文件系统、数据存储等。通过仿真器工作时创建的数据存储在主目录下名为android的文件夹中。例如,在我们的示例中,我们之前创建的 Pixel_XL_API_28 仿真器的详细信息存储在C:\Users\Rohit\.android\avd\Pixel_XL_API_28.avd下。

在此目录下的各种文件中,以下是对取证分析师有兴趣的文件:

  • cache.img:这是/cache分区的磁盘映像(记得我们在第七章《理解 Android》中讨论了 Android 设备的/cache分区)。

  • sdcard.img:这是 SD 卡分区的磁盘映像。

  • Userdata-qemu.img:这是/data分区的磁盘映像。/data分区包含设备用户的宝贵信息。

现在我们已经了解了设置环境的步骤,接下来让我们将 Android 设备连接到取证工作站。

将 Android 设备连接到工作站

使用开源工具对 Android 设备进行取证采集时,需要将设备连接到取证工作站。任何设备的取证采集应在取证工作站上进行。取证工作站仅限于用于取证,不能用于个人用途。

请注意,每当设备插入计算机时,可能会对设备进行更改;你必须始终完全控制与 Android 设备的所有交互。

为了成功将设备连接到工作站,您需要执行以下步骤。请注意,写保护可能会阻止设备成功获取数据,因为可能需要向设备发送命令以提取信息。所有以下步骤应在测试设备上验证后,再尝试在真实证据上执行。

识别设备数据线

Android 设备的物理 USB 接口允许它连接到计算机以共享数据,如歌曲、视频和照片。此 USB 接口可能因制造商和设备型号不同而有所变化。例如,一些设备使用 mini-USB,而另一些则使用 micro-USB 和 USB Type C。此外,一些制造商使用自己的专有格式,如 EXT-USB、EXT micro-USB 等。在获取 Android 设备的第一步是确定所需的设备数据线类型。

有不同类型,如 mini-USB、micro-USB 以及其他专有格式。以下是最常用连接器类型的简要描述:

连接器类型 描述
Mini - A USB 它的大小大约为 7 x 3 毫米,长边的两个角被抬起。
Micro - B USB 它的大小大约为 6 x 1.5 毫米,两个角被切掉形成一个梯形。
同轴连接器 它有一个圆形孔,中间插着一个针。此类别有不同的尺寸,直径从 2 毫米到 5 毫米不等。广泛应用于诺基亚型号。
D Sub-miniature 它的形状为矩形,具有两个圆角。矩形的长度不同,但高度始终为 1.5 到 2 毫米。主要用于三星和 LG 设备。

接下来,我们来快速了解一下如何安装设备驱动程序。

安装设备驱动程序

为了正确识别设备,计算机可能需要安装某些驱动程序。如果没有必要的驱动程序,计算机可能无法识别并正常与连接的设备工作。问题在于,由于 Android 允许制造商进行修改和定制,因此没有通用的驱动程序适用于所有 Android 设备。每个制造商编写自己的专有驱动程序并通过互联网发布,因此,确定需要安装的特定设备驱动程序非常重要。当然,一些 Android 取证工具包(我们将在后续章节中讨论)确实提供了一些通用驱动程序或一组最广泛使用的驱动程序;但它们可能无法适用于所有型号的 Android 手机。

一些 Windows 操作系统在设备插入后能够自动检测并安装驱动程序,但大多数情况下它们会失败。所有制造商的设备驱动程序都可以在各自的官方网站上找到。

访问连接的设备

如果你还没有这样做,请直接使用 USB 电缆将解锁的 Android 设备连接到计算机。Android 设备将显示为一个新驱动器,你将能够访问外部存储上的文件。如果设备被锁定,则此时你将无法访问任何文件,可能需要使用“开启 USB 存储”选项,这个选项可以在手机上启用,如下图所示:

Android 4.1 版本中的 USB 大容量存储

对于一些 Android 手机(尤其是 HTC 手机),当设备通过 USB 电缆连接时,它可能会暴露出多个功能。例如,如下图所示,当 HTC 设备连接时,它会呈现一个包含四个选项的菜单。默认选择是仅充电。当选择磁盘驱动器选项时,它将作为磁盘驱动器挂载:

HTC 手机的 USB 选项

当设备作为磁盘驱动器挂载时,你将能够访问设备上存在的 SD 卡。从法医角度来看,SD 卡具有重要价值,因为它可能包含对调查重要的文件;然而,存储在/data/data下的核心应用数据将保留在设备上,并无法通过这些方法访问。

Android 调试桥

被认为是 Android 取证中最关键的组件之一,Android 调试桥ADB)是一个命令行工具,允许你与 Android 设备进行通信并控制它。在接下来的章节中,我们将详细了解 ADB;现在,我们将专注于 ADB 的基本介绍。你可以在/platform-tools/下访问 ADB 工具。

在我们讨论任何关于 ADB 的内容之前,我们需要先了解USB 调试选项。

USB 调试

此选项的主要功能是启用 Android 设备与安装了 Android SDK 的工作站之间的通信。在 Samsung 手机上,你可以在“设置 | 开发者选项”中找到这个选项,如下图所示:

Samsung S8 设备中的 USB 调试选项

其他 Android 手机可能有不同的环境和配置特性。你可能需要通过访问构建模式来强制启用“开发者选项”。

然而,从 Android 4.2 开始,开发者选项菜单被隐藏,以确保用户不会意外启用它。要启用它,请进入设置 | 关于手机,然后连续点击“版本号”字段七次。完成此操作后,开发者选项将出现在设置菜单中。在 Android 4.2.2 之前,启用此选项是与设备通过 ADB 通信的唯一要求;然而,从 Android 4.2.2 开始,Google 引入了安全的 USB 调试选项。此功能仅允许用户明确授权的主机通过 ADB 连接设备。

因此,当你通过 USB 将设备连接到新工作站以访问 ADB 时,你需要首先解锁设备,并通过在确认窗口中按 OK 来授权访问,如下图所示。如果勾选了“始终允许来自此计算机的访问”,则以后设备将不会再提示授权:

安全的 USB 调试

当选择 USB 调试选项时,设备将运行 adb 守护进程 (adbd) 在后台,并持续寻找 USB 连接。该守护进程通常在一个没有特权的 shell 用户账户下运行,因此不会提供对完整数据的访问权限;然而,在 root 设备上,adbd 会以 root 账户运行,从而提供对所有数据的访问权限。除非所有其他取证方法都失败,否则不推荐将设备 root 以获取完全访问权限。如果你选择将 Android 设备 root,必须在尝试应用到真实证据之前对方法进行详细记录和测试。关于 root 的内容将在本章末尾讨论。

在安装了 Android SDK 的工作站上,adbd 将作为后台进程运行。同时,在同一工作站上,还会有一个客户端程序,可以通过在 shell 中输入 adb 命令来启动。当 adb 客户端启动时,它会首先检查是否已经有 adb 守护进程在运行。如果没有,它会启动一个新的进程来启动 adb 守护进程。adb 客户端程序通过端口 5037 与本地的 adbd 通信。

使用 adb 访问设备

一旦环境设置完成,且 Android 设备处于 USB 调试模式,使用 USB 电缆将 Android 设备连接到取证工作站并开始使用 adb

检测连接的设备

以下 adb 命令提供了所有连接到取证工作站的设备列表。如果在发出命令时模拟器正在运行,它也会被列出。另外请记住,如果未安装必要的驱动程序,则该命令将显示空白消息。如果遇到这种情况,请从制造商处下载并安装必要的驱动程序:

我们现在已经获得了连接到工作站的设备列表。接下来,我们将查看如何停止本地 ADB 服务器。

杀死本地 ADB 服务器

以下命令用于终止本地的 adb 服务:

C:\android-sdk\platform-tools>adb.exe kill-server

在终止本地 adb 服务后,执行 adb devices 命令。你将看到服务器已启动,如以下截图所示:

现在我们将访问 Android 设备上的 ADB shell。

访问 adb shell

adb shell 命令允许你访问 Android 设备上的 shell,并与设备进行交互。

以下是访问 adb shell 并执行基本 ls 命令以查看当前目录内容的命令:

C:\android-sdk\platform-tools>adb.exe shell shell@android:/ $ ls
ls acct cache
config d
data default.prop dev
efs etc
factory fstab.smdk4x12 init
init.bt.rc init.goldfish.rc init.rc init.smdk4x12.rc init.smdk4x12.usb.rc
....  

Android 模拟器可供你执行并理解 adb 命令,然后再在设备上使用它们。在第九章《Android 数据提取技术》中,我们将详细介绍如何利用 adb 安装应用程序、从设备中复制文件和文件夹、查看设备日志等。

基本 Linux 命令

现在我们将快速浏览一些常用的 Linux 命令及其在 Android 设备上的使用:

  • lsls 命令(不带任何选项)列出当前目录中存在的文件和目录。使用 -l 选项时,该命令会显示文件和目录的详细信息,如大小、修改日期和时间、文件所有者及其权限等,如以下命令行输出所示:
shell@android:/ $ ls -l
ls -l
drwxr-xr-x root     root             2015-01-17 10:13 acct
drwxrwx--- system   cache             2014-05-31 14:55 cache
dr-x------ root     root              2015-01-17 10:13 config
lrwxrwxrwx root     root              2015-01-17 10:13 d -> /sys/kernel/debug
drwxrwx--x system   system            2015-01-17 10:13 data
-rw-r--r-- root     root          116 1970-01-01 05:30 default.prop
drwxr-xr-x root     root              2015-01-17 10:13 dev
drwxrwx--x radio    system            2013-08-13 09:34 efs
lrwxrwxrwx root     root              2015-01-17 10:13 etc -> /system/etc
...  

同样,以下是一些可以与 ls 命令一起使用的选项:

选项 描述
a 列出隐藏文件
c 按时间戳显示文件
d 只显示目录
n 显示长格式列表,包括 GID 和 UID 编号
R 显示子目录
t 根据时间戳显示文件
u 显示文件访问时间

根据需求,调查员可以使用以下一个或多个选项来查看详细信息:

  • catcat 命令用于读取一个或多个文件并将其内容输出到标准输出,示例如下所示:
shell@android:/ $ cat default.prop
cat default.prop
#
# ADDITIONAL_DEFAULT_PROPERTIES
#
ro.secure=1
ro.allow.mock.location=0
ro.debuggable=0
persist.sys.usb.config=mtp  

要将多个文件合并为一个文件,我们可以使用 > 运算符。要向现有文件追加内容,我们可以使用 >> 运算符。

  • cdcd 命令用于在不同目录之间切换。通常在从一个文件夹切换到另一个文件夹时使用。以下示例展示了用于切换到 system 文件夹的命令:
shell@android:/ $ cd /system
cd /system
shell@android:/system $   
  • cpcp 命令可以用于将文件从一个位置复制到另一个位置。该命令的语法如下:
$ cp [options] <source><destination>  
  • chmodchmod 命令用于更改文件系统对象(文件和目录)的访问权限。它还可以更改特殊模式标志。该命令的语法如下:
$ chmod [option] mode files  

例如,chmod 777 命令为文件赋予所有人读取、写入和执行权限。

  • dddd 命令用于复制文件,并根据操作数进行转换和格式化。在 Android 上,dd 命令可以用来创建 Android 设备的逐位镜像。关于镜像的更多细节,请参阅 第四章来自 iOS 备份的数据获取。以下是需要与此命令一起使用的语法:
dd if=/test/file of=/sdcard/sample.image    
  • rmrm 命令可以用来删除文件或目录。以下是此命令的语法:
rm file_name    
  • grepgrep 命令用于在文件或输出中搜索特定的模式。该命令的语法如下:
grep [options] pattern [files]    
  • pwdpwd 命令用于显示当前工作目录。例如,以下命令行输出显示当前工作目录为 /system
shell@android:/system $ pwd
pwd
/system  
  • mkdirmkdir 命令用于创建新目录。以下是此命令的语法:
mkdir [options] directories  
  • exitexit 命令用于退出当前所在的 shell。在 shell 中输入 exit 即可退出。

接下来,我们将看到如何在调查前高效地处理 Android 设备。

处理 Android 设备

在进行法医调查之前,正确处理 Android 设备是非常重要的任务。应小心确保我们的无意操作不会导致数据修改或其他不必要的事件。以下章节将重点介绍在法医调查的初期阶段处理设备时需要考虑的一些问题。

随着技术的进步,设备锁定 的概念在过去几年发生了显著变化。由于安全意识的普遍提高,大多数用户现在在其设备上启用了密码锁定机制。在我们研究一些绕过锁定 Android 设备的技术之前,重要的是当有机会时,我们不要错过禁用密码锁定的机会。

当第一次访问要分析的 Android 设备时,检查设备是否仍然处于活动状态(未锁定)。如果是,请更改设备设置,以便获得更多的设备访问权限。当设备仍然处于活动状态时,可以考虑执行以下任务:

  • 启用 USB 调试:一旦启用了 USB 调试选项,就可以通过 adb 连接获得更多对设备的访问权限。这对于从设备提取数据至关重要。启用 USB 调试的选项位置可能因设备而异,但通常位于设置中的开发者选项下。大多数物理获取 Android 设备的方法都需要启用 USB 调试。

  • 启用保持唤醒设置:如果选中保持唤醒选项,并且设备正在充电,则设备永远不会锁定。如果设备锁定,数据采集过程可能会被中断。

  • 增加屏幕超时:这是设备解锁后有效激活的时间。访问此设置的位置会根据设备型号有所不同。在三星 Galaxy S3 手机上,您可以通过导航至 设置 | 显示 | 屏幕超时 来访问此设置。

除此之外,如 第一章 中所述,移动法证简介,设备需要与网络隔离,以确保远程擦除选项无法在设备上生效。安卓设备管理器允许远程擦除或锁定手机。这可以通过登录到配置在手机上的 Google 账户来完成。更多的细节将在后续章节中提供。如果安卓设备未设置为允许远程擦除,则只能通过安卓设备管理器对设备进行锁定。此外,市场上还有一些 移动设备管理 (MDM) 软件产品,允许用户远程锁定或擦除安卓设备。某些产品可能不需要在设备上启用特定设置。

使用可用的远程擦除软件,可以删除所有数据,包括电子邮件、应用程序、照片、联系人以及其他文件,以及存储在 SD 卡上的文件。为了将设备与网络隔离,您可以将设备设置为飞行模式并禁用 Wi-Fi,作为额外的预防措施。启用飞行模式并禁用 Wi-Fi 是有效的,因为设备将无法通过蜂窝网络进行通信,并且无法通过 Wi-Fi 访问。移除手机的 SIM 卡也是一个选项,但这并不能有效阻止设备通过 Wi-Fi 或其他蜂窝网络进行通信。要将设备设置为飞行模式,请按住电源按钮并选择飞行模式。

当安卓设备未锁定时,可以执行所有这些步骤;然而,在调查过程中,我们常常会遇到被锁定的设备。因此,了解如何绕过锁定密码(如果已启用)变得尤为重要。

屏幕锁定绕过技术

由于用户意识的提高以及功能的简易性,使用密码选项来锁定安卓设备的数量呈指数增长。这意味着在法证调查过程中绕过设备屏幕锁定变得越来越重要。迄今为止讨论的屏幕锁定绕过技术的适用性取决于具体情况。需要注意的是,这些方法中的一些可能会导致我们对设备进行更改。请确保在非证据性质的安卓设备上测试并验证所有列出的步骤。您必须获得授权才能对设备进行必要的更改,记录所有采取的步骤,并能够在需要法庭证词时描述所采取的步骤。

当前,安卓提供三种类型的屏幕锁机制。尽管有些设备提供语音锁、面部识别锁和指纹锁等选项,但我们将仅讨论以下三种,因为这三种是所有安卓设备中最广泛使用的:

  • 图案锁:用户在手机上设置一个图案或设计,必须画出相同的图案才能解锁设备。安卓是首个引入图案锁的智能手机操作系统。

  • PIN 码:这是最常见的锁定选项,许多手机都有此功能。PIN 码是一个四位数字,需要输入该数字才能解锁设备。

  • 密码:这是一个由字母和数字组成的密码。与仅包含四位数字的 PIN 码不同,字母数字密码包括字母和数字。

以下部分详细介绍了几种技术,你可以用来绕过这些安卓锁屏机制。根据情况,这些技术可能帮助调查人员绕过屏幕锁。

使用 ADB 绕过屏幕锁

如果安卓设备上启用了 USB 调试,明智的做法是利用这一点,通过 USB 连接使用adb进行连接,正如本章前面部分所讨论的那样。你应该将设备连接到取证工作站并执行adb devices 命令。如果设备显示出来,则说明 USB 调试已启用。如果安卓设备被锁定,你必须尝试绕过屏幕锁。以下两种方法可能在启用 USB 调试时帮助你绕过屏幕锁。

删除 gesture.key 文件

删除gesture.key文件将删除设备上的图案锁;然而,需要注意的是,这会永久改变设备,因为图案锁已被移除。如果你正在进行秘密操作,这一点应考虑在内。以下是该过程的步骤:

  1. 使用 USB 线将设备连接到取证工作站(本示例中为 Windows 机器)。

  2. 打开命令提示符并执行以下指令:

adb.exe shell
cd /data/system rm gesture.key  
  1. 重启设备。如果图案锁仍然出现,只需随便画一个图案,设备应该能够顺利解锁。

当设备已被 root 时,这种方法有效。在未 root 的设备上,此方法可能无法成功。未经适当授权,不应对安卓设备进行 root 操作,因为这会改变设备的原始状态。

更新 settings.db 文件

要更新settings.db文件,请按以下步骤操作:

  1. 使用 USB 线将设备连接到取证工作站。

  2. 打开命令提示符并执行以下指令:/data/data/com.android.providers.settings/databases sqlite3 settings.db

  1. 退出并重启设备。

  2. 安卓设备应处于解锁状态。如果未解锁,尝试按照之前的说明删除gesture.key文件。

在接下来的部分,我们将查看恢复模式和 ADB 连接。

检查修改后的恢复模式和 ADB 连接

在 Android 中,恢复指的是存放恢复控制台的专用分区。恢复的两个主要功能是删除所有用户数据和安装更新。例如,当你恢复出厂设置时,恢复分区会启动并删除所有数据。同样,当需要安装更新时,也是通过恢复模式来完成的。

有许多热衷的 Android 用户通过修改的恢复模块安装自定义 ROM。这个修改过的恢复模块主要是为了简化安装自定义 ROM 的过程。恢复模式的访问方式因设备制造商而异;关于哪种方法适用于哪种制造商的设备的信息可以在互联网上轻松找到。通常,这可以通过同时按住不同的按钮来完成,比如音量键和电源键。进入恢复模式后,将设备连接到工作站并尝试访问 adb 连接。如果设备的恢复模式未被修改,你可能无法访问 adb 连接。设备的修改版恢复版本会为用户提供不同的选项,如下图所示:

接下来,我们将看到如何刷新恢复分区。

刷新新的恢复分区

有可用机制可以通过修改的镜像刷新 Android 设备的恢复分区。fastboot 工具可以方便地完成这一过程。Fastboot 是一个诊断协议,随 SDK 包提供,主要用于通过主机计算机的 USB 连接修改闪存文件系统。为此,你需要将设备启动到引导加载程序模式,在此模式下只执行最基本的硬件初始化。

一旦在设备上启用该协议,它将接受通过 USB 数据线发送的特定命令集。这些命令通过命令行发送。刷新或重写一个分区,使用保存在计算机上的二进制镜像文件就是一个允许的命令。一旦恢复分区被刷新,启动设备进入恢复模式,挂载 /data/system 分区,并使用 adb 删除 gesture.key 文件。重启手机后,应该能够绕过屏幕锁;然而,这只有在设备的引导加载程序解锁的情况下才能生效。此外,刷新操作会永久改变设备。你也可以使用 fastboot boot 命令临时启动恢复镜像,在不永久改变恢复分区的情况下删除键文件。

使用自动化工具

市场上有几种自动化解决方案可以解锁安卓设备。像 Cellebrite 和 XRY 这样的商业工具能够绕过屏幕锁定,但大多数工具都要求启用 USB 调试。接下来,我们将探讨如何使用 UFED 用户锁定代码恢复工具解锁安卓设备。此工具仅适用于支持 USB OTG 的设备。此过程还需要 UFED 相机、500 号绕过锁定电缆和 501 号绕过锁定电缆。工具安装在工作站后,按照以下步骤解锁安卓设备:

  1. 在工作站上运行该工具并按 1,如下图所示:

UFED 用户锁定代码恢复工具

  1. 现在,将 500 号绕过锁定电缆的 A 端连接到工作站的 USB 端口。同时,将 500 号绕过锁定电缆的 B 端连接到 501 号 OTG 电缆,然后将另一端连接到设备。

  2. 连接后,工具会提示你选择恢复配置文件。选择 [1] 手动选择恢复配置文件

  3. 现在,选择设备上使用的锁定类型和恢复配置文件,并按照屏幕上的指示进行操作。

  4. 接下来,确保设备屏幕上出现了数字键盘,并准备好接受 PIN 码。

  5. 关闭任何可能出现的消息窗口。按 1 并按 Enter。现在,通过输入随机内容进行五次错误的登录尝试,然后点击设备底部的“忘记图案”。

  6. 按照屏幕上的指示操作,等待相机窗口打开,然后点击相机窗口。

  7. 使用光标选择设备屏幕上任意非空区域,将绿色方框覆盖其上——例如,选择屏幕上的任意数字。工具将使用此信息来检测设备是否已解锁。按 Enter 键开始过程。

  8. 工具将尝试多种组合来解锁设备。解锁成功后,它会提示你结束该过程。

现在我们将了解 Android 设备管理器以及如何使用它解锁设备。

使用 Android 设备管理器

大多数最新的安卓手机都配备了一项名为 Android 设备管理器的服务,该服务帮助设备拥有者定位丢失的手机。此服务还可以用来解锁设备;然而,只有在你知道配置在设备上的 Google 账户凭据时,才能实现此功能。如果你可以访问账户凭据,请按照以下步骤解锁设备:

  1. 在工作站上访问 google.com/android/devicemanager

  2. 使用配置在设备上的 Google 账户登录。

  3. 选择需要解锁的设备并点击“锁定”,如下图所示:

Android 设备管理器

  1. 输入临时密码后,再次点击“锁定”。

  2. 成功后,在设备上输入临时密码以解锁设备。

这可以在不知道保存登录凭据的计算机(即嫌疑人的电脑)凭证的情况下完成。

使用“查找我的手机”绕过(仅限三星手机)

使用“查找我的手机”是一个值得尝试的技术,尤其是当你处理三星设备时;但是,它仅在设备所有者已登录三星账户并且你知道设备上配置的三星账户凭据时有效。

要开始此过程,请从网页浏览器访问“查找我的手机”服务,然后使用在设备上注册的三星账户凭据登录,如下所示:

  1. 点击位于左侧的“锁定我的屏幕”选项:

  1. 现在,输入任意临时 PIN,然后点击“锁定”按钮。(某些设备上可能会看到“解锁我的屏幕”选项,它也具有相同的功能)。现在,可以使用之前设置的临时 PIN 解锁手机。

接下来,让我们看一下污迹攻击。

污迹攻击

在少数情况下,污迹攻击可能用于推测触摸屏移动设备的密码。这种攻击依赖于识别用户手指留下的污迹。虽然这种方法可能提供绕过方式,但必须指出,由于大多数 Android 设备是触摸屏的,且使用设备时也会留下污迹,污迹攻击不太可能成功;然而,已经证明,在适当的光线下,留下的污迹是可以轻松检测到的,如以下截图所示。

通过分析污迹痕迹,我们可以辨识出用于解锁屏幕的图案。这种攻击在识别 Android 设备上的图案锁时更可能有效。在某些情况下,也可以通过屏幕的清洁程度来恢复 PIN 码。因此,在进行取证调查时,应小心首次处理设备时,确保屏幕未被触碰:

在适当光线下设备上可见的污迹

我们现在将讨论下一个方法,即忘记密码选项。

使用忘记密码/忘记图案选项

如果你知道设备上配置的主 Gmail 地址的用户名和密码,你可以更改 PIN、密码或解锁设备。在进行一定次数的解锁失败后,Android 会提供一个选项,叫做“忘记图案?”或“忘记密码?”,如下图所示:

Android 设备上的忘记图案选项

点击该链接并使用 Gmail 用户名和密码登录。这将允许你为设备创建新的图案锁或密码。

请注意,这只适用于运行 Android 4.4 或更早版本的设备。

通过启动安全模式绕过第三方锁屏

如果屏幕锁是第三方应用程序,而不是内置锁屏,可以通过进入安全模式并禁用它来绕过。要在 Android 4.1 或更高版本的设备上进入安全模式,按住 电源 按钮,直到出现电源选项菜单。然后,再按住 电源 按钮,你将被提示重新启动 Android 设备进入安全模式。点击 OK 按钮,如下图所示:

Android 中的安全模式

一旦进入安全模式,你可以禁用第三方锁屏应用,或者将其完全卸载。之后,重启设备,你应该能在没有任何锁屏的情况下访问设备。

使用 ADB 密钥绕过安全 USB 调试

如前所述,在使用 USB 调试时,如果选中了“始终允许来自此计算机的连接”选项,设备将不会在未来提示授权。这是通过将某些密钥,即 adbkeyadbkey.pub,存储在计算机上实现的。任何来自不信任计算机的 adb 连接尝试都会被拒绝。在这种情况下,可以从嫌疑人的计算机中提取 adbkeyadbkey.pub 文件,并将其复制到调查员的工作站。设备将认为它正在与已知的、授权的计算机通信。adbkeyadbkey.pub 文件可以在 Windows 计算机的 C:Users<username>.android 目录下找到。

在 Android 4.4.2 中绕过安全 USB 调试

如前文所述,Android 4.4.2 中引入的安全 USB 调试功能仅允许授权的工作站连接到设备;然而,正如 labs.mwrinfosecurity.com/ 所报道的,这一功能存在一个漏洞,允许用户绕过安全 USB 调试功能,并将设备连接到任何工作站。以下是绕过 Android 设备上安全 USB 调试功能的步骤:

  1. 在解锁的设备上,尝试使用 adb。设备将显示错误信息。

  2. 现在,导航到紧急拨号器或锁屏相机,并执行以下命令:

$ adb kill-server
$ adb shell  
  1. 确认对话框将被触发,工作站现在可以在不解锁设备的情况下授权。确认对话框将显示在紧急拨号器上,如下图所示:

Android 4.2.2 中的安全 USB 调试

  1. 一旦通过 adb 连接到设备,尝试使用以下命令绕过锁屏:
$ adb shell pm clear com.android.keyguard 

接下来,我们来看一下如何通过崩溃锁屏界面来绕过屏幕锁定。

在 Android 5.x 中崩溃锁屏 UI

在运行 Android 5.0 至 5.1.1 的设备上,密码锁屏(而非 PIN 或图案锁)可以通过崩溃屏幕 UI 来绕过。通过执行以下步骤可以实现这一点,如 android.gadgethacks.com/ 中所解释:

  1. 在锁屏界面点击紧急呼叫选项,然后在拨号屏幕上输入任何随机内容(例如,10 个星号)。

  2. 双击该字段以高亮显示已输入的文本,如下图所示,并选择复制。现在,将其粘贴回同一字段:

崩溃的锁屏界面

  1. 重复此过程以添加更多字符。直到双击该字段时,字段不再高亮显示字符为止。

  2. 返回锁屏界面并打开相机快捷方式。然后,下拉通知屏幕并点击设置图标。接下来,系统会提示你输入密码。

  3. 按住输入框并选择粘贴,重复此过程多次。一旦足够的字符被粘贴到输入框中,锁屏界面将崩溃,从而让你能够访问设备。

现在,让我们来看看一些其他技巧。

其他技巧

上述所有技巧和现有的商业工具对于任何想要访问 Android 设备数据的取证检查员(像你一样)都非常有用;然而,也有可能出现这些技巧都无法奏效的情况。为了获取设备的完整物理镜像,当商业和开源解决方案失败时,可能需要使用芯片脱落(chip-off)和 JTAG 等技术。这里简要介绍了这些技术。

芯片脱落技术将内存芯片从电路中拆除并尝试读取,而 JTAG 技术则通过探测 JTAG 测试访问端口TAPs)并将连接器焊接到 JTAG 端口上,从而读取设备内存中的数据。芯片脱落技术更具破坏性,因为一旦芯片从设备中拆除,恢复设备的原始功能状态就变得非常困难。此外,需要专业技术人员通过去焊芯片从电路板上小心移除芯片。拆除芯片所需的高温也可能损坏或摧毁芯片上存储的数据,这意味着当数据无法通过开源或商业工具恢复,或设备已损坏到无法修复的程度时,才应使用此技术。使用 JTAG 技术时,JTAG 端口帮助你访问内存芯片,从而无需拆除芯片即可提取设备数据的物理镜像。要关闭设备的屏幕锁定,你可以识别出锁定代码在物理内存转储中的存储位置,关闭锁定,并将该数据复制回设备。商业工具,如 Cellebrite Physical Analyzer,可以接受来自芯片脱落和 JTAG 获取的.bin文件,并为你破解锁定代码。一旦代码被手动移除或破解,你就可以使用常规技术分析设备。

芯片脱落和 JTAG 技术都需要大量的研究和经验,才能在真实设备上尝试。关于设备的 JTAG 和芯片脱落的宝贵资源可以在forensicswiki.xyz/page/Main_Page找到。

在本节中,我们探讨了绕过 Android 设备屏幕锁的各种方式。现在我们将了解 Android root 权限到底是什么。

获取 root 访问权限

作为一名移动设备取证检查员,了解所有与设备调整和修改相关的内容至关重要。这将帮助你更详细地理解设备的内部工作原理,并了解你在调查过程中可能遇到的许多问题。Root Android 手机已经成为一种普遍现象,你可能会在取证检查中遇到 root 手机。在适用的情况下,你可能还需要 root 设备以便获取取证数据。这意味着,了解 root 设备的详细情况及其与其他手机的区别非常重要。以下章节将介绍 Android root 及其他相关概念。

什么是 root?

类 Unix 操作系统中的默认管理员账户叫做 root。在 Linux 中,root 用户有权启动/停止任何系统服务,编辑/删除任何文件,改变其他用户的权限等等。我们已经了解到 Android 使用的是 Linux 内核,因此大多数 Linux 的概念同样适用于 Android;然而,大多数 Android 手机默认不允许你以 root 用户身份登录。

获取 Android 手机的 root 权限就是为了访问设备,执行设备上通常不允许的操作。制造商希望设备按一定方式工作,以供普通用户使用。Root 设备可能会使保修失效,因为使用 root 会使系统暴露于漏洞之中,并赋予用户超级用户权限。

想象一个恶意应用程序获得了 Android 系统的 root 访问权限。请记住,在 Android 中,每个应用程序都被视为一个独立的用户,并且会被分配一个 UID。这意味着应用程序只能访问有限的资源,并且强制执行应用程序隔离的概念。实际上,root Android 设备使得超级用户权限成为可能,并提供对 Android 设备的开放访问。

超级用户权限类似于 Windows 计算机上的管理员权限,能够执行普通用户无法完成的操作。在移动设备中,这种超级用户访问权限是设计上禁用的,但 root 手机则可以让你获得这一特权。

理解 root 过程

尽管硬件制造商尽力通过足够的限制来阻止访问 root,黑客们总是能找到不同的方式来获取 root 权限。Root 过程因底层设备制造商而异;然而,root 任何设备通常涉及利用设备固件中的安全漏洞,然后将su(超级用户)二进制文件复制到当前进程路径中的一个位置(/system/xbin/su),并使用chmod命令授予其可执行权限。

为了简单起见,可以想象一台安卓设备有三到四个分区,这些分区运行的程序并不完全与安卓相关(安卓只是其中之一)。

引导加载程序位于第一个分区,是手机开机时首先运行的程序。这个引导加载程序的主要任务是启动其他分区并加载安卓分区,通常被称为 ROM。要查看引导加载程序菜单,需要按特定的组合键,比如同时按住电源键并按音量加键。这个菜单提供了进入其他分区的选项,比如恢复分区。

恢复分区负责安装手机的升级,这些升级会直接写入安卓 ROM 分区。这是你在设备上安装任何官方更新时所看到的模式。设备制造商会确保只有官方更新可以通过恢复分区安装。这意味着,绕过这一限制可以让你安装/刷入任何解锁的安卓 ROM。修改版恢复程序不仅允许更简便的 root 过程,还提供了在正常恢复模式下看不到的各种选项。以下截图展示了正常恢复模式:

正常的安卓系统恢复模式

以下截图展示了修改版恢复模式:

修改版恢复模式

在安卓世界中,最常用的恢复程序是 Clockwork 恢复,也叫ClockworkMod。大多数 root 方法都是通过刷入修改版恢复到恢复分区开始的。之后,你可以发布更新,这个更新可以让设备获取 root 权限;然而,你不需要手动执行所有操作,因为市面上已有大多数型号的手机都可以通过软件一键 root。

从安卓 7.x 开始,谷歌开始严格执行验证启动。验证启动确保设备上的软件在启动到正常模式之前没有被修改。这一机制通过每个阶段验证下一个阶段的完整性和真实性后再执行。如果某个分区或段落被修改,完整性检查将失败,手机可能无法正常启动。有关验证启动的更多信息,可以参考source.android.com/security/verifiedboot/verified-boot

这也意味着,root 这类安卓设备将变得极为困难,因为 root 涉及到对安卓操作系统的修改。Marshmallow 是第一个提供系统完整性警告的安卓版本,但自安卓 7.x 版本起,这一功能已经成为强制性要求。

对安卓设备进行 root

现在我们来看一下获取 Android 设备 root 权限的不同方法。影响你选择方法的主要因素是底层的引导加载程序是锁定还是解锁。对于解锁的引导加载程序,获取 root 权限非常容易,而对于锁定的引导加载程序,获取 root 权限则不那么简单,这意味着解锁 Android 手机的引导加载程序通常是获取 root 权限和刷入自定义 ROM 的第一步。可以通过 fastboot 模式(在前面章节中有讨论)或遵循特定厂商的引导加载程序解锁程序来完成。一旦设备的引导加载程序被解锁,下一步就是复制 su 二进制文件并授予执行权限。可以通过多种方式完成此操作。

以下是如何获取三星 Galaxy S7(国际版 SM-G930F/FD/X、韩国版 SM-G930K/L/S 和加拿大版 SM-G930W8 Exynos 型号)的 root 权限:

  1. 确保在开发者选项中启用了 OEM 解锁。

  2. 下载 ODIN(可通过 build.nethunter.com/samsung-tools/Odin_3.12.3.zip 获取),并将压缩包内容提取到你选择的目录中。

  3. 下载 TWRP 镜像(可通过 twrp.me/samsung/samsunggalaxys7.html 获取)。

  4. 重启设备进入下载模式。为此,在设备重启时按住音量下 + Home 按钮。当你看到下载模式警告屏幕时,按音量上继续。

    启动 Odin 并将 TWRP 镜像放入 AP 插槽;不要忘记禁用自动重启。开始刷入恢复模式。

  5. 要退出下载模式,请按住音量下 + Home + 电源;当屏幕变黑时,立即将音量下改为音量上。

  6. 通过右滑允许系统修改。

  7. 下载 SuperSU(可通过 download.chainfire.eu/supersu 获取)。

  8. 通过 MTP 将包含 SuperSU 的压缩包传输到设备,并通过相应的 TWRP 选项进行安装。

Root(获取 root 权限)是一个高度依赖设备的过程,因此取证调查员在将这些技术应用到任何 Android 设备之前需要小心。Root 设备有其优点和缺点。以下是获取 root 权限的优点:

  • Root 允许对设备上的软件进行最深层次的修改——例如,你可以超频或降频设备的 CPU。

  • 它允许绕过运营商、制造商等对设备的限制。

  • 对于极端自定义,可以下载并安装新的自定义 ROM。

以下是获取 root 权限的缺点:

  • 获取 root 权限必须小心谨慎,因为错误可能导致手机软件无法修复的损坏,将设备变成一个毫无用处的“砖头”。

  • Root 可能会使设备的保修失效。

  • Root 操作会导致设备暴露于恶意软件和其他攻击中。能够访问整个 Android 系统的恶意软件可能会造成严重破坏。

一旦设备被 root,像 Superuser 应用程序 这样的应用程序就可以提供或拒绝 root 权限。这个应用程序帮助你在设备上授予和管理超级用户权限,如下图所示:

请求 root 权限的应用程序

现在我们来看 root 访问。

Root 访问 - ADB shell

普通的 Android 手机不允许你访问设备上的某些目录和文件。例如,尝试访问一个未 root 的 Android 设备上的 /data/data 文件夹,你将看到如下信息:

没有 root 权限时的权限拒绝

在已 root 的手机上,你可以通过执行以下命令以 root 身份运行 adb shell:

C:\android-sdk\platform-tools>adb.exe root 

下图显示了前面命令的输出:

在已 root 设备上成功执行的 shell 命令

因此,root 手机可以让你访问本来无法访问的文件夹和数据。还要注意,# 表示 root 或超级用户权限,而 $ 则表示普通用户,如前面的命令行所示。

Android 7.0(Nougat)及更高版本支持 基于文件的加密FBE),允许使用不同的密钥加密不同的文件。对于像你这样的取证调查员来说,重要的是要注意,对于启用了 FBE 的设备,无法应用永久的 root 权限来进行采集。因此,建议使用自定义恢复方法,因为恢复分区是以 root 权限运行的。

总结

在本章中,我们学习了如何在对 Android 设备进行调查之前,设置一个合适的取证工作站。首先,从一个已安装了必要基本软件和设备驱动程序的无菌取证工作站开始。如果取证采集方法要求解锁 Android 设备,则需要确定最佳的方法来访问设备。如果设备启用了 USB 调试功能,那么绕过屏幕锁定就非常简单。我们学习了各种屏幕锁定绕过技巧,并帮助你根据不同情况确定使用哪种方法。根据取证采集方法和调查范围,对设备进行 root 应该能提供对设备文件的完全访问权限。我们还学习了 root 操作,以及它如何用于获取对设备文件系统的完全访问权限并执行通常不允许的操作。

现在我们已经覆盖了访问 Android 设备的基本概念,接下来将介绍采集技术,并描述如何使用每种方法在 第九章 中提取数据,Android 数据提取技术

第十章:Android 数据提取技术

使用第八章中解释的任何屏幕锁绕过技术,Android 取证设置和数据提取前的技巧,检查员可以尝试访问被锁定的设备。一旦设备可访问,下一步是提取设备上的信息。可以通过应用各种数据提取技术来实现这一目标。

本章将帮助你识别 Android 设备上敏感位置,并解释可以应用于设备的各种逻辑和物理提取技术,以提取必要的信息。

本章将涵盖以下主题:

  • 理解数据提取技术

  • 手动数据提取

  • 逻辑数据提取

  • 物理数据提取,包括对 Android 设备和 SD 卡进行成像、JTAG 和芯片拆卸技术

理解数据提取技术

存储在 Android 设备上的数据可能是民事、刑事或企业公司内部调查的一部分。在处理涉及 Android 设备的调查时,作为取证检查员,你需要注意在取证过程中需要处理的问题;这包括确定是否允许 root 访问(通过同意或法律授权),以及在调查过程中可以提取和分析哪些数据。例如,在涉及跟踪的刑事案件中,法院可能只允许提取和分析嫌疑人 Android 设备上的短信、通话记录和照片。在这种情况下,最合理的做法可能是逻辑提取仅这些特定项目。然而,最好是从设备中获取完整的物理数据提取,并仅检查法院允许的区域。你永远无法预料调查会引导到哪里,因此最好是立即从设备中提取尽可能多的数据,而不是等到同意范围发生变化后才后悔没有获取完整的镜像。Android 设备的数据提取技术可以分为三种类型:

  • 手动数据提取

  • 逻辑数据提取

  • 物理数据提取

如第一章《移动取证介绍》中所述,手动提取是指通过正常浏览设备并捕获任何有价值的信息,而逻辑提取是指访问文件系统,物理提取则是提取设备的逐位镜像。每种类型的提取方法将在以下章节中详细描述。

某些方法可能需要对设备进行 root 权限才能完全访问数据。每种方法的含义不同,它们的成功率将取决于所使用的工具和方法,以及设备的品牌和型号。

手动数据提取

这种提取方法涉及你利用移动设备的正常用户界面来访问设备内存中的内容。你将通过访问不同的菜单来正常浏览设备,查看如通话记录、短信和即时消息聊天等详细信息。每个屏幕的内容通过拍照捕捉,并可以作为证据呈现。

这种类型检查的主要缺点是只能检查操作系统(UI 模式)下可以访问的文件。在手动检查设备时必须小心,因为很容易按错按钮并删除或添加数据。手动提取应该作为最后的手段,用于验证通过其他方法提取的发现。在某些情况下,你可能需要将手动检查作为第一步。这可能包括生死攸关的紧急情况或失踪人员案件,在这些情况下,快速扫描设备可能会帮助警方找到该个人。

逻辑数据提取

逻辑数据提取技术通过与操作系统交互并访问文件系统来提取设备上的数据。这些技术非常重要,因为它们提供了有价值的数据,适用于大多数设备,并且易于使用。再次强调,提取数据时,root 概念就会浮现。逻辑技术实际上并不要求获得 root 权限来进行数据提取。然而,设备上的 root 权限使你能够访问设备上所有的文件。这意味着某些数据可能在没有 root 的设备上提取,而 root 权限则会打开设备并提供对设备上所有文件的访问。因此,拥有设备的 root 权限将极大地影响可以通过逻辑技术提取的数据的数量和种类。以下部分将解释可以用于从 Android 设备中逻辑提取数据的各种技术。

ADB 数据提取

如前所述,adb是一个命令行工具,帮助你与设备进行通信以检索信息。通过adb,你可以提取设备上所有文件的数据,或者仅提取你感兴趣的相关文件。这是逻辑提取中最广泛使用的技术。

要通过adb访问 Android 设备,必须启用 USB 调试选项。从 Android 4.2.2 开始,由于安全的 USB 调试,连接到设备的主机也需要进行授权。如果设备已锁定且未启用 USB 调试,请尝试使用第八章中解释的技术绕过屏幕锁,Android 取证设置与数据提取前技术

作为取证检查员,了解数据在 Android 设备上的存储方式,以及了解重要和敏感信息的存储位置非常重要,以便能够相应地提取数据。应用程序数据通常包含大量可能与调查相关的用户数据。所有与感兴趣的应用程序相关的文件都应检查其相关性,正如在第十章,Android 数据分析与恢复中所解释的那样。应用程序数据可以存储在以下位置之一:

  • 共享偏好设置:以键值对的形式,以轻量级的 XML 格式存储数据。共享偏好设置文件存储在应用程序 /data 目录下的 shared_pref 文件夹中。

  • 内部存储:用于存储私密数据,保存在设备的内部存储中。保存到内部存储的文件是私有的,无法被其他应用程序访问。

  • 外部存储:用于存储设备外部存储中的公共数据,通常不强制实施安全机制。这些数据可在 /sdcard 目录下找到。

  • SQLite 数据库:这些数据存储在 /data/data/PackageName/ 数据库中。通常以 .db 文件扩展名存储。可以使用 SQLite 浏览器(sourceforge.net/projects/sqlitebrowser/)或通过执行必要的 SQLite 命令在相应的文件上查看 SQLite 文件中的数据。

每个 Android 应用程序都会使用上述一种或多种数据存储选项在设备上存储数据。因此,通讯录应用程序会将有关联系人详细信息的所有信息存储在其包名下的 /data/data 文件夹中。请注意,/data/data 是设备内部存储的一部分,所有应用程序通常都安装在此位置。某些应用程序数据会存储在 SD 卡和 /data/data 分区中。通过使用 adb,我们可以通过 adb pull 命令提取此分区中的数据进行进一步分析。再次强调,这个目录只有在设备已经 root 的情况下才能访问。

在 Android 7.0(Nougat)中,推出了一种名为设备加密存储的新存储类型,允许应用程序将某些类型的数据存储在该存储中。因此,您将注意到在 /data 文件夹下出现了新的文件路径,如 misc_demisc_cesystem_desystem_ce。从取证角度来看,这是一个非常重要的变化,因为这也意味着,在运行 Android Nougat 的设备上,/data/data 不是唯一存储工件的位置,例如,

旧设备上的 SMS 数据位置:/data/com.android.providers.telephony/databases/smsmms.db,以及 Nougat 设备上的 SMS 数据位置:/user_de/0/com.android.providers.telephony/databases/smsmms.db

在 root 手机上,可以执行adb pull命令从 Dropbox 应用的databases文件夹中提取数据,命令如下:

adb pull 命令

同样地,在 root 手机上,可以以这种方式提取整个/data文件夹。如下所示,可以将 Android 设备上完整的/data目录复制到本地机器目录中。整个data目录在 97 秒内提取完成。提取时间会根据/data文件夹中存储的数据量有所不同:

提取到法证工作站的/data目录

在非 root 设备上,执行pull命令从/data目录提取文件不会成功,如下所示,因为 shell 用户没有权限访问这些文件:

在非 root 设备上执行 ADB pull 命令

通过前述过程从 root 手机复制的数据保持其目录结构,从而允许调查人员浏览必要的文件以访问信息。通过分析相应应用程序的数据,法证专家可以收集关键信息,这些信息可能会影响调查结果。请注意,在法证工作站本地查看文件夹会改变内容的日期和时间。因此,你应该保留原始输出的副本,以便进行日期/时间比较。

使用 SQLite 浏览器查看数据

SQLite 浏览器是一个可以帮助分析提取数据的工具。SQLite 浏览器允许你查看扩展名为.sqlite.sqlite3.sqlitedb.db.db3的数据库文件。使用 SQLite 浏览器的主要优势是它以表格形式展示数据。

转到“文件 | 打开数据库”以使用 SQLite 浏览器打开.db文件。如下所示,SQLite 浏览器有三个主要标签页:数据库结构、浏览数据和执行 SQL。浏览数据标签页允许你查看.db文件中不同表格的内容。

在我们的分析过程中,我们将主要使用这个标签页。或者,像 Oxygen Forensic SQLite Viewer 这样的工具也可以用于同样的目的。从数据库文件中恢复已删除的数据是可能的,并将在第十章中进行解释,Android 数据分析 与恢复

SQLite 浏览器

以下部分将重点介绍如何识别重要数据并手动从 Android 手机中提取各种细节。有关如何访问 Android 终端的内容,已在前面的章节中讲解。在接下来的部分中,我们将直接开始从中获取设备信息。

提取设备信息

了解你的 Android 设备的详细信息,如型号、版本等,将有助于你的调查。例如,当设备受到物理损坏,无法检查设备信息时,可以通过在/system文件夹下执行以下命令来获取设备的详细信息:

# cat build.prop

如下图所示:

build.prop 文件

提取设备信息后,我们将提取通话记录。

提取通话记录

在调查过程中,通常需要访问电话的通话记录以确认某些事件。关于通话记录的信息存储在contacts2.db文件中,该文件位于/data/data/com.android.providers.contacts/databases/。如前所述,提取到法证工作站本地文件夹后,可以使用 SQLite 浏览器查看该文件中存在的数据。接下来,看看如何通过以下步骤提取通话记录:

  1. 如下图所示,通过使用adb pull命令,可以将必要的.db文件提取到法证工作站的文件夹中:

复制到本地文件夹的 contacts2.db 文件

  1. 请注意,用于拨打电话的应用程序可以在各自的应用程序文件夹中存储通话记录详细信息。所有通讯应用程序都必须检查其通话记录,方法如下:
C:\android-sdk-windows\platform-tools>adb.exe pull
/data/data/com.android.providers.contacts C:temp 

这将产生以下输出:

  1. 现在,使用 SQLite 浏览器打开contacts2.db文件(通过导航到 文件 | 打开数据库),并浏览不同表中存在的数据。contacts2.db文件中的 calls 表提供有关通话历史的信息。以下截图显示了通话历史,包括姓名、号码、时长和日期:

在运行 Android 7.0(Nougat)的设备上,通话记录数据已被移出contacts2.db文件。在这些设备上,通话记录数据可以在/data/com.android.providers.contacts/databases/calllog.db中访问

提取 SMS/MMS

在调查过程中,可能会被要求检索某个移动设备发送和接收的短信。因此,了解这些信息的存储位置以及如何访问数据非常重要。mmssms.db文件位于/data/data/com.android.providers.telephony/databases,其中包含必要的详细信息。与通话记录一样,必须确保能够发送消息的应用程序被检查,以获取相关的消息日志,方法是使用以下命令:

adb.exe pull /data/data/com.android.providers.telephony C:\temp

这将产生以下输出:

提取 SMS 数据

电话号码可以在地址列下看到,相关的短信内容可以在正文列下看到,如下图所示:

contacts2.db 文件中的 calls 表

我们现在将提取浏览器历史记录信息。

提取浏览器历史记录信息

提取浏览器历史记录信息是法医检查员常常需要执行的一项任务。除了默认的 Android 浏览器,Android 手机上还可以使用不同的浏览器应用程序,例如 Firefox Mobile 和 Google Chrome。所有这些浏览器都会将浏览器历史记录以 SQLite .db格式存储。以我们的示例为例,我们从默认的 Android 浏览器将数据提取到我们的法医工作站。该数据位于/data/data/com.android.browser。名为browser2.db的文件包含浏览器历史记录详细信息。以下截图显示了浏览器数据,如 Oxygen Forensic SQLite Viewer 所呈现的。请注意,试用版将隐藏某些信息:

Oxygen Forensic SQLite Viewer 中的 browser2.db 文件

请注意,如果使用浏览器的隐身模式,前述行为可能会发生变化。

如果使用浏览器的隐身模式,前面章节中提到的几个细节将不会存储在设备上。接下来,我们将分析社交网络和即时通讯聊天记录。

社交网络/即时通讯聊天记录分析

社交网络和即时通讯应用程序(如 Facebook、Twitter 和 WhatsApp)透露的敏感数据可能对案件调查有帮助。分析过程与其他 Android 应用程序相似。将数据下载到法医工作站,分析.db文件,查看是否能够挖掘到任何敏感信息。例如,让我们来看一下 Facebook 应用程序,尝试查看可以提取哪些数据。

首先,我们提取/data/data/com.facebook.katana文件夹,并进入databases文件夹。该文件夹下的fb.db文件包含与用户账户相关的信息。friends_data表包含用户朋友的姓名、电话号码、电子邮件地址和出生日期等信息,如下图所示。类似地,可以分析其他文件,以查看是否能够提取到任何敏感信息:

SQLite 浏览器中的 fb.db 文件

同样,通过分析/data/data文件夹中的数据,可以获取关于地理位置、日历事件、用户笔记等信息。

ADB 备份提取

从 Android 4.0 开始,谷歌实现了adb backup功能,允许用户使用adb工具将应用程序数据备份到计算机中。此过程不需要 root 权限,因此在取证过程中非常有用。主要的缺点是它不能备份设备上安装的所有应用程序。备份功能是应用程序依赖的,因为应用程序的所有者可以选择是否允许备份。默认情况下,允许备份,但开发者如果愿意可以禁用此功能。因此,大多数第三方应用程序都启用了此功能,adb backup命令也适用于这些应用程序。以下是adb backup命令的语法:

adb backup [-f <file>] [-apk|-noapk] [-shared|-noshared] [-all] [-system|nosystem] [<packages...>]

让我们详细讨论一下:

  • -f:用于选择备份文件的存储位置。如果未指定,默认将备份文件存储为当前工作目录中的backup.ab

  • [-apk|noapk]:用于选择是否备份.apk文件。默认值为-noapk

  • [-obb|-noobb]:用于选择是否备份.obb(APK 扩展)文件。默认为-noobb

  • [-shared|-noshared]:用于选择是否备份来自共享存储和 SD 卡的数据。默认值为-noshared

  • [-all]:包含所有启用了备份的应用程序。

  • [-system|-nosystem]:用于选择是否包括系统应用程序。默认为-system

  • [<packages>]:用于列出要备份的特定包名。

一旦设备连接到工作站并且adb可以访问它,运行adb backup -shared -all命令,如下图所示:

adb 备份命令

一旦命令执行,用户需要在设备上批准权限,如下图所示。因此,如果设备处于屏幕锁定状态,将无法进行备份:

设备上的备份权限

Android 备份文件以.ab文件格式存储,默认情况下,它存储在 Android SDK 的platform-tools文件夹中。有一些免费的工具,例如 Android Backup Extractor,可以将.ab文件转换为.tar文件,从而可以查看。Android Backup Extractor 可以从sourceforge.net/projects/adbextractor/下载。该工具是一个基于 Java 的应用程序,因此在使用前请确保工作站上已安装 Java。要将备份文件转换为.tar格式,请执行以下命令:

java -jar abe.jar unpack backup.ab backup.tar

这将自动创建一个 .tar 扩展名的文件,之后可以使用诸如 WinRAR 或 7Zip 等归档工具轻松查看该文件。然而,请注意,如果在备份创建时设备上已输入密码,则该文件将被加密,因此,您需要在之前的命令中提供密码作为参数。备份文件包含两个主要文件夹——appssharedapps 文件夹包含所有备份中应用程序在 /data/data 下的信息。shared 文件夹包含 SD 卡上的所有数据。

ADB dumpsys 提取

adb dumpsys 命令允许您收集关于系统上运行的服务和应用程序的信息。adb shell dumpsys 命令提供所有系统服务的诊断输出。执行 dumpsys 命令不需要 root 权限,只需启用 USB 调试,和其他任何 adb 命令一样。如下所示的截图,通过运行 adb.exe shell service list 命令,您可以查看可以与 dumpsys 一起使用的所有服务列表:

dumpsys 服务列表命令

在某些场景下,分析特定的 dumpsys 服务,如 Wi-Fi、用户和通知等,可能会非常有帮助。以下是一些在法医分析中运行 dumpsys 命令可能有用的有趣情况:

dumpsys iphonesubinfo 服务可用于获取设备 ID 或 IMEI 号码的信息,如下图所示:

显示 IMEI 号码的 dumpsys 命令

dumpsys wifi 服务提供关于用户访问的 Wi-Fi 点的信息。它显示已保存连接的 SSID。此信息可用于将用户定位到特定位置。以下是 adb dumpsys 命令,提供该信息:

显示最后连接 Wi-Fi 详情的 dumpsys 命令

dumpsys usagestats 服务提供关于最近使用的应用程序的信息,以及其使用日期。例如,以下截图显示,2016 年 2 月 1 日没有使用应用程序,但在 2016 年 1 月 31 日使用了 Google Chrome 浏览器,并尝试备份手机数据:

显示最近使用的应用程序的 dumpsys 命令

注意,对于 Date 20160201, android: 0,表示没有使用任何应用程序。但是对于 Date: 20160131, android: 1 times,确认使用了一个应用程序,后续章节提供了更多关于使用了哪个应用程序的细节等。根据正在调查的情况,取证分析师需要弄清楚任何 dumpsys 命令是否有用。在设备扣押后立即运行 dumpsys 命令可能会极大地帮助之后的工作。通过运行 adb shell dumpsys 命令,可以记录所有 dumpsys 服务信息。

使用内容提供者

在 Android 中,一般情况下,一个应用程序的数据不能被另一个应用程序访问。但是,Android 提供了一种机制,通过这种机制可以与其他应用程序共享数据。这正是通过内容提供者实现的。内容提供者以一个或多个表格的形式向外部应用程序呈现数据。这些表格与关系数据库中的表格没有什么不同。应用程序可以通过 URI 地址方案使用它们来共享数据。其他应用程序使用提供者客户端对象访问提供者。在应用程序安装期间,用户决定是否允许应用程序访问所请求的数据(内容提供者)。例如,联系人、短信/彩信和日历就是内容提供者的例子。

因此,利用这一点,我们可以创建一个应用程序,可以从所有可用的内容提供者中获取所有信息。这正是大多数商业取证工具的工作原理。这种方法的优点是可以在已获取 root 权限和未获取 root 权限的设备上使用。在我们的示例中,我们使用 AFLogical,它利用内容提供者机制来获取信息。这个工具提取数据并将其保存到 SD 卡中的 CSV 格式中。以下步骤使用 AFLogical 开源版 1.5.2 从 Android 设备中提取信息:

  1. github.com/nowsecure/android-forensics/downloads 下载 AFLogical OSE 1.5.2。

AFLogical LE 版本能够提取大量信息,并要求通过法律执法或政府机构的电子邮件地址进行注册。AFLogical OSE 可以提取所有可用的 MMS、SMS、联系人和通话日志。

  1. 确保启用 USB 调试模式并将设备连接到工作站。

  2. 通过执行 adb.exe devices 命令验证设备是否被识别:

识别已连接的设备

  1. 将 AFLogical OSE 应用程序保存在主目录中,并执行 adb.exe install AFLogical-OSE_1.5.2.apk 命令将其安装到设备上:

安装 AFLogical 应用程序

  1. 安装应用后,你可以直接从设备运行它,并点击应用底部的捕获按钮,如下图所示:

AFLogical OSE 应用

  1. 应用开始从相应的内容提供者提取数据,一旦过程完成,系统将显示一条消息,如下图所示:

提取完成后显示的消息

  1. 提取的数据被保存在设备的 SD 卡中的名为 forensics 的目录下。提取的信息以 CSV 文件的形式存储,如下图所示。CSV 文件可以使用任何编辑器查看:

使用 AFLogical OSE 提取的文件

  1. 同一目录下的 info.xml 文件提供了设备的相关信息,包括 IMEI 号码、IMSI 号码、Android 版本、已安装应用的信息等。

然而,请注意,设备上必须允许安装第三方应用(通过选择“未知来源”选项)才能使其正常工作。其他可以在调查过程中帮助逻辑提取数据的工具将在第十一章中介绍,Android 应用分析、恶意软件及逆向工程

本节介绍了各种逻辑采集技术。接下来我们将探讨物理数据提取技术。

物理数据提取

物理提取指的是获取设备的精确逐位图像的过程。需要理解的是,逐位图像与复制粘贴设备内容不同。如果我们复制粘贴设备的内容,它只会复制可见文件、隐藏文件和系统相关文件等。此方法被视为逻辑图像。通过这种方法,已删除的文件和无法访问的文件不会被 copy 命令复制。已删除的文件可以通过某些技术恢复(视情况而定),我们将在后续章节中看到。与逻辑提取不同,物理提取是设备内存的精确副本,包括更多的信息,如空闲空间和未分配空间。

通过物理技术提取 Android 数据通常使用 dd 命令,而其他高级技术如 JTAG 和芯片脱离技术也可用,但通常难以实施,并且需要极高的精度和经验才能在调查过程中对真实设备进行尝试。和其他任何技术一样,如果操作不当,设备上的数据可能会被破坏或无法恢复,从而使其在法庭上无法作为证据使用。JTAG 和芯片脱离技术将在后续章节中详细介绍。然而,使用 dd 命令提取数据需要 root 权限。以下章节概述了可以用来进行物理提取的各种技术。

对 Android 手机进行成像

获取设备镜像是移动设备取证中最重要的步骤之一。在可能的情况下,在对设备进行任何提取数据的操作之前,必须先获取 Android 设备的物理镜像。在取证中,这一过程通常被称为设备成像。物理镜像、取证镜像和原始镜像这几个术语通常用来指通过该过程获取的镜像。我们首先回顾一下如何在台式计算机上进行成像,因为这有助于我们关联并理解在成像 Android 设备时遇到的问题。假设从嫌疑人处扣押了一台未开机的台式计算机,并送去进行取证检查。在这种情况下,典型的取证检查员会拆下硬盘,将其连接到写保护器,并使用可用的工具获取逐位的取证镜像。然后,在数据取证成像的过程中,原始硬盘将被安全保护。

对于 Android 设备,所有包含数据的区域无法轻易移除。此外,如果在接收到设备进行检查时其仍处于活动状态,那么无法在不对设备做出任何更改的情况下进行分析,因为任何交互都会改变设备的状态。

一个 Android 设备可能有两个文件存储区域:内部存储和外部存储。内部存储是指内置的非易失性存储器。外部存储是指可移动的存储介质,例如 micro SD 卡。然而,需要注意的是,一些设备没有可移动的存储介质,如 SD 卡,但它们会将可用的永久存储空间分为内部存储和外部存储。因此,外部存储并不总是可拆卸的。当存在可移动的 SD 卡时,必须获取该内存卡的法医镜像。如在第七章《理解 Android》中所讨论,这些可移动卡通常使用 FAT32 文件系统进行格式化。一些移动设备获取方法会通过 Android 设备获取 SD 卡。尽管这种方法有用,但由于 USB 手机数据线的速度限制,过程会较慢。

默认情况下,Android 系统不提供访问内部目录和系统相关文件的权限。这种受限访问是为了确保设备的安全。例如,/data/data文件夹在未 root 的设备上是无法访问的。这个文件夹对我们尤其重要,因为它存储了大部分用户创建的数据,许多应用程序也会将宝贵的数据写入此文件夹。因此,为了获取设备的镜像,我们需要对 Android 设备进行 root 操作。root 设备可以赋予我们超级用户权限,访问所有数据。需要注意的是,本书一直强调,所有操作都应具有法医科学的依据,并尽量避免修改设备。root 一个 Android 设备会对其进行更改,因此应在你未曾调查过的设备上进行测试。root 操作在 Android 设备中是常见的,但获取 root 权限可能会导致设备被改变,甚至更糟的是,数据被清除。一些 Android 设备,如 Nexus 4 和 5,可能会在允许 root 权限之前强制清除数据分区。这意味着不需要对设备进行 root 操作来获取访问权限,因为在此过程中所有用户数据都会丢失。只需记住,虽然 root 操作可以提供更多数据访问权限,但它也可能清除数据或破坏手机。因此,在继续进行 root 操作之前,必须确保你获得了相应的同意或法律权利。由于 root 技术在第八章《Android 法医设置与数据提取前的技术》中已有讨论,我们将假设设备已经 root,继续进行示例操作。

以下是获取 root 过的 Android 设备法医镜像的逐步过程:

  1. 将安卓设备连接到工作站,并通过执行adb devices命令来验证设备是否已被识别,如下所示:

识别已连接的设备

  1. 一旦adb访问准备好,可以通过以下步骤从 Android 设备获取分区信息:

    • 使用 dd 命令dd 命令可以用来创建设备的原始镜像。此命令通过复制低级数据,帮助我们逐位创建 Android 设备的镜像。

    • 插入新 SD 卡:将一张新的 SD 卡插入设备,以将镜像文件复制到此卡中。确保该 SD 卡已被清空,不包含任何其他数据。你还可能需要验证驱动器上没有额外的数据。

    • 执行命令:Android 设备的文件系统存储在/dev分区内的不同位置。对三星 Galaxy S3 手机执行简单的mount命令返回以下输出:

Android 设备上的 mount 命令输出

  1. 从前面的输出中,我们可以识别出/system/data/cache 分区挂载的位置。虽然成像所有文件很重要,但大部分数据都存在于/data/system分区。当时间允许时,应获取所有分区以确保完整性。一旦完成,执行以下命令来创建设备的镜像:
dd if=/dev/block/mmcblk0p12 of=/sdcard/tmp.image

在前面的示例中,使用了三星 Galaxy S3 的数据分区(其中if是输入文件,of是输出文件)。

上述命令将创建mmcblk0p12文件(数据分区)的逐位镜像,并将镜像文件复制到 SD 卡。一旦完成,可以使用可用的取证软件分析dd镜像文件。

你必须确保 SD 卡有足够的存储空间来容纳数据分区镜像。对于 root 设备,还可以使用其他方法获取数据。

如果无法将镜像直接写入 SD 卡,可以使用netcat命令将输出直接写入计算机。netcat 工具是一个基于 Linux 的工具,用于通过网络连接传输数据。Android 设备通常没有预装netcat。让我们在接下来的步骤中看看如何使用此命令:

  1. 要检查是否安装了netcat,只需打开 ADB shell 并输入nc。如果提示找不到 nc,则需要手动在设备上安装netcat。你可以在sourceforge.net/projects/androidforensics-netcat/files/下载为 Android 编译的netcat

  2. 使用以下命令将netcat推送到设备:

adb push nc /dev/Case_Folder/nc

该命令应在/dev目录下创建Case_Folder,并将nc放入其中。

  1. 现在,我们需要授权 ADB shell 执行此操作。可以按如下方式进行:
chomd +x /dev/Case_Folder/nc
  1. 打开两个终端窗口,其中一个窗口中打开 ADB shell,另一个窗口用于监听设备发送的数据。现在,我们需要从计算机启用 ADB 端口转发:
adb forward tcp:9999 tcp:9999

9999是我们为netcat选择的端口;它可以是 Linux 或 Mac 系统中102365535之间的任何任意端口号(1023及以下端口保留给系统进程,且需要 root 权限才能使用)。在另一个终端窗口中,运行以下命令:

nc 127.0.0.1 9999 > data_partition.img

data_partition.img文件现在应已在计算机的当前目录中创建。当数据传输完成时,netcat将在两个终端中终止并返回命令提示符。根据镜像大小,过程可能需要较长时间。

镜像存储卡(SD 卡)

有许多工具可以对存储卡进行镜像。以下示例使用WinHex来创建 SD 卡的原始磁盘镜像。以下是使用 WinHex 对存储卡进行镜像的逐步过程:

  1. 连接存储卡:从存储插槽中取出 SD 卡,并使用卡读卡器将存储卡连接到取证工作站。

  2. 写保护卡:使用 WinHex 打开磁盘。导航至选项 | 编辑模式,并选择只读模式(=写保护模式),如下截图所示。这是为了确保设备是写保护的,无法在其上写入数据:

WinHex 的编辑模式视图(左)和启用只读模式的视图(右)

  1. 计算哈希值:计算存储卡的哈希值,以确保在整个调查过程中没有任何修改。导航至工具 | 计算哈希并选择任何哈希算法。

  2. 创建磁盘镜像:导航至文件 | 创建磁盘镜像,如下截图所示。选择原始镜像选项(.dd)来创建镜像。这完成了存储卡的镜像:

WinHex 磁盘镜像选项

一旦通过前述方法获取了取证镜像,就需要对其进行分析以提取相关信息。市面上有几款商业工具,如 Cellebrite 和 XRY,可以分析镜像文件。Android 镜像的分析将在第十章《Android 数据分析与恢复》中详细介绍。

联合测试行动组

联合测试行动组JTAG)涉及使用高级数据采集方法,通过连接设备的特定端口并指示处理器转移设备上存储的数据。通过这种方法,可以获取设备的完整物理镜像。通常建议首先尝试前述其他技术,因为它们实施简单且需要的努力较少。在尝试 JTAG 之前,分析人员必须具备经验并经过适当培训,因为如果操作不当,设备可能会受到损坏。

JTAG 过程通常包括以下取证步骤:

  1. 在 JTAG 中,设备的 测试访问端口TAPs)用于访问设备的 CPU。识别 TAPs 是最主要也是最重要的步骤。通过识别 TAPs,并追踪连接到 CPU 的线路,可以找出每个功能对应的焊盘。尽管设备制造商会提供关于特定设备 JTAG 原理图的文档,但这些文档并未公开发布供大家查看。关于 Android 设备 JTAG 的一个很好的网站是 forensicswiki.xyz/wiki/index.php?title=JTAG_Forensics

  2. 然后,将引线焊接到适当的连接器引脚上,另一端连接到可以控制 CPU 的设备,如下图所示(由 Jim Swauger 在 www.binaryintel.com/services/jtag-chip-off-forensics/jtag-forensics/ 发布)。对于某些设备,可以使用 JTAG 工具板来避免焊接。使用工具板或 JTAG 适配器可以避免焊接,因为它可以将 TAPs 连接到 CPU:

JTAG 设置

  • 完成前述步骤后,必须施加电源以启动 CPU。施加的电压应根据硬件制造商发布的规格来决定。请勿施加超过规格中给定数值的电压。

  • 在施加电源后,可以提取 NAND 闪存的完整二进制内存转储。

  • 使用本书中学习到的取证技术和工具分析提取的数据。在采集过程中将得到一个原始的 .bin 文件;大多数取证工具支持此图像格式的导入和分析。

JTAG 听起来可能很复杂(也许确实是),但它有许多有用的用途,下面列出了三项优点:

  • 这种技术的主要优点是,即使设备没有开机,它也能正常工作。

  • 它不需要 root 权限、ADB 或 USB 调试。

  • 该技术可用于恢复设备的 PIN 码/密码,因此可以对整个闪存进行成像,并恢复/破解密码文件。

还需要理解的是,JTAG 技术不应导致设备功能丧失。如果设备重新组装正确,它应该能够正常运行。尽管 JTAG 技术在提取数据时非常有效,但只有经验丰富且具备资质的人员才能尝试。任何在焊接 JTAG 焊盘或施加错误电压时的失误,都可能严重损坏设备。

芯片拆卸技术

正如其名所示,Chip-off 是一种技术,其中 NAND 闪存芯片从设备中移除并进行检查以提取信息。因此,即使设备被密码保护且未启用 USB 调试,这种技术也能奏效。与 JTAG 技术不同,JTAG 技术在检查后设备能正常运行,而 Chip-off 技术通常会导致设备的毁坏,也就是说,在检查后将 NAND 闪存重新连接到设备上变得更加困难。将 NAND 闪存重新连接到设备的过程称为重新焊接(re-balling),这需要培训和实践。

Chip-off 技术通常包括以下法医步骤:

  1. 设备上的所有芯片都必须进行研究,以确定哪个芯片包含用户数据。

  2. 一旦确定,NAND 闪存会从设备中物理移除。这可以通过加热来解焊芯片完成:

Chip-off 技术

来源:http://www.binaryintel.com/services/jtag-chip-off-forensics/chip-off_forensics/

  1. 这是一个非常精细的过程,必须小心谨慎地进行,因为这可能会导致损坏 NAND 闪存。

  2. 然后对芯片进行清洁和修复,确保连接器完好并能正常工作。

  3. 使用专门的硬件设备适配器,现在可以读取芯片。通过将芯片插入支持特定 NAND 闪存芯片的硬件设备来完成这一过程。在这个过程中,原始数据从芯片中获取,形成.bin文件。

  4. 获取的数据现在可以使用法医技术和之前描述的工具进行分析。

Chip-off 技术在设备严重损坏、锁定或无法访问时最为有用。然而,应用这种技术不仅需要专业知识,还需要昂贵的设备和工具。在移除过程中总有损坏 NAND 闪存的风险,因此建议首先尝试逻辑技术以提取任何数据。

虽然进行前面讨论的任何技术时必须获得 root 权限,但在此需要指出的是,在写这本书时,所有这些技术对于启用了全盘加密FDE)的设备都无法奏效。正如在第七章《理解 Android》中讨论的那样,Google 从 Android 6.0 开始就要求大多数设备启用 FDE。虽然有一些技术已被展示并发布用于解密全盘加密,但它们是特定设备的,且不具备广泛适用性。

总结

本章介绍了各种手动、逻辑和物理数据提取技术。我们学习了在调查过程中何时以及如何应用这些技术。逻辑技术通过使用诸如 ADB 等工具与设备交互来提取数据。另一方面,物理技术则访问更大范围的数据;它们比较复杂,执行起来需要大量的专业知识。对设备进行成像会生成设备的逐位图像,之后通过工具进行分析。成像是确保设备上的数据不会被修改的主要步骤之一。Android 7.0 及以上版本为取证调查人员带来了新的挑战,因为这些版本引入了新的安全特性和文件路径,可能会限制数据的获取。掌握这些知识后,你可以执行设备数据提取,从 Android 设备中提取相关数据。

在下一章,我们将学习如何从图像文件中提取相关数据,如通话记录、短信和浏览历史。我们还将介绍数据恢复技术,使用这些技术我们可以恢复从设备中删除的数据。

第十一章:安卓数据分析与恢复

在上一章中,我们介绍了各种逻辑和物理数据提取技术。在物理提取中,会获取到安卓设备的逐位图像,其中包含了宝贵的信息。在本章中,我们将学习如何从图像文件中分析并提取相关数据,如通话记录和短信。尽管数据提取和分析技术能够提供各种细节的信息,但并非所有技术都能提供关于已删除数据的信息。数据恢复是移动取证中的一个关键环节,因为它有助于揭示已删除的项目。

本章旨在介绍可以被取证分析师用于从安卓设备中恢复数据的各种技术。

本章将涵盖以下两个主要内容:

  • 使用 Autopsy 工具分析并提取安卓图像文件中的数据

  • 了解从 SD 卡和内存中恢复已删除文件的技术

使用 Autopsy 工具分析并提取安卓图像文件中的数据

安卓图像一词指的是通过执行任何物理数据提取技术所获得的物理图像(也称为取证图像或原始图像)。使用第九章中解释的安卓数据提取技术,你可以对整个/data/data块或任何与调查相关的特定块进行成像。一旦获取到图像,像你这样的调查员可以手动浏览文件内容,或者利用现有工具解析内容。商业工具,如 Cellebrite 和 XRY,能够深入数据并呈现出全面的内容图像。Autopsy 是取证领域中广泛使用的开源工具之一,能够出色地分析安卓图像。

Autopsy 平台

Autopsy 是一个取证平台,作为 Sleuth Kit 的图形界面(GUI)。它是免费的,你可以在www.sleuthkit.org/下载。Sleuth Kit 是一个包含 Unix 和 Windows 工具及实用程序的集合,用于执行取证分析。Autopsy 通过对给定卷进行取证分析来显示结果,从而帮助调查员集中注意数据的相关部分。Autopsy 是免费的且具有可扩展性,拥有多个可以插件化的模块。Autopsy 可以用来加载和分析通过物理提取获得的安卓图像。

向 Autopsy 中添加图像

下载并安装 Autopsy 后,请按照以下步骤将图像添加到 Autopsy 中:

  1. 打开 Autopsy 工具并选择“创建新案件”选项,如下图所示:

在 Autopsy 中创建新案件

  1. 输入所有必要的案件详细信息,包括案件名称、数据存储位置等,如下图所示:

在 Autopsy 中输入案件信息

  1. 输入案件编号和检查员详细信息,然后点击完成。

  2. 现在,点击添加数据源按钮,添加要分析的镜像文件,并点击下一步:

在 Autopsy 中输入数据源信息

  1. 在下一个屏幕上,您可以配置需要在镜像上运行的模块,如下图所示。建议选择最近活动、Exif 解析器、关键字搜索和 Android 分析器模块。在下一步中,点击完成:

在 Autopsy 中配置模块

完成此操作后,工具通常需要几分钟时间来解析镜像,具体取决于镜像的大小。在此期间,如果工具遇到任何错误或警告信息,您可能会看到相关提示。然而,与其他工具相比,Autopsy 提供了最快的访问速度,能够更快速地获取工件和文件系统。

使用 Autopsy 分析镜像

加载镜像后,展开“数据源”下的文件,以查看镜像中的数据。例如,以下截图显示了/data/ 文件夹的内容:

在 Autopsy 中分析镜像

在上述示例中,仅对设备的/data部分进行了镜像。如果对整个设备进行了镜像,那么工具会显示更多的卷。根据调查的具体细节,必须分析相关部分。在下面的示例中,通过检查com.android.browser下的文件夹,我们可以提取出用户访问过的各种网站的列表及其访问日期:

在 Autopsy 中分析浏览详情

通过分析各种部分下的数据,可以挖掘出有价值的数据,如短信、浏览历史、聊天记录、通话历史、图片、视频和位置信息。在下一节中,我们将研究如何从 SD 卡和内部存储中恢复数据。

理解从 SD 卡和内部存储恢复已删除文件的技巧

数据恢复是法医分析中最重要和最强大的方面之一。恢复已删除数据的能力对于破解许多民事和刑事案件至关重要。从普通用户的角度来看,恢复已删除的数据通常是指操作系统内置的解决方案,如 Windows 中的回收站。虽然确实可以从这些位置恢复数据,但由于用户意识的提高,这些选项通常不起作用。例如,在桌面计算机上,人们现在使用Shift + Delete作为完全删除文件的方式。

数据恢复是指在设备无法正常访问时,从设备中恢复已删除数据的过程。考虑到一个手机被从恐怖分子手中扣押的情境,知道恐怖分子删除了哪些内容岂不是至关重要吗?访问任何已删除的短信、图片、拨打的电话号码、应用程序数据等都可能至关重要,因为它们常常揭示敏感信息。在 Android 系统中,如果设备文件正确获取,通常可以恢复大多数已删除的数据。然而,如果在处理设备时没有采取适当的措施,已删除的数据可能永远丢失。为了确保已删除的数据不会被覆盖,建议牢记以下几点:

  • 在扣押手机后,不要进行任何操作。已删除的数据会存在于设备中,直到有其他即将到来的数据需要占用空间。因此,必须避免对手机进行任何活动,以防数据被覆盖。

  • 即使手机未被使用,并且没有任何来自我们端的干预,数据仍然可能被覆盖。例如,收到一条短信会自动占用空间,这可能会覆盖被标记为删除的数据。为了防止这种情况发生,你应该遵循前几章描述的法医处理方法。最简单的解决方案是将设备设置为飞行模式,或禁用设备上的所有连接选项。这样可以防止任何新消息的传输。

所有 Android 文件系统都有包含文件层次结构、文件名等信息的元数据。删除操作并不会真正删除这些数据,而是移除文件系统的元数据。当短信或任何其他文件从设备中删除时,它们只是对用户不可见,但文件仍然存在于设备上。本质上,这些文件只是被标记为删除,直到被覆盖,才会从文件系统中完全移除。从 Android 设备中恢复已删除的数据有两种情况:恢复从 SD 卡中删除的数据,如图片、视频、应用程序数据等,以及恢复从设备内存中删除的数据。以下章节将介绍从 SD 卡和 Android 设备内部存储中恢复已删除数据的技术。

从外部 SD 卡恢复已删除的数据

SD 卡上的数据可以向法医调查员透露大量信息。SD 卡能够存储手机相机拍摄的图片和视频、语音录音、应用程序数据、缓存文件等。基本上,任何可以存储在计算机硬盘上的内容,都可以存储在 SD 卡上,只要有足够的空间。

从外部 SD 卡恢复已删除的数据是一个直接的过程。SD 卡可以作为外部大容量存储设备挂载,并通过标准的数字取证方法进行法证获取,如第九章《安卓数据提取技术》中所述。如前几章所提到,安卓设备中的 SD 卡通常使用 FAT32 文件系统。主要原因是 FAT32 文件系统在大多数操作系统中得到了广泛支持,包括 Windows、Linux 和 macOS X。FAT32 格式化驱动器的最大文件大小约为 4GB。随着如今高分辨率格式的普及,这一限制经常被达到。除此之外,FAT32 只能用于小于 32GB 的分区。因此,exFAT 文件系统由于解决了这些问题,现在被一些设备所采用。

如果外部 SD 卡可以作为驱动器挂载,恢复已删除的数据是非常简单的。因此,如果 SD 卡是可拆卸的,可以使用写保护器将其连接到工作站进行获取。然而,最新的安卓设备通常不会作为大容量存储设备挂载。这是因为这些设备使用媒体传输协议MTP)或图片传输协议PTP)协议,而不是 USB 大容量存储。USB 大容量存储的问题在于,计算机需要对存储设备具有独占访问权限。换句话说,外部存储设备在连接到工作站时,必须与安卓操作系统完全断开。这给移动应用带来了其他一些复杂问题。当安卓设备使用 MTP 时,它在计算机上显示为媒体设备,而不是可移动存储,如下图所示:

使用 MTP 连接安卓设备

但是,普通的数据恢复工具需要一个挂载的驱动器才能执行扫描。因此,大多数最新的使用 MTP/PTP 协议的设备不会被视为挂载驱动器,因此适用于计算机的传统数据恢复工具无法在它们上工作。

因此,当设备使用 MTP/PTP 且未作为驱动器挂载时,可以通过某些特定的安卓数据恢复工具进行恢复,这些工具需要开启 USB 调试选项。市面上几乎所有的安卓数据恢复工具都需要你启用 USB 调试,这样设备和 SD 卡才能在开始数据恢复之前被识别。

你必须明白,Android 设备可能会使用 SD 卡上的空间来缓存应用程序数据;因此,在移除 SD 卡之前,确保尽可能多地从设备中获取数据非常重要。一些旧设备在通过 USB 连接时会自动将设备挂载为驱动器。对于数据提取、数据恢复等操作,最佳的法医实践是不直接在设备上进行操作。因此,需要对 SD 卡进行物理镜像,并在镜像文件上进行所有必要的分析。建议通过设备和单独获取 SD 卡,以确保所有数据都被提取。为了获得 SD 卡的镜像,如果设备由于可能有证据在内存中运行无法关闭,可以使用 dd 通过 adb 在设备运行时获取 SD 卡的镜像。如果将 SD 卡取出并通过读卡器连接到工作站,它将作为外部大容量存储显示,之后可以使用之前章节中描述的标准法医技术对其进行镜像。

获取镜像后,可以使用任何标准法医工具进行分析,例如 FTK Imager。FTK Imager 是一个简单的工具,可以用来创建和分析磁盘镜像。它可以在accessdata.com/product-download/ftk-imager-version-3.2.0下载。

以下是使用 FTK Imager 从 SD 卡镜像恢复已删除文件的分步过程:

  1. 启动 FTK Imager,点击“文件”,然后在菜单中点击“添加证据项...”:

在 FTK Imager 中添加证据

  1. 在“选择源”对话框中选择图像文件作为证据类型,然后点击“下一步”:

在 FTK Imager 中选择文件类型

  1. 在“选择文件”对话框中,定位到 SDCARD.dd SD 卡镜像文件所在的位置,选择该文件,然后点击“完成”:

在 FTK Imager 中选择分析的镜像文件

  1. SD 卡镜像的内容随后显示在“视图”窗格中。你可以通过点击“+”号浏览文件夹。当文件夹被高亮显示时,右侧窗格将显示其中的内容。当选择某个文件时,它的内容将在底部窗格中显示。如以下截图所示,已删除的文件也会在图标上显示红色叉标记:

在 FTK Imager 中,已删除的文件会显示带有红色叉标记的图标

  1. 要将已删除的文件复制到工作站,右键点击标记的文件并选择“导出文件...”,如下所示:

在 FTK Imager 中恢复已删除的图片

还建议检查设备是否安装了任何备份应用程序或文件。安卓的初始版本并未包含供用户备份个人数据的机制。因此,许多备份应用程序被广泛使用。通过这些应用,用户可以将数据备份到 SD 卡或云端。例如,超级备份应用包含备份通话记录、联系人、短信等选项,如下图所示:

超级备份安卓应用

一旦检测到备份应用程序,您必须尝试确定数据存储位置。通常,备份文件夹的路径是内部 SD 卡。文件夹路径也可以在备份应用的设置中找到。备份中保存的数据可能包含重要信息,因此,在设备上寻找任何第三方备份应用将非常有帮助。

从内部存储器恢复已删除数据

恢复从安卓设备内部存储器中删除的文件(如短信、联系人和应用数据)并不是所有分析工具都支持的,可能需要手动恢复。与某些包含常见文件系统的媒体(如 SD 卡)不同,文件系统可能无法被取证工具识别和挂载。此外,除非手机已经 root,否则无法访问安卓手机的内部存储原始分区。建议在 root 过程开始前和结束后对设备进行镜像。以下是您在尝试从安卓设备的内部存储器恢复数据时可能遇到的一些其他问题:

  • 若要访问内部存储器,您可以尝试对手机进行 root 操作。然而,root 过程可能涉及将一些数据写入 /data 分区,这一过程可能会覆盖设备中有价值的数据。

  • 与 SD 卡不同,这里的内部文件系统不是 FAT32(该格式被大多数取证工具广泛支持)。内部文件系统可能是 YAFFS2(用于较老设备)、EXT3、EXT4、RFS 或专为安卓系统设计的专有格式。因此,许多为 Windows 文件系统设计的恢复工具将无法使用。

  • 安卓设备上的应用数据通常以 SQLite 格式存储。虽然大多数取证工具提供对数据库文件的访问,但可能需要导出并在本地浏览器中查看。您必须检查原始数据,以确保删除的数据没有被取证工具忽视。

讨论的原因使得从内部存储恢复已删除的数据变得困难,但并非不可能。Android 设备的内部存储包含了大部分用户数据和可能与调查相关的关键数据。如前所述,必须对设备进行 root 权限处理才能访问原始分区。市面上的大多数 Android 恢复工具并未强调它们仅能在已 root 的手机上工作。现在,让我们来看看如何从 Android 手机恢复已删除的数据。

通过解析 SQLite 文件恢复已删除文件

Android 使用 SQLite 文件来存储大部分数据。与短信、电子邮件以及某些应用数据相关的数据存储在 SQLite 文件中。SQLite 数据库可以在数据库本身内存储已删除的数据。用户标记为删除的文件将不再出现在活动的 SQLite 数据库文件中。因此,可以恢复已删除的数据,如短信和联系人。在 SQLite 页面内有两个区域可能包含已删除的数据——未分配块和空闲块。

大多数用于恢复已删除数据的商业工具扫描 SQLite 页面中的未分配块和空闲块。解析已删除数据可以使用现有的取证工具,如Oxygen Forensics SQLite Viewer。可以使用 SQLite Viewer 的试用版本来实现这一目的,但有一定的限制,限制了你能恢复的数据量。你也可以编写自己的脚本来解析文件中的已删除内容,为此你需要对 SQLite 文件格式有良好的理解。www.sqlite.org/fileformat.html 页面是一个不错的起点。如果你不想从头开始并希望重用现有的脚本,可以尝试使用现有的开源 Python 脚本(az4n6.blogspot.in/2013/11/python-parser-to-recover-deleted-sqlite.html)来解析 SQLite 文件中的已删除记录。

在我们的示例中,我们将从 Android 设备恢复已删除的短信。恢复已删除的短信是 Android 手机取证分析中经常要求的一部分,主要是因为短信包含的数据能够揭示大量信息。恢复 Android 设备上已删除短信的方法有很多。首先,我们需要了解这些短信存储在设备的哪个位置。在第九章,Android 数据提取技术中,我们解释了 Android 设备中存储用户数据的重要位置。这里是一个简要回顾:

  • 每个应用程序都会将其数据存储在 /data/data 文件夹下(同样,这需要 root 权限才能获取数据)。

  • 位于 /data/data/com.android.providers.telephony/databases 位置的文件包含有关短信/MMS 的详细信息。

在上述位置,短信被存储在一个名为mmssms.db的 SQLite 数据库文件中。通过检查此文件可以恢复已删除的短信。以下是使用mmssms.db文件恢复已删除短信的步骤:

  1. 在 Android 设备上,启用 USB 调试模式并将设备连接到取证工作站。使用adb命令行工具,通过发出以下命令提取位于/data/data/路径下的数据库文件夹:
adb.exe pull /data/data/com.android.providers.telephony/databases C:\temp

输出结果如下所示:

ADB 拉取命令

一旦文件提取到本地计算机,使用 Oxygen Forensics SQLite Viewer 工具打开mmssms.db文件。

  1. 点击名为sms的表格,并在工具的 Tables 数据标签下观察当前消息。

  2. 查看已删除数据的一种方式是点击包含已删除数据的块标签,如下图所示:

恢复已删除的短信

类似地,存储在 Android 设备上的其他数据,若以 SQLite 文件形式存储,也可以通过解析删除内容来恢复。当上述方法无法访问已删除数据时,应查看文件的原始十六进制文件,寻找标记为已删除的数据,这些数据可以手动雕刻并报告。

使用文件雕刻技术恢复文件

文件雕刻是一种极其有用的取证方法,因为它允许恢复已删除或隐藏的数据进行分析。简而言之,文件雕刻是指在没有文件系统元数据的情况下,从文件碎片中重新组装计算机文件的过程。在文件雕刻中,指定的文件类型会在二进制数据中进行搜索和提取,以创建分区或整个磁盘的取证镜像。文件雕刻通过仅依赖文件结构和内容,而不依赖任何匹配的文件系统元数据,从驱动器的未分配空间中恢复文件。未分配空间是指驱动器上不再包含任何文件信息的部分,这些信息由文件系统结构(如文件表)表示。

文件可以通过扫描磁盘的原始字节并重新组装它们来恢复或重建。这可以通过检查文件的头部(前几个字节)和尾部(最后几个字节)来完成。

文件雕刻方法根据所使用的底层技术进行分类。头尾雕刻方法依赖于通过文件的头部和尾部信息来恢复文件。例如,对于 JPEG 文件,它们以0xffd8开头,以0xffd9结尾。

文件头和文件尾的位置被识别出来,两个端点之间的所有内容都被切割。同样,基于文件结构的切割方法利用文件的内部布局来重建文件。然而,传统的文件切割技术,如我们已经解释过的技术,在数据碎片化的情况下可能无法有效工作。为了解决这个问题,新的技术,如智能切割,利用一些流行文件系统的碎片特征来恢复数据。

一旦手机镜像制作完成,可以使用像Scalpel这样的工具进行分析。Scalpel 是一个强大的开源工具,用于切割文件。该工具分析块数据库存储,识别已删除的文件并恢复它们。Scalpel 是与文件系统无关的,已知可以在多种文件系统上工作,包括 FAT、NTFS、EXT2、EXT3、HFS 等。关于 Scalpel 的更多信息可以在 github.com/sleuthkit/scalpel找到。以下步骤说明如何在 Ubuntu 工作站上使用 Scalpel:

  1. 使用命令sudo apt-get install scalpel在 Ubuntu 工作站上安装 Scalpel。

  2. /etc/scalpel目录下的scalpel.conf文件包含关于支持的文件类型的信息,如下图所示:

Scalpel 配置文件

该文件需要修改,以提到与 Android 相关的文件。可以从 www.nowsecure.com/tools-and-trainings/#viaforensics下载示例的scalpel.conf文件。你也可以取消注释相关文件并保存conf文件,选择你想要的文件类型。完成后,替换掉原始的conf文件,使用下载的文件。

  1. Scalpel 需要与前述配置文件一起在正在检查的dd镜像上运行。你可以通过输入配置文件和dd文件,使用以下命令运行该工具:
$ scalpel -c /home/unigeek/Desktop/scalpel-android.conf /home/unigeek/Desktop/userdata.dd -o /home/unigeek/Desktop/rohit

一旦运行这个命令,工具就会开始切割文件并根据需要构建它们,如下图所示:

dd文件上运行 Scalpel 工具

  1. 在前述命令中指定的output文件夹现在包含基于文件类型的文件夹列表,如下图所示。每个文件夹内的内容是根据文件夹名称恢复的。例如,jpg 2-0包含与.jpg扩展名相关的恢复文件:

运行 Scalpel 工具后的输出文件夹

  1. 如前述截图所示,每个文件夹包含来自 Android 设备的恢复数据,如图片、PDF 文件、ZIP 文件等。虽然一些图片被完全恢复,但也有一些没有完全恢复,如下图所示:

使用 Scalpel 工具恢复的数据

DiskDigger等应用程序可以安装在 Android 设备上,从设备的内部存储和 SD 卡中恢复不同类型的文件。DiskDigger 支持 JPG 文件、MP3 和 WAV 音频、MP4 和 3GP 视频、原始相机格式、Microsoft Office 文件(DOC、XLS 和 PPT)等文件。然而,正如前面所提到的,应用程序需要在 Android 设备上获得 root 权限才能从内部存储中恢复内容。您应当清楚地记录这些更改。DiskDigger Android 应用程序提供两种模式:基础扫描模式和完整扫描模式。

完整扫描模式仅适用于已获取 root 权限的设备,而基础扫描模式适用于任何设备。如以下截图所示,在已 root 的手机上,应用程序会自动定位并显示可用的分区:

DiskDigger 应用程序

选择内存分区后,工具会提示您选择要恢复的文件类型。请继续选择感兴趣的文件类型:

DiskDigger 应用的文件选择界面

扫描开始后,DiskDigger 应用程序将自动显示可恢复的文件。恢复的文件可以保存到应用程序中或直接保存到设备上。因此,文件修复技术在从设备内存中恢复重要已删除文件时起着至关重要的作用。

使用 Google 账户恢复联系人

您还可以通过设备上配置的 Google 账户使用联系人应用恢复设备上的联系人。如果设备用户以前使用 Android 中的“同步设置”选项同步了联系人,这种方式将有效。该选项将联系人及其他信息同步并存储在云端。作为一名具有法律授权或适当许可的法医专家,如果您能访问设备上配置的 Google 账户,则可以恢复已删除的联系人。访问账户后,执行以下步骤恢复数据:

  1. 使用已配置的 Google 账户登录到 Android 设备上的 Google 联系人应用程序。以下示例是在运行 Android Pie 版本的 OnePlus 5 设备上进行的尝试。

  2. 点击设置,然后查找恢复选项,如下图所示:

联系人应用中的恢复菜单

  1. 点击“恢复”,然后将显示以下界面:

恢复联系人对话框

如您所见,您可以将联系人列表恢复到备份创建时的历史状态。您还可以在“设置”菜单下使用“撤销更改”选项将联系人恢复到过去 30 天内的任何状态:

恢复 Google 账户中的已删除联系人

因此,使用前面提到的任何一种技术,像你这样的法医检查员可以尝试轻松恢复已删除的数据。

总结

在本章中,我们学习了从安卓设备恢复已删除数据的各种技术。这个过程依赖于多个因素,特别依赖于对内部存储和 SD 卡中数据的访问。我们探讨了从 SD 卡和内部存储中恢复已删除数据的不同技术。虽然从外部存储(如 SD 卡)中恢复已删除项较为简单,但从内部存储中恢复已删除项则需要相当大的努力。我们还学习了 SQLite 文件解析和文件雕刻技术,利用这些技术可以从安卓设备中提取已删除的数据。掌握了这些知识,你现在可以在法医调查过程中进行数据恢复。

下一章将讨论安卓应用和恶意软件的法医分析,以及安卓应用的逆向工程。

第十二章:Android 应用分析、恶意软件和逆向工程

第三方应用是智能手机用户常用的应用。Android 用户从 Google Play 等应用商店下载并安装多个应用。在取证调查过程中,对这些应用进行分析,提取有价值的数据并检测恶意软件,通常是非常有帮助的。例如,一款照片保管箱应用可能会锁定设备上存储的敏感图片。因此,了解如何识别照片保管箱应用的密码将具有重要意义。

此外,像 Facebook、WhatsApp、Skype 等应用现在也广泛使用,它们常常是破案的重要数据来源。因此,了解这些应用存储的数据类型及其数据存储位置非常重要。虽然我们在前几章中讨论的数据提取和数据恢复技巧可以帮助我们访问有价值的数据,但应用分析可以帮助我们获取应用程序的具体信息,例如偏好设置和权限。

本章我们将讨论以下主题:

  • 分析广泛使用的 Android 应用以获取有价值的数据

  • 逆向工程 Android 应用的技巧

  • Android 恶意软件

分析广泛使用的 Android 应用以获取有价值的数据

在 Android 系统中,用户与之互动的所有内容都是应用程序。虽然一些应用是由设备制造商预装的,但其他应用则是由用户下载并安装的。例如,诸如联系人、通话、短信等日常功能,都是通过各自的应用程序执行的。因此,Android 应用分析在调查过程中至关重要。一些第三方应用,如 WhatsApp、Facebook、Skype、Chrome 浏览器等,广泛使用,并且它们处理了大量有价值的信息。根据应用类型,这些应用大多数会将敏感信息存储在设备的内部存储或 SD 卡上。分析这些应用可能会提供有关用户位置、与他人通信等信息。使用我们之前描述的取证技巧,可以访问这些应用存储的数据。然而,作为一名取证检查员,你需要培养将可用数据转化为有用数据的必要技能。这在你全面理解应用程序如何处理数据时才能实现。

如前面章节所述,所有应用程序默认将其数据存储在/data/data文件夹中。应用程序还可以根据需要通过安装时请求权限,将某些数据存储在 SD 卡上。可以通过检查/data/data文件夹的内容来收集设备上应用程序的信息,但这并不简单,因为需要分析此路径下每个单独的应用程序文件夹。作为替代方法,您可以检查位于/data/system下的packages.list文件。该文件包含所有应用程序的信息,包括它们的包名和数据路径。

可以使用以下命令来执行此操作:

# cat packages.list

以下是前面命令的输出:

packages.list 文件内容

现在,让我们特别看看一些广泛使用并处理有价值数据的第三方应用程序。

以下应用程序仅用于让您熟悉可以提取的数据类型及其可能的存储位置。在执行这些操作之前,您需要获得适当的权限,并且应遵守法律规定。正如我们在第八章《Android 法医设置与数据提取前的技巧》中解释的那样,以下技巧仅在设备已获得 root 权限后有效。

Facebook Android 应用分析

Facebook Android 应用是最广泛使用的社交网络应用之一。它将信息存储在/data/data文件夹中,位于com.facebook.katana包下。以下详细信息概述了可以通过不同文件收集的信息类型:

  • Facebook 联系人:用户的 Facebook 联系人信息可以通过分析contacts_db2数据库来获取,该数据库位于以下路径:

    • 路径/data/data/com.facebook.katana/databases/contacts_db2

    • contacts_db2数据库(SQLite 文件)包含一个名为 contacts 的表,该表包含用户的大部分信息,如名字、姓氏、显示名和显示图片的 URL。

  • Facebook 通知:用户的通知信息可以通过分析notification_db数据库来收集,该数据库位于以下路径:

    • 路径/data/data/com.facebook.katana/databases/notifications_db

    • gql_notifications表位于上述路径下,包含用户信息。seen_state列确认通知是否已被查看。updated列指示通知更新时间。gql_payload列包含通知及发送者信息。

  • Facebook 消息:Facebook 消息对多种案件可能至关重要,可以通过分析threads_db2数据库查看:

    • 路径/data/data/com.facebook.katana/databases/threads_db2
  • 新闻源视频: /video-cache 文件夹包含已从用户新闻源下载的视频。请注意,这些视频不是用户发布的视频,而是出现在他们新闻源中的视频:

    • 路径: /data/data/com.facebook.katana/files/video-cache
  • 新闻源图片: /images 文件夹包含出现在用户个人资料中的各种图片,例如来自他们新闻源的图片和联系人个人资料图片。此文件夹内有多个目录,图片可能以 .jpg 以外的格式存储,如 .cnt

  • 路径: /data/data/com.facebook.katana/cache/images

  • 新闻源数据: newfeed_db 数据库包含显示给用户的新闻源数据。如下所示,分析此数据库可以提供有价值的信息,例如某个特定故事何时被设备加载(fetched_at 列),某个故事是否已被用户查看(seen_state 列),以及该故事的相关文件存储在设备上的位置(cache_file_path 列):

  • 路径: /data/data/com.facebook.katana/databases/newsfeed_db

在 SQLite 浏览器中分析的 Facebook newsfeed.db 文件

在上面的截图中,fetched_at 指定了此信息被获取的日期和时间。请注意,应用程序使用 Linux 纪元时间,也称为 Unix 时间或 Posix 时间,来存储这些信息。此格式通常被多个应用程序使用,因此值得注意。Linux 纪元时间以自 1970 年 1 月 1 日午夜以来的秒数(或毫秒数)表示。有几个在线网站,例如 www.epochconverter.com/,可以方便地将 Linux 纪元时间转换为常规格式。例如,以下截图显示了 Linux 纪元时间 1,577,881,839 转换为常规格式:

时间格式示例

现在我们已经分析了 Facebook 应用程序,让我们对下一个应用程序,即 WhatsApp 进行类似的分析。

WhatsApp 安卓应用分析

WhatsApp 是全球最受欢迎的聊天(音频和视频)消息服务,全球超过十亿人使用。它将其信息存储在 /data/data 文件夹下,包名为 com.whatsapp。以下是从取证角度来看感兴趣的重要文件概览:

  • 用户的个人资料图片: 用户的个人资料图片以 me.jpg 文件名保存,并位于以下路径下:

    • 路径: /data/data/com.whatsapp/me.jpg
  • 用户的电话号码(与 WhatsApp 关联): 主文件夹下的 me 文件包含与用户 WhatsApp 账户关联的电话号码。请注意,这可能是也可能不是与 SIM 卡关联的电话号码:

    • 路径: /data/data/com.whatsapp/me
  • 联系人头像/avatars目录包含用户联系人(使用 WhatsApp 的用户)的头像缩略图:

    • 路径/data/data/com.whatsapp/files/Avatars
  • 聊天消息:所有与消息相关的信息,包括聊天和发件人详细信息,都存储在msgstore.db文件中,该文件位于以下位置:

    • 路径/data/data/com.whatsapp/databases/msgstore.db
  • WhatsApp 文件:与 WhatsApp 共享的大部分文件,如图像、视频和语音消息,存储在 SD 卡中的以下位置:

    • 路径/sdcard/WhatsApp/Media

发送和接收的文件分别存储在各自的文件夹中。

接下来,我们将查看另一款用于远程通信的应用程序,它专注于提供视频聊天和语音通话服务:Skype。

Skype Android 应用分析

Skype 是一款提供视频聊天和语音通话服务的应用程序。该应用程序的数据存储在/data/data文件夹下,包名为com.skype.raider。以下是通过分析 Skype 应用程序可以提取的一些重要数据:

  • 用户名和 IP 地址shared.xml文件位于以下路径中,包含有关用户名和最后一次连接 Skype 的 IP 地址的信息:

    • 路径/data/data/com.skype.raider/files/shared.xml
  • 头像:用户的头像存储在/thumbnails目录中,其路径如下:

    • 路径/data/data/com.skype.raider/files/<username>/thumbnails/
  • 通话记录:Skype 的通话记录信息存储在main.db文件中,分析此文件可以获取大量信息:

    • 路径/data/data/com.skype.raider/files/<username>/main.db/

    • 例如,duration表提供了通话时长的信息,start_timestamp字段显示了通话的开始时间,creation_timestamp字段表示通话的发起时间(包括未接来电)。type列指示通话是接听(值=1)还是拨出(值=2)。

  • 聊天消息main.db文件中的messages表包含所有聊天消息。authorfrom_dispname列提供了写消息的人信息。timestamp列显示了消息的日期/时间。body_xml列包含消息的内容:

    • 路径/data/data/com.skype.raider/files/<username>/main.db/
  • 传输的文件Transfers表包含有关已传输文件的信息,如文件名、文件大小及其在设备上的位置:

    • 路径/data/data/com.skype.raider/files/<username>/main.db/

    • 接收到的实际图像或文件将存储在 SD 卡中。如果下载了文件,它将位于 SD 卡根目录下的Downloads文件夹中。

  • 群聊ChatMembers表格显示了参与某个聊天的用户列表。adder列显示了发起对话的用户:

    • 路径/data/data/com.skype.raider/files/<username>/main.db/

现在,我们将对 Gmail 应用程序进行分析。

Gmail Android 应用程序分析

Gmail 是 Google 提供的广泛使用的电子邮件服务。应用数据保存在/data/data文件夹中,包名为com.google.android.gm。通过分析 Gmail 应用程序,可以提取以下重要数据:

  • 账户详情/shared_prefs下的 XML 文件确认了电子邮件账户的详情。与当前电子邮件关联的其他账户的详情可以通过分析Gmail.xml文件来识别:

    • 路径/data/data/com.google.android.gm/cache/<username>@gmail.com
  • 附件:最近在发送和接收电子邮件中使用的附件会保存到/cache目录。这非常有价值,因为它让我们能够访问那些已经从电子邮件服务中删除的项目。每一行还包含一个messages_conversation值,可以与电子邮件附件的conversations表格进行对比。filename列标识了设备上文件所在的路径。以下是该文件夹的准确路径:

    • 路径/data/data/com.google.android.gm/cache/<username>@gmail.com

Gmail 缓存目录下的附件列表

  • 电子邮件主题:通过分析mailstore.<username>@gmail.com.db文件中的conversations表格,可以恢复此电子邮件的主题:

    • 路径/data/data/com.google.android.gm/databases/mailstore.<username>@gmail.com.db
  • 搜索历史:应用内进行的任何文本搜索都会保存在suggestions.db文件中,文件位于以下位置:

    • 路径/data/data/com.google.android.gm/databases/suggestions.db

让我们通过对 Google Chrome 应用程序进行最后分析来总结本节内容。

Google Chrome Android 应用程序分析

Google Chrome 是 Google Pixel 及许多其他设备上的默认浏览器,广泛用于上网浏览。应用数据位于/data/data文件夹中,包名为com.android.chrome。通过分析 Gmail 应用程序,可以提取以下重要数据:

  • 个人资料照片:用户的个人资料照片以Google Profile Picture.png文件名存储在以下位置:

    • 路径/data/data/com.android.chrome/app_chrome/Default/ Google Profile Picture.png
  • 书签Bookmarks文件包含了所有与账户同步的书签信息。通过分析此文件,可以收集到站点名称、网址以及书签添加时间等详情:

    • 路径/data/data/com.android.chrome/app_chrome/Default/Bookmarks
  • 浏览历史History.db 文件包含了用户在多个表中存储的网页历史。例如,如下图所示,keyword_search_terms 表包含了使用 Chrome 浏览器进行的搜索信息:

Google Chrome 浏览历史

    • segments 表包含了用户访问过的部分网站(并非所有网站)。值得注意的是,Chrome 不仅存储属于设备的数据,还存储账户相关的数据。换句话说,通过相同账户在其他设备上访问过的网站信息也会被存储在设备上;例如,URLs 表包含了 Google 账户在多个设备上访问的浏览历史。

    • 路径/data/data/com.android.chrome/app_chrome/Default/History

  • 登录数据Login Data 数据库包含了浏览器保存的不同网站的登录信息。网站的 URL,以及用户名和密码,都会存储在相应的表格中:

    • 路径/data/data/com.android.chrome/app_chrome/Default/Login Data
  • 常访问的网站Top Sites 数据库包含了一个常访问网站的列表:

    • 路径/data/data/com.android.chrome/app_chrome/Default/Top Sites
  • 其他数据:其他信息,例如用户在不同网站表单填写时输入的电话号码或电子邮件地址,会存储在 Web Data 数据库中。这个数据库中任何存在的表格都包含了自动填充数据:

    • 路径/data/data/com.android.chrome/app_chrome/Default/Web Data

现在我们已经分析了不同的第三方应用,接下来我们将看看可以用来逆向工程安卓应用的技巧。

逆向工程安卓应用的技巧

你可能需要处理一些应用,它们会成为访问所需信息的障碍。例如,考虑一下手机相册被 AppLock 应用锁定的情况。在这种情况下,为了访问相册中存储的照片和视频,你首先需要输入 AppLock 的密码。因此,了解 AppLock 应用如何在设备上存储密码会是一个有趣的话题。你可能会查看 SQLite 数据库文件。然而,如果这些文件被加密,那么甚至很难知道它是一个密码。逆向工程应用在这种情况下会非常有帮助,尤其是在你想更好地理解应用如何存储数据时。

简单来说,逆向工程是从可执行文件中提取源代码的过程。逆向工程安卓应用的目的是为了理解应用的功能、数据存储、所采用的安全机制等等。在我们学习如何逆向工程安卓应用之前,先简单回顾一下安卓应用的基本知识:

  • 所有安装在 Android 设备上的应用程序都使用 Java 编程语言编写。

  • 当一个 Java 程序被编译时,我们会得到字节码。这些字节码会被传送到 dex 编译器,转换成 Dalvik 字节码。

  • 因此,类文件通过 dx 工具转换为 dex 文件。Android 使用一种叫做Dalvik 虚拟机DVM)的技术来运行其应用程序。

  • JVM 的字节码由一个或多个类文件组成,具体取决于应用程序中 Java 文件的数量。不管怎样,Dalvik 字节码只由一个 dex 文件组成。

因此,dex 文件、XML 文件以及运行应用程序所需的其他资源都被打包到 Android 包文件(APK 文件)中。这些 APK 文件实际上是 ZIP 文件内的项目集合。因此,如果你将 APK 扩展名文件重命名为.zip文件,你就可以看到文件的内容。然而,在此之前,你需要访问已安装在手机上的应用的 APK 文件。以下是如何访问对应应用 APK 文件的方法。

从 Android 设备中提取 APK 文件

手机预装的应用存储在/system/app目录下。用户下载的第三方应用则存储在/data/app文件夹中。以下方法可以帮助你访问设备上的 APK 文件,适用于已 root 和未 root 的设备:

  1. 通过执行# adb.exe shell pm list packages命令来识别应用的包名。

以下是前述命令的输出:

设备上存在的包名列表

如前面的命令行输出所示,显示了包名列表。尝试找到该应用程序与包名的匹配项。通常,包名与应用名密切相关。或者,你也可以使用 Android Market 或 Google Play 轻松识别包名。Google Play 中应用的 URL 包含包名,如下图所示:

Google Play 商店中的 Facebook 应用

  1. 通过执行adb shell pm path命令,识别所需包的 APK 文件完整路径,如下所示:

确定 APK 的完整路径名

  1. 使用adb pull命令将 APK 文件从 Android 设备拉取到取证工作站:

adp pull 命令

现在,让我们分析 APK 文件的内容。Android 包是 Android 应用程序的资源和可执行文件的容器。它是一个压缩文件,包含以下文件:

  • AndroidManifest.xml:此文件包含关于权限等信息。

  • classes.dex:这是通过 dex 编译器将类文件转换成的 dex 文件。

  • Res:应用程序的资源文件,例如图像文件、音频文件等,存储在此目录中。

  • Lib:此目录包含应用程序可能使用的本地库。

  • META-INF:此目录包含应用程序签名的信息以及所有其他文件的签名校验和。

一旦获得 APK 文件,您可以继续对 Android 应用进行逆向工程。

逆向工程 Android 应用的步骤

APK 文件可以通过不同的方式进行逆向工程,以获取原始代码。以下是一种方法,它使用 dex2jar 和 JD-GUI 工具来访问应用程序代码。以我们的示例为例,我们将分析 com.twitter.android-1.apk 文件。以下是成功逆向工程 APK 文件的步骤:

  1. 将 APK 扩展名更改为 ZIP 以查看文件内容。将 com.twitter.android-1.apk 文件重命名为 twitter.android-1.zip,并使用任何文件压缩工具提取此文件的内容。以下截图显示了从原始文件 twitter.android-1.zip 中提取的文件:

APK 文件提取的内容

  1. 我们之前讨论过的 classes.dex 文件可以在提取 APK 文件内容后访问。这个 dex 文件需要转换为 Java 类文件,可以使用 dex2jar 工具来完成此操作。

  2. github.com/pxb1988/dex2jar 下载 dex2jar 工具,将 classes.dex 文件放入 dex2jar 工具目录中,并执行以下命令:

C:\Users\Rohit\Desktop\Training\Android\dex2jar-0.0.9.15>d2j- dex2jar.bat classes.dex dex2jar classes.dex -> classes-dex2jar.jar
  1. 当上述命令成功运行后,它将在同一目录下创建一个新的 classes-dex2jar.jar 文件,如下图所示:

dex2jar 工具创建的 classes-dex2jar.jar 文件

  1. 要查看此 JAR 文件的内容,您可以使用 JD-GUI 等工具。如以下截图所示,可以查看 Android 应用程序中存在的文件及其对应的代码:

JD-GUI 工具

一旦我们获取到代码,分析应用程序如何存储值、权限以及其他有助于绕过某些限制的信息就变得容易了。当设备中发现恶意软件时,逆向工程和分析应用程序的方法可能非常有用,因为它将显示恶意软件正在访问哪些内容,并提供有关数据发送位置的线索。以下章节将详细讨论 Android 恶意软件。

Android 恶意软件

随着 Android 市场份额的不断增加,针对 Android 用户的攻击或恶意软件也在增加。移动恶意软件是一个广泛的术语,指的是执行非预期操作的软件,包括特洛伊木马、间谍软件、广告软件、勒索软件等。根据 pandasecurity 的数据,Android 设备感染恶意软件的概率是 iOS 设备的 50 倍 (www.pandasecurity.com/mediacenter/mobile-security/android-more-infected-than-ios/)。根据 Cybersecurity Hub 的新闻报道,2019 年,著名的 Agent Smith 恶意软件就感染了近 2500 万部 Android 设备 (www.cshub.com/malware/articles/incident-of-the-week-malware-infects-25m-android-phones)。

这种情况的主要原因之一是,与由 Apple 严密控制的 App Store 不同,Google 的 Play Store 是一个开放生态系统,没有任何详细的前期安全审查。恶意软件开发者可以轻松地将他们的应用上传到 Play Store,从而分发他们的应用。Google 目前拥有一款名为 Google Bouncer 的恶意软件检测软件,它会自动扫描上传的应用程序是否含有恶意软件,但攻击者已经找到几种方法可以绕过检测。此外,Android 官方允许我们加载通过互联网下载的应用(侧载),而 iOS 则不允许加载未签名的应用。

例如,如以下截图所示,当在 Android 设备上选择“未知来源”选项时,它允许用户安装从任何网站下载的应用:

Android 中的侧载选项

托管 Android 应用的第三方应用商店已知是恶意软件的温床。这促使 Google 从 Android 4.2 开始推出 验证应用 功能,它会在 Android 设备上本地扫描应用,查找恶意活动,例如短信滥用。如以下截图所示,验证应用功能可能会警告用户,或者在某些情况下甚至会阻止安装。然而,这是一个自愿服务,因此用户可以选择禁用此功能:

Android 中的验证应用功能

从 Android Oreo 开始,Google 推出了一个名为 Play Protect 的新功能,它是验证应用功能的改进版。Play Protect 的主要任务是阻止或警告用户已安装在 Android 设备上的恶意或有害应用。例如,如以下截图所示,Play Protect 功能在应用安装过程中可能会显示警告信息:

Play Protect 功能

接下来,让我们来看看恶意软件的类型。

Android 恶意软件的类型

有多种类型的恶意软件可以感染 Android 设备。以下是一些最常见的类型:

  • 银行木马:它可以伪装成虚假的银行应用程序,以窃取用户输入的银行凭据,或窃取用户账户中的任何其他敏感个人信息。银行木马可以拦截或修改银行交易,并执行发送、删除和拦截短信消息以及键盘记录等危险操作。

  • 间谍软件:间谍软件监视、记录并将目标设备的重要信息发送到攻击者的服务器。这些信息可能包括短信消息、录音电话、截屏、键盘记录、电子邮件或任何可能对攻击者感兴趣的应用程序数据。例如,Kaspersky Lab 专家在 2018 年初发现的 BusyGasper 间谍软件,不仅具有收集来自 WhatsApp、Viber 和 Facebook 等热门通讯应用的信息的常见间谍软件功能,还具有设备传感器监听器,包括运动检测器。

  • 广告软件:广告软件是另一种在 Android 设备上非常常见的恶意或不需要的应用程序类型。它相对容易检测,因为受害者会在设备屏幕上收到持续的弹出窗口和广告。这些不受欢迎的程序并不总是无害,因为弹出窗口可能导致下载其他恶意软件,包括前述的间谍软件和银行木马。

  • 勒索软件:勒索软件主要攻击目标是基于 Windows 的桌面计算机和服务器,但也存在于移动平台上,尤其是在 Android 上。通常情况下,它只会锁定设备屏幕并附上勒索通知,但有时也会加密用户的数据。

  • 加密货币挖矿恶意软件:由于加密货币如今极为流行,因此这种类型的恶意程序甚至在移动平台(如 Android)上也有。此类应用程序的目标是利用受害者设备的计算能力进行加密货币挖掘。有时,这种类型的恶意软件甚至会使智能手机硬件面临风险。

高级恶意软件还能够对设备进行 Root 操作并安装新的应用程序。例如,2016 年 2 月发现的 Android Mazar 恶意软件通过短信传播,能够在手机上获得管理员权限,从而可以抹掉手机、打电话或读取短信。

完整的 Android 恶意软件家族列表及其功能可以在forensics.spreitzenbarth.de/android-malware/找到。

一旦恶意软件侵入设备,它可以执行以下危险操作之一:

  • 发送和阅读您的短信消息

  • 窃取敏感数据,如图片、视频和信用卡号码

  • 操纵设备上存在的文件或数据

  • 向高费率号码发送短信

  • 感染您的浏览器并窃取其输入的任何数据

  • 抹掉设备上的所有数据

  • 锁定设备,直到支付赎金

  • 持续展示广告

现在我们已经了解了不同类型的恶意软件,接下来我们将看看恶意软件是如何在您的设备中传播的。

安卓恶意软件是如何传播的?

安卓设备可以通过多种方式感染恶意软件。以下是一些可能的传播方式:

  • 重新包装合法应用:这是攻击者使用的最常见方法。首先,攻击者下载一个合法的应用并进行反编译。然后,他们添加恶意代码并重新打包应用。这个新的恶意应用现在功能和合法应用相同,但在后台执行恶意活动。这类应用通常出现在第三方安卓应用商店,并被许多人下载。

  • 利用安卓漏洞:在这种情况下,攻击者利用安卓平台中发现的漏洞或缺陷,安装他们的恶意应用程序或执行任何不必要的操作。例如,2015 年发现的安装程序劫持问题,攻击者利用这一漏洞,在安装过程中将安卓应用程序替换为恶意软件。

  • 蓝牙和 MMS 传播:恶意软件也可以通过蓝牙和 MMS 传播。当设备处于可发现模式时,受害者会收到恶意软件,例如当设备可以被其他蓝牙设备看到时。在 MMS 的情况下,恶意软件会作为附件发送,就像计算机病毒通过电子邮件附件发送一样。然而,在这两种方法中,用户至少需要同意一次运行文件。

  • 应用下载恶意更新:在这种情况下,原本安装的应用不包含任何恶意代码,但应用程序中的某个功能会在运行时下载恶意命令。这可以通过隐秘更新或用户更新进行。例如,Plankton 恶意软件使用隐秘更新,直接从远程服务器下载 JAR 文件,并且不需要任何用户权限。在用户更新的情况下,用户必须允许应用下载新版本的应用。

  • 远程安装:攻击者可能会破坏用户设备帐户的凭证,从而远程在设备上安装应用程序。这通常发生在有针对性的场景中,且相比前面描述的两种方法,发生的频率较低。

现在我们已经看过了安卓恶意软件传播的可能方式,接下来让我们尝试识别设备中是否存在恶意软件。

识别安卓恶意软件

从取证的角度来看,在进行任何分析之前,首先要识别设备上是否存在恶意软件。这是因为恶意软件可能会改变设备的状态或设备上的内容,从而使分析或结果变得不一致。市场上有一些工具可以分析物理提取数据,识别恶意软件。例如,Cellebrite UFED Physical Analyzer 配备了 BitDefender 的反恶意软件技术,可以扫描恶意软件。如下图所示,一旦物理镜像加载到工具中,就可以扫描文件中的恶意软件:

在 UFED Physical Analyzer 中扫描恶意软件

一旦扫描开始,BitDefender 软件会尝试解包 .apk 文件,并寻找感染或恶意文件。这个过程是自动的,工具会指示出恶意应用程序,如下图所示:

UFED Physical Analyzer 中的恶意软件扫描结果

该工具仅指出设备上存在恶意内容。取证调查员需要手动确认这是否是一个有效的问题,通过分析相关应用程序来确认。这正是我们在前面讨论过的逆向工程技能派上用场的时候。一旦应用程序被逆向工程并且获得了代码,建议你查看 AndroidManifest.xml 文件,了解应用程序的权限。这将有助于理解应用程序将数据存储在哪里、它尝试访问哪些资源等。例如,手电筒应用程序不需要读写你 SD 卡的数据,或者拨打电话的权限:

AndroidManifest.xml 文件中的权限

另外,你也可以将 .apk 文件上传到 VirusTotal,这是一个免费的服务,用于分析可疑文件中的恶意软件。VirusTotal 会通过 55 个杀毒引擎扫描你的文件。需要特别注意的是,如果 .apk 文件中的细节被混淆,工具可能无法识别出有效的恶意软件。因此,作为一名取证调查员,掌握逆向工程的技能,分析可疑应用程序的代码,识别恶意行为是非常重要的。

在一些调查中,设备上存在的恶意软件的性质可能会帮助得出某些关键结论,这些结论可能会影响案件的结果。例如,考虑一起涉及向其他员工发送辱骂性信息的公司内部调查。如果能在发送信息的设备上识别到恶意软件,将有助于解决此案件。

总结

Android 应用分析帮助取证调查员在设备的相关位置寻找有价值的数据。逆向工程 Android 应用是从 APK 文件中提取源代码的过程。使用某些工具,如 dex2jar,可以对 Android 应用进行逆向工程,以了解其功能和数据存储、识别恶意软件等。在本章中,我们对不同的 Android 应用进行了分析,现在能够从中提取数据。我们还学习了不同类型的 Android 恶意软件及其识别方法。像 UFED Physical Analyzer 这样的工具配备了 BitDefender 软件,可以自动扫描恶意软件。

下一章将介绍如何对 Windows Phone 设备进行取证分析。

第三部分:Windows 取证与第三方应用

本节将讲解如何对 Windows 手机进行取证——从了解 Windows 手机操作系统到从设备中提取数据。最后一章将介绍如何对一些最常用的第三方应用程序(如 Facebook、WhatsApp 等)进行取证。我们将探讨这些应用程序中数据的组织方式,并介绍一些可以直接应用的提取数据的技术。

本节包括以下章节:

  • 第十二章,Windows 手机取证

  • 第十三章,解析第三方应用程序文件

第十三章:Windows Phone 取证

尽管如今 Windows Phone 的使用并不广泛,但在取证调查中仍然可能遇到这些设备。这些设备是市场上最为经济实惠的,因此,了解如何获取、分析和解码 Windows Phone 上的数据非常重要。定位并解释这些设备上存在的数字证据需要对 Windows Phone 操作系统有专门的了解,而且并非总是可行。商用取证工具和开源工具对从 Windows 设备中获取用户数据的支持非常有限。由于 Windows Phone 在移动市场中占比不大,大多数取证从业者对其数据格式、嵌入式数据库以及设备上存在的其他证据不太熟悉。本章概述了 Windows Phone 取证,描述了获取和检查 Windows 移动设备数据的各种方法。

本章将覆盖以下主题:

  • Windows Phone 操作系统

  • Windows 10 Mobile 安全模型

  • Windows Phone 文件系统

  • 数据采集

  • 商用取证工具采集方法

  • 在不使用商用工具的情况下提取数据

  • 关键证据项目的检查

Windows Phone 操作系统

Windows Phone 是由微软开发的专有移动操作系统。它作为 Windows Mobile 的继任者推出,但不提供与旧平台的向后兼容性。Windows Phone 于 2010 年 10 月发布,版本为 Windows Phone 7。此后,Windows Phone 操作系统的版本历史继续推出 Windows Phone 7.5、Windows Phone 7.8、Windows Phone 8.1 和 Windows Phone 10。

尽管微软宣称已停止开发这一移动操作系统(不包括安全补丁),但作为移动取证检查员,您仍然可能会遇到它。

以下各节将提供更多关于 Windows Phone、其功能及其底层安全模型的详细信息。

与 Android 和 iOS 设备不同,Windows Phone 引入了全新的界面,采用了所谓的磁贴(tiles)来代替图标,如下图所示。这些磁贴可以由用户设计和更新:

Windows Phone 主屏幕

类似于其他移动平台,Windows Phone 允许安装第三方应用。这些应用可以从由微软管理的 Windows Phone 市场下载。与 iOS 和 Android 设备上的应用数量相比,Windows Phone 显得逊色很多。然而,应用仍然是可用的,您应该在 Windows Phone 设备上看到它们。

Windows Phone 引入了新功能,使其与 Windows Mobile 相比更接近其他智能手机:

  • Cortana:这是设备的个人助手。它首次出现在 Windows 8.1 中,并且在 Windows 10 设备中依然存在。Cortana 通过使用 Bing 回答问题、设置提醒、发送短信等功能来帮助用户,从而为用户提供更好、更便捷的使用体验。Cortana 做的每一项操作都会在设备上留下痕迹。

  • 钱包:这个功能存储信用卡账户、登机牌、票证、优惠券等。

  • 地理围栏和高级位置设置:这些为用户提供额外的保护,因为手机可以检测到何时处于可信区域之外,并可能会自动锁定。

  • 附加功能:这些功能包括动态磁贴、增强的颜色以及安静时间。

其他与 Windows Phone 相关的常见应用程序包括 OneDrive(前身为 SkyDrive)、OneNote 和 Office 365 同步。OneDrive 使用户可以从任何设备访问所有文档和文件。OneNote 本质上是相同的,但它充当笔记本或日记。Office 365 使用户可以在多个设备间持续访问他们的电子邮件、日历、联系人等。

数据同步功能的引入使得我们作为法医检查员的工作变得更加困难。我们的任务是确定证据是如何被放置到设备上的。是否有可能明确地说明一个物品是如何放置到设备上的?坦率地说,这取决于情况。没有人愿意听到这个回答,但确实有很多因素需要考虑。是什么应用程序?设备上运行的是什么操作系统?这个物品是什么?例如,让我们考虑一下 OneDrive。如果设备中包含来自 OneDrive 的文档,原始作者应当包含在元数据中。结合检查内容是否与设备共享,可能会揭示出这个物品是如何创建的。然而,在检查日历条目时,如果设备上安装了 Office 365,可能无法确定用户是在手机、PC 还是笔记本上创建了该条目。同步是即时的,并且表示物品创建位置的状态标志并不总是存在。如果这个物品确实是调查中的致命证据,你需要运用你的技能来发现支持你结论的其他物品。需要深入挖掘数据。现在我们已经了解了 Windows Phone 的细节和特点,接下来我们来看看它的安全模型,看看它是如何保持数据安全的。

Windows 10 Mobile 安全模型

Windows Phone 的安全模型旨在确保设备上的用户数据安全可靠。以下部分简要介绍了 Windows Phone 安全模型所基于的概念。

Chambers

Windows Phone 在最小权限和隔离的原则基础上构建。这一原则自 Windows Phone 7 开始便得到贯彻。为实现这一目标,Windows Phone 引入了区域的概念。每个区域都有一个隔离边界,进程可以在其中运行。根据特定区域的安全策略,运行在该区域的进程拥有访问操作系统资源和功能的特权(www.msec.be/mobcom/ws2013/presentations/david_hernie.pdf)。安全区域共有四种类型。以下是每种类型的简要描述:

  • 可信计算基(TCB):此进程拥有对大多数 Windows Phone 资源的无限制访问权限。该区域拥有修改策略和强制执行安全模型的特权。内核在此区域运行。

  • 提升权限区域(ERC):此区域的权限低于 TCB 区域。它拥有访问所有资源的特权,除了安全策略外。此区域主要用于提供其他应用程序功能的服务和用户模式驱动程序。

  • 标准权限区域(SRC):这是预装应用程序的默认区域,例如 Microsoft Outlook Mobile 2010。

  • 最小权限区域(LPC):这是通过 Marketplace Hub(也称为 Windows Phone Marketplace)下载和安装的所有应用程序的默认区域。

接下来,我们将讨论加密。

加密

Windows Phone 8 引入了 BitLocker 技术,通过 AES 128 位加密加密设备上存储的所有用户数据。用户只需轻轻一 flip 开关即可启用此功能,设备上存储的所有数据将被加密。此外,用户还可以加密他们的 SD 卡(假设设备有 SD 卡),并为其设备设置密码或 PIN。如果启用了所有这些锁定和加密,除非密码被恢复,否则访问此设备上的数据几乎是不可能的。

基于能力的模型

能力被定义为与安全性、隐私和成本相关的设备资源(如相机、位置信息、麦克风等)。LPC 默认具有一组最小的访问权限。然而,在安装过程中可以通过请求更多能力来扩展此权限。能力是在应用程序安装过程中授予的,且在运行时不能修改或提升。因此,通常很难通过侧加载应用程序或强制自定义启动代码来获得取证访问权限,因为这通常在启动前会被拒绝。

要在 Windows Phone 上安装应用,你需要使用 Windows Live ID 登录到 Marketplace。在安装过程中,应用会要求用户在使用某些功能之前先获得许可,以下截图展示了一个例子:

Windows 应用请求用户权限(https://i-msdn.sec.s-msft.com/dynimg/IC752370.png)

这与 Android 中的权限模型类似。它让用户在安装应用之前,可以自由了解应用的所有功能。所有功能的列表包含在WMAppManifest.xml应用清单文件中,用户可以通过 Visual Studio 或其他在docs.microsoft.com/en-us/previous-versions/windows/apps/ff769509(v=vs.105)定义的方法访问该文件。

应用沙箱

Windows Phone 上的应用在沙箱环境中运行。这意味着每个应用在 Windows Phone 上都运行在自己的“房间”中。应用程序彼此隔离,无法访问其他应用的数据。如果某个应用需要将信息保存到设备上,它可以通过隔离存储来实现,而此存储不能被其他应用访问。此外,安装在 Windows Phone 上的第三方应用不能在后台运行;也就是说,当用户切换到另一个应用时,之前使用的应用会被关闭(尽管应用状态会被保留)。这确保了应用在用户不使用时不能进行例如互联网通信等活动。这些限制也使 Windows Phone 更不容易受到恶意软件的侵害,但你永远不应假设任何设备都是完全安全的。恶意软件在这些设备上运行会更具挑战性。

到目前为止,我们已经看过四种安全沙箱,现已知 Windows Phone 8 使用 BitLocker 技术进行加密。我们了解了在安装应用时授予的不同功能,并看到了每个应用是如何相互隔离的。接下来,我们将讨论 Windows Phone 的一个重要方面,即其文件系统。

Windows Phone 文件系统

Windows Phone 文件系统或多或少与 Windows 7、Windows 8 和 Windows 10 中使用的文件系统相似。从根目录开始,你可以访问设备上的不同文件和文件夹。从取证的角度来看,以下是一些可以提供有价值数据的文件夹。所有列出的目录都位于根目录中:

  • 应用数据:此目录包含手机上应用的数据,如 Outlook、地图和 Internet Explorer。

  • 应用程序:此目录包含用户安装的应用。每个应用分配或使用的隔离存储也位于此文件夹中。

  • 我的文档:此目录包含不同的 Office 文档,例如 Word、Excel 或 PowerPoint 文件。该目录还包括配置文件和多媒体文件,如音乐或视频。

  • Windows:此目录包含与 Windows Phone 操作系统相关的文件。

这里使用的获取方法将决定你对设备的文件系统访问权限。例如,物理映像可能会提供访问多个分区的权限,这些分区可以从数据转储中恢复。下面的屏幕截图显示了一台包含 27 个分区的 Windows Phone 10 设备。第 26 个分区(MainOS)和第 27 个分区(Data)包含相关数据:

Windows Phone 10 分区

虽然大多数证据会存在于数据分区中,但最佳实践是尽可能同时捕获并分析两个分区。

上面屏幕截图中的 MainOS 分区(第 26 个分区)包含来自 Windows Phone 的系统数据。与所有 Windows 调查一样,系统数据包含与调查相关的证据。

在此示例中,第 27 个分区包含用户或数据分区。根据设备的不同,分区编号可能会有所不同。在我们的示例中,数据分区显示为第 27 个分区,如下图所示。在这里,使用移动取证工具恢复了 SMS、电子邮件、应用数据、联系人、通话记录和互联网历史。这些方法将在本章后面进行讨论:

Windows Phone 10 数据分区

Windows Phone 还维护着 Windows 注册表,这是一个存储操作系统环境变量的数据库。Windows 注册表本质上是一个目录,用于存储 Microsoft 操作系统的设置和选项,Windows Phone 也不例外。在检查 Windows Phone 时,你会看到 NTUSER.datSAMSYSTEMSOFTWARESECURITYDEFAULT 注册表区。尽管这些注册表区可能是手机特有的,但它们可以像传统 Windows 注册表区一样进行检查。

Cynthia Murphy 的论文中包含了一个详细的案例调查。这涉及到一起家庭入侵和性侵犯罪案件,并详细描述了取证界的杰出人士如何努力发现有助于解决调查的证据。有时,移动设备是与案件相关的最重要证据。欲了解更多信息,请参考 www.sans.org/reading-room/whitepapers/forensics/windows-phone-8-forensic-artifacts-35787。现在我们已经了解了文件和文件夹结构,接下来我们将学习如何利用这些知识进行数据获取。

数据获取

从 Windows Phone 采集数据对于法医检查人员来说是具有挑战性的,因为前几章中定义的物理、文件系统和逻辑方法并不得到广泛支持。除此之外,手机可能需要在特定的电池电量(%)状态下,商业工具才能识别并采集该设备。这通常是采集 Windows Phone 过程中最难的步骤之一。

商业工具在进行数据采集时常用的一种技术是安装一个应用程序或代理在设备上,从而实现双向通信,以便将命令发送到设备以提取数据。这可能会导致设备上某些变化;然而,只要检查人员遵循标准协议并验证所用工具的有效性,这种方法仍然是法医上可行的。这些协议包括适当的测试,确保用户数据未被更改(如果更改了,则记录所发生的情况)、在测试设备上验证方法,并记录采集过程中所采取的所有步骤。为了使这种采集方法有效,应用程序需要以 SRC 的权限进行安装。这可能需要你将制造商的 DLL 文件(具有更高权限)复制到用户应用中。这使得应用程序能够访问通常仅限于本地应用的方法和资源。此外,设备必须解锁,否则这些方法可能无法工作。

大多数检查人员依赖法医工具和方法来采集移动设备数据。同样,这些方法在 Windows Phone 上的支持并不多。请记住,要在 Windows Phone 上部署并运行应用程序,设备和开发者必须都经过微软注册并解锁。这个限制可以通过使用 Windows Phone 8 至 10 设备的公共越狱来绕过。

长期以来,JTAG 和芯片拆卸采集是获取大多数 Windows Phone 数据的唯一选择。2015 年 1 月,一切发生了变化:Cellebrite 实施了一个采集模块,使得移动法医检查人员能够从大多数 Lumia 设备的物理层提取数据。

后来,Windows Phone Internals 项目提供了一种方法,可以解锁某些 Lumia 设备的启动加载程序,包括 520、521、525、620、625、720、820、920、925、928、1020 和 1320。这使得对这些设备的物理采集成为可能。你可以在www.wpinternals.net/了解更多关于该项目的信息。现在,我们将看看一些用于采集方法的商业工具。

商业法医工具采集方法

有一些商业工具可以支持 Windows Phone 设备的获取。Cellebrite UFED 支持使用物理、文件系统和逻辑方法获取 Windows Phone 设备。要确定你正在检查的设备是否被工具支持,可以下载并使用 UFED Phone Detective 移动应用程序,该应用程序在 App Store 和 Google Play 上均可免费下载:

正在搜索支持的 Lumia 设备

这些获取方法中,有些更为强大,能够获取完整的物理数据并绕过某些设备的锁码。然而,一些设备的支持仅限于提取设备中的联系人和照片。重要的是,检查员需要意识到,必须按照工具的指示采取特定步骤。获取这些设备并不容易,通常你会发现工具无法成功完成操作。

当工具似乎失败时,尝试使用 UFED 提供的智能手机/PDA 选项来获取设备。为此,请按照以下步骤操作:

  1. 启动 UFED4PC 并选择移动设备。

  2. 选择手动浏览。

  3. 选择智能手机。

  4. 选择你正在尝试获取的 Windows 设备。

  5. 尝试所有提供的方法,顺序是:物理、文件系统和逻辑(在可能的情况下,按此顺序进行):

提取方法

  1. 按照所有剩余的步骤操作,并尝试所有提供的获取方法,直到成功为止。

Cellebrite 可能会提醒你获取不成功,原因有多种。当这种情况发生时,尝试所有选项,确保已经尝试过所有可用的商业选项。以下是一个在 UFED4PC 中尝试获取设备的例子:

  1. 启动 UFED4PC。

  2. 选择你的设备的制造商和型号。

  3. 选择物理、文件系统或逻辑获取方法(提供的选项会根据设备型号不同而有所变化)。

在这个例子中,只有逻辑获取是支持的。提供了两种方法。第一种方法使用电缆,第二种方法使用蓝牙。在这个例子中,要求使用专用的 UFED 电缆。我首先选择了 UFED 电缆,因为蓝牙需要在配对过程中对手机进行额外的更改:

UFED4PC 逻辑提取选项

尝试使用 USB 电缆 100 获取设备时,只能访问多媒体文件。

然后,尝试相同的获取方法,但选择蓝牙。按照给定的说明将设备与取证工作站配对:

UFED4PC 提取选项(蓝牙)

通过这种获取方法,我们能够获取到联系人。请注意,目前没有提供获取短信、彩信、电子邮件、即时消息、日历、通话记录、应用数据等的方法。建议你重复前一截图中列出的通用方法,使用 UFED4PC 中的智能手机选项。到目前为止,我们已经看过了一些使用商业工具的获取方法。现在,让我们学习如何在没有这些工具的情况下提取数据。

在没有商业工具的情况下提取数据

在某些情况下,获取 Windows Phone 设备的物理数据仅能通过提前的方法,例如 JTAG 和芯片移除。但得益于名为 Heathcliff 的安全研究人员,使用他名为WPinternals的工具,现在可以在有限的手机型号和操作系统版本上进行物理获取,具体可以参见www.wpinternals.net

该工具支持以下 Lumia 手机型号:520、521、525、620、625、720、820、920、925、928、1020 和 1320。

关于操作系统版本,支持以下版本:

  • 8.10.12393.890

  • 8.10.12397.895

  • 8.10.14219.341

  • 8.10.14226.359

  • 8.10.14234.375

  • 8.10.15116.125

  • 8.10.15148.160

  • 10.0.10512.1000

  • 10.0.10536.1004

  • 10.0.10549.4

  • 10.0.10581.0

  • 10.0.10586.11

  • 10.0.10586.36

这种方法是实验性的,可能会导致设备变砖!尽管设备变砖的几率相对较低,我们建议你将其作为最后的选择。

获取过程的第一步将是下载一个 Windows 全闪存更新FFU)文件和你正在使用的手机型号的紧急文件:

下载 FFU 文件

如果下载的 FFU 包含不支持的操作系统版本,WPinternals 将下载另一个 FFU 以获取附加文件:

获取附加文件

在解锁过程中,手机可能会重启几次,但这是正常的行为:

扫描闪存配置文件

一旦找到配置文件,工具就会闪存解锁的引导加载程序:

闪存解锁的引导加载程序

如果设备已成功闪存,它会进入大容量存储模式:

大容量存储模式

现在,设备可以轻松成像,例如,使用 FTK Imager:

FTK Imager 中的 Windows Phone

现在,我们将学习如何从 SD 卡提取数据。

SD 卡数据提取方法

Windows 手机可能包含可拆卸的 SD 卡。这些卡可能会通过密钥进行保护,防止 SD 卡被拆卸并使用,或通过其他设备(手机、相机、电脑等)访问。这与用户加密 SD 卡时创建的密钥不同。可以对用户加密的 SD 卡进行暴力破解和字典攻击,以尝试访问数据。在检查 Windows 手机时,最好研究设备,看看在获取设备数据时,SD 卡的安全性是否会成为一个因素。如果是这样,只需按照前面的步骤操作,通过手机在取证提取过程中获取 SD 卡数据。请参阅以下图表。

对于 SD 卡可以移除的设备,你需要考虑两种情况。如果设备已开机,你是否应该按原样获取手机和 SD 卡的数据?如果设备已关机,你是否应该移除 SD 卡并使用 FTK Imager 获取设备数据?答案是,视情况而定。在取证中,我们经常使用这个说法,但它依然成立。如果你保持设备开机,它必须与网络隔离,以确保不会被远程访问并立即获取,否则电池会耗尽,设备最终可能会关机。如果设备关机并且你移除了 SD 卡,你必须确保卡片仍然与设备本身绑定,并从外部和内部同时获取数据,以确保捕获所有数据。在正常情况下,以下图表建议了处理 Windows 手机中 SD 卡的推荐步骤:

大多数商业取证工具都会提供从 SD 卡提取数据的功能。通常,手机提取过程仅会提取存储在 SD 卡上的数据。当没有针对特定 Windows 手机的支持时,通常会发生这种情况。如果工具无法识别 SD 卡且数据无法提取,很可能是因为 SD 卡已经被用户加密,并且设备的密码与 SD 卡的密码不同。遇到这种情况时,尝试破解密码并重新获取设备。请注意,破解 SD 卡的密码并不总是可能的,但尝试暴力破解和字典攻击就像对待标准硬盘或外部设备一样,仍然值得一试。

在获取从 Windows 手机移除的 SD 卡时,FTK Imager 是一个免费的可靠选项,可以创建一个具有法证完整性的映像,供多种工具进行检查。要创建 SD 卡映像,请按照以下步骤操作:

  1. 从设备中取出 SD 卡,并确保记录卡片和手机上的所有标识符,以确保它们不会永久分离。

  2. 将 SD 卡插入写保护器,并将其插入你的取证工作站。

  3. 启动 FTK Imager。

  4. 选择文件,然后点击创建磁盘映像。

  5. 选择物理驱动器:

FTK Imager – 创建磁盘映像

  1. 使用下拉列表选择正确的设备。

查看设备的型号和大小,确保获取的是正确的设备。

  1. 选择完成。

  2. 点击添加并选择镜像类型。在此示例中,将使用 Raw (dd)格式,因为它支持大多数商业和开源分析方法:

FTK Imager – 选择镜像类型

  1. 输入相关案件信息并选择下一步。此步骤可以跳过。

  2. 选择图片保存位置:

FTK Imager – 保存您的镜像文件

  1. 选择完成,然后选择开始。建议在创建镜像后验证其内容。

完成后,您的结果将显示出来。接下来的部分我们将介绍如何分析 SD 卡数据。

关键取证数据供检查

在本节中,我们将向您介绍一些最常见的 Windows Phone 取证数据的位置,包括联系人、短信、通话和互联网历史记录。

提取联系人和短信

Windows Phone 7 到 10 中的所有联系人以及收发短信(SMS)都存储在名为store.vol的文件中,该文件位于 \Application Data\Microsoft\Outlook\Stores\DeviceStore(Windows 7)和Users\WPCOMMSERVICES\APPDATA\Local\Unistore(Windows 8-10)目录下。以下是 Windows 10 中store.vol文件的示例:

Windows Phone 中的 store.vol 文件

现在,让我们学习如何提取通话历史。

提取通话历史

通话历史数据目前可以从Phone文件中提取。需要注意的是,该文件没有扩展名,并且位于\Users\WPCOMMSERVICES\APPDATA\Local\UserData\。以下是 Windows 10 中Phone文件的示例:

Windows Phone 中的 Phone 文件

以类似的方式,我们将在接下来的部分中提取互联网历史记录。

提取互联网历史

互联网历史记录可以从位于\Users\DefApps\APPDATA\Local\Microsoft\Windows\WebCache\WebCacheV01.dat文件中提取。以下是 Windows 10 中WebCacheV01.dat文件的示例:

Windows Phone 中的 WebCacheV01.dat 文件

这些文件可以手动检查,例如使用十六进制查看器,或使用移动取证工具自动解析。以下是使用 Magnet AXIOM 解析的WebCacheV01.dat文件:

使用 Magnet AXIOM 解析的 WebCacheV01.dat 文件

到此为止,我们已经讲解了如何从 Windows Phone 中提取短信、联系人、通话和互联网历史记录。

总结

从 Windows Phone 设备获取数据具有挑战性,因为这些设备是安全的,商业取证工具和开源方法并不能为像你这样的取证专家提供简便的解决方案。多种工具、芯片拆卸、JTAG 以及本书中定义的方法是一些可以访问 Windows Phone 设备上用户数据的方法。通常,你会发现 Windows Phone 设备需要多种提取方法才能获取可访问的数据。最大的挑战是如何获得设备的访问权限以提取数据。一旦数据可用,所有提取的信息都可以由你进行分析。

在这一章中,我们介绍了 Windows Phone 设备的接口、重要特性和安全模型。然后,我们查看了 Windows 文件系统中的不同分区和文件夹结构。Windows Phone 注册表类似于 Microsoft 操作系统中的注册表。我们展示了如何使用或不使用商业工具提取数据,并查看了一些常见的 Windows Phone 取证数据。凭借这些知识,你现在可以使用多种提取方法从 Windows Phone 提取用户数据。

下一章将引导你解析第三方应用程序文件。

第十四章:解析第三方应用程序文件

第三方应用程序已经在智能手机社区掀起了风潮。大多数智能手机用户的设备上都安装了不止一个依赖于聊天、游戏、导航或分享图片的应用程序。根据www.statista.com/statistics/276623/number-of-apps-available-in-leading-app-stores/,全球几乎有 500 万个适用于各种智能手机的应用程序。苹果的 App Store 提供约 180 万个应用程序,Google Play 提供 247 万个应用程序,亚马逊提供 60 万个应用程序,Windows 提供 67 万个应用程序。预计到 2020 年,这一数字将呈指数增长。

本章的目标是向您介绍在 Android、iOS 设备和 Windows Phone 上常见的各种应用程序。每个应用程序因版本和设备的不同而有所变化,但它们的基本结构是相似的。我们将探讨数据是如何存储的,以及为何偏好文件对您的调查至关重要。

本章将详细介绍以下内容:

  • 不同的第三方应用程序

  • iOS 设备上应用程序的存储方式

  • Android 设备上应用程序的存储方式

  • Windows Phone 应用程序存储

  • 如何使用商业和开源解决方案解析应用程序数据

第三方应用程序简介

第三方应用程序是移动设备调查的重要组成部分;关键证据往往存在于应用程序内部。这要求您了解应用程序数据在设备上的存储位置、该平台如何保存应用程序数据,以及哪种工具最有助于发现证据。在任何智能手机上检查第三方应用程序时,手动解析通常是一个关键因素。虽然一些商业工具,如 Belkasoft Evidence Center 或 Magnet AXIOM,以支持应用程序解析而著名,但没有任何工具是完美的,几乎不可能让工具跟上每个应用程序频繁更新的步伐。

通常,您会发现,市面上大多数商业工具都支持解析最流行的应用程序。例如,当 Facebook 收购 WhatsApp 时,Belkasoft、Cellebrite、Magnet Forensics 和 Oxygen Forensics 等公司开始支持该应用程序。Facebook 非常受欢迎,但由于内置的安全功能,数据并不总是能够被提取或解析——这正是所有应用程序不同之处。我们最好的建议是进行多次测试!您可以下载一个应用程序,填充数据,并检查结果,看看您对证据的看法与实际证据的差异。这种实践将帮助您了解更新如何改变证据的痕迹,证据位置如何变化,以及如何手动提取您的工具无法捕捉到的证据。此外,逆向工程应用程序并分析其代码将帮助您识别数据存储的位置及其存储方式。

大多数应用不需要数据计划就可以使用;它们可以完全通过 Wi-Fi 网络运行,这意味着即使一个人旅行到一个通常其设备无法使用的地区,应用仍然可以正常运行。例如,当我旅行时,我依赖 Skype、Viber 和 WhatsApp 与家人和朋友通话和发短信。使用这些应用,只需要我的智能手机连接到 Wi-Fi。

我们已经在本书中介绍了一些第三方应用提取和分析的技巧。此外,我们还讨论了需要检查的文件,以了解和分析应用数据,具体内容见第五章,《iOS 数据分析与恢复》;第十章,《Android 数据分析与恢复》;第十一章,《Android 应用分析、恶意软件与逆向工程》;和第十二章,《Windows Phone 法医分析》。本章将深入探讨这些应用及相关文件,并为分析这些数据做好准备。每个应用都有其特定的用途。大多数工具都支持每个类别中最受欢迎的应用。其余的就交给你了。下图展示了 Oxygen Forensic Detective 工具所呈现的应用。正如预期的那样,这些并不是设备上所有的应用,而只是工具能够解析的部分应用:

Oxygen Forensic Detective 在苹果设备上解析的应用示例

在接下来的部分,我们将分析一些广泛使用的聊天应用。

聊天应用

聊天应用是市场上最常见的应用之一。这些应用提供了用户在网络服务提供商提供的标准服务之外进行聊天或通话的功能。这些应用可能比其他应用更安全。所谓“安全”是指这些应用可能提供加密、私人资料、私人群聊等功能。此外,这些应用使用户能够在无需数据计划的情况下进行消息传递或通话,因为 Wi-Fi 提供了他们所需的所有访问权限。Facebook Messenger、WhatsApp、Skype、Tango 和 Snapchat 是一些比较受欢迎的应用。

从聊天应用程序中解析证据并非总是简单的。通常需要多种工具和方法才能提取其中的所有数据。商业工具可能只解析部分数据,这会迫使你学习如何检查和恢复所有数据,否则可能会错过证据。在下图中,Oxygen Forensic Detective 正在用于解析安卓设备上 Tango 应用的聊天消息。请注意,消息中并没有显示表格中的图片。然而,这张图片可以被拼接回消息中(注意截图中箭头指向的是图片所属的消息),以便提供一个关于对话中分享内容的整体图像。这是一个手动过程,并非工具自动执行:

将应用程序聊天日志拼接回来的示例

接下来,我们将看看 GPS 应用程序。

GPS 应用程序

大多数用户会从标准的手机应用扩展到 GPS 支持。包括获取路线指引和获取感兴趣区域的地图。常见的 GPS 应用包括 Waze 和 Google Maps。Waze 不仅仅提供路线指引,还会提醒用户沿途的道路危害、交通状况以及警察的存在:

Waze 应用程序

其他存储位置信息的应用程序包括 Twitter、Instagram、Facebook 和 Foursquare。这些应用程序允许用户在创建帖子或分享图片或视频时,提醒朋友和关注者自己所在的位置。所有这些交易都在应用程序内进行跟踪。了解这一点对于揭示你的取证工具未报告的额外证据至关重要。

在检查 GPS 应用程序的位置信息时,最好假设你需要手动检查与该应用程序关联的数据库和偏好设置文件。我们建议使用你的取证工具对设备上的数据进行初步筛查,然后深入分析证据,相关内容将在本章稍后讨论。以下截图显示了 Waze 被 UFED Physical Analyzer 解析的示例。在这里,我们可以看到用户有 5 个收藏位置、74 个已映射位置和 70 条最近的路线指引。所有这些信息必须手动验证,如果与调查相关。这是因为工具无法判断用户是手动输入地址,还是系统推荐的,或者用户是否真的去了该位置。将用户与特定位置关联的技能是你所必需的,这比单靠取证工具要复杂:

UFED Physical Analyzer 中的 Waze 应用程序

我们现在将分析一些流行的安全消息应用程序。

安全应用程序

如果数据是安全且自毁的,那它曾经存在过吗?忽略数据保存的说法,去寻找那些数据,因为这些应用常常做出不真实的声明。尽管这些应用设计时考虑到了安全性,但更新发布得很快,质量保证检查可能不足以捕捉所有问题。有时,你会发现应用中有加密或不存在的数据库,但文件中包含日志、写前日志或共享内存文件,这些文件包含本应加密的聊天部分。除此之外,用户还可以保存共享的媒体文件、截屏对话,还能做更多的事情。通常,你可能会发现共享的图片、音频和视频文件,原本应该是加密的。

一些流行的安全消息应用包括 Telegram、Wickr 和 Signal。其中一些应用是加密的,无法恢复任何内容。然而,这一切都取决于设备、智能手机上运行的操作系统以及应用的版本。这些应用的安全级别是公开宣传的,但同样,需要保持一定的怀疑态度。你应该始终假设应用中可能存在漏洞,可能会提供法医取证的访问权限。深入挖掘这些证据!

财务应用

使用财务信息的应用,如信用卡信息和个人银行信息,必须进行加密并确保安全。iOS 设备没有 Apple ID 和密码是无法安装这些应用的。即使你拥有用户的 Apple ID 和密码,提取的数据仍然应该是加密的。一些财务应用的例子包括 Google Pay、Microsoft Wallet、PayPal、Apple Pay 和应用内购买。当你检查设备时,可能会看到该应用已安装并带有相关的应用元数据,但账户信息和交易将无法访问。

社交网络应用

社交网络应用的商业支持非常强大,因为它们是应用商店中下载最多的应用。这些应用允许用户发布动态、共享位置、公开和私下聊天,基本上是记录他们的生活。常见的社交网络应用包括 Facebook、Twitter 和 Instagram。通常,用户会启用像 Instagram 这样的应用,以便访问 Facebook 和 Twitter,从而使发布过程更加无缝。因此,在检查设备时,用户可能会发现多个相同的文件或对话副本,因为应用间的共享。

在使用商业工具检查这些应用程序时,通常会解析聊天记录和联系人,这意味着其他数据可能被忽略。再次强调,你必须查看数据转储,确保没有遗漏任何内容。作为示例,我们将来看一下 Twitter。这个应用程序存储了大量的信息,可能需要不止一个工具来解析。此外,用户可能需要手动检查数据库文件,以确保所有证据都已恢复。

让我们来看一下工具能提取的内容。正如本书中多次提到的,首先从工具告诉你已安装的内容开始,然后制定关键词和方法,深入文件系统。我们可以在以下截图中看到 Twitter 的用户账户信息,以及该数据提取的文件路径:

Magnet AXIOM 解析的 Twitter

接下来的逻辑步骤是查看工具能告诉你关于应用程序及其使用方式的信息。Magnet AXIOM 提供了以下关于 Twitter 账户使用的信息。请注意,公共推文和私人消息(DM)都已恢复:

Magnet AXIOM 解析的 Twitter 使用情况

在检查工具解析的内容后,应检查数据库文件以确保没有遗漏任何数据。这并不总是简单的,因为每个账户和功能可能都有独特的数据库。我们所说的功能是指,联系人可能存储在一个数据库中,而聊天记录和账户信息则存储在另一个数据库中。随着你对常见应用程序的熟悉,你将知道从哪里开始查看。

在以下截图中,我们可以看到所有与 Twitter 相关的数据库。同样,从你已经知道的信息开始,然后深入挖掘:

包含用户活动的 Twitter 数据库

每个数据库可能包含独特的数据,可以解析出更多的证据。这些应用程序还包含独特的user_id值,这些值可以作为关键词用于搜索在调查中有通讯痕迹的其他设备。

可以编写自定义查询来解析感兴趣的 Twitter 数据库。以下展示了一个如何执行此操作的良好示例。这个查询专门用于解析 Twitter 联系人:

SELECT _id AS "Index", 
user_id AS "User ID", 
username AS "Username", 
name AS "Name", 
datetime (profile_created/1000,'UNIXEPOCH','localtime') AS "Profile Created", 
description AS "Twitter Description", 
web_url AS "Website URL",
location AS "Location",
followers AS "Followers", 
friends AS "Following", 
users.statuses AS "Number of Tweets",
image_url AS "Profile Image URL", 
datetime (updated/1000,'UNIXEPOCH','localtime') AS "Profile Updated" 
FROM users

到目前为止,我们已经看过了各种第三方应用程序以及工具如何帮助调查员提取数据。接下来,我们将探讨一些在分析数据时帮助调查员的基本概念。

编码与加密

在讨论应用程序和智能手机数据时,编码加密这两个术语使用得非常频繁,因此它们常常被混淆。编码本质上是将信息或消息伪装成原始代码的过程。在某些情况下,编码的目的是使数据对计算机或用户不可识别。实际上,编码的主要目标是使用公开的方案将输入转换为不同的格式。换句话说,任何人都可以轻松解码一个编码值。而加密则是使用密钥将数据转换,以保持其内容的机密性。因此,只有当你拥有密钥时,加密文本才可以被反转。

大多数应用程序声称它们会加密数据或数据永远不会保存到磁盘上。虽然一些应用程序确实如此,但大多数只是对数据进行了编码。编码选项可能有所不同,但智能手机数据最常见的编码方式是Base64。消息应用程序通常依赖Base64编码来使数据看起来像是被隐藏或安全的Base64的一个常见特征是,当编码字节不能被三整除时,数据会用**=**进行填充。

几年前,Oxygen Forensics 和 Autopsy 是少数几款支持解码从智能手机应用程序中提取的Base64负载的工具。为了使这些工具能够解析数据,它们必须支持包含编码的应用程序。目前,MSAB、UFED Physical Analyzer 和 Magnet IEF 提供Base64解码支持。

以下截图展示了一个Base64编码的消息示例。这些数据来自 Tango 聊天应用:

Base64 编码的 Tango 消息

加密稍微复杂一些,因为应用程序本身可能根本不提供对加密数据的访问。例如,你可能会发现数据库目录或包含加密数据的单元格是空的。偶尔,你能访问到数据库中的加密数据块,但这些数据并不总是能被解密。同样,当你面对加密数据时,应该去其他地方查找。你是否检查了日志和预写日志?你是否检查了缓存和媒体目录?你是否检查了 SD 卡?这些是你经常需要问自己的常见问题,确保你不仅仅依赖你的取证工具,并且确保你已经全面检查,确保没有任何东西被忽视。正如我们所解释的,从你知道的地方开始。我们知道缓存和数据库目录存储着用户数据,因此这是开始手动检查的好地方,正如你在下面的截图中看到的:

应用程序的数据存储位置

在接下来的部分中,我们将讨论应用程序如何在设备中存储它们的数据以及各种存储选项的重要性。

iOS、Android 和 Windows Phone 应用程序的数据存储

几乎所有应用程序都依赖 SQLite 进行数据存储。这些数据库可以存储在设备的内部存储中,或者存储在相关手机的 SD 卡上。当使用 SQLite 时,临时内存文件通常与每个数据库相关联,以提高 SQLite 的效率。这些文件包括回滚日志JOURNAL)、预写日志WAL)和共享内存SHM)文件。这些文件可能包含 SQLite 数据库中不存在的数据。我们可以在以下截图中看到与各种 WhatsApp 数据库文件相关联的多个 WAL 和 SHM 文件:

SHM 文件和 WAL 示例

除了 SQLite 数据库外,其他设备还依赖 Plist、XML、JSON 和 DAT 文件进行应用程序数据存储、账户数据存储、购买信息和用户偏好存储。本章中关于 Android、iOS 和 Windows Phone 的部分将讨论这些文件。

iOS 应用程序

Apple 依赖 SQLite 和 Plist 作为应用程序数据存储的常见位置。偶尔,JSON 文件也会用于应用程序数据。检查从 iOS 设备恢复的应用程序可能会令人不知所措。我们建议您从已知的内容开始,并参考您的工具提供的信息。检查您选择的工具列出的已安装应用程序。从这里直接进入应用程序目录,确保没有遗漏任何内容。当用户删除应用程序时,数据库通常仍然存在,链接到已安装的应用程序仅仅是断开的。检查 iOS 设备的所有区域将有助于避免遗漏数据:

iPhone 上的已安装应用程序

在检查已安装的应用程序后,搜索LibraryDocuments目录,查找可能包含应用程序遗留数据的相关 Plist 文件。最后,检查 iPhone 的Media目录以及与该应用程序相关的目录,以恢复额外的遗留数据,例如共享照片、视频、音频文件和个人资料图片。在下面的截图中,我们正在检查与 WhatsApp 应用程序相关的Media目录:

iPhone 上的应用程序数据

接下来,我们将查看 Android 应用程序中的数据存储。

Android 应用程序

Android 设备在应用程序存储方面严重依赖 SQLite。每个应用程序的偏好设置文件通常采用 DAT 或 XML 文件格式。与 iOS 设备相比,检查 Android 设备上的应用程序可能是最繁琐的任务之一。这是由于数据可能存储在各种不同的位置。最好的起点是使用可以列出设备上已安装应用程序的工具。接下来,进入/Root目录下的子目录。记住,这些应用程序可能有独特的名称,可能很难找到。

你可能需要研究应用程序,以更好地理解与之相关的文件名。以下截图是 Android 设备上应用程序目录的一个示例:

Android 设备上的应用程序数据

每个应用程序目录都包含大量需要检查的数据。我们建议从 DatabasesCache 目录开始,然后将分析范围扩展到设备上的其他位置。接下来的检查位置包括 MediaCache 分区。如果数据似乎丢失或声称已被删除,请不要忘记检查设备和 SD 卡上的 Downloads 目录。

应用程序数据可能存在于 Media 目录的多个位置。使用如 UFED Physical Analyzer 这样的工具,它提供了超越解析项目的关键字搜索功能,将非常有助于定位与特定应用程序相关的文物。在以下截图中,我们查看了存储在 Android 设备 Media 目录中的大量数据。这些数据与之前讨论的应用程序目录中存储的数据是不同的。每个位置都需要彻底检查,以确保不会遗漏任何内容。重要的是,你需要运用在前面章节中学到的知识来分析 Android 应用程序数据:

存储在 Media 目录中的独特应用程序数据

现在我们来看看 Windows Phone 上安装的应用程序及其获取方法。

Windows Phone 应用程序

在 Windows Phone 上找到的应用程序与在 iOS 和 Android 设备上找到的应用程序没有区别。SQLite 是用于数据存储的最常见格式。然而,并不是所有设备都允许将 SQLite 文件存储在手机内部。对于这些设备,所有的应用程序数据都将存储在 SD 卡上。有些人可能会认为这是一件幸运的事,因为这样可以避免我们需要检查设备上的多个位置,但 SD 卡和应用程序本身可能会被加密。

如果可能,最好将 SD 卡移除并使用取证工具获取它。当这不可行时,下一步的最佳方法是尝试通过手机使用取证工具获取 SD 卡。同样,这通常会导致数据丢失。作为最后的努力,可以通过挂载设备并使用 Windows 资源管理器查看存储在设备和 SD 卡上的应用程序,进行实时分析,正如在第十二章中讨论的,Windows Phone 取证

提取第三方应用程序数据的取证方法

几乎所有商用工具都会尝试支持提取第三方应用的数据。如果你依赖工具输出作为调查结果,建议你对工具进行彻底且频繁的测试。这是因为应用更新非常频繁,工具几乎不可能不遗漏任何内容。你必须了解这些应用,它们的工作原理以及设备如何存储每个应用的数据。我们强烈建议你使用工具来筛查案件,然后深入数据手动提取工具遗漏的任何信息。确保在法医报告中只包括事实数据,而不是所有工具解析的数据,因为工具无法区分设备与人类创作的数据,只有经过训练的检查员才能自信地做出区分。

商用工具

如本书中所示,处理智能手机取证的工具有很多。然而,真正能在解析应用数据方面表现出色的工具却不多。Magnet AXIOM、Oxygen Forensic Detective 和 UFED Physical Analyzer 是其中几个在本章讨论的应用类别数据恢复方面做得很好的工具。我们将简要介绍如何利用这些工具解析应用数据。请记住,这些工具并不会找到所有应用,也不会解析所有应用的数据。

Oxygen Forensic Detective

Oxygen Forensic Detective 可用于检查应用数据。在这个示例中,我们假设数据采集已完成,我们只是在尝试分析数据。请注意,Oxygen 能够采集和分析智能手机。在这个示例中,我们用 Cellebrite UFED 采集了设备,并用 Oxygen 分析了数据。要加载设备的数据转储并检查其应用文物,请按照以下步骤操作:

  1. 启动 Oxygen Forensic Detective。

  2. 选择“导入文件”选项并选择你的图片。Oxygen 支持多种图像格式的导入。

  3. 解析完成后,开始检查已解析的应用:

Oxygen Forensic Detective 应用视图

  1. 接下来,开始检查感兴趣的应用,点击该应用并查看所有相关文件。

  2. 一旦选择了应用,你将看到解析出来的数据以及数据提取的完整文件路径。使用此路径手动验证结果。我们在下面的截图中查看的是 Pinterest 应用。注意,容器、文件和感兴趣的表格都被提供并超链接给用户。该工具甚至鼓励你深入挖掘并验证结果:

Oxygen Detective Pinterest 示例

Oxygen Detective 内置了关键词搜索、书签和报告功能。此外,SQLite 数据库和 Plist 查看器将为您提供检查相关应用数据的方法。

  1. 报告所有账户信息、聊天记录、消息、位置和任何其他相关数据,因为这些对您的调查具有重要性。

接下来我们将讨论的工具是 Magnet AXIOM。

Magnet AXIOM

Magnet AXIOM 一直被认为是互联网和应用程序解析领域的领导者之一,在数字媒体领域表现卓越。它在移动设备方面同样强大。再次强调,单一工具无法完成所有工作,但 AXIOM 已证明是最强大的工具,能够解析来自 Android、iOS 和 Windows Phone 的大多数应用程序。使用 AXIOM 审查应用程序文物时,请执行以下步骤:

  1. 启动 AXIOM,创建一个新案件,然后选择 MOBILE(注意,如果 MOBILE 被灰显,您需要从 Magnet Forensics 获取一个支持移动设备的许可证):

选择证据源

  1. 选择加载证据(LOAD EVIDENCE),并导航到您的图像文件。可以同时加载并解析多个图像。

  2. 选择进入文物详情(GO TO ARTIFACT DETAILS),并确定您希望解析的内容。我们建议选择所有应用程序:

Magnet AXIOM 支持的文物

  1. 选择分析证据(ANALYZE EVIDENCE)。

  2. 完成后,您可以使用文物:

Magnet AXIOM 中的应用程序文物

审查的第一步是检查 AXIOM 已经解析的内容。在前面的截图中,我们可以看到 Telegram 已经被解析。请从最相关的位置开始审查。例如,如果你正在寻找 Telegram 聊天记录,可以直接跳到该位置并开始审查文物。请注意,消息和聊天被分为两类。这在使用私密消息时很常见。所有相关的应用容器都应该被检查。此外,AXIOM 提供了数据恢复的完整文件路径。使用其他工具导航到该文件进行验证和手动检查。

AXIOM 还提供了逻辑关键词搜索(它将仅搜索能解析的内容,而不搜索其他内容)、书签和报告功能。确保你只报告实际的应用文物,并将其纳入最终的取证报告中。

UFED 物理分析器

Physical Analyzer 是市场上最著名的移动取证工具之一。这个工具不仅能帮助用户手动进行检查,还能利用工具解析出的数据进行分析。对于应用程序分析,Physical Analyzer 擅长解析每个支持的应用程序的聊天记录和联系人信息。对于那些未解析的数据,Physical Analyzer 提供了一个分析平台,允许用户浏览文件系统,揭示更多证据。该工具的关键词搜索功能强大,能够搜索原始的十六进制数据以及已解析的数据。此外,它还包括一个 SQLite 查看器。

要在 Physical Analyzer 中进行应用程序数据的取证检查,请按照以下步骤开始:

  1. 双击 UFED 快捷方式图标文件或双击工具图标来启动 Physical Analyzer。

  2. 加载图像文件并等待解析完成。

  3. 检查解析出的证据,如下图所示:

Physical Analyzer 解析的数据

我们建议检查解析的内容,并参考数据提取的超链接位置。导航至该路径,然后检查整个应用程序目录。

要查找应用程序目录,可以利用内建的关键词搜索功能来协助调查。记住,如果文件名不明显,你可能需要做一些研究来确定与应用程序相关的文件名。

开源/免费工具

对于预算有限的用户,可以使用开源解决方案和廉价工具来检查智能手机上的应用程序数据。这些解决方案使用起来更加困难,通常对于那些需要工具帮助进行数据提取和分析的新手取证人员来说,并不是最好的选择。检查应用程序数据是一个繁琐的过程,如果你不知道该从哪里入手,可能需要花费一些钱来快速开始。像 Andriller 这样的工具大约可以以$500 的价格购买。虽然这并不是免费的,但也远低于一些其他商业工具的$10,000 价格。在接下来的章节中,我们将介绍几款我们最喜欢的有助于解析智能手机应用数据的工具。

使用 Autopsy

Autopsy 是最好的文件系统检查工具之一。不幸的是,Autopsy 不支持 iOS 解析,但它仍然可能对文件系统镜像有用。Autopsy 可以从 sleuthkit.org/autopsy/ 下载。当使用 Autopsy 时,Android Analyzer 模块将从设备中解析一些应用程序数据。接下来让我们看看如何使用 Autopsy 进行 Android 镜像分析。

要使用 Autopsy,请下载软件并在 Windows 计算机上安装,按照这些指示操作。确保你始终使用最新版本:

  1. 启动 Autopsy。

  2. 创建一个新案件:

Autopsy 案件创建

  1. 选择“下一步”,然后点击“完成”。

  2. 导航到您的图像文件并选择“下一步”。

  3. 选择您希望运行的模块。对于 Android 设备,关键字搜索和 Android 分析器将最有成效:

Autopsy 模块选择

数据导入模块是内置于 Autopsy 的工具,可以在案件开始时或之后的任何时间运行。此版本的 Autopsy 默认模块如下:

  • 最近活动:此功能提取最近的用户活动,如网页浏览、最近使用的文档和已安装的程序。

  • 哈希查找:此功能使用提供的哈希数据库(如标准的 NSRL 数据库)识别已知和著名的文件。它还允许导入自定义哈希数据库。

  • 文件类型识别:此功能根据二进制签名匹配文件类型。

  • 压缩文件提取器:此功能提取压缩文件(.zip.rar.arj.7z.gzip.bzip2.tar)。它自动提取这些文件类型并将其内容放入目录树中。

  • EXIF 解析器:此功能导入 JPEG 文件并提取其 EXIF 元数据。

  • 关键字搜索:此功能通过关键字和正则表达式在列表中执行文件索引和定期搜索。它允许加载自定义的关键字/列表。

  • 邮件解析器:此模块检测并解析 mboxpst/ost 文件,并将电子邮件工件填充到黑板中。

  • 扩展名不匹配检测器:这些是具有非标准扩展名的标记文件,依据其文件类型来判断。

  • E01 验证器:此功能验证 E01 文件的完整性。

  • Android 分析器:此功能提取 Android 系统和第三方应用程序的数据。

  • 有趣文件识别器:此功能识别定义的有趣项目。

此外,您还可以为 Autopsy 安装第三方模块。其中一些对于 Android 取证非常有用。一个很好的例子是 Mark McKinnon 提供的 Parse SQLite DB 模块。此模块会解析它找到的任何 SQLite 数据库,并将其导入到提取的内容中。这个模块和其他模块可以从这个 GitHub 下载:github.com/markmckinnon/Autopsy-Plugins

Autopsy 提供比任何商业或开源工具更快的文件系统数据访问速度。从此之后,如何进一步操作才是难点。因此,再次强调,首先从提取的内容开始,然后深入文件系统,检查本书中讨论的文件和任何相关的应用数据,如下图所示:

使用 Autopsy 浏览文件系统

一旦确定了感兴趣的应用程序,首先查看已解析的内容,然后检查相关的数据库、缓存和偏好设置文件。Autopsy 包括一个基本的 SQLite 查看器,可以用于初步筛查。如果需要运行查询,我们建议使用 DB Browser for SQLite 或商业产品中包含的浏览器,例如 Belkasoft Evidence Center,特别是当你需要分析来自空闲列表和未分配空间的数据时。

Android Analyzer 可以自动解码一些数据,例如联系人、通话记录和短信。以下截图显示了解码后的短信结果:

Autopsy 解码的短信

现在,我们将探讨一些提取数据的其他方法。

提取应用数据的其他方法

解析应用数据的最简单方法之一是创建自定义的 SQLite 查询和 Python 脚本来解析感兴趣的数据。我们在本书中讨论了多个查询和脚本的建议与示例。Python 是最好的解决方案之一,因为它是免费的,并且我们可以完全访问它的库。需要记住的一点是,我们的脚本必须经常更新,以跟上应用更新的步伐。此外,请确保你的编码方案正确,以避免遗漏或错误解读应用数据。

除了 Python 脚本,已经存在一些免费的解析器,支持应用数据提取。WhatsApp Extract 是一款适用于 Android 和 iOS 的免费工具,可以从设备中提取 WhatsApp 应用数据。通常,这款免费工具提取的数据比商业解决方案更多,具体取决于用户在安装过程中分配的权限。其他开发者,如 Mari DeGrazia (az4n6.blogspot.in/p/downloads.html),Adrian Leong (github.com/cheeky4n6monkey/4n6-scripts),Sarah Edwards (github.com/mac4n6) 和 Alexis Brignoni (github.com/abrignoni),也开发了用于解析应用程序、从 SQLite 空白页恢复删除数据、解码 Base64 等的脚本。我们建议在开发自己的工具之前,先使用现有的工具。

总结

在本章中,我们了解了如何成功地解析和提取流行第三方应用的数据。许多应用并不像它们所宣称的那样。不要轻信关于应用的描述,因为各应用的质量保证测试不一致,且多年来我们已发现了几处漏洞和安全缺陷,这些问题为我们提供了将应用数据重新拼凑的方法。同时,应用更新会改变我们查看数据的方式。理解每款智能手机以及它如何存储应用数据,是成功检查智能手机应用的第一步。要明白,更新可能会改变数据的位置、编码和加密方式,以及工具的功能,这也是考官最难掌握的概念之一。你的任务是了解应用的能力,以便从移动设备中提取尽可能多的数据。

理解一个应用程序的工作原理本身就足够困难,更别提还要考虑如何提取证据了。正如你在本书中所阅读到的,提取智能手机中的数据有许多方法。单一的工具永远不够,实际上,移动取证可能会非常昂贵。我们希望我们提供的这本实用指南,能帮助你学习如何获取并分析从智能手机中恢复的证据。将你所学的应用到你的方法中,立即投入到你的移动取证工作中,或是用它来帮助你在下一个工作中更加准备充分。记住,实践、测试和培训将使你在工作中更加出色,并帮助你完善移动取证的技巧。

posted @ 2025-07-07 14:37  绝不原创的飞龙  阅读(10)  评论(0)    收藏  举报