Lost Apples:利用AI与Python脚本解密苹果FindMy数据的取证工具

本文介绍了数字取证工具“Lost Apples”的开发过程,这是一个使用AI辅助生成的Python脚本套件,用于自动化解密和解析苹果FindMy服务中的加密数据,包括Observations.db数据库与相关文件。

我保证我没事。

今年早些时候,我写了一篇关于Observations.db的帖子,这是苹果“查找”(FindMy)功能的一个组件。那是我在2024年所写的关于iOS设备上流氓蓝牙追踪器和FindMy兼容设备的帖子的第二部分。简而言之,FindMy数据可以为调查人员提供额外的位置信息来源,以及可能与给定账户关联的其他苹果设备的信息。

在那篇关于Observations的帖子中,我提到我曾使用一些人工智能来帮助处理该数据库及其他数据库所使用的加密。这引发了一个额外的问题:能否利用AI来创建一系列脚本,以解析这两篇博客文章中讨论的数据?当时我正在处理其他的FindMy数据,发现自己不得不进行大量手动工作,而AI或许能在这方面提供帮助。

刚刚你可能在想,我的博客是否遭到了恶意接管;毕竟,认识我的人都知道,我对AI持非常健康的怀疑态度,尤其是在数字取证领域使用AI时。作为证据(包括刑事和民事)的数据,以及这些数据如何与现实世界的行为相匹配,可能存在许多细微差别。这些细微差别是大语言模型可能(并且经常)难以应对的,而理解这些数据讲述的故事需要人类将碎片信息拼凑起来的复杂能力。我并不是说AI不能用于数字取证,但可以说魔瓶已开,我们这个领域必须找到与这个东西共存的方式。如果我们继续沿着这条路走下去,就需要认真思考如何负责任、透明地使用它。毕竟,某人的声誉、生计乃至生命都可能依赖于这些数据,因此,我们作为一个社区,第一次就把它做对是极其重要的。

考虑到所有这些,我着手探索我能用AI做些什么,哪怕只是一点点尝试,主要是为了自我提升。在过去的几周里,我一直在使用Claude Code,并最终开发出了Lost Apples:这是一个为一系列Python脚本提供图形用户界面(GUI)前端工具,可以处理我两篇博客文章中讨论的FindMy数据。我的想法是利用Claude创建一个工具,来自动化我过去手动执行的任务,而不是让它来解释数据或回答主观/模糊的问题。后者会排除人的因素,而我认为我们不应该这样做。

Lost Apples需要Python 3.8或更高版本,只有两个依赖项(Pillow和cryptography),并且它使用了tkinter,所以界面看起来可能非常眼熟(咳咳……LEAPPs)。

Lost Apples 可以:

  • 处理来自Cellebrite Premium/Inseyets和Graykey的取证提取数据(无需额外处理)。只需指向相应的zip文件。虽然对于Graykey提取的数据需要提供钥匙串(keychain),但对于Premium/Inseyets提取的数据,它会自动从中获取钥匙串,因此无需单独提取。
  • 处理单个com.apple.icloud.searchpartyd文件夹及其附带的钥匙串。
  • 解密.record文件中找到的加密二进制plist(bplist)数据。
  • 解密Observations.db及其-WAL文件。
  • (按需)查询Observations.db,可以包含也可以不包含其-WAL文件。
  • 将解析后的数据导出为CSV、KML和文本格式。
  • 为加密数据创建解密版本,以备后续分析之需。
  • 导出其日志(用于审计)。

我已经针对我能找到的、来自Cellebrite和Graykey的尽可能多的提取数据测试了这个工具。我也对照我所拥有的已知数据集验证了输出结果。尽管如此,请务必验证输出结果(正如您使用任何工具时都应该做的那样)。我还在macOS和Windows中都进行了测试,一切似乎运行正常,但总是有可能我遗漏了什么。

你可以在这里找到Lost Apples。

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