OpenHaystack是一个框架,可通过Apple的大量查找我的网络来跟踪个人蓝牙设备。使用它来创建自己的跟踪标签,您可以将其附加到物理对象(键盘,背包,...)或将其集成到其他具有蓝牙功能的设备(例如笔记本电脑)中。

OpenHayStack是一个应用程序,可让您创建自己的配件,这些配件由Apple的找到我的网络跟踪。您所需要的只是Mac和BBC Micro:位或任何其他具有蓝牙功能的设备。通过使用该应用程序,您可以在地球上任何地方跟踪附件,而无需蜂窝覆盖。附近的iPhone会发现您的配件,并在具有网络连接时将其位置上传到Apple的服务器。
OpenHayStack是Apple的反向工程和安全分析工作的结果,找到了我的网络(或离线查找)。我们在TU Darmstadt的安全移动网络实验室在2019年6月首次公告后开始分析离线发现。我们确定了iPhones设备如何通过这项工作脱机来找到Apple设备。整个系统是蓝牙广告,公开密码学和中央加密位置报告中心数据库的巧妙组合。我们披露了离线发现的封闭部分的规范,并进行了全面的安全和隐私分析。我们发现了两个不同的漏洞。同时,苹果(CVE-2020-9986)确定了最严重的允许访问位置数据的恶意应用程序。有关安全分析的更多信息,请阅读我们的论文。自发布以来,我们收到了很多新闻和媒体报道。
OpenHaystack是实验软件。该代码未经测试和不完整。例如,使用我们的固件广播固定的公共密钥的OpenHaystack配件,因此可以通过其他设备在接近度方面进行跟踪(这可能会在以后的版本中发生变化)。 OpenHaystack不隶属于Apple Inc.或认可。
OpenHayStack由两个组成部分组成。首先,我们提供了一个MacOS应用程序,可以显示您个人蓝牙设备的最后一个报告的位置。其次,固件图像使蓝牙设备能够广播信标,使它们可以通过iPhone发现。
OpenHayStack需要Macos 11(Big Sur)。
OpenHayStack应用程序需要一个用于Apple Mail的自定义插件。它用于通过私有API从Apple的服务器下载位置报告(技术说明:插件继承了Apple Mail使用此API所需的权利)。因此,安装过程略有不同,要求您暂时禁用网守。我们的插件无法访问任何其他私人数据,例如电子邮件(请参阅源代码)。
~/Library/Mail/Bundle中。sudo spctl --master-disable ,它将禁用网守,并允许我们的Apple Mail插件运行。sudo defaults write "/Library/Preferences/com.apple.mail" EnableBundles 1sudo spctl --master-enable ,这将再次启用网守。添加新配件。要创建新的配件,您只需要输入一个名称,并选择选择合适的图标和颜色。然后,该应用程序生成了一个新的密钥对,该对用于加密并解密位置报告。私钥存储在Mac的钥匙扣中。
部署到设备。通过USB将支持的设备连接到您的MAC,然后点击附件名称旁边的部署按钮,然后选择相应的设备。您还可以复制用于广告的公共密钥(右键单击附件)并手动部署它,而不是使用OpenHaystack的集成部署。
显示设备的位置。它最多可能需要30分钟,直到您将在右侧的地图上看到第一个位置报告。该地图将始终显示您所有物品的最新位置。您可以单击每个项目以检查最后一次更新。通过单击“重新加载”按钮,您可以更新位置报告。
我们简要解释了苹果的离线查找系统(又称我的网络)。有关更多详细信息,请参阅我们的宠物纸和苹果的配件规范。我们提供了示意图概述(从我们的论文中),并解释如何在下面的OpenHaystack中整合不同的步骤。

要使用Apple查找我的网络,我们在椭圆曲线(P-224)上生成了一个公私的密钥对。私钥保留在牢固存储在密钥链中的MAC上,并且将公共密钥部署在附件上,例如附件,附加的micro:bit。
简而言之,配件将公共密钥广播为蓝牙低能(BLE)广告(请参阅固件)。附近的iPhone将无法将我们的配件与真正的Apple设备或认证配件区分开。
当附近的iPhone收到BLE广告时,iPhone通过GPS获取当前位置,使用广告中的公钥对其进行加密,并将加密报告上传到Apple的服务器。默认情况下,iOS 13或较新的所有iPhone都会执行此操作。 OpenHaystack不参与此步骤。
Apple不知道哪个加密位置属于Apple帐户或设备。因此,只要知道相应的公钥,每个Apple用户就可以下载任何位置报告。这不是一个安全问题:所有报告都是端到端加密的,除非知道相应的私钥(存储在密钥链中),否则不能解密。我们利用此功能下载为我们的OpenHaystack配件创建的Apple的报告。我们使用私钥解密位置报告,并在地图上显示最新的报告。
Apple通过要求经过身份验证的Apple用户下载位置报告来保护其数据库免受任意访问。我们使用具有提升特权的Apple Mail插件来访问所需的身份验证信息。 OpenHaystack应用程序在下载报告时与插件通信。这就是为什么您需要在使用OpenHaystack时保持邮件打开的原因。
原则上,任何蓝牙设备都可以将其变成可以通过Apple的Find My Network跟踪的OpenHaystack附件。当前,我们为少数嵌入式设备提供了一种方便的OpenHaystack Firmwares的部署方法(请参见下表)。我们还通过通用HCI脚本支持Linux设备。请随时根据我们的固件的源代码和论文中的规格来端口开放式露天,以支持蓝牙低能的其他设备。请与我们分享您的结果!
| 平台 | 经过测试 | 通过应用程序部署 | 评论 |
|---|---|---|---|
| 北欧NRF51 | BBC Micro:位V1 | ✓ | 目前仅支持NRF51822(请参阅第6期)。 |
| Espressif ESP32 | SP32-WROOM,ESP32-WROVER | ✓ | 部署最多可能需要3分钟。需要Python 3。谢谢@fhessel 。 |
| Linux HCI | 覆盆子Pi 4 W/ raspbian | 应支持任何Linux机器。 |

OpenHayStack Mobile是智能手机的OpenHaystack MacOS应用程序的完整重新进化。该应用程序提供了相同的功能来创建和跟踪配件,并旨在提高可用性,尤其是对于新用户。与MACOS应用程序相反,无法直接在智能手机上获取位置报告,因此该应用需要在MAC硬件上托管的代理服务器以访问查找我的网络。可以同时通过网络访问代理服务器。
要连接到您的代理服务器设置正确的URL:OpenHaystack-mobile/lib/findmy/reports_fetcher.dart


OpenHayStack Mobile是由跨平台Flutter Framework构建的,目前在Android和iOS上运行。有关应用程序和使用说明的更多信息,请参见此存储库的OpenHaystack-Mobile文件夹。
OpenHayStack已获得GNU Affero通用公共许可证v3.0的许可。