iOS取证分析:AirTag与 unwanted tracker 检测技术解析

本文深入探讨了iOS设备检测 unwanted AirTag 和 Google Find My Device 追踪器的技术细节,包括加密记录文件的解密方法、位置数据提取以及相关数字取证技术分析。

iOS取证分析:AirTag与 unwanted tracker 检测技术解析

引言

虽然我通常在此博客中讨论Android相关内容,但偶尔也会涉足iOS/iPadOS领域。最近我在准备一个关于 unwanted Google Find My Device (FMD) 追踪器的演示时,在iOS统一日志中发现了一些有趣的内容:关于 unwanted tracker 的信息被写入磁盘。

经过深入研究,我发现检测人员有一种方法可以获取iPhone检测到 unwanted tracker(无论是AirTag还是其他设备)时的位置数据。这一发现引出了iOS中包含的其他可能对检测人员和调查人员有帮助的内容。

Wild Tags

这批研究始于iOS统一日志。统一日志的问题在于,任何有用的信息(如位置和相关时间戳)都被编辑过,因此变得无用。此外,还有蓝牙MAC地址随机化的问题,AirTag和FMD追踪器都使用这种技术。

发现记录文件

在检查收到 unwanted Pebblebee 追踪器警报后的统一日志时,我发现关于 unwanted tracker 的信息被写入 /private/var/mobile/Library/com.apple.icloud.searchpartyd/WildModeAssociationRecord/

该目录中的文件是二进制plist文件。searchpartyd(负责处理AirTag和信标跟踪的iOS进程)正在写入此文件,这表明其中包含重要信息。

解密过程

该文件包含三个关键值:两个16字节值(可能是nonce或GCM标签)和一个看似乱码的值。Apple在Apple CryptoKit中使用AES-GCM,这通常意味着需要密钥、nonce(或IV)和GCM标签。

通过解析钥匙串内容并过滤"searchpartyd"进程,我找到了BeaconStore服务的条目,其中包含一个32字节的值(AES-256的密钥长度)。使用该32字节值作为密钥,图3中绿色框中的16字节值作为nonce(IV),蓝色框中的16字节值作为GCM标签,我们得到了明文本体。

解密内容分析

解密后的有效负载是另一个bplist,包含:

  • 追踪器在iPhone检测时的随机蓝牙MAC地址
  • 向用户触发通知的日期/时间
  • unwanted tracker 被看到的所有位置:纬度、经度、水平精度和与这些位置相关的时间戳

该加密bplist包含26个位置条目,我观察到有些加密bplist包含更多条目,因此检测人员可以期望在此文件中找到大量的位置信息。

AirTag的相同行为

对于 unwanted AirTag,行为和获取数据的过程是相同的。~/WildModeAssociation/ 文件夹包含单个条目,文件组成与之前相同:值0是nonce,值1是GCM标签,值2是加密bplist。

重要说明

  1. 如果被检查的设备运行的是iOS 17.5之前的任何版本,解密加密bplist所需的密钥不同
  2. 这些 unwanted tracker 的.record文件至少可以追溯到iOS 15.3.1
  3. 其他Apple设备也可能被视为 unwanted 并触发通知
  4. 此数据无需AirTag开发者配置文件即可获得

其他故事

这种解密 ~/WildModeAssocationRecord/ 中.record文件的方法适用于 /com.apple.icloud.searchpartyd/ 中找到的其他.record文件。

BeaconNamingRecord

此文件夹包含设备所有者拥有的信标名称。记录包含分配给信标的名称(键"name")、信标的表情符号(键"emoji")和名为associatedBeacon的键,其中包含一个UUID值,该值将允许检测人员跟踪 com.apple.icloud.searchpartyd 中其余文件夹中的信标。

OwnedBeacons

此文件夹中的.record文件名对应于在 ~/BeaconNamingRecord/ .record文件中找到的associatedBeacon UUID值。重要的键包括pairingTime(AirTag与手机配对的时间,UTC)和stableIdentifier(包含AirTag的序列号)。

共享AirTag

iOS 17引入了与可能不属于您家庭圈的其他用户共享AirTag的功能。与您共享的AirTag信息存储在 ~/SharedBeacons/ 文件夹中。

bplist包含有关共享AirTag所有者的信息以及共享时间。关键键包括destination(共享AirTag的人)、identifier(在被检查手机上分配给AirTag的UUID)和shareDate(共享时间的UTC时间戳)。

SafeLocations

~/SafeLocations/ 文件夹中的记录很有趣。这些是iPhone自动识别或用户手动标识的位置,iPhone不会通知您留下了某些东西。

每个.record文件代表一个位置,由用户建议或手动创建。这些.record文件不包含明确说明与记录创建时间相关的时间戳,但有两个时间戳可以指示我创建它的时间。

位置信息

关于信标的位置信息可在 ~/BeaconEstimatedLocation/ 中找到。此处的每个UUID对应于拥有或与被检查设备共享的信标。

~/BeaconEstimatedLocation/ 中具有UUID名称的文件夹中的每个.record文件代表该信标的单个位置。我的观察发现,与信标远离所有者时被其他Apple设备检测到的情况(即众包)相比,我为所有者任何设备实际执行的扫描保存了更多的位置数据。

每个.record文件包含纬度、经度、时间戳(以UTC存储)、信标的UUID(键associatedBeacon)和水平精度(键horizontalAccuracy)。

结语

自2021年以来,FindMy已经走了很长的路,取证技术也从此发生了改变。我认为这很好地概括了移动设备取证的一般情况:进行研究,保持一段时间有效,然后事情发生变化,从业者必须改变策略重新学习。这种持续的反反复复使其既吸引人又令人沮丧。

从业者在涉及AirTag和附加到FindMy的其他Apple设备时有了新的信息来源。考虑到一些以前可用的信息现在受到保护,这很好,但这些新来源似乎提供了比之前可用的更多信息。希望这能持续一段时间。

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