移动取证实战-全-

移动取证实战(全)

原文:zh.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 取证工具包、Cellebrite(UFED4PC、Touch 和 Physical Analyzer)、BlackLight、Oxygen 取证侦探、AccessData MPE+、EnCase、Belkasoft 证据中心、MSAB XRY 等,这些工具可用于对 iOS 设备进行取证和分析。本章详细介绍了执行 iOS 设备取证和分析所需的流程。

第七章《了解 Android》介绍了 Android 平台的基本知识、内置安全功能和文件系统。本章建立了在接下来的章节中有用的基本取证知识。

第八章,Android 取证设置和数据提取前技术,告诉您在设置数字取证检查环境时要考虑什么。本章提供了有关对 Android 设备进行 root 和绕过屏幕锁定功能的逐步信息。

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

第十章,Android 数据分析和恢复,解释了如何从图像文件中提取相关数据,例如通话记录、短信和浏览历史。我们还将介绍数据恢复技术,通过这些技术,我们可以从设备中恢复已删除的数据。

第十一章,Android 应用程序分析、恶意软件和逆向工程,解释了虽然前几章讨论的数据提取和数据恢复技术提供了对有价值数据的访问,但本章中的应用程序分析帮助我们获取有关应用程序具体信息的权限和权限。

第十二章,Windows 手机取证,讨论了 Windows 手机,这些手机在移动市场上所占份额不多。因此,大多数取证从业人员对设备上存在的数据格式、嵌入式数据库和其他工件并不熟悉。本章概述了 Windows 手机取证,描述了在 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 Publishing 对您滥用本书中的任何信息不承担任何责任。本书中的信息只能在获得适当人员的书面授权的测试环境中使用。

第一章:移动取证简介

毫无疑问,移动设备已经成为我们生活的一部分,并彻底改变了我们进行大部分活动的方式。因此,移动设备现在是一个存储有关其所有者的敏感和个人信息的巨大存储库。这反过来导致了移动设备取证的兴起,这是数字取证的一个分支,涉及从移动设备中检索数据。本书将帮助您了解三个主要平台——Android、iOS 和 Windows 上的取证技术。我们将介绍可以用于从不同移动设备收集证据的各种方法。

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

  • 移动取证的需求

  • 了解移动取证

  • 移动取证中的挑战

  • 手机证据提取过程

  • 实用的移动取证方法

  • 手机上存储的潜在证据

  • 检查和分析

  • 证据规则

  • 良好的取证实践

移动取证的需求

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

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

随着新功能和应用程序被整合到手机中,设备上存储的信息量不断增加。

手机已成为便携式数据载体,跟踪您的所有活动。随着手机在人们日常生活和犯罪中的普及,从手机获取的数据已成为犯罪、民事甚至重大案件调查的宝贵证据来源。几乎没有进行数字取证调查而不包括手机的情况。手机通话记录和 GPS 数据曾被用于帮助解决 2010 年纽约时代广场的汽车炸弹袭击。

案件的详细信息可在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 的黑莓 OS,微软的 Windows Phone OS,惠普的 webOS 等。即使在这些操作系统中,也有几个版本,这使得您的任务变得更加困难。

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

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

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

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

  • 资源匮乏:如前所述,随着手机数量的增加,取证人员所需的工具数量也在增加。取证获取配件,如不同手机的 USB 电缆、电池和充电器,必须得到维护以获取这些设备。

  • 证据的动态性:数字证据可能会被故意或无意地轻易改变。例如,在手机上浏览应用程序可能会改变设备上由该应用程序存储的数据。

  • 意外重置:手机提供了重置所有内容的功能。在检查设备时意外重置可能导致数据丢失。

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

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

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

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

  • 法律问题:移动设备可能涉及跨越地理边界的犯罪。为了解决这些跨辖区问题,法医检查员应熟悉犯罪的性质和地区法律。

让我们在下一节看看证据提取的过程。

移动电话证据提取过程

根据各种因素,证据提取和对不同移动设备的法医检查可能有所不同。然而,遵循一致的检查过程将有助于法医检查员确保从每部手机中收集的证据得到充分记录,并且结果可靠。移动取证没有成熟的标准流程。

然而,以下图表提供了从移动设备提取证据的过程考虑因素的概述。从移动设备提取数据时使用的所有方法都应经过测试、验证和充分记录:

移动电话证据提取过程

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

如前图所示,对移动设备的取证包括几个阶段,从证据收集阶段到归档阶段。以下各节将概述各个阶段的各种考虑因素。

证据收集阶段

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

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

此外,在扣押设备时,应注意不要修改设备上的任何数据。同时,不应错过任何帮助调查的机会。例如,在扣押设备时,如果设备已解锁,则尝试禁用密码。

识别阶段

法庭检验员应为每次对移动设备的检查确定以下细节:

  • 法律权限

  • 需要提取的数据

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

  • 数据存储介质

  • 其他潜在证据来源

我们将在以下部分讨论每一项。

法律权限

对于法庭检验员来说,确定和记录获取和检查设备的法律权限以及在检查设备之前对媒体施加的任何限制是很重要的。例如,如果对设备的调查是基于搜查令进行的,搜索应该仅限于搜查令中定义的区域。简而言之,在扣押设备之前,您需要回答以下问题:

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

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

  • 如果设备包括在搜查令中,是否还定义了可以收集哪些数据?

  • 如果这是一项企业调查,设备是由个人还是雇主所有?

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

需要提取的数据

您将根据所请求的数据确定检查的深度。检查的目标在选择检查手机的工具和技术方面产生重大影响,并增加了检查过程的效率。

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

作为检查的一部分,识别手机的制造商和型号有助于确定哪些工具适用于该手机。建议在可能的情况下捕获被扣押设备的以下细节:

  • 设备制造商

  • 设备型号

  • 移动设备序列号

  • 设备的颜色

  • 设备屏幕或锁屏壁纸上可见的壁纸

  • 任何硬件组件的存在(如前置摄像头,耳机插孔等)

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

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

数据存储介质

许多手机提供使用可移动存储设备扩展内存的选项。在提交用于检查的移动电话中发现此类可移动介质的情况下,应将存储卡取出并使用传统数字取证技术进行处理。同时也应在移动设备中获取存储卡,以确保手持内存和存储卡上的数据链接,以便更容易进行分析。这将在接下来的章节中详细讨论。

其他潜在证据来源

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

准备阶段

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

隔离阶段

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

通过远程访问或远程擦除命令也可以完全销毁数据。因此,在获取和检查设备之前,将设备与通信源隔离是非常重要的。可以通过将手机放入射频屏蔽布中,然后将手机设置为飞行模式来进行网络隔离。飞行模式会禁用设备的通信通道,如蜂窝无线电、Wi-Fi 和蓝牙。但是,如果设备被屏幕锁定,则这是不可能的。此外,由于现在飞机上有 Wi-Fi,一些设备在飞行模式下也可以使用 Wi-Fi。

另一种解决方案是使用法拉第袋隔离手机,它可以阻断手机发出或接收的无线电信号。法拉第袋包含可以阻挡外部静电场(包括无线电波)的材料。因此,法拉第袋可以保护扣押的移动设备免受外部干扰,防止擦除和追踪。为了更方便地处理扣押的设备,还有法拉第帐篷和房间。

处理阶段

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

手机应该使用经过测试的、可重复的、尽可能具有取证价值的方法进行获取。物理获取是首选方法,因为它可以提取原始内存数据,并且在获取过程中设备通常处于关闭状态。在大多数设备上,物理获取期间对设备的更改最少。如果无法进行物理获取或失败,应尝试获取移动设备的文件系统。始终应执行逻辑获取,因为它可能只包含解析后的数据,并提供指针来检查原始内存映像。这些获取方法将在后面的章节中详细讨论。

验证阶段

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

  • 比较提取的数据与手机数据:检查从设备中提取的数据是否与设备显示的数据匹配(如果适用)。提取的数据可以与设备本身或逻辑报告进行比较,以首选为准。请记住,处理原始设备可能会对唯一的证据——设备本身进行更改。

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

  • 使用哈希值:获取后应对所有图像文件进行哈希处理,以确保数据保持不变。如果支持文件系统提取,可以提取文件系统,然后为提取的文件计算哈希值。稍后,计算并检查任何单独提取的文件哈希值,以验证其完整性。哈希值的任何差异必须能够解释(例如,设备已开机然后再次获取,因此哈希值不同)。

记录和报告阶段

法庭检查员需要在整个检查过程中记录与获取和检查相关的一切。一旦完成调查,结果必须经过某种形式的同行评审,以确保数据经过检查并且调查是完整的。你的笔记和文档可能包括以下信息:

  • 检查开始日期和时间

  • 手机的物理状况

  • 手机和各个组件的照片

  • 接收时手机状态-开机或关机

  • 手机制造商和型号

  • 用于获取的工具

  • 用于检查的工具

  • 检查期间发现的数据

  • 同行评审的笔记

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

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

存档阶段

保留从移动电话中提取的数据是整个过程的重要部分。对于持续进行中的法庭程序、将来的参考、当前证据文件损坏时以及记录保存要求,保留数据的可用格式也很重要。法庭案件可能在最终判决之前持续多年,大多数司法管辖区要求数据保留很长时间以供上诉之用。随着领域和方法的进步,可能会出现从原始物理图像中提取数据的新方法,然后你可以通过从档案中提取副本来重新审视数据。

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

实用的移动取证方法

与任何法医调查类似,可以使用几种方法来获取和分析移动电话数据。移动设备的类型、操作系统和安全设置通常决定了法庭程序的遵循。每项调查都有其独特的情况,因此不可能为所有情况设计一个确定的程序性方法。以下详细说明了从移动设备中提取数据所遵循的一般方法。

理解移动操作系统

手机数据获取和检查/分析的一个主要因素是操作系统。从低端手机到智能手机,移动操作系统在很多功能上已经发展了很长一段路。移动操作系统直接影响您如何访问移动设备。例如,安卓提供终端级访问,而 iOS 则没有这样的选项。

对移动平台的全面了解有助于取证人员做出明智的取证决策并进行彻底的调查。尽管智能手机设备种类繁多,但随着黑莓的消亡,目前市场上主要有两种操作系统占主导地位,即谷歌安卓和苹果 iOS(远远落后的是 Windows Phone)。更多信息可在www.idc.com/promo/smartphone-market-share/os找到。本书涵盖了这三种移动平台的取证分析。我们将简要介绍主要的移动操作系统。

安卓

安卓是基于 Linux 的操作系统,是谷歌为手机开发的开源平台。安卓是世界上使用最广泛的智能手机操作系统。资料显示,苹果的 iOS 排名第二(www.idc.com/promo/smartphone-market-share/os)。安卓由谷歌开发,作为硬件制造商和手机运营商的开放和免费选择。这使得安卓成为那些需要低成本、可定制、轻量级操作系统的公司的首选软件,而无需从头开始开发新的操作系统。

安卓的开放性进一步鼓励开发人员构建大量应用程序并将其上传到 Google Play。随后,最终用户可以从 Android Market 下载这些应用程序,这使得安卓成为一个强大的操作系统。据估计,截至撰写本书时,Google Play 商店有 330 万款应用程序。有关安卓的更多详细信息,请参阅第七章《了解安卓》。

iOS

iOS,以前被称为 iPhone 操作系统,是由苹果公司独家开发和分发的移动操作系统。iOS 正在演变成苹果所有移动设备的通用操作系统,如 iPad、iPod Touch 和 iPhone。iOS 源自 macOS,因此基于类 Unix 操作系统。iOS 管理设备硬件。iOS 还提供了实现本地应用程序所需的技术。它还附带各种系统应用程序,如邮件和 Safari,为用户提供标准的系统服务。iOS 本地应用程序通过 App Store 分发,该商店受到苹果的严格监控。有关 iOS 的更多详细信息,请参阅第二章《了解 iOS 设备的内部》。

Windows Phone

Windows Phone 是由微软为智能手机和口袋 PC 开发的专有移动操作系统。它是 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 卡、外部存储卡和手机内存。此外,服务提供商还存储了与通信相关的信息。本书主要关注从手机内存中获取的数据。移动设备数据提取工具可以从手机内存中恢复数据。尽管在取证获取期间恢复的数据取决于手机型号,但通常以下数据在所有型号中都是常见的,并且作为证据很有用。请注意,以下大部分物件都包含时间戳:

  • 地址簿:这包含了联系人姓名、电话号码、电子邮件地址等。

  • 通话记录:这包含了拨出、接收和未接来电以及通话时长。

  • 短信:这包含了发送和接收的短信。

  • MMS:这包含了发送和接收的照片和视频等媒体文件。

  • 电子邮件:这包含了发送、草稿和接收的电子邮件消息。

  • 网络浏览器历史:这包含了访问过的网站的历史记录。

  • 照片:这包含了使用手机摄像头拍摄的照片,从互联网下载的照片以及从其他设备传输的照片。

  • 视频:这包含了使用手机摄像头拍摄的视频,从互联网下载的视频以及从其他设备传输的视频。

  • 音乐:这包含了从互联网下载的音乐文件以及从其他设备传输的音乐文件。

  • 文档:这包含了使用设备应用程序创建的文档,从互联网下载的文档以及从其他设备传输的文档。

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

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

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

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

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

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

检查和分析

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

重要的是,您要对用于检查的法医工具的工作原理有一个公平的了解。熟练使用工具中可用的功能和选项将大大加快检查过程。有时,由于软件中的编程缺陷,工具可能无法识别或将位转换为您可以理解的格式。因此,您必须具备识别这种情况并使用替代工具或软件构建结果的必要技能。在某些情况下,个人可能会故意篡改设备信息或删除/隐藏一些关键数据。法医分析人员应了解其工具的局限性,并有时需要补偿这些局限性以获得最佳结果。

证据规则

法庭越来越依赖手机内部的信息作为重要证据。法庭上的主要证据需要对证据规则有很好的理解。移动取证是一个相对较新的学科,规定证据有效性的法律并不广为人知,而且在国家之间也有所不同。然而,数字取证有五条普遍的证据规则,需要遵循以使证据有用。忽视这些规则会使证据不可采纳,您的案件可能会被驳回。这五条规则是可采纳真实完整可靠可信

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

  • 真实:证据必须以相关方式与事件联系起来以证明某事。法医检查人员必须对证据的来源负责。

  • 完整:当提出证据时,必须清晰完整,并应反映整个故事。收集仅显示事件一个角度的证据是不够的。呈现不完整的证据比根本不提供任何证据更危险,因为它可能导致不同的判断。

  • 可靠:从设备收集的证据必须是可靠的。这取决于所使用的工具和方法。使用的技术和收集的证据不得对证据的真实性产生怀疑。如果您使用了一些无法复制的技术,除非那些考虑证据的人,如法官和陪审团,被指示这样做,否则不认为证据有效。这可能包括可能具有破坏性的方法,如芯片脱落提取。

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

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

良好的取证实践

良好的取证实践适用于证据的收集和保留。缺乏健全的取证实践甚至可能使法庭上收集的证据变得无用。证据的修改,无论是故意的还是意外的,都可能影响案件。因此,了解最佳实践对于取证人员至关重要。

保护证据

随着查找我的 iPhone和远程擦除等先进的智能手机功能,以一种无法远程擦除的方式保护手机非常重要。此外,当手机开机并具有服务时,它会不断接收新数据。为了保护证据,使用正确的设备和技术将手机与所有网络隔离开来。通过隔离,手机将被阻止接收任何可能导致删除活动数据的新数据。根据案件的不同,可能需要采用其他取证技术,如指纹匹配,以建立设备与所有者之间的联系。如果设备未经安全处理,物理证据可能会在无意中被篡改,并可能变得无用。

还重要的是收集现场发现的任何外围设备、相关媒体、电缆、电源适配器和其他附件。在调查现场,如果发现设备连接到个人计算机,直接拔出会停止数据传输。相反,建议在拔出设备之前捕获个人计算机的内存,因为在许多情况下,这包含重要细节。

保留证据

在收集证据时,必须将其保存在法庭可接受的状态。直接在原始证据副本上工作可能会改变它。因此,一旦您恢复了原始磁盘映像或文件,就创建一个只读主副本并进行复制。为了使证据被接受,必须有一种科学方法来验证提交的证据与原始收集的证据完全相同。这可以通过创建图像的取证哈希值来实现。

取证哈希用于通过计算图像/数据的密码强度和不可逆转的值来确保获取的完整性。

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

记录证据和更改

在可能的情况下,应创建所有可见数据的记录。建议拍摄移动设备以及发现的任何其他媒体,如电缆、外围设备等。如果以后关于环境出现问题,这将是有帮助的。在拍摄移动设备时不要触摸或放手。确保记录用于收集和提取证据的所有方法和工具。详细记录您的笔记,以便另一名取证人员可以重现它们。您的工作必须是可重现的;如果不是,法官可能会裁定其不可接受。重要的是记录整个恢复过程,包括获取和检查过程中所做的所有更改。例如,如果用于数据提取的取证工具切割了磁盘映像以存储它,这必须被记录下来。应在案件记录中记录移动设备的所有更改,包括开关机和同步等。

报告

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

  • 报告机构的详细信息

  • 案件标识符

  • 取证调查员

  • 提交者的身份

  • 证据接收日期

  • 用于审查的设备的详细信息,包括序列号、制造商和型号

  • 审查中使用的设备和工具的详细信息

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

  • 责任链文件

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

  • 在审查过程中收集的证据,包括聊天消息、浏览器历史记录、通话记录、已删除消息等

  • 审查过程中捕获的任何图像

  • 审查和分析信息

  • 报告结论

摘要

现代移动设备存储着各种信息,如短信、通话记录、浏览器历史记录、聊天消息、位置详情等。因此,它们经常是几起刑事案件、事件重建、公司和法律案件等的关键因素。移动设备取证也面临着传统数字取证范围之外的挑战和概念。在处理设备时,从证据收集阶段到存档阶段都需要极度小心。负责移动设备的审查人员必须了解不同的获取方法以及在分析过程中处理数据的复杂性。从移动设备中提取数据只是战斗的一半。操作系统、安全功能和智能手机类型将决定您对数据的访问权限。在调查过程中,遵循良好的取证实践并确保证据在调查过程中未被篡改是非常重要的。

下一章将深入介绍 iOS 取证。您将了解文件系统布局、安全功能以及 iOS 设备上文件存储的方式。

第一部分:iOS 取证

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

本节将包括以下章节:

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

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

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

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

  • 第六章,iOS 取证工具

第二章:了解 iOS 设备的内部

根据苹果公司的说法,2019 年有 14 亿活跃的苹果设备,其中 9 亿台设备运行的是 iOS。尽管 iOS 是全球平板电脑的领先操作系统OS),但安卓仍然是智能手机的领先操作系统。无论统计数据如何,如果您是取证人员,您很可能需要对 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 XR、XS、XS Max、11 和 11 Pro 在处理文件系统取证方法时可能会具有挑战性。与自 iPhone 5 以来发布的设备一样,除非它们被越狱,否则没有可用的方法或工具来从这些设备中物理恢复数据。但是,如果 iPhone 已解锁,则可以进行逻辑获取。数据提取的获取方法可用,并将在第三章和第四章中进行讨论。现在,让我们学习如何确定正确的硬件型号。

确定正确的硬件型号

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

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

可以通过访问设置选项,然后导航到常规|关于|软件版本来找到 iPhone 的固件版本,如下面的屏幕截图所示。固件的目的是启用某些功能,并协助设备的一般运行:

iPhone 关于屏幕,显示软件版本 13.2

另外,可以使用libimobiledevice软件库(www.libimobiledevice.org/)中提供的ideviceinfo命令行工具来识别 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. 使用通用串行总线USB)电缆将 iPhone 连接到您的工作站(对于最新的 iOS 版本,还需要输入密码),并使用ideviceinfo命令和-s选项运行,如下面的代码所示:

$ 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 仿生处理器;64GB、128GB 或 256GB 存储;4GB 的 RAM;6.1 英寸的 Liquid Retina 液晶显示屏;以及双镜头 1200 万像素后置摄像头阵列。

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

iPad 型号和硬件

苹果 iPhone 改变了手机的生产和使用方式。同样,iPad 是 2010 年 1 月推出的平板电脑版本,打击了笔记本电脑的销售。通过 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 位值来寻址分配块,这限制了分配块的数量为 65535。为了克服磁盘空间的低效分配和 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-Tree 结构。这是一种允许数据被高效搜索,查看,修改或删除的数据结构。 HFS Plus 卷结构如下图所示:

HFS Plus 卷结构

卷结构描述如下:

  • 保留(1024 字节):这是用于引导加载程序信息的保留空间。

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

  • 分配文件:此文件用于跟踪系统正在使用的分配块。文件格式由每个分配块的 1 位组成。如果设置了该位,则该块正在使用中。如果未设置,则该块为空闲。

  • 范围溢出文件:此文件记录分配块,当文件大小超过八个块时分配,这有助于在引用时定位实际数据。坏块也记录在文件中。

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

  • 属性文件:此文件包含内联数据属性记录,分叉数据属性记录和扩展属性记录。

  • 启动文件:此文件包含启动没有 HFS Plus 支持的系统所需的信息。

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

  • 保留(512 字节):这是由苹果公司保留使用的,用于制造过程中。

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

APFS 文件系统

APFS 是 iOS,macOS,tvOS 和 watchOS 的新文件系统。这是一个 64 位文件系统,支持单个卷上的超过 9 万亿文件。以下是其主要特点列表:

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

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

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

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

  • 无加密

  • 单密钥加密

  • 使用每个文件数据的文件密钥和敏感元数据的单独密钥进行多密钥加密

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

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

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

  • 快速目录大小计算:这可以快速计算目录层次结构使用的总空间,允许在层次结构发展时进行更新。

APFS 结构

因此,APFS 结构是以单个容器结构的形式呈现的,该容器可能包含一个或多个卷。APFS 结构如下图所示:

APFS 结构概述

APFS 中的每个文件系统结构都以块头开头。块头以整个块的校验和(使用 Fletcher 的校验和算法)开头,并包含块的写入版本、块 ID 和块类型。

APFS 结构可以解释如下:

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

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

  • 空间管理器管理 APFS 容器中分配的块,并存储空闲块数和指向分配信息文件的指针。

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

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

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

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

磁盘布局

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

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

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

iPhone OS

iOS 是苹果最先进和功能丰富的专有移动操作系统。它是随第一代 iPhone 一起发布的。刚开始时,它被称为 iPhone OS,后来改名为 iOS,以反映驱动所有苹果 iOS 设备(如 iPhone、iPod touch、iPad 和 Apple TV)的操作系统的统一性质。iOS 源自核心 OS X 技术,经过精简,使其紧凑高效,适用于移动设备。

它利用多点触摸界面,使用简单的手势来操作和控制设备,比如在屏幕上滑动手指以移动到下一页,或者捏合手指来缩放。简而言之,iOS 协助设备的一般功能。

iOS 架构

iOS 是设备硬件组件和屏幕上的应用程序之间的中介。应用程序不直接与底层硬件交互。相反,它们通过一个明确定义的系统接口进行交互,以保护它们免受硬件更改的影响。这种抽象使得可以轻松构建适用于具有不同硬件功能的设备的应用程序。

iOS 架构由四个层次组成:Cocoa Touch 层、媒体层、核心服务层和核心 OS 层。每个层都包含几个框架,帮助构建应用程序,如下图所示:

iOS 层

这些层可以描述如下:

  • Cocoa Touch:该层包含开发 iOS 应用程序所需的关键框架。该层中的框架提供基本的应用程序基础设施,并支持关键技术,如基于触摸的输入、多任务处理和许多高级系统服务。

  • 媒体:该层提供图形、音频和视频框架,以在移动设备上创建最佳的多媒体体验。该层中的技术帮助开发人员构建外观和声音出色的应用程序。

  • 核心服务:该层提供应用程序所需的基本系统服务。虽然开发人员并非都使用这些服务,但系统的许多部分都是基于它们构建的。该层包含使位置服务、iCloud 和社交媒体得到支持的技术。

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

既然我们已经了解了 iOS 架构,让我们来看看 iOS 安全。

iOS 安全

较新版本的 iOS 设计时将安全性作为核心。在最高层次上,iOS 安全架构如下:

iOS 安全架构

苹果 iOS 设备,如 iPhone、iPad 和 iPod Touch,设计有多层安全保障。低级硬件功能可防止恶意软件攻击,高级操作系统功能可防止未经授权的使用。iOS 安全功能的简要概述如下所示。

密码、Touch ID 和 Face ID

Passcodes 限制未经授权的设备访问。一旦设置了密码,每次打开或唤醒设备时,都会要求输入密码才能访问设备。iOS 设备支持简单和复杂的密码。iOS 9 发布了使用六位简单密码的选项,而不是传统的四位选项。iPhone 5S 及更高版本还支持 Touch ID 指纹作为密码,这些指纹可以与简单或复杂的密码一起使用。iPhone X 及更高版本支持一种新的生物识别方式来锁定设备——Face ID——用户可以使用他们的脸作为密码。而且它更安全,因为使用 Touch ID 解锁您的 iPhone 的陌生人的几率是 50,000 分之 1,但使用 Face ID 是 1,000,000 分之 1。

代码签名

代码签名防止用户在设备上下载和安装未经授权的应用程序。苹果对此的说法如下:

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

沙箱

沙箱通过将应用程序置于严格受限的区域中来减轻代码执行后的利用。安装在 iOS 设备上的应用程序都被置于沙箱中,一个应用程序无法访问另一个应用程序存储的数据。基本上,沙箱是一种强制执行细粒度控制的机制,限制应用程序对文件、网络资源、硬件等的访问。

加密

在 iOS 设备上(从 iPhone 4 开始),整个文件系统都使用文件系统密钥进行加密,该密钥是从设备的唯一硬件密钥计算出来的。这个密钥存储在可消除存储器中,位于设备的操作系统和硬件级别之间。这就是为什么联合测试动作组(JTAG)和芯片取下方法不是有用的获取方法,因为整个数据转储将被加密。

数据保护

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

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

ASLR 是 iOS 4.3 引入的一种漏洞缓解技术。ASLR 随机化应用程序对象在内存中的位置,使内存损坏漏洞难以利用。

特权分离

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

堆栈破坏保护

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

数据执行防护(DEP)

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

数据擦除

iOS 提供“擦除所有内容和设置”选项来擦除 iPhone 上的数据。这种类型的数据擦除通过删除保护数据的加密密钥来擦除用户设置和信息。由于加密密钥从设备中擦除,因此无法恢复已删除的数据,即使在取证调查期间也是如此。还有其他覆盖设备内存中数据的擦除方法。有关擦除的更多信息,请访问support.apple.com/en-in/HT201274

激活锁

激活锁是 iOS 7 推出的一种防盗功能,通过利用“查找我的 iPhone”来起作用。当“查找我的 iPhone”启用时,它会启用激活锁,并且需要用户的 Apple ID 和密码才能关闭“查找我的 iPhone”,擦除设备并重新激活它。

App Store

App Store 是由苹果开发和维护的 iOS 应用分发平台。这是一个集中的在线商店,用户可以浏览和下载免费和付费应用。这些应用扩展了移动设备的功能。截至 2019 年第一季度,App Store 中有 220 万款应用。

App Store 中的应用通常由第三方开发人员编写。开发人员使用 Xcode 和 iOS 软件开发工具包SDK)来开发应用程序。之后,他们将应用提交给苹果进行批准。苹果会对应用进行广泛的审查,以确保符合公司的指南。如果苹果批准了该应用,它将被发布到 App Store,用户可以下载或购买。严格的审查流程使 App Store 不太容易受到恶意软件的侵害,但并非 100%安全。

XcodeGhost 是苹果 App Store 中感染了 50 个应用程序的苹果恶意软件,于 2015 年 9 月被发现。这种恶意软件内置在 Xcode 中,使其更难以检测,并据报道影响了全球 5 亿多用户。一旦被发现,苹果立即删除了受感染的应用程序。

越狱

越狱是通过软件和硬件漏洞来消除苹果移动操作系统所施加的限制的过程。越狱允许未经签名的代码在操作系统上运行并获得根访问权限。越狱最常见的原因是扩展苹果 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 上执行的大多数常规活动(通话、发短信等)都将在正常模式下运行。

当 iPhone 打开时,内部上,它会通过一个安全引导链,如下图所示。越狱设备不会发生这种情况。引导过程中的每个步骤都包含由苹果加密签名的软件组件,以确保完整性:

iPhone 在正常模式下的安全引导链

*引导 ROM 然后验证低级引导加载程序(LLB)是否由苹果签名并加载它。LLB 由引导 ROM 加载和验证,但这仅发生在 A9 或更早的 A 系列处理器设备上

引导 ROM,也称为安全 ROM,是只读存储器(ROM)的第一个重要代码片段,它在 iPhone 上运行(www.apple.com/business/docs/iOS_Security_Guide.pdf)。iOS 设备的引导过程在以下步骤中定义:

  1. 引导 ROM 代码包含苹果根证书颁发机构(CA)公钥,用于在允许加载之前验证下一阶段的签名。

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

  3. 然后,引导 ROM 验证低级引导加载程序(LLB)是否由苹果签名并加载它。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 和睡眠/电源按钮直到出现苹果标志来完成此操作。在 iPhone 7 和 iPhone 7 Plus 上,可以通过同时按住侧面按钮和音量减小按钮来完成此操作。在 iPhone 8 及更高版本上,可以通过点击音量增大按钮,然后点击音量减小按钮,然后按住侧面按钮来完成此操作。

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

通常,重新启动的过程将使 iPhone 从恢复模式返回到正常模式。这种方法也适用于 Apple Watch。您可能会遇到 iPhone 不断重新启动进入恢复模式的情况。这称为恢复循环。当用户或检查员尝试越狱 iOS 设备并出现错误时,可能会发生恢复循环。要使设备退出恢复循环,必须将设备连接到 iTunes,以便可以将备份恢复到设备上。

这会对证据进行更改,因此请确保在尝试在真实证据上使用方法之前,已经在测试设备上验证了您的获取方法。

DFU 模式

在启动过程中,如果引导 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. 同时按住 Home 和顶部(或侧面)按钮。

  3. 释放顶部(或侧面)按钮,继续按住 Home 按钮。

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

要验证 iPhone 在 macOS 上是否处于 DFU 模式,请启动“系统报告”,然后转到 USB 选项。您应该会看到类似以下截图的内容:

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

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

设置取证环境

现在,我们有一些工具可以供移动取证人员使用,使用 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 的闪存芯片并克隆它来绕过密码输入限制。这种技术应该适用于 iPhone 6s Plus 及以下的任何 iOS 设备。

逻辑获取

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

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

逻辑获取是获得存储在 iOS 设备上的数据的最快、最简单和最便宜的方法。有各种各样的工具,从商业到免费,都能够捕获逻辑镜像。其中大多数工具要求设备解锁,或者要求主机机器上的plist文件可读。

使用 libimobiledevice 进行实际逻辑获取

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

好的,让我们开始:

  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 获取工具进行逻辑获取。

使用 Belkasoft 获取工具进行实际逻辑获取

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

让我们使用 Belkasoft 获取工具获取运行 iOS 13.2.3 的 iPhone:

  1. 启动 Belkasoft 获取工具并选择移动设备选项:

选择来源

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

选择移动类型

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

选择获取方法

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

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

创建备份

备份可以被 Belkasoft 证据中心和许多其他移动取证工具分析。

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

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

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

选择设备

  1. 选择要获取的镜像类型。我们想获取逻辑镜像,而我们的设备没有越狱,所以我们将选择快速选项:

选择图像类型

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

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

  1. 等待任务成功完成;您将看到获取过程的摘要:

创建图像

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

下一节将指导您进行越狱和文件系统获取。

文件系统获取

安全区域给 iOS 取证人员带来了新的挑战。我们无法提取解密设备镜像所需的加密密钥,因此进行物理获取是无用的。但有文件系统获取。不幸的是,在大多数情况下,这需要 iOS 设备越狱。下一节将向您展示如何使用 Electra 越狱运行 iOS 11.4.1 的 iPhone,以及如何使用 Checkra1n 越狱运行 iOS 13.2 的 iPhone。

实际越狱

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

  1. github.com/coolstar/electra-ipas/raw/master/Electra1141-1.3.2.ipa下载Electra

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

运行 Cydia Impactor

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

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

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

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

验证开发者

  1. 将手机设置为飞行模式,关闭 Siri,并重新启动设备。

  2. 在 Springboard 上点击 Electra 图标,然后选择 Jailbreak。如果过程成功完成,你会在 Springboard 上找到 Cydia 图标:

越狱设备

现在,手机已经越狱并准备好进行文件系统获取。

Checkra1n基于 bootrom 漏洞和利用,并支持各种 iOS 设备,甚至是运行最新(撰写时)的 iOS 13.2 的设备。以下是运行 iOS 13.2 的 iOS 设备越狱的步骤:

  1. checkra.in/下载Checkra1n

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

  3. 连接设备并将其放入 DFU 模式:

将设备放入 DFU 模式

  1. 等待利用过程完成:

利用过程

一旦设备重新启动,您将在 Springboard 上找到 checkra1n 图标 - 设备现在已经越狱并准备好进行文件系统获取。

有关更多越狱技术,请参阅《第二章》(acc4800c-2775-4ca6-9f5f-e447fa5ac0a8.xhtml)的“越狱”部分,《了解 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 Forensic Toolkit

使用 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 设备中获取数据的技术,包括逻辑和文件系统获取。本章涵盖了使用苹果的同步协议将设备上的文件备份到计算机或 iCloud 的技术。

iOS 设备的物理获取在调查中提供了最多的数据,但您也可以在 iOS 备份中找到大量信息。iOS 设备用户有几种选项可以备份其设备上的数据。用户可以选择使用苹果 iTunes 软件将数据备份到计算机,或者备份到被称为 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 是苹果提供的免费实用程序,用于 iOS 设备和计算机之间的数据同步和管理。iTunes 使用苹果的专有同步协议将数据从 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. 检查防止 iPods,iPhones 和 iPads 自动同步,并单击“确定”按钮,如下截图所示:

在 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 备份可能会复制设备上的所有内容,包括联系人、短信、照片、日历、音乐、通话记录、配置文件、文档、钥匙串、网络设置、离线网络应用缓存、书签、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文件存储了关于备份设备的详细信息,通常包含以下信息:

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

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

  • 设备名称和显示名称:这是设备的名称,通常包括所有者的姓名。

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

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

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

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

  • 上次备份日期:这是上次成功备份的时间戳。

  • MEID:这是设备的移动设备标识符MEID)。

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

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

  • 产品类型和产品版本:这是设备的型号和固件版本。

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

  • 目标标识符和唯一标识符:这是设备的 UDID。

  • iTunes 文件:这包含有关照片、文件夹、语音备忘录和 iTunes 首选项的信息。

  • iTunes 设置:这包含有关已删除应用程序和应用程序库的信息。

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

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

manifest.plist

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

  • 备份密钥包备份密钥包包含一组与系统密钥包中的密钥不同的数据保护类密钥,并且备份数据会使用新的类密钥重新加密。备份密钥包中的密钥有助于以安全方式存储备份。

  • 版本:这是备份版本。

  • 日期:这是备份创建或上次更新的时间戳。

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

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

  • 锁定:这包含设备详细信息、上次备份计算机的名称和其他远程同步配置文件。

  • 应用程序:这是备份设备上安装的第三方应用程序、它们的版本号和捆绑标识符的列表。

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

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

status.plist

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

  • 是否完整备份:这标识备份是否是设备的完整备份。

  • UUID:这是设备的 UUID。

  • 日期:这是上次备份修改的时间戳。

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

  • 快照状态:这标识备份过程是否已成功完成。

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

manifest.db

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

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

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

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

  • 标志:这些是文件标志。

  • 文件:这是一个嵌入的.plist文件。这些.plist文件包括以下重要信息,等等:

  • 上次修改时间:这是文件的最后修改时间戳(Unix 格式)。

  • 创建时间:这是 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)。唯一的文件密钥受到来自备份密钥包的一组类密钥的保护。备份密钥包中的类密钥受到通过 10,000 次基于密码的密钥派生函数 2PBKDF2)在 iTunes 中设置的密码派生的密钥的保护。在 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 时,苹果公司为您提供 5GB 的免费远程存储空间。如果您需要更多存储空间,可以购买升级计划。为了保护您的数据,苹果在用户创建用于 iCloud 的 Apple ID 时强制要求选择一个强密码。密码必须至少包含八个字符,包括一个数字、一个大写字母和一个小写字母。

运行 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 获取工具,这是 Belkasoft 提供的免费工具,可以从以下网址下载:belkasoft.com/get

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

  1. 启动 Belkasoft 获取工具。

  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 时间戳是自 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's 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 Universal Forensic Extraction Device (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 命令 shell。

  • .mode: 这设置了输出模式;可以是.csv、HTML、制表符等。

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

探索标准 SQL 查询

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

您将检查的大多数数据库只包含合理数量的记录,因此可以发出SELECT *语句,打印表中包含的所有数据。本章将对此进行详细介绍。

使用商业工具访问数据库

虽然可以使用免费工具手动检查 iOS SQLite 数据库文件,但大多数检查员在手动检查文件之前更喜欢商业支持。以下是使用包含在 Belkasoft Evidence Center 中的 SQLite 检查数据库的示例。

要打开和分析数据库,您只需要按照以下几个简单的步骤:

  1. 启动 Belkasoft Evidence Center 并导航到 View | SQLite Viewer,并选择要检查的数据库文件。

  2. 选择数据库后,它将立即在 SQLite Viewer 中打开,并准备好进行检查,如下屏幕截图所示:

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

为什么检查员需要使用这样的商业查看器而不是免费和开源的查看器?例如,这个特定的查看器甚至支持受损或部分覆盖的 SQLite 数据库。此外,该工具支持从 freelists、Write-Ahead Log(WAL)和未分配空间中提取数据,如下屏幕截图所示:

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

当然,对于 SQLite 数据恢复,也有一些免费和开源的工具可用。您将在以下部分了解更多关于这些工具的信息。

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

根据第三章,从 iOS 设备获取数据和第四章,从 iOS 备份中获取数据中的说明提取的文件系统和备份应包含以下可能对您的调查重要的 SQLite 数据库。如果未恢复这些文件,请确保您正确获取了 iOS 设备。以下部分显示的文件是通过从运行 iOS 的设备进行逻辑获取而提取的。随着苹果在每个 iOS 版本中为内置应用添加新功能,文件的格式可能会因不同的 iOS 版本而有所不同。

通讯录联系人

通讯录包含有关所有者个人联系人的丰富信息。除了第三方应用程序外,通讯录还包含设备上存储的所有联系人的联系人条目。通讯录数据库可以在/HomeDomain/Library/AddressBook.sqlitedb找到。AddressBook.sqlitedb文件包含几个表,其中以下三个特别重要:

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

  • ABMultiValue:此表包含ABPerson表中条目的电话号码、电子邮件地址、网站统一资源定位符URL)等信息。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.storedataCallHistory.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)消息

短信数据库包含从设备发送和接收的文本和多媒体消息,以及远程方的电话号码、日期和时间以及其他运营商信息。从 iOS 5 开始,iMessage 数据也存储在短信数据库中。iMessage 允许用户通过蜂窝网络或 Wi-Fi 向其他 iOS 或 macOS 用户发送短信和多媒体消息,从而提供了一种替代短信的方式。短信数据库位于/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 中检查笔记

这个查询合并了两个表的数据,所以我们使用ZOWNERZNOTEBODYZ_PKZNOTE,以及一个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数据库包含有关存储在设备上的每个语音信箱的元数据,包括发件人的电话号码、回拨号码、时间戳和消息持续时间等。语音信箱录音存储为Adaptive Multi-Rate (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文件来获取用户使用的所有电话号码的信息,即使他们更换了手机并从备份中恢复。提取这些数据的查询如下截图所示:

提取电话号码

正如您所看到的,不仅有电话号码可用,还有Subscriber Identity Module (SIM)卡的Integrated Circuit Card Identifier (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 的电子邮件地址以及用户通过 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)数据。可以使用从sno.phy.queensu.ca/~phil/exiftool/下载的ExifTool提取照片中存储的EXIF数据。如果用户在 iOS 设备上启用了位置权限,并且对照片进行了地理标记,那么EXIF数据可能包含地理信息。

缩略图

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

使用 iThmb Converter 检查 3304.ithmb

由于这些文件可能包含已删除照片的缩略图,因此法医检查员不应忽视它们。而且,其中一些文件包含相当大的缩略图,因此清楚地显示了照片内容。

壁纸

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

壁纸图片可能包含有关用户的身份信息,这些信息可能有助于寻找失踪人员或者可以在从盗窃调查中恢复的 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 数据库进行了清理或碎片整理,则恢复已删除数据的可能性很小。这些数据库需要进行的清理程度在很大程度上取决于 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 页面上。

另一个可以用来恢复已删除的 SQLite 记录的开源工具是 Undark。您可以在这里下载它: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 设备上的存储方式,以确保工具捕获所有可访问的数据。

目前,有许多商业工具可用于对 iOS 设备进行取证获取和分析,例如 Cellebrite UFED 物理分析器、BlackBag BlackLight、Oxygen Forensic Detective、Belkasoft Evidence Center、MSAB XRY、Magnet AXIOM 等。出于熟悉的目的,本章将带您了解其中一些工具的使用,并提供执行 iOS 设备取证和分析所需步骤的详细信息。

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

  • 使用 Cellebrite UFED 物理分析器

  • 使用 Magnet AXIOM

  • 使用 Belkasoft Evidence Center

  • 使用 Elcomsoft Phone Viewer

使用 Cellebrite UFED 物理分析器

根据供应商,Cellebrite 通用取证提取设备UFED)赋予执法、反恐和安全组织从手机、智能手机、PDA 和便携式手机等各种设备中捕获关键的取证证据的能力,包括对新发布型号的更新。该工具能够进行取证合规的数据提取、解码和分析技术,以获取来自不同移动设备的现有和已删除数据。截至 2019 年 2 月,UFED 支持从近 28000 种移动设备中提取数据。

Cellebrite UFED 物理分析器的特点

以下是 Cellebrite UFED 物理分析器的特点:

  • 支持不同类型的获取

  • 提取需要解密物理图像和钥匙链项目的设备密钥

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

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

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

  • 支持密码恢复攻击

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

  • 提供对物理和逻辑数据的访问,以在同一用户界面中进行分析更容易

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

  • 转储原始文件系统分区,以便在另一个取证工具中导入和检查

  • 创建二进制图像文件,以及用于导入其他取证工具进行验证的 UFED 快捷文件

现在让我们来看高级逻辑获取和分析。

使用 Cellebrite UFED 物理分析器进行高级逻辑获取和分析

如前所述,物理分析器不仅可用于解析获取的图像中的不同类型的取证物件,还可用于从 iOS 设备中执行逻辑和文件系统(甚至是旧设备的物理)类型的提取。由于物理获取实际上仅适用于旧设备,最佳选择是高级逻辑获取。

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

  1. 通过适当的电缆将设备连接到您的工作站。确保它是受信任的,并启动物理分析器。

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

选择提取类型

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

连接设备

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

选择提取方法

  1. 如果您希望备份被加密(建议),您可以在下一页选择此选项:

选择备份是否应该加密

  1. 是时候选择数据将保存在哪里了;在我们的案例中,是D:\驱动器的根目录:

选择提取的保存位置

  1. 现在,获取过程将开始。确保设备连接到整个过程结束:

提取数据

一旦提取过程完成,提取的数据将通过强大的物理分析器插件进行解析。结果,您将获得一组分成多个类别的工件:

由物理分析器提取和解析的手机数据

关于数据文件也可以说同样的话:

由物理分析器提取的数据文件

您可能已经注意到,括号中有红色数字——这些是物理分析器插件恢复的已删除记录。正如您已经知道的那样,从 iOS 广泛使用的 SQLite 数据库中恢复已删除的数据并不是什么奇迹。

谈到 SQLite 数据库,物理分析器还有另一个令人惊叹的功能,可能对于向移动取证报告添加自定义工件和解析未知应用数据非常有用——SQLite 向导。您可以在工具 | SQLite 向导下找到它:

  1. 让我们从选择数据库开始。当然,最好选择一个物理分析器没有自动解析的应用。在我们的例子中,这是一个名为 Scan 的应用:

选择数据库

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

启动 SQLite 向导

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

选择数据库表和列

  1. 下一步是选择时间戳。您已经学到了很多关于 iOS 时间戳,并且应该能够识别ZTIMELESSCREATIONDATE中的格式,但即使您不知道,SQLite 向导也会为您完成这一步:

选择时间戳格式

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

选择型号

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

使用 Magnet AXIOM

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

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 设备,我们将选择移动选项:

选择证据来源

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

选择证据来源

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

选择获取证据

  1. 我们的设备已被识别并准备好进行成像。如果您没有看到您的设备,请使用未知选项:

选择设备

  1. 有两种提取类型-快速和完整。如果您要获取的设备已越狱,则只有完整选项可用。在我们的情况下,不是:

选择图像类型

  1. 您将被提示输入备份密码。正如您可能记得的那样,这样可以获取更多数据,因此强烈建议这样做:

加密备份

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

处理细节

动态应用程序查找器是 Magnet IEF 和 AXIOM 的功能,可以在图像中找到潜在的移动聊天应用程序数据库。您可以在此链接了解更多关于此功能的信息:www.magnetforensics.com/mobile-forensics/using-dynamic-app-finder-to-recover-more-mobile-artifacts/

  1. 您可以从这里自定义移动工件。例如,如果您只对聊天工件感兴趣,最好只选择这些类型的工件,因为它们会缩短处理时间:

选择移动工件

  1. 点击“分析证据”按钮将启动获取和分析过程:

成像证据来源

  1. Magnet AXIOM 有两个窗口-处理和检查。第一个可用于监视获取和处理证据来源的过程,而第二个可用于分析提取和解析的数据。正如我们之前提到的,您可以在处理阶段结束之前开始分析。您只需要在 Magnet Examine 中点击 LOAD NEW RESULTS:

加载新结果

  1. 一旦处理阶段结束,您可以在 Magnet Examine 的 MOBILE 部分找到解析的数据:

移动部分

但是,当然,它不会包括一切;还有其他有价值的部分,您可以在其中找到从 iOS 设备中提取的证据,例如 CHAT,MEDIA 和 DOCUMENTS。

使用 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 设备,选择苹果。您将看到可用设备的列表:

可用于获取的设备

  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 数据。虽然存在用于获取数据的免费工具,但支持可能有限,并且可能需要多次提取才能获得与商业工具相同数量的数据。

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

您应该进一步验证和了解可能作为调查一部分使用的每个工具。我们建议您获取具有已知数据的测试设备,以确保没有遗漏任何内容,证据没有被篡改,并且方法能够让您访问感兴趣的数据。

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

第二部分:Android 取证

本节将涵盖您需要了解的有关 Android 设备取证的一切。我们将从了解 Android 平台及其文件系统开始,然后涵盖设置、获取/提取和恢复的主题。我们还将使用开源工具查看 Android 恶意软件以及如何进行 Android 应用程序的逆向工程。

本章包括以下章节:

  • 第七章,了解 Android

  • 第八章,Android 取证设置和数据提取前技术

  • 第九章,Android 数据提取技术

  • 第十章,Android 数据分析和恢复

  • 第十一章,Android 应用程序分析、恶意软件和逆向工程

第七章:理解 Android

在前几章中,我们介绍了 iOS 设备的详细信息,包括文件系统结构、关键文件、备份文件以及获取和分析方法。从本章开始,我们将专注于 Android 平台以及如何对 Android 设备进行取证。在进行取证调查时,对 Android 生态系统、安全约束、文件系统和其他功能有很好的理解将会很有用。掌握这些基础知识将有助于取证专家在进行调查时做出明智的决定。

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

  • Android 的演变

  • Android 架构

  • Android 安全

  • Android 文件层次结构

  • Android 文件系统

Android 的演变

Android 是为触摸屏移动设备开发的基于 Linux 的移动操作系统。它由一家名为开放手机联盟OHA)的公司联合开发,主要贡献者和商业营销商是谷歌。自首次发布以来,Android 操作系统已经有了显著的发展。Android 于 2008 年正式向公众发布,版本为 Android 1.0。随着 2009 年 Android 1.5 杯子蛋糕版本的发布,以甜点命名 Android 版本的传统诞生了。接下来的 10 年,版本名称也按字母顺序发布。然而,2019 年,谷歌宣布他们将结束基于甜点的命名,未来将使用数字顺序。最近的几年里,Android 版本更新频率减少到每年一次。最新的主要 Android 更新是 Android 11,这是谷歌于 2020 年 2 月 19 日宣布的第 11 个主要版本。

以下是撰写时的 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 架构

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

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

与任何其他平台一样,安卓由一堆层次运行在另一堆层次之上。要理解安卓生态系统,有必要对这些层次是什么以及它们的作用有基本的了解。

以下图表总结了安卓软件堆栈中涉及的各个层:

安卓架构

此图像是基于安卓开源项目创建和共享的工作进行修改:https://developer.android.com/guide/platform

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

这些层每个都执行支持特定操作系统功能的几个操作。每个层为其上面的层提供服务。让我们更详细地看一下。

Linux 内核层

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

Linux 内核负责管理安卓的核心功能,如进程管理、内存管理、安全性和网络。在安全性和进程管理方面,Linux 是一个经过验证的平台。安卓已经利用现有的 Linux 开源操作系统来构建其生态系统的坚实基础。每个安卓版本都有不同版本的底层 Linux 内核。Oreo 安卓版本已知使用 Linux 内核 3.18 或 4.9,而 Pie 版本已知使用 Linux 内核 4.4、4.9 或 4.14。安卓 Q 版本的目标是 Linux 内核 4.9、4.14 或 4.19。实际的内核取决于个别设备。

硬件抽象层

设备硬件功能通过硬件抽象层HAL)暴露给高级 Java 框架。HAL 由几个库模块组成,实现特定类型硬件组件的接口。这允许硬件供应商在不改变更高级别系统的情况下实现功能。

Android 架构中的下一层包括 Android 的本机库。这些库是用 C 或 C++编写的,帮助设备处理不同类型的数据。例如,SQLite 库用于存储和检索数据库中的数据。其他库包括媒体框架、WebKit、Surface Manager 和安全套接字库SSL)。

媒体框架库充当提供服务给其他底层库的主要接口。WebKit 库提供 Web 浏览器中的网页,Surface Manager 库维护图形。在同一层中,我们有Android 运行时ART)和核心库。ART 负责在 Android 设备上运行应用程序。术语运行时指的是从应用程序启动到关闭的时间。

Dalvik 虚拟机(DVM)

您在 Android 设备上安装的所有应用程序都是用 Java 编程语言编写的。当 Java 程序编译时,我们得到字节码。虚拟机VM)是一个充当操作系统的应用程序,也就是说,可以在 Mac 上运行 Windows 操作系统的实例,反之亦然,使用 VM。Java 虚拟机JVM)就是这样一个可以执行前面提到的字节码的 VM。但是 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 版本的棒棒糖开始,Dalvik 被 ART 取代。Android 早期版本使用 Dalvik 的即时JIT)编译(识别并动态编译频繁执行的操作为本机机器代码)。这些频繁使用的字节码的本机执行,称为跟踪,提供了显著的性能改进。

与 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 应用程序必须获得用户的权限才能访问敏感功能,例如互联网、拨号器等。这为用户提供了提前了解应用程序访问设备上哪些功能的机会。简而言之,它需要用户的许可才能执行任何恶意活动(窃取数据,破坏系统等)。

这个模型帮助用户防止攻击,但如果用户不知情并授予了很多权限,就会陷入麻烦(记住——当涉及在任何设备上安装恶意软件时,最薄弱的环节始终是用户)。

安卓中的权限模型

直到安卓 6.0 之前,用户需要在安装时授予权限。用户必须接受所有权限或者不安装应用程序。但是,从安卓 6.0 开始,用户在应用程序运行时授予权限。这种新的权限系统还允许用户更多地控制应用程序的功能,允许用户选择性地授予权限。例如,用户可以拒绝某个应用程序访问他们的位置,但允许访问互联网。用户可以随时通过转到应用程序的设置屏幕来撤销权限。从取证的角度来看,这意味着可以从设备中提取的信息类型不仅取决于设备和安装的应用程序,还取决于用户配置的权限。

应用程序沙箱

在 Linux 系统中,每个用户被分配一个唯一的用户标识符(UID),并且用户被隔离开来,以便一个用户无法访问另一个用户的数据。然而,特定用户下的所有应用程序都以相同的权限运行。同样,在安卓中,每个应用程序都作为一个独特的用户运行。换句话说,每个应用程序都被分配一个 UID 并作为一个独立的进程运行。这个概念确保了内核级别的应用程序沙箱。内核通过利用现有的 Linux 概念,如 UID 和组标识符(GID),来管理应用程序之间的安全限制。如果一个应用程序试图执行一些恶意操作——比如读取另一个应用程序的数据——这是不允许的,因为应用程序没有用户权限。因此,操作系统保护应用程序免受访问另一个应用程序数据的侵害。

安全的 IPC

安卓提供了安全的 IPC,通过它,一个应用程序中的一个活动可以向同一个或不同应用程序中的另一个活动发送消息。为了实现这一点,安卓提供了 IPC 机制:意图、服务、内容提供程序等。这对为安卓平台编写第三方应用程序的开发人员更为相关。在幕后,取证工具利用其中一些概念来获取设备信息。

应用程序签名

所有安装的应用程序都必须经过数字签名。开发人员只有在对应用程序进行签名后才能将其放置在谷歌的 Play 商店中。应用程序签名所使用的私钥由开发人员持有。使用相同的密钥,开发人员可以为他们的应用程序提供更新,在应用程序之间共享数据等。未经签名的应用程序如果尝试安装,将被谷歌 Play 或安卓设备上的软件包安装程序拒绝。在安卓 8.0 及以上版本中,用户必须导航到“安装未知应用程序”设置才能运行未经签名的应用程序,如下图所示:

在安卓系统中安装未知应用程序屏幕

现在我们对数字签名应用程序有了一些基本知识,让我们来看看安卓中的一个安全功能。

安全增强型 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,Google 规定大多数设备必须使用 FDE,前提是硬件符合一定的最低标准。加密是将数据使用秘密密钥转换为密文的过程。在 Android 设备上,FDE 指的是使用秘密密钥加密所有用户数据的过程。然后,该密钥由用户设置的个人识别号码PIN)/图案/密码加密。一旦设备加密,所有用户创建的数据在写入磁盘之前会自动加密,并且所有读取操作在返回给调用进程之前会自动解密数据。Android 中的 FDE 仅适用于嵌入式多媒体卡eMMC)和类似的将自身呈现为块设备的闪存设备。

从 Android 7.x 开始,Google 决定将加密功能从 FDE 转移到基于文件的加密FBE)。在 FBE 中,不同的文件使用不同的密钥进行加密。通过这样做,这些文件可以独立访问,无需解密完整分区。因此,系统现在可以在用户解锁手机之前显示打开通知或访问与引导相关的文件。

Android Keystore

Android Keystore 用于保护敏感的加密密钥,防止未经授权的访问。存储在 Keystore 中的密钥可用于执行加密操作,但永远无法从 Keystore 外部提取。硬件支持的 Keystore 在硬件级别提供安全性,即使操作系统被 compromise,硬件模块中的密钥仍然是安全的。

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:这是保存在安全数字(SD)卡上的所有信息的分区。它很有价值,因为它可能包含图片、视频、文件、文档等信息。

现在我们已经了解了 Android 文件层次结构并查看了其中的重要文件夹,让我们在下一节看看文件系统。

Android 文件系统

了解文件系统是取证方法论的一个重要部分。了解文件系统的属性和结构在取证分析过程中非常有用。文件系统是指数据存储、组织和从卷中检索的方式。基本安装可能基于一个分成多个分区的卷;在这里,每个分区可以由不同的文件系统管理。在 Linux 中,Android 使用挂载点,而不是驱动器(即C:E:)。

在 Linux 中,挂载是将附加文件系统连接到计算机当前可访问的文件系统的行为。在 Linux 中,文件系统不是通过驱动器名称访问的,而是组织成一个多级层次结构,顶部有一个名为root的目录。每当挂载时,每个新文件系统都添加到这个单一的文件系统树中。

无论文件系统存在于本地设备还是远程设备上都没有任何区别。一切都在以root开始的单一层次结构中。每个文件系统都定义了管理卷中文件的规则。根据这些规则,每个文件系统提供了不同的文件检索速度、安全性、大小等。Linux 使用多个文件系统,Android 也是如此。从取证的角度来看,了解 Android 使用的文件系统以及识别对调查具有重要意义的文件系统是很重要的。例如,存储用户数据的文件系统对我们来说是首要关注的,而不是用于启动设备的文件系统。

查看 Android 设备上的文件系统

Android 内核支持的文件系统可以通过检查proc文件夹中的filesystems文件的内容来确定。可以使用# cat /proc/filesystems命令查看此文件的内容:

Android 设备上的文件系统

在上述输出中,第一列告诉我们文件系统是否挂载在设备上。具有nodev属性的文件系统未挂载在设备上。

第二列列出了设备上存在的所有文件系统。简单的mount命令显示设备上可用的不同分区,如下所示:

Android 设备上的分区

接下来,让我们看看 Android 上常见的文件系统。

在 Android 上发现的常见文件系统

Android 中存在的文件系统主要可以分为三个主要类别,如下所示:

  • Flash 存储器文件系统

  • 基于媒体的文件系统

  • 伪文件系统

让我们详细看看每一个。

Flash 存储器文件系统

Flash 存储器是一种持续供电的非易失性存储器NVM),在没有电源供应的情况下保留数据。Flash 存储器可以按块擦除和重新编程。虽然支持的文件系统因设备和底层 Linux 内核而异,但常见的 Flash 存储器文件系统如下:

  • 扩展文件分配表exFAT)是微软专有的文件系统,用于闪存驱动器,如 USB 存储设备和 SD 卡。由于许可要求,它不是标准 Linux 内核的一部分。但仍然有一些制造商为该文件系统提供支持。

  • Flash 友好文件系统F2FS)于 2013 年 2 月发布,以支持运行 Linux 3.8 内核的三星设备。F2FS 依赖于优化 NAND Flash 存储器的日志结构方法。离线支持功能是该文件系统的一个亮点,尽管它仍然是临时的并且正在更新。

  • 另一个闪存文件系统 2YAFFS2)是一个开源的单线程文件系统,于 2002 年发布。它主要设计用于处理 NAND 闪存时的速度。YAFFS2 利用带外OOB),这在取证获取时通常无法正确捕获或解码,使得分析变得困难。我们将在第九章中进一步讨论这个问题,安卓数据提取技术。YAFFS2 曾经是最受欢迎的版本,并且仍然广泛用于安卓设备。YAFFS2 是一个日志结构的文件系统。即使在突然断电的情况下,数据完整性也得到了保证。2010 年,有一则公告称在 Gingerbread 之后的版本中,设备将从 YAFFS2 转移到第四扩展文件系统EXT4)。目前,YAFFS2 不受新内核版本的支持,但某些手机制造商可能仍然继续支持它。

  • 稳健文件系统RFS)支持三星设备上的 NAND 闪存。RFS 可以总结为文件分配表 16FAT16)或 FAT32 文件系统,通过事务日志启用日志记录。许多用户抱怨三星应该坚持使用 EXT4。RFS 已知会导致 Android 功能的延迟。

媒体为基础的文件系统是接下来的一个主题。

媒体为基础的文件系统

以下是一些安卓设备支持的媒体为基础的文件系统。

扩展文件系统EXT)于 1992 年专门为 Linux 内核引入,是最早的文件系统之一,它使用了虚拟文件系统。EXT2、EXT3 和 EXT4 是随后的版本。EXT3 相对于 EXT2 的主要优势是日志记录。使用 EXT3,如果出现意外关机,就不需要验证文件系统。EXT4 文件系统随着移动设备实现双核处理器而变得重要。YAFFS2 文件系统在双核系统上已知存在瓶颈。在安卓的 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 文件系统。它被几乎所有主要操作系统支持,包括 Windows、Linux 和 macOS。这使得这些系统能够轻松地读取、修改和删除安卓设备的 FAT32 部分上的文件。大多数外部 SD 卡都是使用 FAT32 文件系统格式化的。

观察以下输出,显示了/sdcard/secure/asec挂载点使用 VFAT 文件系统:

安卓中的挂载命令输出

最后一个类别是伪文件系统。

伪文件系统

伪文件系统,顾名思义,不是实际的文件,而是文件的逻辑分组。以下是安卓中一些重要的伪文件系统:

  • 根文件系统(rootfs)是安卓的主要组成部分之一,包含了启动设备所需的所有信息。当设备启动引导过程时,它需要访问许多核心文件,因此会挂载根文件系统。如前面的mount命令行输出所示,这个文件系统被挂载在/root文件夹)上。因此,这是所有其他文件系统逐渐挂载的文件系统。如果这个文件系统损坏了,设备就无法启动。

  • sysfs文件系统挂载了/sys文件夹,其中包含了设备配置的信息。以下输出显示了安卓设备中sys目录下的各种文件夹:

安卓系统中/sys 目录下的文件夹

由于这些文件夹中的数据大多与配置相关,这对于取证调查员通常并不是非常重要。但在某些情况下,我们可能需要检查手机上是否启用了特定设置,并在这种情况下分析这个文件夹可能是有用的。

请注意,每个文件夹都包含大量文件。通过取证获取数据是确保在检查过程中数据不被更改的最佳方法。

  • devpts文件系统提供了一个接口,用于在安卓设备上的终端会话。它被挂载在/dev/pts上。每当建立一个终端连接时,例如当adb shell 连接到安卓设备时,一个新的节点会在/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文件系统代表控制组。安卓设备使用这个文件系统来跟踪它们的任务。它们负责聚合任务并跟踪它们。这些数据通常在取证分析过程中并不是非常有用。

  • proc文件系统包含有关内核数据结构、进程和其他系统相关信息的信息,存储在/proc目录中。例如,/sys目录包含与内核参数相关的文件。同样,/proc/filesystems显示设备上可用文件系统的列表。以下命令显示了设备的中央处理器CPU)的所有信息:

在安卓设备上运行 cpuinfo 命令的输出。

同样,当您遍历这些文件时,还有许多其他有用的文件可以提供有价值的信息。

  • tmpfs文件系统是设备上的临时存储设施,它将文件存储在 RAM(易失性内存)中。使用 RAM 的主要优势是更快的访问和检索。但一旦设备重新启动或关闭,这些数据将不再可访问。因此,对于取证调查员来说,在设备重新启动之前检查 RAM 中的数据,或者通过 RAM 获取方法提取数据是很重要的。

今天的取证工具可以轻松地挂载这些文件系统,并在图形用户界面GUI)屏幕上显示内容,从而使取证调查员能够轻松地浏览和解析文件。在安卓取证的早期阶段,调查员通常需要运行一系列 Linux 或 Windows 命令来格式化和查看这些文件系统。

总结

在本章中,我们涵盖了安卓操作系统的基本特性、文件系统和其他在取证调查中有用的细节。我们了解了内置在安卓中的有趣的安全功能。与 iOS 不同,安卓存在多个变体,因为许多设备运行安卓操作系统,每个设备可能具有不同的文件系统和独特的特性。安卓是开放和可定制的事实也改变了数字取证的格局。这些知识将有助于理解取证获取技术。

在下一章中,我们将讨论如何在进行分析之前设置取证工作站。

第八章:Android 取证设置和数据提取前技术

在上一章中,我们介绍了 Android 架构、安全功能、文件系统和其他功能的基础知识。在开始审查之前建立一个完善的取证环境非常重要,因为这可以确保数据在您作为审查员的控制下得到保护。本章将解释建立数字取证审查环境的过程以及需要考虑的事项。在整个取证过程中,保持对取证环境的控制至关重要;这可以防止引入可能影响取证调查的污染物。

本章将涵盖以下主题:

  • 为 Android 建立取证环境

  • 连接 Android 设备到工作站

  • 屏幕锁定绕过技术

  • 获取 root 权限

为 Android 建立取证环境

作为取证员,在调查过程中可能会遇到各种手机。因此,有必要在基础环境上建立一个基本环境,以满足需求。同时,您始终保持对环境的完全控制以避免任何意外情况。建立适当的实验室环境是取证过程的重要组成部分。Android 取证设置通常包括以下步骤:

  1. 从一个全新或取证上的计算机环境开始。这意味着系统上要么没有其他数据,要么以一种方式包含,以防止其污染当前的调查。

  2. 安装连接到设备所需的基本软件。Android 取证工具和方法可以在 Windows、Linux 和 macOS 平台上运行。

  3. 获取设备访问权限。您必须能够启用设置或绕过设置,以允许从 Android 设备中提取数据。

  4. 使用本章和第九章《Android 数据提取技术》中定义的方法向设备发出命令。

以下部分提供了设置基本 Android 取证工作站的指导。

安装软件

Android 软件开发工具包(SDK)帮助开发世界构建、测试和调试在 Android 上运行的应用程序。Android SDK 附带 Android Studio,这是官方的集成开发环境(IDE),用于开发 Android 应用程序。Android Studio 提供了有价值的文档和其他工具,在调查 Android 设备时可以提供很大帮助。或者,您也可以仅下载平台工具,这是 Android SDK 的组件,包括可以与 Android 平台交互的工具,如 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 约为 718 MB,而且相对较重,后者只有 20 MB。

在 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:\文件夹中。

  3. 打开目录(C:\platform-tools),注意列出了以下工具:

Android 平台工具

这完成了基本的 Android 工具安装。如果您安装了完整版的 Android Studio 版本,您仍然应该在新安装的 Android 目录下看到平台工具文件夹。

创建 Android 虚拟设备

使用 Android Studio,您可以创建一个 Android 虚拟设备(AVD),也称为模拟器,开发人员在创建新应用程序时经常使用它;然而,从法医角度来看,模拟器也具有重要意义。在尝试了解应用程序在设备上的行为和执行方式时,模拟器非常有用。这在确认法医调查中发现的某些发现时可能会有所帮助。

此外,在运行在较旧平台上的设备上工作时,可以为相同平台设计一个模拟器。此外,在在真实设备上安装法医工具之前,可以使用模拟器来了解法医工具的工作方式以及如何更改 Android 设备上的内容。要在 Windows 工作站上创建一个新的 AVD,按照以下步骤进行:

  1. 打开 Android Studio,导航到工具 | AVD Manager。Android 虚拟设备管理器窗口如下截图所示:

Android 虚拟设备管理器

  1. 单击创建虚拟设备以创建一个新的虚拟设备。在随后的屏幕中,选择适当的硬件、系统映像、API 级别、AVD 名称等,然后继续。例如,以下截图显示选择了 Android Pie:

虚拟设备配置

  1. 设备成功创建后会显示确认消息。现在,选择 AVD 并单击播放按钮。

  2. 这应该启动模拟器。请注意,这可能需要几分钟,甚至更长时间,这取决于工作站的 CPU 和 RAM。模拟器在系统上消耗大量资源。成功启动后,AVD 将运行,如下截图所示:

Android 模拟器

从法医角度来看,分析师和安全研究人员可以利用模拟器的功能来了解文件系统、数据存储等。在模拟器上工作时创建的数据存储在名为android的文件夹中的主目录中。例如,在我们的示例中,我们之前创建的 Pixel_XL_API_28 模拟器的详细信息存储在C:\Users\Rohit\.android\avd\Pixel_XL_API_28.avd下。

在此目录下存在各种文件,以下是法医分析师感兴趣的文件:

  • cache.img:这是/cache分区的磁盘映像(记住我们在第七章中讨论过安卓设备的/cache分区)。

  • sdcard.img:这是 SD 卡分区的磁盘映像。

  • Userdata-qemu.img:这是/data分区的磁盘映像。/data分区包含有关设备用户的宝贵信息。

现在我们已经了解了设置环境的步骤,让我们将安卓设备连接到取证工作站。

将安卓设备连接到工作站

使用开源工具对安卓设备进行取证需要将设备连接到取证工作站。任何设备的取证都应该在取证工作站上进行。这意味着工作站严格用于取证,而不是个人使用。

请注意,每次将设备插入计算机时,都可能对设备进行更改;您必须始终全面控制与安卓设备的所有交互。

您应该按照以下步骤成功地将设备连接到工作站。请注意,写保护可能会阻止成功获取设备,因为可能需要向设备发送命令以获取信息。在尝试在真实证据上进行之前,应该在测试设备上验证所有以下步骤。

识别设备电缆

安卓设备的物理 USB 接口允许它连接到计算机共享数据,如歌曲、视频和照片。这个 USB 接口可能会因制造商和设备而有所不同。例如,一些设备使用迷你 USB,而另一些使用微型 USB 和 USB Type C。除此之外,一些制造商使用自己的专有格式,如 EXT-USB、EXT 微型 USB 等。获取安卓设备的第一步是确定需要什么样的设备电缆。

有不同类型,如迷你 USB、微型 USB 和其他专有格式。以下是最常用连接器类型的简要描述:

连接器类型 描述
Mini - A USB 大约 7 x 3 毫米大小,其中一个长边的两个角被抬起。
Micro - B USB 大约 6 x 1.5 毫米大小,两个角被切掉形成梯形。
同轴 它有一个中间竖起的圆孔。这个类别有不同大小,直径从 2 到 5 毫米不等。广泛用于诺基亚型号。
D 子迷你 它呈矩形形状,两个圆角。矩形的长度各不相同,但高度始终为 1.5 到 2 毫米。主要由三星和 LG 设备使用。

接下来,让我们快速看一下如何安装设备驱动程序。

安装设备驱动程序

为了正确识别设备,计算机可能需要安装某些驱动程序。没有必要的驱动程序,计算机可能无法识别并与连接的设备一起工作。问题在于,由于安卓允许制造商进行修改和定制,没有适用于所有安卓设备的通用驱动程序。每个制造商都会编写自己的专有驱动程序并通过互联网分发,因此重要的是识别需要安装的特定设备驱动程序。当然,一些安卓取证工具包(我们将在接下来的章节中讨论)确实带有一些通用驱动程序或一组最常用的驱动程序;它们可能无法与所有型号的安卓手机一起使用。

一些 Windows 操作系统可以在设备插入后自动检测并安装驱动程序,但更多时候会失败。所有制造商的设备驱动程序都可以在它们各自的网站上找到。

访问连接的设备

如果您还没有这样做,使用 USB 电缆将解锁的安卓设备直接连接到计算机。安卓设备将显示为新的驱动器,您将能够访问外部存储上的文件。如果设备被锁定,那么在这一点上,您将无法访问任何文件,并且可能需要使用“打开 USB 存储”选项,该选项可以在手机上启用,如下面的屏幕截图所示:

安卓 4.1 版本中的 USB 大容量存储

对于一些安卓手机(尤其是 HTC),当使用 USB 电缆连接时,设备可能会暴露多个功能。例如,如下面的屏幕截图所示,当连接 HTC 设备时,它会显示一个具有四个选项的菜单。默认选择是仅充电。当选择磁盘驱动器选项时,它会被挂载为磁盘驱动器:

HTC 手机 USB 选项

当设备被挂载为磁盘驱动器时,您将能够访问设备上的 SD 卡。从取证的角度来看,SD 卡具有重要价值,因为它可能包含对调查重要的文件;然而,存储在/data/data下的核心应用数据将保留在设备上,并且无法通过这些方法访问。

安卓调试桥

被认为是安卓取证中最关键的组件之一,安卓调试桥ADB)是一个命令行工具,允许您与安卓设备进行通信和控制。我们将在接下来的章节中详细了解 ADB;现在,我们将专注于对 ADB 的基本介绍。您可以在/platform-tools/下访问 ADB 工具。

在我们讨论 ADB 之前,我们需要了解USB 调试选项。

USB 调试

此选项的主要功能是在安装了安卓 SDK 的工作站和安卓设备之间启用通信。在三星手机上,您可以在设置|开发者选项下访问此选项,如下面的屏幕截图所示:

三星 S8 设备中的 USB 调试选项

其他安卓手机可能有不同的环境和配置功能。您可能需要通过访问构建模式来强制启用开发者选项选项。

然而,从 Android 4.2 开始,开发者选项菜单被隐藏起来,以确保用户不会意外启用它。要启用它,进入设置|关于手机,然后点击构建号字段七次。之后,开发者选项将在设置菜单中可用。在 Android 4.2.2 之前,启用此选项是与设备通过 ADB 通信的唯一要求;然而,从 Android 4.2.2 开始,Google 引入了安全的 USB 调试选项。此功能只允许用户明确授权的主机使用 ADB 连接到设备。

因此,当您通过 USB 将设备连接到新的工作站以访问 ADB 时,您需要首先解锁设备,并通过在确认窗口中按下 OK 来授权访问,如下面的屏幕截图所示。如果选中了“始终允许此计算机”,设备将不会在将来提示授权:

安全的 USB 调试

当选择 USB 调试选项时,设备将在后台运行adb 守护程序adbd),并将不断寻找 USB 连接。该守护程序通常在非特权 shell 用户帐户下运行,因此不会提供对完整数据的访问;但是,在 rooted 手机上,adbd将在 root 帐户下运行,因此可以访问所有数据。不建议您 root 设备以获得完全访问权限,除非所有其他取证方法均失败。如果选择 root Android 设备,则必须在尝试在真实证据上进行之前对方法进行充分记录和测试。Rooting 将在本章末讨论。

在安装了 Android SDK 的工作站上,adbd将作为后台进程运行。同样,在同一工作站上,可以通过发出adb命令从 shell 调用的客户端程序也将运行。当启动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命令之前执行和理解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 手机上,您可以通过导航到设置|显示|屏幕超时来访问此设置。

除此之外,如第一章中所述,移动取证简介,需要将设备与网络隔离,以确保远程擦除选项不适用于设备。安卓设备管理器允许远程擦除或锁定手机。这可以通过登录配置在手机上的谷歌账户来完成。关于此的更多细节将在以下部分提供。如果安卓设备未设置允许远程擦除,只能使用安卓设备管理器锁定设备。市场上还有一些移动设备管理MDM)软件产品,允许用户远程锁定或擦除安卓设备。其中一些可能不需要在设备上启用特定设置。

使用可用的远程擦除软件,可以删除所有数据,包括电子邮件、应用程序、照片、联系人和其他文件,以及存储在 SD 卡上的文件。为了使设备与网络隔离,您可以将设备置于飞行模式并禁用 Wi-Fi 作为额外预防措施。启用飞行模式并禁用 Wi-Fi 效果很好,因为设备将无法通过蜂窝网络进行通信,也无法通过 Wi-Fi 访问。从手机中取出 SIM 卡也是一个选择,但这并不能有效地阻止设备通过 Wi-Fi 或其他蜂窝网络进行通信。要将设备置于飞行模式,按住关机按钮并选择飞行模式。

所有这些步骤都可以在安卓设备未锁定时完成;然而,在调查过程中,我们经常遇到已锁定的设备。因此,了解如何绕过安卓设备上启用的锁定代码是很重要的。

屏幕锁定绕过技术

由于用户意识的增加和功能的便利性,使用密码选项锁定安卓设备的使用量呈指数级增长。这意味着在法证调查中绕过设备的屏幕锁定变得越来越重要。迄今为止讨论的屏幕锁定绕过技术的适用性取决于情况。请注意,其中一些方法可能导致我们对设备进行更改。确保您在非证据性安卓设备上测试和验证所有列出的步骤。您必须获得授权对设备进行必要的更改,记录所有采取的步骤,并能够描述采取的步骤,如果需要法庭证词。

目前,安卓提供了三种屏幕锁定机制。虽然有一些设备提供了语音锁定、面部识别锁定和指纹锁定选项,但我们将限制讨论以下三种选项,因为这些是所有安卓设备上最广泛使用的:

  • 图案锁定:用户在手机上设置一个图案或设计,必须绘制相同的图案才能解锁设备。安卓是第一款引入图案锁定的智能手机。

  • PIN 码:这是最常见的锁定选项,在许多手机上都可以找到。PIN 码是一个需要输入的四位数字,用于解锁设备。

  • 密码:这是一个包含字母和数字的密码。与需要四位数字的 PIN 码不同,包含字母和数字的密码更加安全。

以下部分详细介绍了一些绕过这些安卓锁定机制的技术。根据情况,这些技术可能有助于调查人员绕过屏幕锁定。

使用 ADB 绕过屏幕锁定

如果 Android 设备上似乎启用了 USB 调试,最好利用它通过 USB 连接与adb连接,如本章前面讨论的那样。您应该将设备连接到取证工作站并发出adb设备命令。如果设备出现,这意味着 USB 调试已启用。如果 Android 设备被锁定,您必须尝试绕过屏幕锁定。当 USB 调试启用时,以下两种方法可能允许您绕过屏幕锁定。

删除 gesture.key 文件

删除gesture.key文件将删除设备上的图案锁定;然而,重要的是要注意,这将永久改变设备,因为图案锁已经消失。如果您正在进行秘密行动,应该考虑这一点。以下显示了该过程的执行方式:

  1. 使用 USB 电缆将设备连接到取证工作站(在我们的示例中是 Windows 机器)。

  2. 打开命令提示符并执行以下指令:

adb.exe shell
cd /data/system rm gesture.key  
  1. 重新启动设备。如果图案锁仍然出现,只需绘制任意设计,设备应该可以轻松解锁。

此方法仅在设备已获取 root 权限时有效。此方法可能在未获取 root 权限的设备上无法成功。未经适当授权不应对 Android 设备进行 root 操作,因为这会改变设备。

更新 settings.db 文件

要更新settings.db文件,请按以下步骤操作:

  1. 使用 USB 电缆将设备连接到取证工作站。

  2. 打开命令提示符并执行以下操作:/data/data/com.android.providers.settings/databases sqlite3 settings.db

  1. 退出并重新启动设备。

  2. Android 设备应该是解锁的。如果没有解锁,请尝试按照前面解释的方法删除gesture.key

我们将在下一节中查看恢复模式和 ADB 连接。

检查修改后的恢复模式和 ADB 连接

在 Android 中,恢复是指专用分区,恢复控制台位于其中。恢复的两个主要功能是删除所有用户数据和安装更新。例如,当您恢复出厂设置手机时,恢复启动并删除所有数据。同样,当要在手机上安装更新时,就在恢复模式下进行。

有许多热心的 Android 用户通过修改后的恢复模块安装自定义 ROM。这个修改后的恢复模块主要用于简化安装自定义 ROM 的过程。恢复模式可以通过不同的方式访问,具体取决于设备制造商;关于哪种方法适用于哪种制造商的设备的信息在互联网上很容易找到。通常,这是通过同时按下不同的键来完成的,例如音量按钮和电源按钮。一旦进入恢复模式,将设备连接到工作站并尝试访问adb连接。如果设备的恢复模式没有被修改,您可能无法访问adb连接。设备的修改后的恢复版本向用户提供不同的选项,如下图所示:

接下来,我们将看到如何刷入恢复分区。

刷入新的恢复分区

有机制可用于使用修改后的镜像刷入 Android 设备的恢复分区。fastboot 实用程序简化了这一过程。Fastboot 是一个诊断协议,随 SDK 软件包一起提供,主要用于通过 USB 连接从主机计算机修改闪存文件系统。为此,您需要在启动加载程序模式下启动设备,其中只执行最基本的硬件初始化。

一旦在设备上启用了协议,它将通过命令行接收到的特定一组命令,这些命令是通过 USB 电缆发送的。刷新或使用存储在计算机上的二进制映像重写分区是允许的一种命令。刷新恢复后,将设备引导到恢复模式,挂载/data/system分区,并使用adb删除gesture.key文件。重新启动手机,您应该能够绕过屏幕锁定;但是,这仅在设备引导加载程序已解锁时才有效。此外,刷新会永久更改设备。您可以使用 fastboot boot命令临时引导到恢复映像以删除密钥文件,而不会永久更改恢复分区。

使用自动化工具

市场上有几种用于解锁 Android 设备的自动化解决方案。商业工具,如 Cellebrite 和 XRY,能够绕过屏幕锁定,但大多数工具需要启用 USB 调试。现在我们将介绍如何使用 UFED 用户锁代码恢复工具解锁 Android 设备。该工具仅适用于支持 USB OTG 的设备。此过程还需要 UFED 摄像头、Cable No. 500-Bypass lock 和 Cable No. 501-Bypass lock。安装工具后,请按以下步骤解锁 Android 设备:

  1. 在工作站上运行该工具,并按照下面的屏幕截图按1

UFED 用户锁代码恢复工具

  1. 现在,将 Cable No. 500-Bypasslock 的 A 端连接到工作站的 USB 端口。还要将 Cable No. 500-Bypasslock 的 B 端连接到 Cable No. 501-OTG,然后将另一端连接到设备。

  2. 连接后,该工具会提示您选择恢复配置文件。选择[1]手动选择恢复配置文件

  3. 现在,选择设备上使用的锁类型和恢复配置文件,并按照屏幕上的说明进行操作。

  4. 之后,请确保键盘出现在设备屏幕上,并且已准备好接受 PIN 码。

  5. 关闭可能出现的任何消息窗口。按1并按Enter。现在,通过输入随机输入进行五次错误的登录尝试,并在设备底部单击忘记图案。

  6. 按照屏幕上的说明操作,等待摄像头窗口打开,然后单击摄像头窗口。

  7. 使用光标通过将绿色方块放在设备屏幕上的任何非空区域上来选择该区域,例如,在屏幕上选择任何数字。这是工具用来检测设备是否已解锁的方法。按Enter开始该过程。

  8. 该工具将尝试多种组合来解锁设备。一旦解锁,它将提示您结束该过程。

现在我们将学习 Android 设备管理器以及如何使用它来解锁设备。

使用 Android 设备管理器

大多数最新的 Android 手机都配备了一个名为 Android 设备管理器的服务,它可以帮助设备所有者找到他们丢失的手机。该服务还可以用于解锁设备;但是,只有在您知道在设备上配置的 Google 帐户凭据时才能实现。如果您可以访问帐户凭据,那么请按照以下步骤解锁设备:

  1. 在您的工作站上访问google.com/android/devicemanager

  2. 使用在设备上配置的 Google 帐户登录。

  3. 选择您需要解锁的设备,然后单击锁定,如下面的屏幕截图所示:

Android 设备管理器

  1. 输入临时密码,然后再次单击锁定。

  2. 成功后,在设备上输入临时密码以解锁它。

这可以在不知道登录保存在哪台计算机上的凭据的情况下完成(即,嫌疑人的 PC)。

使用 Find My Mobile 绕过(仅适用于三星手机)

如果您正在处理三星设备,使用“查找我的手机”是一种值得尝试的技术;但是,只有在设备所有者已经登录到设备上的三星帐户并且您知道在设备上配置的三星凭据时才能使用。

要开始该过程,请从 Web 浏览器访问“查找我的手机”服务,然后使用在设备上注册的 Samsung 帐户凭据登录,如下所示:

  1. 点击位于左侧的锁定我的屏幕选项:

  1. 现在,输入任何临时 PIN 码,然后点击“锁定”按钮。(对于某些设备,您也可能会看到“解锁我的屏幕”选项,它也具有相同的作用)。现在可以使用之前设置的临时 PIN 码解锁手机。

接下来,让我们来看一下污迹攻击。

指纹攻击

在极少数情况下,污迹攻击可能用于推断触摸屏移动设备的密码。这种攻击依赖于识别用户手指留下的污迹。虽然这可能提供了一种绕过方法,但必须说,污迹攻击不太可能成功,因为大多数 Android 设备都是触摸屏,并且使用设备时也会留下污迹;然而,已经证明,在适当的光线下,留下的污迹可以很容易地被检测到,如下截图所示。

通过分析污迹,我们可以辨别用于解锁屏幕的图案。这种攻击更有可能在识别 Android 设备上的图案锁时起作用。在某些情况下,根据屏幕的清洁程度,也可以恢复 PIN 码。因此,在取证调查期间,应该在首次处理设备时注意确保屏幕没有被触摸:

在适当的光线下可见的设备上的污渍

现在我们将看一下下一个方法,即忘记密码选项。

使用忘记密码/忘记图案选项

如果您知道设备上配置的主要 Gmail 地址的用户名和密码,您可以更改设备上的 PIN 码、密码或滑动。在尝试多次解锁屏幕失败后,Android 会提供一个名为“忘记图案?”或“忘记密码?”的选项,如下截图所示:

Android 设备上的忘记图案选项

点击该链接并使用 Gmail 用户名和密码登录。这将允许您为设备创建新的图案锁或密码。

请注意,这仅适用于运行 Android 4.4 或更早版本的设备。

绕过第三方锁屏,进入安全模式

如果屏幕锁是第三方应用程序而不是内置锁,则可以通过进入安全模式并禁用它来绕过它。要在 Android 4.1 或更高版本的设备上进入安全模式,请按住电源按钮直到出现电源选项菜单。然后,按住电源按钮,系统会提示您重新启动 Android 设备进入安全模式。点击确定按钮,如下截图所示:

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 的设备上,可以通过崩溃屏幕 UI 来绕过密码锁屏(而不是 PIN 或图案锁)。可以通过执行以下步骤来实现,如android.gadgethacks.com/所述:

  1. 在锁定屏幕上点击紧急呼叫选项,然后在拨号屏幕上输入任意随机输入(例如,10 个星号)。

  2. 双击字段以突出显示输入的文本,如下截图所示,并选择复制。现在,将其粘贴到相同的字段中:

崩溃锁定屏幕 UI

  1. 重复此过程以添加更多字符。直到双击字段不再突出显示字符为止。

  2. 返回到锁定屏幕,打开相机快捷方式。现在,下拉通知屏幕,点击设置图标。然后会提示你输入密码。

  3. 按住输入字段并选择粘贴,多次重复此过程。一旦足够的字符被粘贴到字段中,锁定屏幕将崩溃,允许您访问设备。

现在,让我们看看一些更多的技术。

其他技术

所有上述技术和可用的商业工具对任何法医检查员都是有用的,比如你,试图访问 Android 设备上的数据;然而,可能会出现这些技术都无法使用的情况。在商业和开源解决方案失败时,可能需要使用芯片脱落和 JTAG 等技术来获取设备的完整物理镜像。这里包括了这些技术的简要描述。

芯片取下技术是从电路中取下存储芯片并尝试读取它,而 JTAG 技术涉及探测 JTAG 测试访问端口(TAPs)并焊接连接器到 JTAG 端口,以便从设备存储器中读取数据。芯片取下技术更具破坏性,因为一旦芯片从设备中取下,就很难将设备恢复到其原始的功能状态。此外,需要专业知识小心地从电路板上去除芯片。取下芯片所需的热量也可能损坏或破坏存储在芯片上的数据,这意味着只有在数据无法通过开源或商业工具检索或设备已经损坏无法修复时才应使用这种技术。使用 JTAG 技术时,JTAG 端口帮助您访问存储芯片,以检索数据的物理图像,而无需取下芯片。要关闭设备上的屏幕锁定,您可以确定锁定代码存储在物理存储转储中的位置,关闭锁定,并将数据复制回设备。商业工具,如 Cellebrite Physical Analyzer,可以接受来自芯片取下和 JTAG 获取的.bin文件,并为您破解锁定代码。一旦代码被手动移除或破解,您可以使用正常的技术分析设备。

芯片取下和 JTAG 技术都需要进行广泛的研究和经验,才能在真实设备上尝试。关于设备上的 JTAG 和芯片取下的重要资源可以在forensicswiki.xyz/page/Main_Page找到。

在本节中,我们研究了绕过 Android 设备屏幕锁定的各种方法。现在我们将了解什么是 Android Root。

获得 Root 访问权限

作为移动设备取证检查员,了解与扭曲和调整设备有关的一切是至关重要的。这将帮助您详细了解设备的内部运作,并了解您在调查过程中可能遇到的许多问题。对 Android 手机进行 Root 已经成为一种常见现象,您可以预期在取证检查中会遇到已 Root 的手机。在适用的情况下,您可能还需要对设备进行 Root 以获取取证检查的数据。这意味着了解 Root 设备的方方面面以及它们与其他手机的区别非常重要。以下部分涵盖了有关 Android Root 和其他相关概念的信息。

什么是 Rooting?

类 Unix 操作系统中的默认管理帐户称为root。在 Linux 中,root 用户有权启动/停止任何系统服务,编辑/删除任何文件,更改其他用户的权限等。我们已经了解到 Android 使用 Linux 内核,因此大多数 Linux 概念也适用于 Android;但是,大多数 Android 手机默认情况下不允许您以 root 用户身份登录。

Rooting Android 手机就是为了获得对设备的访问权限,以执行在设备上通常不允许的操作。制造商希望设备对普通用户以某种方式进行功能。Rooting 设备可能会使保修失效,因为使用 Root 会使系统面临漏洞,并为用户提供超级用户功能。

想象一下,一个恶意应用程序获得了对整个 Android 系统的 Root 访问权限。请记住,在 Android 中,每个应用程序都被视为单独的用户,并被分配一个 UID。这意味着应用程序只能访问有限的资源,并且应用程序隔离的概念得到了执行。基本上,Rooting Android 设备允许超级用户功能,并为 Android 设备提供开放访问。

超级用户权限类似于 Windows 机器上的管理员权限,并且允许特权访问以执行普通用户无法执行的操作。在移动设备中,这种超级用户访问是被设计禁用的,但对手机进行 root 可以让您获得这种特权。

了解 root 过程

尽管硬件制造商试图施加足够的限制来限制对 root 的访问,但黑客们总是找到不同的方法来获取 root 权限。获取 root 权限的过程取决于底层设备制造商的不同;然而,root 任何设备通常涉及利用设备固件中的安全漏洞,然后将su(超级用户)二进制文件复制到当前进程路径中的位置(/system/xbin/su),并使用chmod命令授予它可执行权限。

为了简单起见,想象一下一个 Android 设备有三到四个分区,其中运行的程序与 Android 并不完全相关(Android 只是其中之一)。

引导加载程序位于第一个分区中,是手机开机时运行的第一个程序。这个引导加载程序的主要工作是引导其他分区并加载 Android 分区,默认情况下通常称为 ROM。要查看引导加载程序菜单,需要特定的按键组合,例如按住电源按钮并按音量上按钮。此菜单提供选项,让您可以引导到其他分区,如恢复分区。

恢复分区处理安装手机升级的工作,这些升级直接写入 Android ROM 分区。这是您在设备上安装任何官方更新时看到的模式。设备制造商确保只有通过恢复分区安装官方更新。这意味着绕过此限制将允许您安装/刷写任何解锁的 Android ROM。修改后的恢复程序不仅允许更容易的 root 过程,还提供了在正常恢复模式中看不到的各种选项。以下截图显示了正常恢复模式:

正常的 Android 系统恢复模式

以下截图显示了修改后的恢复模式:

修改后的恢复模式

在 Android 世界中最常用的恢复程序是 Clockwork 恢复,也称为ClockworkMod。大多数 root 方法都是通过向恢复分区刷写修改后的恢复开始的。之后,您可以发出更新,这可以对设备进行 root;但是,您不需要手动执行所有操作,因为大多数型号都提供了可以一键 root 您的手机的软件。

从 Android 7.x 开始,Google 开始严格执行设备上的验证启动。验证启动保证设备上的软件在启动到正常模式之前没有被修改。这是以这样一种方式实现的,即每个阶段在执行之前都会验证下一个阶段的完整性和真实性。如果特定分区或段被修改,完整性检查将失败,手机可能无法启动到正常模式。有关验证启动的更多信息,请访问source.android.com/security/verifiedboot/verified-boot

这也意味着对这些 Android 设备进行 root 将会非常困难,因为 root 涉及调整 Android 操作系统。Marshmallow 是第一个提供系统完整性警报的 Android 版本,但自 Android 7.x 以来,这已成为强制性的。

对 Android 设备进行 root

现在我们将看看 root Android 设备的不同方法。影响您选择方法的主要因素是底层引导加载程序是否已锁定。在具有解锁引导加载程序的设备上获得 root 访问权限非常容易,而在具有锁定引导加载程序的设备上获得 root 访问权限则不那么直接,这意味着解锁 Android 手机的引导加载程序通常是 rooting 和刷写自定义 ROM 的第一步。这可以通过 fastboot 模式(在前面的部分中讨论)或按照特定供应商的引导加载程序解锁过程来完成。一旦设备的引导加载程序已解锁,下一步是复制su二进制文件并授予其可执行权限。有很多种方法可以做到这一点。

以下是如何 root 三星 Galaxy S7(国际版 SM-G930F/FD/X,韩国版 SM-G930K/L/S 和加拿大版 SM-G930W8 Exynos 型号):

  1. 确保在开发者选项中启用 OEM 解锁。

  2. 下载 ODIN(可在build.nethunter.com/samsung-tools/Odin_3.12.3.zip找到),并将存档内容提取到您选择的目录中。

  3. 下载 TWRP 镜像(可在twrp.me/samsung/samsunggalaxys7.html找到)。

  4. 将您的设备重新启动到下载模式。要做到这一点,当您的设备重新启动时,按住音量减+主页按钮。一旦看到下载模式警告屏幕,请按音量上键继续。

启动 Odin 并将 TWRP 镜像放入 AP 插槽;不要忘记禁用自动重启。开始刷写恢复。

  1. 要退出下载模式,请按住音量减+主页+电源键;当屏幕变黑时,立即将音量减换成音量加。

  2. 通过向右滑动允许系统修改。

  3. 下载 SuperSU(可在download.chainfire.eu/supersu找到)。

  4. 通过 MTP 将带有 SuperSU 的存档传输到设备,并通过相应的 TWRP 选项进行安装。

Rooting 是一个高度特定于设备的过程,因此取证调查人员在对任何 Android 设备应用这些技术之前需要谨慎。对设备进行 root 处理既有优点也有缺点。以下是 rooting 的优点:

  • Rooting 允许修改设备上的软件到最深层次,例如,您可以对设备的 CPU 进行超频或降频。

  • 它允许绕过运营商、制造商等对设备施加的限制。

  • 对于极端定制,可以下载并安装新的定制 ROM。

以下是 rooting 的缺点:

  • 对设备进行 root 处理必须非常小心,因为错误可能导致手机软件无法修复,使设备变成无用的砖头。

  • Rooting 可能会使设备的保修失效。

  • Rooting 会增加对恶意软件和其他攻击的暴露。具有对整个 Android 系统访问权限的恶意软件可能会造成严重破坏。

一旦设备被 rooted,诸如超级用户应用之类的应用程序就可以提供和拒绝 root 权限。该应用程序可以帮助您在设备上授予和管理超级用户权限,如下面的屏幕截图所示:

应用程序请求 root 访问权限

现在我们来看看 root 访问权限。

Root 访问权限 - ADB shell

普通的 Android 手机不允许您访问设备上的某些目录和文件。例如,尝试在未 root 的 Android 设备上访问/data/data文件夹。您将看到以下消息:

未经 root 访问权限的权限拒绝

在 rooted 手机上,您可以通过发出以下命令以 root 身份运行adb shell:

C:\android-sdk\platform-tools>adb.exe root 

以下屏幕截图显示了前面命令的输出:

在 rooted 设备上成功执行 shell 命令

因此,对手机进行 root 操作可以让您访问通常无法访问的文件夹和数据。还要注意,#符号表示 root 或超级用户访问权限,而$表示普通用户,如前面的命令行所示。

安卓 7.0(牛轧糖)及更高版本支持基于文件的加密FBE),允许使用不同的密钥加密不同的文件。对于像您这样的取证调查人员,重要的是要注意,不可能对启用 FBE 的设备应用永久的 root 以进行获取。相反,建议您使用自定义恢复方法,因为恢复分区以 root 权限运行。

总结

在本章中,我们学习了如何在对安卓设备进行调查之前设置适当的取证工作站。首先要有一个干净的取证工作站,上面安装了必要的基本软件和设备驱动程序。如果取证获取的方法需要解锁安卓设备,你需要确定最佳的方法来获取设备访问权限。如果设备启用了 USB 调试功能,那么绕过屏幕锁定就很容易。我们学习了各种屏幕锁定绕过技术,并帮助您确定在不同情况下使用哪种技术。根据取证获取的方法和调查的范围,对设备进行 root 操作应该可以完全访问设备上的文件。我们还学习了关于 root 操作以及如何使用它来完全访问设备文件系统并执行通常不允许的操作。

现在,已经涵盖了获取安卓设备访问权限的基本概念,我们将介绍获取技术,并描述如何使用每种方法提取数据,详见《第九章》《安卓数据提取技术》。

第九章:Android 数据提取技术

使用第八章中解释的任何屏幕锁定绕过技术,Android 法证设置和数据提取技术,检查员可以尝试访问被锁定的设备。一旦设备可访问,下一个任务是提取设备上的信息。这可以通过将各种数据提取技术应用于 Android 设备来实现。

本章将帮助您识别 Android 设备上的敏感位置,并解释可以应用于设备以提取必要信息的各种逻辑和物理技术。

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

  • 理解数据提取技术

  • 手动数据提取

  • 逻辑数据提取

  • 物理数据提取,包括成像 Android 设备和 SD 卡、JTAG 和芯片脱落技术

理解数据提取技术

驻留在 Android 设备上的数据可能是公司内部调查的一部分,也可能是民事、刑事或内部调查的一部分。在处理涉及 Android 设备的调查时,作为法证检查员,您需要注意在法证过程中需要处理的问题;这包括确定是否允许 root 访问(通过同意或法律授权),以及在调查期间可以提取和分析哪些数据。例如,在涉及跟踪的刑事案件中,法院可能只允许提取和分析嫌疑人所拥有的 Android 设备上的短信、通话记录和照片。在这种情况下,最好只逻辑捕获这些特定项目。然而,最好从设备中获取完整的物理数据提取,并仅检查法院允许的区域。您永远不知道您的调查可能会引向何处,最好立即从设备中获取尽可能多的数据,而不是希望在同意范围发生变化时能够获得完整的图像。Android 设备上的数据提取技术可以分为三种类型:

  • 手动数据提取

  • 逻辑数据提取

  • 物理数据提取

正如第一章移动取证简介中所述,手动提取涉及正常浏览设备并捕获任何有价值的信息,而逻辑提取涉及访问文件系统,物理提取则是提取设备的逐位图像。这些类型的提取方法将在接下来的章节中详细描述。

有些方法可能需要设备被 root 才能完全访问数据。每种方法都有不同的影响,其成功率将取决于所使用的工具和方法,以及设备的制造和型号。

手动数据提取

这种提取方法涉及您利用移动设备的正常用户界面来访问存储器中的内容。您将通过访问不同的菜单来浏览设备,以查看通话记录、短信和即时通讯聊天等详细信息。每个屏幕的内容都通过拍照来捕获,并可以作为证据呈现。

这种类型的考察的主要缺点是只有通过操作系统(在 UI 模式下)可访问的文件才能被调查。在手动检查设备时必须小心,因为很容易按错按钮而擦除或添加数据。手动提取应该作为验证使用其他方法提取的结果的最后手段。某些情况可能需要您首先进行手动检查。这可能包括生死关头或失踪人员的案件,快速扫描设备可能会引导警方找到个人。

逻辑数据提取

逻辑数据提取技术通过与操作系统交互和访问文件系统来提取设备上的数据。这些技术很重要,因为它们提供有价值的数据,适用于大多数设备,并且易于使用。再次,当提取数据时,root 权限的概念再次出现。逻辑技术实际上不需要 root 权限来提取数据。但是,在设备上具有 root 权限允许您访问设备上的所有文件。这意味着在非 root 设备上可能提取一些数据,而 root 权限将打开设备并提供对设备上所有文件的访问。因此,在设备上具有 root 权限将极大地影响可以通过逻辑技术提取的数据的数量和类型。以下部分将解释可以用来从安卓设备逻辑提取数据的各种技术。

ADB 拉取数据提取

如前所述,adb是一个命令行工具,可帮助您与设备通信以检索信息。使用adb,您可以从设备上的所有文件或您感兴趣的相关文件中提取数据。这是逻辑提取的最常用技术。

要通过adb访问安卓设备,必须启用 USB 调试选项。从安卓 4.2.2 开始,由于安全的 USB 调试,连接到设备的主机也必须经过授权。如果设备被锁定且未启用 USB 调试,请尝试使用第八章 安卓取证设置和数据提取前技术中解释的技术来绕过屏幕锁定。

作为法证检查员,重要的是要了解数据在安卓设备上的存储方式,并理解重要和敏感信息的存储位置,以便相应地提取数据。应用程序数据通常包含大量可能与调查相关的用户数据。应该检查与感兴趣的应用程序相关的所有文件,如第十章 安卓数据分析和恢复中所解释的那样。应用程序数据可以存储在以下位置之一:

  • 共享偏好: 这里以轻量级 XML 格式存储数据的键值对。共享偏好文件存储在应用程序/data目录的shared_pref文件夹中。

  • 内部存储: 这里存储的数据是私有的,存在于设备的内部存储器中。保存在内部存储器中的文件是私有的,其他应用程序无法访问。

  • 外部存储: 这里存储的数据是设备外部存储器中的公共数据,通常不实施安全机制。这些数据可以在/sdcard目录中找到。

  • SQLite 数据库: 这些数据位于/data/data/PackageName/数据库中。通常以.db文件扩展名存储。可以使用 SQLite 浏览器(sourceforge.net/projects/sqlitebrowser/)查看 SQLite 文件中的数据,或者通过在相应文件上执行必要的 SQLite 命令来查看。

每个安卓应用程序都使用前述的一种或多种数据存储选项在设备上存储数据。因此,联系人应用程序将在其包名下的/data/data文件夹中存储有关联系人详细信息的所有信息。请注意,/data/data是设备内部存储的一部分,在正常情况下,所有应用程序都安装在这里。一些应用程序数据将驻留在 SD 卡和/data/data分区中。使用adb,我们可以使用adb pull命令提取此分区中的数据以进行进一步分析。再次强调,这个目录只能在具有 root 权限的手机上访问。

在 Android 7.0(Nougat)中,引入了一种新的存储类型,称为设备加密存储,允许应用程序在此存储中存储某些类型的数据。因此,您将注意到新的文件路径,如misc_demisc_cesystem_desystem_ce/data文件夹下。从取证的角度来看,这是一个非常重要的变化,因为这也意味着在运行 Android Nougat 的设备上,/data/data不是存储工件的唯一位置,例如,

旧设备上的短信数据位置:/data/com.android.providers.telephony/databases/smsmms.db,Nougat 设备上的短信数据位置:/user_de/0/com.android.providers.telephony/databases/smsmms.db

在 rooted 手机上,可以执行 Dropbox 应用程序的databases文件夹上的adb pull命令,如下所示:

adb pull 命令

同样,在 rooted 手机上,整个/data文件夹可以以这种方式被拉取。如下截图所示,Android 设备上完整的/data目录可以被复制到机器上的本地目录。整个data目录在 97 秒内被提取出来。提取时间将取决于/data中数据的数量。

从取证工作站提取的/data 目录

在非 rooted 设备上,对/data目录的pull命令不会提取文件,如下面的输出所示,因为 shell 用户没有权限访问这些文件:

非 rooted 设备上的 ADB pull 命令

通过上述过程从 rooted 手机复制的数据保持其目录结构,因此允许调查人员浏览必要的文件以获取信息。通过分析各个应用程序的数据,取证专家可以收集影响调查结果的关键信息。请注意,在取证工作站上本地检查文件夹将改变内容的日期和时间。您应该复制原始输出以用于日期/时间比较。

使用 SQLite Browser 查看数据

SQLite Browser 是一个在分析提取的数据过程中有所帮助的工具。SQLite Browser 允许您探索具有以下扩展名的数据库文件:.sqlite.sqlite3.sqlitedb.db.db3。使用 SQLite Browser 的主要优势是它以表格形式显示数据。

导航到文件 | 打开数据库,使用 SQLite Browser 打开.db文件。如下截图所示,有三个主要选项卡:数据库结构、浏览数据和执行 SQL。浏览数据选项卡允许您查看.db文件中不同表中的信息。

我们在分析过程中将主要使用这个选项卡。另外,诸如 Oxygen Forensic SQLite Viewer 之类的工具也可以用于相同的目的。从数据库文件中恢复已删除的数据是可能的,并将在第十章 Android 数据分析和恢复中进行解释。

SQLite Browser

以下部分将介绍如何识别重要数据,并手动从 Android 手机中提取各种详细信息。在早期章节中已经介绍了如何访问 Android 终端。在接下来的部分中,我们将直接开始从那里获取设备信息。

提取设备信息

了解您的 Android 设备的详细信息,如型号、版本等,将有助于您的调查。例如,当设备受到物理损坏,这会阻止对设备信息的检查时,您可以通过在/system文件夹下执行以下命令来获取有关设备的详细信息:

# cat build.prop

这可以在下面的截图中看到:

build.prop 文件

提取设备信息后,我们现在将提取通话记录。

提取通话记录

访问手机的通话记录通常在调查过程中需要确认某些事件。通话记录的信息存储在位于/data/data/com.android.providers.contacts/databases/下的contacts2.db文件中。如前所述,您可以使用 SQLite Browser 在将其提取到取证工作站上的本地文件夹后查看此文件中的数据。让我们看看如何按照以下步骤提取通话记录:

  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 Browser(通过导航到文件|打开数据库)打开contacts2.db文件,并浏览不同表中的数据。contacts2.db文件中的通话表提供有关通话历史的信息。以下屏幕截图突出显示了通话历史以及名称、号码、持续时间和日期:

在运行 Android 7.0(Nougat)的设备上,通话记录数据已从contacts2.db文件中移出。在这些设备上,通话记录数据可以在/data/com.android.providers.contacts/databases/calllog.db中访问

提取短信/彩信

在调查过程中,您可能会被要求检索发送到特定移动设备的文本消息。因此,重要的是要了解详细信息存储在何处以及如何访问数据。mmssms.db文件位于/data/data/com.android.providers.telephony/databases下,包含必要的详细信息。与通话记录一样,您必须确保检查能够发送消息的应用程序,以便使用以下命令检查相关消息日志:

adb.exe pull /data/data/com.android.providers.telephony C:\temp

这将产生以下输出:

提取短信数据

电话号码可以在地址列下看到,相应的文本消息可以在正文列下看到,如下屏幕截图所示:

contacts2.db 文件中的通话表

我们现在将提取浏览器历史信息。

提取浏览器历史信息

提取浏览器历史信息通常是取证人员经常需要执行的任务。除了默认的 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表包含用户朋友的姓名,电话号码,电子邮件 ID 和出生日期等信息,如下截图所示。类似地,可以分析其他文件,以找出是否可以收集到任何敏感信息:

SQLite 浏览器中的 fb.db 文件

类似地,通过分析/data/data文件夹中的数据,可以获取有关地理位置、日历事件、用户笔记等信息。

ADB 备份提取

从 Android 4.0 开始,Google 实施了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文件,然后可以查看。可以从sourceforge.net/projects/adbextractor/下载 Android Backup Extractor。这个工具是基于 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命令一样。如下面的屏幕截图所示,要查看您可以与dumpsys一起使用的所有服务的列表,请运行adb.exe shell service list命令:

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,它利用内容提供者机制来访问信息。该工具提取数据并以 CSV 格式保存到 SD 卡中。以下步骤使用 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命令删除的文件和无法访问的文件不会被复制。根据情况,可以使用某些技术恢复已删除的文件,我们将在接下来的章节中看到。与逻辑提取不同,物理提取是设备内存的精确副本,并包括更多信息,如松弛空间和未分配空间。

通过物理技术进行安卓数据提取通常使用dd命令进行,而其他高级技术如 JTAG 和芯片脱焊也可用,但通常难以实施,并需要极大的精度和经验才能在调查过程中尝试在真实设备上使用它们。与任何其他技术一样,如果个人执行这些程序不正确,设备上的数据可能会损坏或变得无法检索,从而使其在法庭上不可接受。JTAG 和芯片脱焊技术在接下来的章节中有详细介绍。然而,通过dd命令提取数据需要 root 权限。接下来的章节将概述可以用来执行物理提取的各种技术。

成像安卓手机

设备成像是移动设备取证中最重要的步骤之一。在可能的情况下,在执行任何直接从设备中提取数据的技术之前,必须先获取安卓设备的物理镜像。在取证中,这个获取物理镜像的过程通常被称为“成像设备”。术语物理镜像、取证镜像和原始镜像经常被用来指代通过这一过程捕获的镜像。让我们首先回顾一下在台式电脑上如何进行成像,因为这有助于我们理解并意识到成像安卓设备所涉及的问题。假设从嫌疑人那里夺取了一台未开机的台式电脑,并送去进行取证检查。在这种情况下,典型的取证员会移除硬盘,连接到写保护器,并使用任何可用的工具获取逐位取证镜像。原始硬盘在数据的取证成像过程中得到安全保护。

对于安卓设备,包含数据的所有区域都不能轻易移除。此外,如果设备在接收检查时处于活动状态,就不可能在不对其进行任何更改的情况下分析设备,因为任何交互都会改变设备的状态。

安卓设备可能有两个文件存储区域:内部和外部存储。内部存储指的是内置的非易失性存储器。外部存储指的是可移动存储介质,如 micro SD 卡。然而,重要的是要注意,一些设备没有可移动的存储介质,如 SD 卡,而是将可用的永久存储空间划分为内部和外部存储。因此,并不总是外部存储是可移动的。当可移动的 SD 卡存在时,必须获取存储卡的取证镜像。正如在第七章中所讨论的,“理解安卓”中所述,这些可移动卡通常使用 FAT32 文件系统格式化。一些移动设备取证方法将通过安卓设备获取 SD 卡。这个过程虽然有用,但由于 USB 手机数据线的速度限制,将会很慢。

默认情况下,安卓不提供对内部目录和系统相关文件的访问。这种受限访问是为了确保设备的安全。例如,在非 root 设备上无法访问/data/data文件夹。这个文件夹对我们来说特别重要,因为它存储了大部分用户创建的数据,许多应用程序将有价值的数据写入此文件夹。因此,为了获取设备的图像,我们需要对安卓设备进行 root。对设备进行 root 将赋予我们超级用户权限并访问所有数据。重要的是要意识到,本书一直强调,所有步骤都应该是取证上的,并且在可能的情况下不应该对设备进行更改。对安卓设备进行 root 将对其进行更改,并且应该在之前未调查过的设备上进行测试。对安卓设备进行 root 是常见的,但获得 root 权限可能会改变设备,使数据发生改变,甚至被删除。一些安卓设备,如 Nexus 4 和 5,在允许 root 权限之前可能会强制擦除数据分区。这就消除了对设备进行 root 以获得访问权限的需要,因为在此过程中所有用户数据都会丢失。只需记住,虽然成功进行 root 可以访问更多数据,但也可能会擦除数据或销毁手机。因此,在进行 root 之前,必须确保您有同意或合法权利来操作安卓设备。由于第八章中已经讨论了 root 技术,安卓取证设置和数据提取前技术,我们将继续进行示例,假设设备已经 root。

以下是获取已 root 的安卓设备的取证图像的逐步过程:

  1. 将安卓设备连接到工作站,并通过发出adb devices命令来验证设备是否被识别,如下所示:

识别连接的设备

  1. 一旦adb访问准备就绪,可以通过以下步骤从安卓设备中获取分区:
  • 使用dd命令dd命令可用于创建设备的原始镜像。此命令帮助我们通过复制低级数据来创建安卓设备的逐位图像。

  • 插入新的 SD 卡:将新的 SD 卡插入设备,将图像文件复制到该卡中。确保此 SD 卡已擦除并且不包含任何其他数据。您可能还需要证明驱动器上没有其他数据。

  • 执行命令:安卓设备的文件系统存储在/dev分区的不同位置。对三星 Galaxy S3 手机执行简单的mount命令返回以下输出:

安卓设备上的 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 编辑模式视图(左)和启用 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 适配器的使用消除了焊接的需要,因为它连接了 TAP 到 CPU:

JTAG 设置

  • 完成上述步骤后,必须施加电源以启动 CPU。必须施加的电压取决于硬件制造商发布的规格。不要施加超出规格中给定数字的电压。

  • 施加电源后,可以提取 NAND 闪存的完整二进制内存转储。

  • 使用本书学习的取证技术和工具分析提取的数据。在获取期间将获得一个原始的.bin文件;大多数取证工具都支持对这种图像格式的摄取和分析。

JTAG 可能听起来很复杂(也许是),但它有许多有用的用途,以下列出了三个优点:

  • 这种技术的主要优势是即使设备未开启也可以工作。

  • 不需要 root,ADB 或 USB 调试。

  • 它可以用于恢复设备的 PIN 码/密码,因此可以对整个闪存进行成像,并恢复/破解密码文件。

还需要了解 JTAG 技术不应导致设备功能丧失。如果正确重新组装,设备应该可以正常运行。尽管 JTAG 技术在提取数据方面是有效的,但只有经验丰富和合格的人员才能尝试。在焊接 JTAG 接触点或施加错误电压时出现任何错误可能会严重损坏设备。

芯片脱落技术

芯片脱落,顾名思义,是一种从设备中移除 NAND 闪存芯片并进行检查以提取信息的技术。因此,即使设备受到密码保护并且未启用 USB 调试,这种技术也可以工作。与 JTAG 技术不同,设备在检查后通常会被破坏,也就是说,重新连接 NAND 闪存到设备后更加困难。重新连接 NAND 闪存到设备的过程称为重新焊球,需要培训和实践。

Chip-off 技术通常涉及以下取证步骤:

  1. 必须研究设备上的所有芯片,以确定哪个芯片包含用户数据。

  2. 确定后,NAND 闪存从设备中物理移除。这可以通过施加热量来去焊接芯片来完成:

芯片脱落技术

来源:http://www.binaryintel.com/services/jtag-chip-off-forensics/chip-off_forensics/

  1. 这是一个非常细致的过程,必须非常小心,因为可能会损坏 NAND 闪存。

  2. 然后清洁和修复芯片,以确保连接器存在并且正常工作。

  3. 使用专门的硬件设备适配器,现在可以读取芯片。这是通过将芯片插入支持特定 NAND 闪存芯片的硬件设备中来完成的。在这个过程中,从芯片中获取原始数据,生成一个.bin文件。

  4. 现在可以使用取证技术和之前描述的工具对获取的数据进行分析。

芯片脱落技术在设备严重损坏、锁定或无法访问时最有帮助。然而,这种技术的应用不仅需要专业知识,还需要昂贵的设备和工具。在取出 NAND 闪存时总会有损坏的风险,因此建议首先尝试逻辑技术来提取任何数据。

虽然在执行前面讨论的任何技术时都必须具有根访问权限,但在撰写本书时,必须指出,这些技术中没有一种适用于启用了全盘加密FDE)的设备。正如在第七章中所讨论的了解 Android,Google 已经要求从 Android 6.0 开始,大多数设备都使用 FDE。尽管已经演示并发布了一些解密全盘加密的技术,但它们是特定于设备的,不具有普遍适用性。

总结

本章涵盖了各种手动、逻辑和物理数据提取技术。我们学会了在调查过程中何时以及如何应用这些技术。逻辑技术通过使用 ADB 等工具与设备交互来提取数据。另一方面,物理技术可以访问更多的数据;它们是复杂的,需要大量的专业知识来执行。对设备进行成像会产生设备的逐位图像,稍后可以使用工具对其进行分析。对设备进行成像是确保设备上的数据未被修改的主要步骤之一。Android 7.0 及以上版本为取证调查人员带来了新的挑战,引入了新的安全功能和可能限制获取的文件路径。有了这些知识,您可以执行设备获取操作,从 Android 设备中提取相关数据。

在下一章中,我们将看到如何从图像文件中提取通话记录、短信和浏览历史等相关数据。我们还将介绍数据恢复技术,使用这些技术可以从设备中恢复删除的数据。

第十章:Android 数据分析和恢复

在上一章中,我们介绍了各种逻辑和物理提取技术。在物理提取中,获得了 Android 设备的逐位镜像,其中包含有价值的信息。在本章中,我们将学习如何分析和提取图像文件中的通话记录和短信等相关数据。虽然数据提取和分析技术提供了各种详细信息,但并非所有技术都能提供有关已删除数据的信息。数据恢复是移动取证的关键方面,因为它有助于发现已删除的项目。

本章旨在涵盖法证分析员可以使用的各种技术,以从 Android 设备中恢复数据。

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

  • 使用 Autopsy 工具分析和提取 Android 镜像文件中的数据

  • 了解从 SD 卡和内部存储器中恢复已删除文件的技术

使用 Autopsy 工具分析和提取 Android 镜像文件中的数据

术语Android 镜像指的是通过执行任何物理数据提取技术获得的物理镜像(也称为法证镜像或原始镜像)。使用第九章中解释的技术,Android 数据提取技术,您可以对整个/data/data块或任何与调查相关的特定块进行镜像。一旦获得镜像,像您这样的调查人员可以手动查看文件内容或利用可用工具来解析内容。商业工具,如 Cellebrite 和 XRY,可以深入挖掘数据并呈现内容的全面图片。Autopsy 是法证界中使用非常广泛的开源工具之一,它在分析 Android 镜像方面表现出色。

Autopsy 平台

Autopsy 是一个法证平台,作为 Sleuth Kit 的 GUI。它是免费提供的;您可以在www.sleuthkit.org/下载。Sleuth Kit 是一组 Unix 和基于 Windows 的工具和实用程序,用于进行法证分析。Autopsy 通过对给定卷进行法证分析来显示结果,从而帮助调查人员专注于数据的相关部分。Autopsy 是免费且可扩展的,并且有几个可以插入的模块。Autopsy 可用于加载和分析在物理提取后获得的 Android 镜像。

将图像添加到 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 卡可以作为外部大容量存储设备挂载,并且可以使用标准的数字取证方法进行取证,如第九章 Android 数据提取技术中所讨论的。如前几章所述,Android 设备中的 SD 卡通常使用 FAT32 文件系统。这主要是因为 FAT32 文件系统在包括 Windows、Linux 和 macOS X 在内的大多数操作系统中得到了广泛支持。FAT32 格式化的驱动器上的最大文件大小约为 4GB。随着越来越高分辨率的格式现在可用,这个限制通常会被达到。除此之外,FAT32 只能用于小于 32GB 的分区。因此,现在一些设备中使用了克服这些问题的 exFAT 文件系统。

如果可以将外部 SD 卡挂载为驱动器,那么从中恢复已删除的数据就可以很容易地完成。因此,如果 SD 卡是可移动的,可以使用写入阻断器将其连接到工作站进行取证。然而,最新的 Android 设备通常不会作为大容量存储挂载。这是因为这些设备使用媒体传输协议(MTP)或图片传输协议(PTP)协议,而不是 USB 大容量存储。USB 大容量存储的问题在于计算机需要对存储进行独占访问。换句话说,当连接到工作站时,外部存储需要完全断开与 Android 操作系统的连接。这给移动应用程序带来了其他一些复杂性。当 Android 设备使用 MTP 时,它会被计算机识别为媒体设备,而不是可移动存储,如下图所示:

使用 MTP 连接 Android 设备

但是,普通的数据恢复工具需要挂载驱动器才能进行扫描。因此,大多数使用 MTP/PTP 的最新设备不被视为挂载驱动器,因此传统的适用于计算机的数据恢复工具在这些设备上不起作用。

因此,当设备使用 MTP/PTP 并且没有作为驱动器挂载时,可以通过某些需要打开 USB 调试选项的特定于 Android 的数据恢复工具来进行恢复。市场上几乎所有的 Android 数据恢复工具都需要您启用 USB 调试,以便在开始 Android 数据恢复之前识别您的设备和 SD 卡。

您必须了解,安卓设备可能会使用 SD 卡上的空间来缓存应用程序数据;因此,在移除 SD 卡之前,确保尽可能多地从设备获取数据非常重要。一些旧设备在通过 USB 连接时会自动将设备挂载为驱动器。在数据提取、数据恢复等方面,直接在设备上操作不是一个良好的取证实践。因此,需要获取 SD 卡的物理镜像,并在镜像上执行所有必要的分析。建议通过设备以及单独获取 SD 卡,以确保获取所有数据。要获取 SD 卡镜像,可以在设备运行时使用adb中的dd来获取设备的 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.ddSD 卡镜像文件的位置,选择它,然后单击“完成”:

在 FTK Imager 中选择要分析的镜像文件

  1. 然后在查看窗格中显示 SD 卡镜像的内容。您可以通过单击“+”号来浏览文件夹。当文件夹被突出显示时,其内容将显示在右窗格中。选择文件后,其内容将显示在底部窗格中。如下图所示,已删除的文件也显示为图标上的红色叉号:

在 FTK Imager 中显示带有红色叉号的图标的已删除文件

  1. 要将已删除的文件复制到工作站,请右键单击标记的文件,然后选择“导出文件...”,如下图所示:

在 FTK Imager 中恢复已删除的图像

还建议检查设备是否安装了任何备份应用程序或文件。最初的安卓版本没有包括用户备份其个人数据的机制。因此,用户广泛使用了几个备份应用程序。使用这些应用程序,用户可以将其数据备份到 SD 卡或云端。例如,Super Backup应用程序包含了备份通话记录、联系人、短信等选项,如下图所示:

超级备份安卓应用程序

检测到备份应用程序后,必须尝试确定数据存储在何处。通常,备份文件夹路径是内部 SD 卡。备份应用程序的设置中也包含文件夹路径。备份中保存的数据可能包含重要信息,因此,在设备上寻找任何第三方备份应用程序将非常有帮助。

从内部存储器中恢复数据

从 Android 设备的内部存储器中恢复已删除的文件(如短信、联系人和应用数据)并非所有分析工具都支持,可能需要手动切割。与一些包含常见文件系统的媒体(如 SD 卡)不同,取证工具可能无法识别和挂载文件系统。此外,除非手机已 root 处理,否则无法访问 Android 手机的内部存储器的原始分区。建议在 root 处理发生之前和之后对设备进行镜像。在尝试从 Android 设备的内部存储器中恢复数据时,可能会面临以下一些其他问题:

  • 要访问内部存储器,可以尝试对手机进行 root 处理。但是,root 处理过程可能涉及向/data分区写入一些数据,这个过程可能会覆盖设备上有价值的数据。

  • 与 SD 卡不同,这里的内部文件系统不是 FAT32(这是取证工具广泛支持的)。内部文件系统可能是 YAFFS2(在旧设备上)、EXT3、EXT4、RFS 或专为 Android 运行而构建的其他文件系统。因此,许多专为 Windows 文件系统设计的恢复工具将无法使用。

  • Android 设备上的应用数据通常以 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 文件中的已删除记录。

在我们的示例中,我们将从安卓设备中恢复已删除的短信。从安卓手机中恢复已删除的短信经常被要求作为设备取证分析的一部分,主要是因为短信包含的数据可以揭示很多信息。有不同的方法可以在安卓设备上恢复已删除的短信。首先,我们需要了解消息在设备上的存储位置。在第九章中,安卓数据提取技术,我们解释了安卓设备上存储用户数据的重要位置。以下是对此的快速回顾:

  • 每个应用程序都将其数据存储在/data/data文件夹下(同样,这需要 root 权限来获取数据)。

  • 位于/data/data/com.android.providers.telephony/databases位置下的文件包含有关短信/彩信的详细信息。

在上述位置下,短信存储在名为mmssms.db的 SQLite 数据库文件中。可以通过检查此文件来恢复已删除的短信。以下是使用mmssms.db文件恢复已删除短信的步骤:

  1. 在安卓设备上,启用 USB 调试模式并将设备连接到取证工作站。使用adb命令行工具,通过以下命令提取位于/data/data/下的数据库文件夹:
adb.exe pull /data/data/com.android.providers.telephony/databases C:\temp

输出如下所示:

ADB pull 命令

一旦文件被提取到本地机器上,使用 Oxygen Forensics SQLite Viewer 工具打开mmssms.db文件。

  1. 点击名为sms的表,并观察工具中 Tables 数据选项卡下的当前消息。

  2. 查看已删除数据的一种方法是点击包含已删除数据的块选项卡,如下截图所示:

恢复已删除的短信

同样,存储在 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文件包含有关支持的文件类型的信息,如下面的屏幕截图所示:

手术刀配置文件

需要修改此文件以提及与 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 帐户中恢复已删除的联系人

因此,使用上述任一技术,像您这样的法医检查员可以尝试轻松恢复已删除的数据。

摘要

在本章中,我们学习了从 Android 设备中恢复已删除数据的各种技术。这个过程取决于各种因素,这些因素严重依赖于访问存储在内部存储器和 SD 卡中的数据。我们看到了从 SD 卡和内部存储器中恢复已删除数据的各种技术。虽然从外部存储器(如 SD 卡)中恢复已删除的项目很容易,但从内部存储器中恢复已删除的项目需要相当大的努力。我们还学习了 SQLite 文件解析和文件切割技术,使用这些技术可以从 Android 设备中提取已删除的数据。有了这些知识,您现在可以在法医调查期间进行数据恢复。

下一章将讨论 Android 应用程序和恶意软件的法医分析以及 Android 应用程序的逆向工程。

第十一章: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 安卓应用是最广泛使用的社交网络应用之一。它将信息存储在/data/data文件夹中,位于com.facebook.katana包内。以下细节提供了可以从各种文件中收集的信息类型的概述:

  • Facebook 联系人:可以通过分析contacts_db2数据库检索用户的 Facebook 联系人信息,该数据库位于以下路径下:

  • 路径/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 消息:分析threads_db2数据库可以查看 Facebook 消息对话在一些情况下可能非常重要:

  • 路径/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 是谷歌提供的广泛使用的电子邮件服务。 应用程序数据保存在/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

  • 搜索历史:在应用程序中进行的任何文本搜索都存储在/data/data/com.android.chrome/app_chrome/Default/History位置下的suggestions.db文件中。

  • 路径/data/data/com.google.android.gm/databases/suggestions.db

让我们通过对谷歌 Chrome 应用程序进行最终分析来结束本节。

谷歌 Chrome Android 应用程序分析

谷歌 Chrome 是谷歌 Pixel 和许多其他设备上的默认网络浏览器,并且被广泛用于浏览互联网。 应用程序数据位于/data/data文件夹下,包名称为com.android.chrome。 以下是通过分析 Gmail 应用程序可以提取的重要工件:

  • 个人资料图片:用户的个人资料图片存储在以下位置的Google Profile Picture.png文件中:

  • 路径/data/data/com.android.chrome/app_chrome/Default/ Google Profile Picture.png

  • 书签Bookmarks文件包含与帐户同步的所有书签的信息。 通过分析此文件可以收集诸如站点名称、URL 以及收藏时间等详细信息:

  • 路径/data/data/com.android.chrome/app_chrome/Default/Bookmarks

  • 浏览历史History.db文件包含用户的网络历史记录,存储在各种表中。 例如,如下截图所示,keyword_search_terms表包含了使用 Chrome 浏览器进行的搜索的信息:

谷歌 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

现在我们已经分析了不同的第三方应用程序,我们将看看我们可以使用哪些技术来逆向工程 Android 应用程序。

逆向工程 Android 应用程序的技术

您可能需要处理阻止访问所需信息的应用程序。例如,手机上的相册被AppLock应用程序锁定。在这种情况下,为了访问相册中存储的照片和视频,您首先需要输入AppLock的密码。因此,了解AppLock应用程序如何在设备上存储密码将是有趣的。您可以查看 SQLite 数据库文件。但是,如果它们被加密,那么甚至很难确定它是密码。在这种情况下,逆向工程应用程序将是有帮助的,因为您想更好地了解应用程序以及应用程序如何存储数据。

简而言之,逆向工程是从可执行文件中检索源代码的过程。逆向工程 Android 应用程序是为了了解应用程序的功能、数据存储、安全机制等。在我们继续学习如何逆向工程 Android 应用程序之前,让我们快速回顾一下 Android 应用程序:

  • 安装在 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 市场或 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 文件需要使用dex2jar工具转换为 Java 类文件。

  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 恶意软件

随着安卓市场份额的不断增加,针对安卓用户的攻击或恶意软件也在增加。移动恶意软件是一个广义术语,指执行意外操作的软件,包括木马、间谍软件、广告软件、勒索软件等。根据 pandasecurity 的数据,与 iOS 设备相比,安卓设备感染恶意软件的几率要高 50 倍(www.pandasecurity.com/mediacenter/mobile-security/android-more-infected-than-ios/)。2019 年,仅 Agent Smith 恶意软件就感染了近 2500 万台安卓设备,根据 Cybersecurity Hub 的一篇新闻报道(www.cshub.com/malware/articles/incident-of-the-week-malware-infects-25m-android-phones)。

这种情况的一个主要原因是,与苹果的 App Store 严格受公司控制不同,谷歌的 Play Store 是一个没有详细的前期安全审查的开放生态系统。恶意软件开发者可以轻松地将他们的应用移至 Play Store,并通过此方式分发他们的应用。谷歌现在有一个名为 Google Bouncer 的恶意软件检测软件,它将自动扫描上传的应用程序以查找恶意软件,但攻击者已经找到了几种保持不被发现的方法。此外,安卓正式允许我们加载从互联网下载的应用程序(侧载),而 iOS 不允许未签名的应用程序。

例如,如下截图所示,当在安卓设备上选择未知来源选项时,允许用户安装从互联网上任何网站下载的应用程序:

安卓中的侧载选项

托管安卓应用程序的第三方应用商店被认为是恶意软件的聚集地。这促使谷歌从安卓 4.2 开始推出了验证应用程序功能,该功能在安卓设备上本地扫描应用程序,以查找恶意活动,如短信滥用。如下截图所示,验证应用程序功能可能会警告用户,或在某些情况下甚至可能阻止安装。然而,这是一个选择性服务,因此用户可以在希望的情况下禁用此功能:

安卓中的验证应用程序功能

从安卓奥利奥开始,谷歌推出了一个名为 Play Protect 的新功能,这是验证应用程序功能的更好版本。Play Protect 的主要工作是阻止或警告已安装在安卓设备上的恶意或有害应用程序。例如,如下截图所示,Play Protect 功能可能在应用程序安装过程中显示警告消息:

Play Protect 功能

接下来,让我们看看恶意软件的类型。

安卓恶意软件类型

有不同类型的恶意软件可以感染安卓设备。以下是一些最常见的类型:

  • 银行恶意软件:它可以伪装成银行应用程序,窃取用户输入的银行凭据,或者从用户账户中窃取任何其他敏感个人信息。银行木马可以拦截或修改银行交易,并执行危险操作,如发送、删除和拦截短信,以及记录按键。

  • 间谍软件:间谍软件监视、记录并将重要信息从目标设备发送到攻击者的服务器。这些信息可能包括短信、录音电话、截屏、按键记录、电子邮件或其他可能对攻击者感兴趣的应用程序数据。BusyGasper 是卡巴斯基实验室专家在 2018 年初发现的一种间谍软件,它不仅具有收集来自 WhatsApp、Viber 和 Facebook 等流行消息应用程序的信息的常见间谍软件功能,还具有设备传感器监听器,包括运动检测器。

  • 广告软件:广告软件是另一种在安卓设备上非常常见的恶意或不需要的应用程序类型。它相对容易检测,因为受害者会在设备屏幕上不断收到弹出窗口和广告。这些不需要的程序并不总是无害的,因为弹出窗口可能导致下载另一种恶意软件,包括已经提到的间谍软件和银行木马。

  • 勒索软件:勒索软件的主要目标是基于 Windows 的台式电脑和服务器,但它也存在于移动平台上,尤其是在安卓上。通常,它只会用勒索通知锁定设备屏幕,但有时也会加密用户的数据。

  • 加密货币挖矿恶意软件:加密货币现在非常流行,因此这种类型的恶意程序甚至适用于安卓等移动平台。这类应用程序的目标是利用受害者的设备计算能力来挖掘加密货币。偶尔,这种类型的恶意软件甚至可能使智能手机硬件处于风险之中。

高级恶意软件还能够对设备进行 root 并安装新应用程序。例如,安卓 Mazar 恶意软件于 2016 年 2 月被发现,通过短信传播,并能够在手机上获得管理员权限,从而可以擦除手机、打电话或阅读短信。

可在forensics.spreitzenbarth.de/android-malware/找到安卓恶意软件家族及其功能的完整列表。

一旦恶意软件进入设备,它可以执行危险的操作,其中一些如下:

  • 发送和阅读您的短信

  • 窃取敏感数据,如图片、视频和信用卡号码

  • 操纵设备上的文件或数据

  • 向高费率号码发送短信

  • 感染您的浏览器并窃取键入的任何数据更改设备设置

  • 擦除设备上的所有数据

  • 锁定设备直到支付赎金

  • 不断显示广告

现在我们已经了解了不同类型的恶意软件,我们将看看恶意软件如何在您的设备中传播。

安卓恶意软件是如何传播的?

安卓设备可能以几种不同的方式感染恶意软件。以下是一些可能的方式:

  • 重新打包合法应用程序:这是攻击者使用的最常见方法。首先,攻击者下载一个合法的应用程序并对其进行反汇编。然后,他们添加恶意代码并重新组装应用程序。新的恶意应用程序现在的功能与合法应用程序完全相同,但它也在后台执行恶意活动。这种应用程序通常在第三方安卓应用商店中找到,并被许多人下载。

  • 利用安卓漏洞:在这种情况下,攻击者利用在安卓平台上发现的漏洞或漏洞来安装他们的恶意应用程序或执行任何不需要的操作。例如,安装程序劫持在 2015 年被发现,攻击者利用它来在安装过程中用恶意软件替换安卓应用程序。

  • 蓝牙和 MMS 传播:恶意软件也通过蓝牙和 MMS 传播。当设备处于可发现模式时,受害者会在设备上收到恶意软件,例如,当它可以被其他蓝牙设备看到时。在 MMS 的情况下,恶意软件附加在消息中,就像计算机病毒通过电子邮件附件发送一样。然而,在这两种方法中,用户至少必须同意运行文件一次。

  • 应用程序下载恶意更新:在这种情况下,最初安装的应用程序不包含任何恶意代码,但代码中存在的一个功能将在运行时下载恶意命令。这可以通过隐秘更新或用户更新来完成。例如,Plankton 恶意软件使用隐秘更新直接从远程服务器下载 JAR 文件,不需要任何用户权限。在用户更新的情况下,用户必须允许应用程序下载应用的新版本。

  • 远程安装:攻击者可能会破坏用户设备上的账户凭据,从而远程安装应用程序。这通常发生在有针对性的场景中,与我们刚刚描述的前两种方法相比,发生频率较低。

现在我们已经看过 Android 恶意软件可能传播的方式,让我们试着识别您的设备中是否存在恶意软件。

识别 Android 恶意软件

从取证的角度来看,重要的是在进行任何分析之前识别设备上是否存在恶意软件。这是因为恶意软件可能会改变设备的状态或设备上的内容,从而使分析或结果不一致。市场上有一些工具可以分析物理提取以识别恶意软件。例如,Cellebrite UFED 物理分析仪具有 BitDefender 的反恶意软件技术,可以扫描恶意软件。如下面的截图所示,一旦物理镜像被加载到工具中,文件就可以被扫描以查找恶意软件:

在 UFED 物理分析仪中扫描恶意软件

一旦扫描开始,BitDefender 软件会尝试解压.apk文件并查找感染或恶意文件。这个过程是自动的,工具会指出恶意应用程序,如下面的截图所示:

UFED 物理分析仪中的恶意软件扫描结果

该工具只是指出设备上存在恶意内容。然后,取证调查员必须通过分析相应的应用程序手动确认这是否是一个有效的问题。这就是我们在前面部分讨论的逆向工程技能需要发挥作用的地方。一旦应用程序被逆向工程并且代码被获取,建议您查看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 Phone 操作系统到从设备中提取数据。最后一章将介绍如何对一些最广泛使用的第三方应用程序进行取证,例如 Facebook、WhatsApp 等。我们将看看这些应用程序内部的数据组织方式以及一些可以立即应用于提取其中数据的技术。

本节包括以下章节:

  • 第十二章,Windows 手机取证

  • 第十三章,解析第三方应用程序文件

第十二章:Windows 手机取证

尽管 Windows 手机如今并不被广泛使用,但在取证调查中仍然可能会遇到。这些设备是市场上最实惠的,因此了解如何获取、分析和解码 Windows 手机中的数据非常重要。定位和解释这些设备上存在的数字证据需要对 Windows 手机操作系统有专门的了解,而且并不总是可能的。商业取证和开源工具对从 Windows 设备获取用户数据提供了有限的支持。由于 Windows 手机在移动市场上所占份额不大,大多数取证从业者对设备上使用的数据格式、嵌入式数据库以及其他存在的工件并不熟悉。本章概述了 Windows 手机取证,描述了在 Windows 移动设备上获取和检查数据的各种方法。

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

  • Windows 手机操作系统

  • Windows 10 Mobile 安全模型

  • Windows 手机文件系统

  • 数据获取

  • 商业取证工具获取方法

  • 在不使用商业工具的情况下提取数据

  • 检查的关键工件

Windows 手机操作系统

Windows 手机是由微软开发的专有移动操作系统。它是作为 Windows Mobile 的后继者推出的,但不提供与之前平台的向后兼容性。Windows 手机于 2010 年 10 月推出,首次推出的是 Windows Phone 7。然后 Windows 手机操作系统的版本历史继续延续,发布了 Windows Phone 7.5、Windows Phone 7.8、Windows Phone 8.1 和 Windows Phone 10。

尽管微软声称他们已停止开发这个移动操作系统,但除了安全补丁,你可能会在移动取证调查中遇到它。

接下来的章节将提供关于 Windows 手机、其功能和底层安全模型的更多细节。

与 Android 和 iOS 设备不同,Windows 手机配备了一个新的界面,使用所谓的“磁贴”来代替图标,如下图所示。这些磁贴可以由用户设计和更新:

Windows 手机主屏幕

与其他移动平台类似,Windows 手机允许安装第三方应用。这些应用可以从由微软管理的 Windows 手机应用商店下载。与 iOS 和 Android 设备可用的应用数量相比,Windows 手机的应用数量相形见绌。但是,应用是可用的,你应该期望在 Windows 手机设备上看到它们。

Windows 手机引入了新功能,使其与 Windows Mobile 相比更类似于其他智能手机:

  • Cortana:这是设备的个人助手。它在 Windows 8.1 中被引入,并且仍然存在于 Windows 10 设备上。Cortana 通过使用必应回答问题、设置提醒、发送短信等方式来帮助用户,从而为用户提供更好、更便捷的体验。Cortana 所做的一切都会在设备上留下痕迹。

  • 钱包:这里存储着信用卡账户、登机牌、门票、优惠券等等。

  • 地理围栏和高级位置设置:这为用户提供了额外的保护,因为手机可以检测到它是否离开了受信任的区域,并可能自动锁定。

  • 附加功能:这些功能包括动态磁贴、增强颜色和静音时间。

与 Windows 手机相关的其他常见应用包括 OneDrive(原名 SkyDrive)、OneNote 和 Office 365 同步。OneDrive 为用户提供了从任何设备访问其所有文档和文件的权限。OneNote 本质上是一样的,但它充当笔记本或日记。Office 365 为用户提供了跨多个设备持续访问其电子邮件、日历、联系人等的权限。

跨多个设备进行数据同步的引入使我们作为取证检查员的工作变得困难。我们的工作是确定证据是如何放置在设备上的。是否可能明确说明一个物件是如何放置在设备上的?老实说,这取决于很多因素。这是没有人想听到的回答,但必须考虑很多因素。这是一个应用程序?设备上运行的是什么操作系统?这是一个物件?例如,让我们考虑 OneDrive。如果设备包含来自 OneDrive 的文档,原始作者应该包含在元数据中。这个,再加上检查内容是否与设备共享,可能会提供一个关于物件是如何创建的一瞥。然而,当检查一个日历条目时,当 Office 365 在使用时,可能无法确定用户是在手机、PC 还是笔记本电脑上创建的条目。同步是即时的,状态标志说明物件是在哪里创建的并不总是存在。如果这个物件确实是调查的“关键证据”,你需要运用你的技能来发现其他支持你的发现的物件。需要深入挖掘数据。现在我们已经了解了 Windows Phone 及其功能的细节,让我们来看看它的安全模型,以及它如何保护数据安全。

Windows 10 Mobile 安全模型

Windows Phone 的安全模型旨在确保设备上的用户数据安全可靠。以下部分简要解释了 Windows Phone 安全建立在哪些概念上。

房间

Windows Phone 在最低特权和隔离原则上建立了重要基础。这一点自 Windows Phone 7 诞生以来就一直如此。为了实现这一点,Windows Phone 引入了“房间”的概念。每个房间都有一个隔离边界,进程可以在其中运行。根据特定房间的安全策略,运行在该房间中的进程具有访问操作系统资源和功能的特权。有四种类型的安全房间。以下是对每种房间的简要描述:

  • 受信任的计算基础(TCB):这里的进程可以无限制地访问大多数 Windows Phone 资源。这个房间有权限修改策略并执行安全模型。内核在这个房间中运行。

  • 提升权限房间(ERC):这个房间比 TCB 房间特权较低。它有权限访问除安全策略以外的所有资源。这个房间主要用于为手机上的其他应用程序提供功能的服务和用户模式驱动程序。

  • 标准权限房间(SRC):这是预装应用程序的默认房间,例如 Microsoft Outlook Mobile 2010。

  • 最低特权房间(LPC):这是通过 Marketplace Hub(也称为 Windows Phone Marketplace)下载和安装的所有应用程序的默认房间。

接下来,我们将看看加密。

加密

Windows Phone 8 引入了 BitLocker 技术,通过 AES 128 位加密对存储在设备上的所有用户数据进行加密。用户可以简单地切换开关以启用此功能,设备内部存储的所有数据都将被加密。此外,用户可以加密他们的 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。

  • 应用程序:这个目录包含用户安装的应用程序。每个应用程序分配或使用的隔离存储也位于这个文件夹中。

  • 我的文件:这个目录包含不同的办公文档,比如 Word、Excel 或 PowerPoint 文件。该目录还包括配置文件和多媒体文件,比如音乐或视频。

  • Windows:这个目录包含与 Windows Phone 操作系统相关的文件。

此处使用的获取方法将确定您对设备的文件系统访问权限。例如,物理镜像可能提供对可以从数据转储中恢复的多个分区的访问权限。在下面的屏幕截图中可以看到包含 27 个分区的 Windows Phone 10 设备。分区 26(MainOS)和 27(Data)包含相关数据:

Windows Phone 10 分区

尽管大多数证据都存在于数据分区中,但最好的做法是在可能的情况下同时捕获和分析两者。

在前面的屏幕截图中,分区 26 的 MainOS 分区包含了来自 Windows Phone 的系统数据。与所有 Windows 调查一样,系统数据包含了与调查相关的证据。

在此示例中,分区 27 包含用户或数据分区。根据设备的不同,分区号可能会有所不同。在我们的示例中,数据分区显示为分区 27 的屏幕截图如下所示。在这里,使用移动取证工具恢复了短信、电子邮件、应用程序数据、联系人、通话记录和互联网历史记录。这些方法将在本章后面讨论:

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 复制到用户应用程序中,这些 DLL 具有更高的权限。这允许应用程序访问通常仅限于本机应用程序的方法和资源。除此之外,设备必须解锁,否则这些方法可能无法使用。

大多数取证人员依赖取证工具和方法来获取移动设备。再次强调,这些做法对 Windows 手机的支持并不如此。请记住,要在 Windows 手机上部署和运行应用程序,设备和开发人员都必须经过 Microsoft 注册和解锁。可以通过使用 Windows Phone 8 到 10 设备的公共越狱来绕过此限制。

相当长一段时间以来,JTAG 和芯片取证是获取大多数 Windows 手机的唯一选择。一切在 2015 年 1 月发生了变化:Cellebrite 实施了一个获取模块,允许移动取证人员从大多数 Lumia 设备上的物理层面提取数据。

后来,Windows Phone Internals 项目提出了一种解锁一些 Lumia 设备(包括 520、521、525、620、625、720、820、920、925、928、1020 和 1320)的方法。这使得这些设备的物理获取成为可能。您可以在www.wpinternals.net/了解更多关于该项目的信息。现在,我们将看一些用于获取方法的商业工具。

商业取证工具获取方法

有一些商业工具可用于支持获取 Windows 手机设备。Cellebrite UFED 提供支持,可以使用物理、文件系统和逻辑方法获取 Windows 手机设备。要确定您正在检查的设备是否受工具支持,您可以下载并使用 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 中的智能手机选项。到目前为止,我们已经看过一些使用商业工具的获取方法。现在,让我们学习如何在没有这些工具的情况下提取数据。

在不使用商业工具的情况下提取数据

在某些情况下,只有使用 JTAG 和芯片脱落等先进方法才能对 Windows 手机设备进行物理获取。但由于名为 Heathcliff 的安全研究人员的贡献,使用他的名为WPinternalswww.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 卡,必须确保 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 手机取证物件的位置,包括联系人、短信、通话和互联网历史记录。

提取联系人和短信

Windows 手机 7-10 中的所有联系人和收发的短信都存储在名为store.vol的文件中,该文件位于\Application Data\Microsoft\Outlook\Stores\DeviceStore(Windows 7)和Users\WPCOMMSERVICES\APPDATA\Local\Unistore(Windows 8-10)目录下。下面是 Windows 10 中store.vol文件的示例截图:

Windows 手机中的 store.vol 文件

现在,让我们学习如何提取通话记录。

提取通话记录

通话历史数据目前可以从Phone文件中提取。需要注意的是,该文件没有扩展名,位于\Users\WPCOMMSERVICES\APPDATA\ Local\UserData\。以下是 Windows 10Phone文件的示例:

Windows Phone 中的 Phone 文件

类似地,我们将在下一节中提取 Internet 历史记录。

提取互联网历史记录

Internet history 可以从位于\Users\DefApps\APPDATA\Local\Microsoft\Windows\WebCache\WebCacheV01.dat文件中提取。以下是 Windows 10WebCacheV01.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 正在用于解析 Android 设备上 Tango 的聊天消息。请注意,消息在表格中没有显示图片。但是,这张图片可以拼接到消息中(请注意截图中箭头指向所属消息的截图),以提供对对话中分享的内容的整体图片。这是一个手动过程,不是由工具执行的:

拼接应用程序聊天日志的示例

接下来,我们将看一下 GPS 应用程序。

GPS 应用程序

大多数用户都会从他们的标准手机应用程序中分支出来,以获得 GPS 支持。这包括获取到达目的地的指示和获取感兴趣地区的地图。常见的 GPS 应用程序包括 Waze 和谷歌地图。Waze 不仅提供路线指示,还会提醒用户有沿途的道路危险、交通情况和警察:

Waze 应用程序

其他存储位置信息的应用程序包括 Twitter、Instagram、Facebook 和 Foursquare。这些应用程序使用户在发布帖子或分享图片或视频时能够通知朋友和关注者他们的位置。所有这些交易都在应用程序内进行跟踪。了解这一点对于发现您的取证工具未报告的其他证据至关重要。

在检查来自 GPS 应用程序的位置信息时,最好假设您需要手动检查与该应用程序相关的数据库和首选文件。我们建议使用您的取证工具对设备上的数据进行分类,并深入挖掘后面将在本章讨论的证据。在 UFED 物理分析器中解析 Waze 的示例可以在以下截图中找到。在这里,我们可以看到用户有 5 个收藏的位置,74 个映射的位置和 70 个最近的方向。如果这些信息与调查有关,都必须进行手动验证。这是因为工具无法确定用户是否输入了地址,是否是建议的,或者用户是否甚至去过那个地方。您需要适当的技能来将用户与特定位置联系起来,这需要不仅仅是一个取证工具:

UFED 物理分析器中的 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 帐户使用提供了以下信息。请注意,公共推文和私人消息(DMs)都已恢复:

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 应用程序

苹果依赖 SQLite 和 Plist 作为应用程序数据存储的常见位置。偶尔,JSON 文件将用于应用程序数据。检查从 iOS 设备中恢复的应用程序可能会让人不知所措。我们建议您从您所知道的和您的工具告诉您的内容开始。检查您选择的工具列出的已安装应用程序。从这里,直接转到应用程序目录,并确保没有遗漏任何内容。当用户删除应用程序时,数据库通常会保留,而已安装应用程序的链接只是断开了。检查 iOS 设备的所有区域将防止您错过数据:

iPhone 上的已安装应用程序

检查已安装的应用程序后,搜索LibraryDocuments目录,查找可能包含应用程序工件的相关 Plist 文件。最后,检查 iPhone 上的Media目录以及与应用程序相关联的目录,以恢复其他工件,例如共享照片、视频、音频文件和个人资料图片。在下面的屏幕截图中,我们正在检查与 WhatsApp 应用程序相关联的Media目录:

iPhone 上的应用程序数据

我们现在将看一下安卓应用程序中的数据存储。

安卓应用程序

安卓设备在应用程序存储方面严重依赖 SQLite。每个应用程序的偏好文件通常以 DAT 或 XML 文件格式存在。与 iOS 设备相比,在安卓设备上检查应用程序可能是最繁琐的任务之一。这是因为数据可能存储在各种位置。最好的开始是使用工具列出设备上安装了什么。接下来,转到/Root目录下的子目录。请记住,这些应用程序可能具有独特的名称,可能难以定位。

您可能需要研究应用程序,以更好地理解与每个应用程序相关的文件名。以下截图是安卓设备上应用程序目录的示例:

安卓设备上的应用程序数据

每个应用程序目录都包含大量要检查的数据。我们建议从DatabasesCache目录开始,然后将分析扩展到设备上的其他位置。接下来要检查的位置包括MediaCache分区。如果数据似乎丢失或被删除,请不要忘记检查设备和 SD 卡上的Downloads目录。

应用程序数据可以存在于Media目录中的多个位置。使用工具,比如提供超出解析项目的关键字搜索功能的 UFED 物理分析仪,将有助于定位与特定应用程序相关的证据。我们将在以下截图中查看存储在安卓设备的Media目录中的大量数据。这些数据与先前讨论的应用程序目录中存储的数据是不同的。需要彻底检查每个位置,以确保没有遗漏任何内容。重要的是,您要利用前几章学到的知识来分析安卓应用程序数据:

媒体目录中的唯一应用程序数据

我们现在将查看安装在 Windows Phone 上的应用程序及其获取。

Windows Phone 应用程序

在 Windows Phone 上找到的应用程序与 iOS 和安卓设备上找到的应用程序没有什么不同。SQLite 是最常用的数据存储格式。但是,并非所有设备都允许在手机内部存储 SQLite 文件。对于这些设备,所有应用程序数据将存储在 SD 卡上。有些人可能认为这很幸运,因为这样可以避免在设备上检查多个位置,但 SD 卡和应用程序本身可能是加密的。

在可能的情况下,最好是移除 SD 卡并使用取证工具获取它。当这不可能时,下一个最佳方法是尝试通过手机使用取证工具获取 SD 卡。同样,这通常会导致数据丢失。最后的努力是通过挂载设备并使用 Windows 资源管理器查看设备和 SD 卡上存储的应用程序,如第十二章中所讨论的Windows 手机取证

用于提取第三方应用程序数据的取证方法

几乎所有商业工具都会尝试支持第三方应用程序的提取。如果您依赖工具输出进行调查结果,我们建议您经常对工具进行彻底测试,因为应用程序更新非常频繁,工具几乎不可能不漏掉一些东西。您必须了解应用程序的工作原理,以及设备如何为每个应用程序存储数据。我们强烈建议您使用工具对案件进行初步筛选,然后深入数据手动提取工具漏掉的任何内容。确保您的取证报告中只包含事实数据,而不是工具解析的所有内容,因为工具无法区分设备和人类创造的区别。只有经过训练的检验员才能自信地做到这一点。

商业工具

正如您在本书中所看到的,有许多工具可以处理智能手机取证的工作。然而,在解析应用程序数据方面,有一些工具表现得非常出色。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 手机的大多数应用程序。要使用 AXIOM 来检查应用程序工件,请执行以下步骤:

  1. 启动 AXIOM,创建一个新案例,然后选择 MOBILE(请注意,如果 MOBILE 是灰色的,您需要从 Magnet Forensics 获取提供移动支持的许可证):

选择证据来源

  1. 选择加载证据并导航到您的图像文件。可以同时加载和解析多个图像。

  2. 选择转到工件详细信息,并确定您想要解析的内容。我们建议选择所有的应用程序:

Magnet AXIOM 支持的工件

  1. 选择分析证据。

  2. 完成后,您可以使用工件:

Magnet AXIOM 中的应用程序工件

检查 AXIOM 解析的内容是审查的第一步。在前面的屏幕截图中,我们可以看到 Telegram 被解析了。从最相关的位置开始您的审查。例如,如果您正在寻找 Telegram 聊天记录,请直接转到该位置并开始审查工件。请注意,消息和聊天被拉入两个不同的类别。当使用私人消息时,这是很常见的。应该检查所有相关的应用程序容器。此外,AXIOM 提供了数据恢复的完整文件路径。使用另一个工具导航到该文件以进行验证和手动审查。

AXIOM 还提供逻辑关键字搜索(它将搜索它可以解析的内容,而不会搜索其他内容)、书签和报告。确保您只报告事实性的应用程序工件,并将其纳入最终的取证报告中。

UFED 物理分析器

物理分析器是市场上最知名的移动取证工具之一。该工具是手动进行审查的最佳平台之一,同时还可以利用工具解析的数据。对于应用程序分析,物理分析器擅长解析每个受支持应用程序的聊天记录和联系人。对于未解析的数据,物理分析器提供了一个分析平台,使用户能够浏览文件系统以发现其他工件。该工具的关键字搜索功能强大,能够搜索原始十六进制数据以及解析数据。此外,它还包含了 SQLite 查看器。

要在物理分析器中对应用程序数据进行取证审查,请执行以下步骤开始:

  1. 通过双击 UFED 快捷图像文件或双击工具图标来启动物理分析器。

  2. 加载图像文件并等待解析完成。

  3. 检查解析的工件,如下图所示:

物理分析器解析的数据

我们建议检查已解析的内容,并参考数据提取的超链接。导航到该路径,然后检查整个应用程序目录。

要找到应用程序目录,请利用内置的关键字搜索功能来帮助调查。请记住,如果这不明显,您可能需要进行研究以确定与应用程序相关的文件名。

开源/免费工具

对于预算有限的人来说,可以使用开源解决方案和廉价工具来检查智能手机的应用程序数据。这些解决方案更难使用,通常不适合需要工具在数据提取和分析中提供帮助的取证新手。检查应用程序数据是繁琐的,如果您不知道该去哪里寻找,您可能需要花一些钱来提前了解。Andriller 等工具的价格大约为 500 美元。虽然这不是免费的,但也不是一些其他商业工具的 1 万美元。在接下来的部分中,我们将介绍一些我们喜欢的有用于解析智能手机应用程序数据的工具。

使用 Autopsy

Autopsy 是进行文件系统审查的最佳工具之一。不幸的是,Autopsy 不提供 iOS 解析,但对于文件系统映像仍然可能有用。Autopsy 可以从sleuthkit.org/autopsy/下载。在使用 Autopsy 时,Android 分析器模块将解析设备中的一些应用程序数据。让我们看看如何使用 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 分析器可以自动解码一些工件,例如联系人、通话和短信。以下截图显示了解码的短信消息的结果:

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 @ 2024-05-22 15:16  绝不原创的飞龙  阅读(84)  评论(0编辑  收藏  举报