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的許可。