DoubleBlak [Sync Peers]
Ian Whiffin
发布于:2024年9月22日
最近发生了一件有点有趣的事情。和许多检测人员一样,特别是那些喜欢做研究的人,我拥有大量测试设备,其中绝大多数是iOS设备。
我发誓这没问题。
我通常使用测试账户登录这些设备进行操作,但偶尔需要使用真实账户。最近,我在一台设备上使用真实账户访问iOS18的完整文件系统,为ArtEx的新版本准备测试一系列功能。
其中一项测试恰好涉及knowledgeC的消息意图解析器。过去我已经多次撰文介绍knowledgeC,这里不再赘述,但"消息意图"可能对某些人来说比较陌生。
“意图"本质上是沙盒化应用程序通过操作系统相互传递数据的一种方式。作为"意图"传递的数据可以包含多种信息。例如,想象在Safari中点击位置链接,这会启动地图应用并加载相应地点。这就是一个从Safari传递到地图的"意图”,包含要打开的位置信息。
这种意图很可能会被记录在knowledgeC中。感谢KnowledgeC :)
很久以前,我发现还存在"消息意图",这些是出于某种原因(可能是通知?)作为意图发送的消息。它们存在的原因在这里不太重要,重要的是你可以从knowledgeC中恢复来自多个不同应用程序的传入消息数据,ArtEx和其他一些工具都利用这一点,这在原始消息已被删除时特别有用。
如果你想手动查看,我在这里简要说明:
从knowledgeC中,找到ZSTREAMNAME为"/app/intents"且ZVALUESTING为"Messages"的记录。
|
|
这将给你ZOBJECT记录,但我们真正感兴趣的是关联的ZSTRUCTUREDMETADATA表中的数据。
上述查询结果将包含一个名为ZSTRUCTUREDMETADATA的列,这是指向ZSTRUCTUREDMETADATA表的外键。
我们可以这样快速连接它们:
|
|
此时,会出现很多很多列。但我们感兴趣的是名为Z_DKINTENTMETADATAKEY__SERIALIZEDINTERACTION的字段。
这个字段是一个blob;在这里是一个包含意图数据的二进制plist。其中包括时间戳、发送者、接收者和消息正文信息,你只需要弄清楚哪一部分对应什么。
更令人兴奋的是,这种消息意图数据不仅限于原生短信/iMessage。它还可以用来恢复WhatsApp数据以及一些有限的Snapchat或Signal数据。可能不是所有应用程序都有所有消息数据,但有些确实有,这正是事情变得有趣的地方。
但是…什么?
你看,虽然我在测试设备上使用个人账户,但我只安装了几个应用程序。我只是在查看原生工件。
我肯定没有安装WhatsApp,更不用说登录了。这就是为什么在我的knowledgec数据库中发现超过3300条WhatsApp消息让我感到意外;包括时间、对方和消息正文数据。
需要承认的是,有些消息是空白的;但这些是 outgoing消息或附件。但这仍然是重要信息。
奇怪的是,我的设备上有这些消息,尽管该设备从未被用来查看它们。
从证据的角度来看,我认为这对我们检测人员可能有利也可能不利。
很棒的是,你有可能从一个从未在设备上安装过的应用程序中恢复数据!
但同样可怕的是,我们如此珍视的knowledgeC数据库可能被外部数据污染。
对等设备
我做了更多挖掘,发现部分答案与ZOBJECT表的ZSOURCE列有关。
假设我对这个特定记录感兴趣。
我需要查找ZSOURCE值,在那里我找到了值3174。
然后我需要转到ZSOURCE表并找到记录3174。
在这里我们看到BundleID是WhatsApp,并且ZDEVICEID字段中有一个值。
我取该值并转到ZSYNCPEER表,在那里我按ZDEVICEID搜索。
这里的ZMODEL显示为iPhone15,2,这不是我正在测试的设备,而是我安装有WhatsApp的个人手机。
注意那里还有一个RapportID。Rapport在iOS的其他地方也有引用,我决定看看这是否有助于查找有关设备的更多信息,幸运的是,这没花太长时间。
只需在设备提取中搜索,就在\private\var\mobile\Library\com.apple.bluetoothuser\Production*GUID*\CloudPairedDeviceRecords找到了一个与ZRAPPORTID值同名的文件。
这个文件是一个BPList,包含关于同步设备的一堆数据,包括设备名称和最后同步时间。
所以现在我可以看到消息数据、同步设备型号、名称和ID。很好。
那么,其他哪些应用程序可能从关联设备收集数据?
我对ZSOURCE表进行了快速检查:
|
|
- com.apple.InCallService
- com.apple.Maps
- com.apple.MobileSMS
- com.apple.Music
- com.apple.TVRemoteUIService
- com.apple.facetimemessagestored
- com.apple.mobiletimer
- com.apple.weather
- com.cpc.iphone
- com.hammerandchisel.discord
- com.linkedin.LinkedIn
- com.microsoft.msedge
- com.tinyspeck.chatlyio
- net.whatsapp.WhatsApp
- org.whispersystems.signal
- us.zoom.videomeetings
并非所有这些Bundle都提供了有意义的内容。事实上,尽管我期望很高,但许多根本没有有趣的东西。
进一步深入研究,我运行了以下SQL:
|
|
我发现的一些项目包括:
- 我的个人设备与另一台设备之间的通话记录
- 我的个人设备与其他设备(包括我的汽车和AirPods)之间的蓝牙连接
- 从我的个人设备或与我账户关联的其他设备进行的Apple Music搜索和选择
- 来自我的个人设备的闹钟信息
- 来自我的个人设备的苹果地图位置
总结
我确信这里列出的应用程序和数据类型远不止这些,知道这是一个潜在的证据来源很好,但同样重要的是要明白,如果你在knowledgeC中看到某些内容,可能需要验证源设备。
你认为在这个设备上作为证据的数据,可能实际上完全发生在不同的设备上。