iOS设备苹果统一日志的提取、处理与查询技术指南

本文详细介绍了苹果统一日志系统的提取方法、处理流程和查询技术,包括从iOS设备获取.logarchive文件、转换为JSON格式、使用iLEAPP工具生成SQLite数据库,以及通过DB Browser进行高效查询分析的全套技术方案。

初始化向量:从iOS设备提取、处理和查询苹果统一日志

什么是苹果统一日志及其重要性

统一日志在所有苹果设备中保存着高度细粒度的生活模式信息。根据苹果官方文档:

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

例如在iOS中,这些日志记录的信息包括:

  • 设备方向(正面朝上、正面朝下)
  • 屏幕锁定和解锁(含生物识别)
  • 导航开始及目的地地址
  • 设备开机、关机
  • 水平滚动
  • 应用打开
  • 焦点中的应用

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

提取方法

要访问这些工件,需要提取和保存日志。提取过程的最终产品将是一个.logarchive归档文件。

提取方法选项:

  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日志采集工具

    • Christian Peter开发的UFADE(通用取证苹果设备提取器)可在github.com/prosch88/UFADE下载
    • Lionel Notari开发的iOS日志采集工具可在www.ios-unifiedlogs.com/iosunifiedlogtool下载
  3. 从完整文件系统提取中提取日志文件

从完整文件系统提取生成.logarchive的步骤:

  • 提取diagnostics和uuidtext文件夹的所有子目录和文件,将它们放在目录的根目录中
  • 创建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>
  • 必须在目录名称末尾添加.logarchive扩展名

查询苹果统一日志

在此过程中,macOS设备仅用于将.logarchive转换为JSON文件。这意味着检查员可以使用单个macOS设备进行转换,同时在基于Windows的系统上进行查询和报告。

转换步骤:

  1. 打开终端并输入:log show --style json name_of_the_archive.logarchive > logarchive.json
  2. 注意JSON文件名必须为logarchive.json,以便iLEAPP可以处理它
  3. 从.logarchive到JSON的转换需要时间
  4. JSON文件将比源.logarchive大得多(例如1.63 GB的归档将生成29.19 GB的JSON文件)

使用iLEAPP处理:

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

iLEAPP处理文件时,会从每个JSON记录中提取选定字段并将它们放入SQLite数据库中。这极大地帮助了使用SQL命令通过SQLite查看器(如DB Browser for SQLite)查询数据。

查询SQLite数据库

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

  • iLEAPP将从JSON文件中提取选定字段(当前包括’时间戳’、‘进程ID’、‘子系统’、‘类别’、‘事件消息’和’跟踪ID’)
  • 完整日志内容同时存在于.logarchive和JSON文件中

查询步骤:

  1. 打开iLEAPP报告文件夹并找到_lava_artifacts.db文件
  2. 使用DB Browser for SQLite打开它
  3. 选择logarchive表查看内容
  4. 右键单击时间戳列并选择"编辑显示格式"选项
  5. 从选择框中选择"Unix Epoch to Date"或"Unix Epoch To Local Time”

查询建议:

  • 使用时间戳关注感兴趣的时间段
  • 注意一秒钟的日志记录可能包含14K到30K个条目,甚至更多
  • 使用已知的event_message值关注感兴趣的工件
  • 利用Lionel Notari和其他人完成的研究
  • 使用SQL语句查看感兴趣工件前后的条目集合,以清晰了解设备活动,包括用户生成的操作

总结

  • 苹果统一日志是检查员不能忽视的重要数据源
  • 需要获取和保存此数据源
  • 为简化分析,可以使用macOS设备将日志转换为JSON文件
  • 要查询日志内容,可以使用iLEAPP将JSON文件转换为SQLite数据库
  • 可以使用DB Browser for SQLite访问SQLite数据库
  • LEAPP开发人员即将发布LAVA,这将使用户能够访问SQLite数据库的内容
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计