Apple CarPlay数字取证技术深度解析
引言
在数字取证领域,很少有机会重新审视之前的研究。大多数研究人员完成研究、分享成果后就会转向下一个课题。然而,当CarPlay相关问题在工作中出现时,我不得不重新研究这个主题。核心问题是:**取证人员能否区分用户是通过CarPlay执行操作还是直接使用iOS设备?**简短答案是"可以",详细答案则贯穿全文。
系统变化
六年前我首次撰写关于Apple CarPlay的博客,如今CarPlay已发生重大变化。测试环境使用iPhone 14(iOS 17.5)、14 Pro(iOS 18.2)和16 Pro(18.3.1),以及日产Rogue车辆。
文件系统变化
位于/private/var/mobile/Library/Preferences/的com.apple.CarPlayApp.plist文件包含最近使用的应用程序列表及其最后使用的Unix时间戳(图1蓝框)。该文件还包含表示上次CarPlay会话结束时间的时间戳(图1红框)。
值得注意的是,Apple Maps的更新时间始终显示为断开汽车连接的时间。该文件现在消除了检查同一位置com.apple.springboard的必要性。
knowledgeC数据库
虽然部分数据已迁移到biomes,但Siri调用记录仍然保留在knowledgeC中。在分心驾驶调查中,了解驾驶员是通过CarPlay召唤Siri执行操作还是直接操作手机具有重要意义。
图2显示ZOBJECT表中包含通过方向盘按钮召唤Siri的记录。从ZVALUESTRING列值自下而上读取,可以清晰看到完整操作流程:通过方向盘按钮(com.apple.siri.steering.wheel)在CarPlay中(com.apple.siri.button.on.carplay)启动请求,随后进行消息听写和确认。
Biome数据流
自iOS 16起,许多原本位于knowledgeC的数据已迁移到biomes,CarPlay连接就是其中之一。
CarPlay连接biomes
存在两个相关的CarPlay连接biome:
_DKEvent.Carplay.IsConnected:包含CarPlay会话开始和结束时间CarPlay.Connected:通过键值表示连接状态(0=断开,1=连接)
图3-6展示了完整的CarPlay会话周期,时间线与knowledgeC中的Siri调用记录一致。
应用使用情况biomes
两个重要的biome流对于CarPlay应用使用情况分析很有价值:
ScreenTime.AppUsage
- 显示CarPlay会话期间使用的第一个应用及时间
- 键1的值为"1"可能表示应用在CarPlay UI中使用,“0"表示未使用
- 但相同行为也出现在手机直接操作中,需要进一步佐证
App.InFocus
- 通过CarPlay UI执行的操作不会出现在此biome中
- 只有直接操作手机才会产生记录
- 这一特性成为区分操作方式的关键指标
统一日志分析
统一日志包含可与文件系统工件验证的信息,以及某些独有信息。
CarPlay连接日志
有线CarPlay连接由sharingd进程记录会话连接和断开事件。无线CarPlay会话额外包含"Wireless CarPlay session state changed"消息。
车辆信息日志
accessoryd进程记录车辆信息和连接类型:
- 有线连接显示连接类型为Lightning to USB-A
- 无线连接显示连接类型为IP,传输类型为AirPlay
- 蓝牙CarPlay连接由
caraccessoryd进程处理
Siri调用日志
CarPlay中的Siri调用也出现在统一日志中,有线和无线的记录方式不同:
- 有线和Wi-Fi无线连接明确记录方向盘按钮动作
- 蓝牙连接记录较为隐晦,没有明确的按钮动作
应用焦点日志
统一日志可以替代App.InFocus biome的功能。图30展示了在CarPlay UI中切换应用和获取焦点的详细日志:
com.apple.CarPlay.dashboard表示CarPlay主屏幕- “Icon tapped"表示点击CarPlay UI中的图标
- “Workspace did change to active app"表示应用进入焦点
当用户通过CarPlay最近使用应用托盘切换应用时,不会产生"Icon tapped"日志消息,只有"Workspace did change"消息。
Siri界面交互
召唤Siri时,CarPlay屏幕会显示覆盖层。iOS 17在UI底部显示Siri球体,iOS 18则使屏幕边缘发光。统一日志中会出现Siri"借用"屏幕然后返回控制权的记录。
取证关联分析
通过结合多个数据源,取证人员可以构建完整的行为时间线:
- 设备状态确认:通过Device.Display.Backlight biome确认手机屏幕状态
- 音频路由验证:Audio.Route biome显示音频是通过汽车扬声器(CarAudio)还是手机扬声器输出
- 连接类型识别:统一日志明确记录CarPlay连接方式(有线/无线/蓝牙)
- 操作方式区分:App.InFocus缺失但ScreenTime.AppUsage存在的记录表明CarPlay操作;两者皆存在表明手机直接操作
结论
CarPlay在社区开始研究后的几年间发生了显著变化。虽然许多取证人员感兴趣的数据已迁移到biomes,但knowledgeC仍然包含有用信息,而统一日志可以为试图确定使用CarPlay还是手机的取证人员提供良好信息。
在分心驾驶调查中,iOS中可用的数据可以极大地帮助厘清行为模式,为调查提供技术依据。