初始化向量:从iOS设备提取、处理和查询苹果统一日志
什么是苹果统一日志及其重要性
统一日志在所有苹果设备中保存着高度细粒度的生活模式信息。根据苹果官方文档:
统一日志系统提供了一个全面且高性能的API,用于捕获系统各个级别的遥测数据。该系统将日志数据集中存储在内存和磁盘中,而不是将数据写入基于文本的日志文件。您可以使用Console应用、日志命令行工具或Xcode调试控制台查看日志消息。
例如在iOS中,这些日志记录的信息包括:
- 设备方向(正面朝上、正面朝下)
- 屏幕锁定和解锁(含生物识别)
- 导航开始及目的地地址
- 设备开机、关机
- 水平滚动
- 应用打开
- 焦点中的应用
这些日志中包含许多具有巨大取证价值的工件。Lionel Notari一直在他的ios-unifiedlogs.com网页上汇总这些工件,该页面是目前基于研究的统一日志工件聚合的最佳资源。
提取方法
要访问这些工件,需要提取和保存日志。提取过程的最终产品将是一个.logarchive归档文件。
提取方法选项:
-
将iOS设备连接到macOS计算机,在终端使用log collect命令
- 打开终端并执行:
sudo log collect --device --output /path/to/filename.logarchive - Tim Korver提供了有用的流程图,可在github.com/Ankan-42/Apple-Unified-Log找到
- 打开终端并执行:
-
使用第三方工具,如UFADE或iOS日志采集工具
- Christian Peter开发的UFADE(通用取证苹果设备提取器)可在github.com/prosch88/UFADE下载
- Lionel Notari开发的iOS日志采集工具可在www.ios-unifiedlogs.com/iosunifiedlogtool下载
-
从完整文件系统提取中提取日志文件
从完整文件系统提取生成.logarchive的步骤:
- 提取diagnostics和uuidtext文件夹的所有子目录和文件,将它们放在目录的根目录中
- 创建Info.plist文件并将其放在目录的根目录中
- 示例plist:
|
|
- 必须在目录名称末尾添加.logarchive扩展名
查询苹果统一日志
在此过程中,macOS设备仅用于将.logarchive转换为JSON文件。这意味着检查员可以使用单个macOS设备进行转换,同时在基于Windows的系统上进行查询和报告。
转换步骤:
- 打开终端并输入:
log show --style json name_of_the_archive.logarchive > logarchive.json - 注意JSON文件名必须为logarchive.json,以便iLEAPP可以处理它
- 从.logarchive到JSON的转换需要时间
- JSON文件将比源.logarchive大得多(例如1.63 GB的归档将生成29.19 GB的JSON文件)
使用iLEAPP处理:
- 下载并打开iLEAPP
- 选择logarchive.json文件所在的目录
- 选择输出目录
- 从可用模块中仅选择"Logs [Logarchive]“模块
- 点击处理
iLEAPP处理文件时,会从每个JSON记录中提取选定字段并将它们放入SQLite数据库中。这极大地帮助了使用SQL命令通过SQLite查看器(如DB Browser for SQLite)查询数据。
查询SQLite数据库
在开始查询日志之前,请考虑以下事项:
- iLEAPP将从JSON文件中提取选定字段(当前包括’时间戳’、‘进程ID’、‘子系统’、‘类别’、‘事件消息’和’跟踪ID’)
- 完整日志内容同时存在于.logarchive和JSON文件中
查询步骤:
- 打开iLEAPP报告文件夹并找到_lava_artifacts.db文件
- 使用DB Browser for SQLite打开它
- 选择logarchive表查看内容
- 右键单击时间戳列并选择"编辑显示格式"选项
- 从选择框中选择"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数据库的内容