iOS设备Apple统一日志的提取、处理与查询技术详解

本文详细介绍了如何从iOS设备中提取Apple统一日志,包括使用macOS终端命令或第三方工具进行提取,将.logarchive转换为JSON格式,并利用iLEAPP工具将日志数据导入SQLite数据库进行高效查询与分析。

提取、处理与查询iOS设备上的Apple统一日志

Apple统一日志是什么?它们为何在我的数字取证检查中如此重要?

引言

统一日志以高度细粒度的方式记录Apple设备上的“生命模式”信息。根据Apple的文档说明:

统一日志系统提供了一个全面且高性能的API,用于捕获系统各个层面的遥测数据。该系统将日志数据集中存储在内存和磁盘上,而不是将其写入基于文本的日志文件。您可以使用控制台应用程序、日志命令行工具或Xcode调试控制台查看日志消息。

例如,在iOS中,这些日志记录了以下信息:

  • 设备方向(正面朝上、正面朝下)。
  • 屏幕锁定和解锁(使用生物识别)。
  • 导航开始及目的地地址。
  • 设备开机、关机。
  • 水平滚动。
  • 应用程序打开。
  • 前台运行的应用程序。

这些日志中还包含许多具有巨大取证价值的其他信息。Lionel Notari一直在他的ios-unifiedlogs.com网页上汇总这些信息。目前,他的页面是基于研究的统一日志信息汇总的最佳来源。

为了访问这些信息,需要提取并保存日志。提取过程的最终产物将是一个.logarchive存档文件。

.logarchive示例

在macOS系统中,图形用户界面将.logarchive显示为单个实体。实际上,它是一个目录,聚合了多个目录和文件。

.logarchive的内容

这些目录和文件是从iOS设备的/private/var/db/diagnostics/private/var/db/uuidtext目录中聚合而来的。值得注意的是,uuidtext目录包含支持文件,而diagnostics目录包含.tracev3文件。

.tracev3文件示例

我们有不同的提取方法可以使用。

提取

为了提取日志,我们可以执行以下操作之一:

  1. 将iOS设备连接到macOS计算机,并在终端中使用log collect命令。
    • 打开终端并执行 sudo log collect --device --output /path/to/filename.logarchive
    • Tim Korver为此流程提供了一个有用的流程图,可在github.com/Ankan-42/Apple-Unified-Log找到。
  2. 使用第三方工具,如UFADE或iOS日志采集工具。
  3. 从完整的文件系统提取中提取日志文件。
    • 要从直接从iOS完整文件系统提取中拉取的文件生成.logarchive,需要遵循几个步骤。本节信息由洛桑大学的研究员Johann Polewczyk友好提供。
      • 提取diagnosticsuuidtext文件夹的内容(所有子目录和文件),并将其放置在一个目录的根目录中。
      • 创建一个Info.plist文件并将其放在该目录的根目录中。示例plist:
        1
        2
        3
        4
        5
        6
        7
        8
        
        <?xml version="1.0" encoding="UTF-8"?>
        <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
        <plist version="1.0">
        <dict>
            <key>OSArchiveVersion</key>
            <integer>4</integer>
        </dict>
        </plist>
        
        • 必须包含带有OSArchiveVersionInfo.plist以确保兼容性。
        • OSArchiveVersion下的整数必须与来源的iOS或OS版本对齐。
      • 在目录名称末尾添加.logarchive扩展名。

在macOS上,带有.logarchive扩展名后,目标文件夹被视为一个包,您可以使用控制台应用程序打开,或使用终端中的log show命令进行解析。

我尚未找到通过控制台应用程序有效生成报告的方法,并且使用log show命令进行工作的效率不如我所期望的那样高。为了更有效地查询数据,必须将数据转换为另一种格式。同样重要的是要注意,大多数检查人员在基于Windows的环境中工作,不得不使用macOS设备进行查询和报告可能不切实际。为此,我们开发了一种在macOS外部使用iLEAPP查询日志的方法。

查询Apple统一日志

在此过程中,macOS设备将仅用于将.logarchive转换为JSON文件。这意味着检查人员可以使用单个macOS设备进行转换,同时在基于Windows的系统上进行查询和报告。尽管有第三方脚本提供.logarchive到JSON的转换,但我们认为通过macOS设备本身进行转换是更合适且可追踪的转换方式。与第三方转换工具不同,基于macOS的流程保持了Apple键名的完整性,并且由于它是使用Apple转换流程的Apple设备,因此转换可靠性水平得到了提高。使用数据创建者设计的工具来查看、输出或转换数据是最好的方法。

为了将.logarchive转换为JSON格式,请打开终端并键入以下命令:

1
log show --style json name_of_the_archive.logarchive > logarchive.json

请注意,JSON文件的名称必须是logarchive.json,以便iLEAPP能够处理它。从.logarchive到JSON的转换需要时间。请注意,与源.logarchive相比,JSON文件将极其庞大。例如,一个1.63 GB的存档将生成一个29.19 GB的JSON文件。

大小比较

当iLEAPP处理文件时,它会从每个JSON记录中提取选定的字段并将其放入SQLite数据库中。这极大地有助于通过使用像DB Browser for SQLite这样的SQLite查看器,使用SQL命令来查询数据。由于数据量巨大(一秒钟的日志输出可能包含3万个条目),使用HTML、EXCEL或PDF报告格式无法审查所有数据。SQLite提供了一种有效的方法来做到这一点。

  1. 下载并打开iLEAPP。
  2. 选择logarchive.json文件所在的目录。
  3. 选择您的输出目录。
  4. 在“可用模块”中仅选择“日志 [Logarchive]”模块。
  5. 点击“处理”。

iLEAPP处理日志存档的选择

处理完成后,打开iLEAPP报告。由于HTML报告格式的大小限制,将没有HTML内容可供审查。在iLEAPP的下一个版本中,处理完成时会出现一个弹出通知,以及在生成的主HTML报告中会提示,某些信息量过大,无法通过HTML报告显示。它将建议查看“仅限LAVA内容”选项卡,以查看哪些内容属于此类,并指导用户查看_lava_artifacts.db来查询这些内容。在不久的将来,我们将发布一个名为LAVA的新报告查看器,它将使用户能够处理来自LEAPP处理的任何类型的数据输出,无论其大小如何。同时,可以使用DB Browser for SQLite访问iLEAPP生成的数据库中的处理数据。

以下屏幕截图演示了上述通知。

查询SQLite数据库

在开始查询日志之前,请考虑以下几点:

  • iLEAPP将从JSON文件中提取选定的字段。目前这些字段是’Timestamp’、‘Process ID’、‘Subsystem’、‘Category’、‘Event Message’和’Trace ID’。将根据这些字段可能包含信息的研究价值添加更多字段。
  • 完整的日志内容同时存在于.logarchive和JSON文件中。
  • 在不久的将来,我们将为有价值的特定日志条目构建单独的内容项。

要开始查询数据库,请打开iLEAPP报告文件夹并找到_lava_artifacts.db文件。使用DB Browser for SQLite打开它。

iLEAPP报告文件夹的内容

选择日志存档表以查看内容。

日志存档表的内容

右键单击时间戳列,选择“编辑显示格式”选项。从选择框中,根据案件和设备的事实情况,选择“Unix Epoch to Date”或“Unix Epoch To Local Time”。

DB Browser for SQLite中的时间戳格式设置

所有数据就绪后,检查人员可以在“执行SQL”选项卡中使用SQL语句查询数据。以下是一些关于如何缩小关注范围的建议:

  • 使用时间戳来关注感兴趣的时间段。
  • 注意,一秒钟的日志记录可能包含1.4万到3万个条目,甚至更多。
  • 使用已知的event_message值来关注感兴趣的内容。充分利用Lionel Notari等人所做的研究。
  • 使用SQL语句查看感兴趣内容之前和之后的条目集合,以清晰了解设备的活动情况,包括用户生成的操作。

日志中一个有用内容的示例是由方向子系统生成的。注意从LandscapeLeftFaceDown的变化。

统一日志中记录的方向变化

总结

  • Apple统一日志是一个必不可少的数据源,未来的检查人员不能忽视。
  • 需要获取并保存此数据源。
  • 为了简化分析,可以使用macOS设备将日志转换为JSON文件。
  • 要查询日志内容,可以使用iLEAPP将JSON文件转换为SQLite数据库。
  • 可以使用DB Browser for SQLite访问SQLite数据库。在不久的将来,LEAPP开发人员将发布LAVA,使用户能够访问SQLite数据库的内容。

希望以上内容信息丰富且有所帮助。如有问题或评论,您可以通过以下链接在所有社交媒体上找到我:https://linqapp.com/abrignoni

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计