首頁 > 科技

斷網也能上傳資料!蘋果使用者又可以了 | 開源

2021-06-05 15:07:28

博雯 發自 凹非寺量子位 報道 | 公眾號 QbitAI

2019年,蘋果系統上線了查詢(Find My)功能。

這項功能讓蘋果使用者的外設即使在斷網或GPS關閉時,也能被附近其他蘋果裝置發現。

這樣,當你追蹤定位自己的裝置時,就可以喊附近其他蘋果裝置上傳它們自己的位置資訊。

基本原理跟遇到困難搖人幫忙差不多,總之就是突出一個「我為人人,人人為我」。

可就是這樣還是有使用者表示:光Find My怎麼行,再幫忙Send My一下吧?

今天,就一起來看看這個離線無網時仍然能上傳資料,來自柏林的研究團隊Positive Security開發的應用,Send My

查詢功能的「可乘之機」

先來看看查詢系統具體是如何運行的。

首先,當蘋果裝置使用者通過Find My app將自己的蘋果裝置與其他外設連線時,會協商出一對金鑰對

Find My app儲存私鑰和公鑰,外設儲存公鑰。

這時的外設相當於一個BLE beacon(藍芽低能耗廣播),會不斷廣播一個由公鑰衍生而來的變化金鑰。

周圍的蘋果裝置在檢測到後,就將這一金鑰和自己的位置資訊打包,一起上傳蘋果伺服器。

最終,再由最開始的蘋果裝置從伺服器下載這一資訊包,並通過儲存在己裝置app上的金鑰解密,得到具體位置資料。

注意到了嗎?上述流程中是有一個資料上傳的步驟的。

如果能將我們想要上傳的資料混入其中,就有可能搭著Find My離線網路機制的便車一併上傳。

而上傳的資料內容為金鑰+位置報告。

其中,位置報告只有正確的私鑰(儲存在所有者裝置上)才能解密,不能被暴力破解。

那麼,突破點就在那個由公鑰衍生而來的金鑰上了。

將資料「滲漏」進去

研究團隊設計了這樣一個數據滲漏(Data Exfiltration)協議:

設定公鑰中的任意位(bit),並進行不斷的迴圈播報,直到傳送一條完整資訊。當傳送端和接收端都承認同一個編碼方案時,就可以成功傳輸資料。

當傳送特定位資料時,創建一個結構為[4b bit index] [4b message ID] [4b modem ID] [padding 0s…] [bit value]的28位元組陣列。

然後建立一個調變解調器(modem),通過序列介面接收一個資訊並迴圈傳送。

△將資訊位編碼為可廣播的有效載荷

研究團隊使用低成本,低功耗的ESP32作為傳送固件

這種集成了Wi-Fi和雙模藍芽的微控制器微控制器可以快速改變其藍芽MAC地址。

在啟動時會廣播一個硬體編碼的預設資訊,然後在序列介面上監聽並進行迴圈廣播,直到收到一個新資訊。

獲取資料時,接收程式生成同樣結構的28位元組的資料。

△從連線網際網路的macOS裝置中檢索以前發

應用程式的開發

Send My的應用程式基於OpenHaystack,由達姆施塔特工業大學的研究人員開發,是一個有些黑客化的逆向工程。

OpenHaystack在今年3月份開源,當時蘋果還尚未向第三方配件製造商開放Find My應用程式。

但此時使用者已經可以利用OpenHaystack自定義可被Find My跟蹤的配件了。

參照OpenHaystack,Send My使用相同的AppleMail插件技巧,向蘋果後端傳送位置檢索(retrieval)的請求。

這時會提示使用者輸入一個4位的調變解調器ID,這可以在重新整理ESP固件時設定。

之後,應用程式就可以自動獲取、解碼並顯示ID為0的資訊

測試一下

在成功配備了硬體和應用程式後,研究團隊進行了第一次測試:接收32位資訊。

幾分鐘後,其中的23位資訊成功到達。

研究團隊猜測,剩餘9位生成的公鑰可能被附近的蘋果裝置作為無效公鑰拒絕了。

對此,他們決定在廣播一個有效載荷(payloads)之前,先檢查它所代表的的EC點對其所使用的曲線(curve)是否真的有效。

如果否,就遞增計數器,直到找到一個有效公鑰為止。

△此過程可以在問詢金鑰ID之前,由位置檢索程式離線執行

目前Send My的傳送速度約為每秒3位元組。

根據周圍的裝置數和其他隨機因素,可能會有1分鐘到1小時的延遲。

△公鑰廣播和相應的位置報告被上傳之間的延遲分佈

蘋果很難ban掉這種應用。

研究團隊在最後表示。

因為Find My系統根本無法讀取未加密的位置資訊,也不知道公鑰所屬,更不知道位置資訊與公鑰之間的聯絡。

如果要禁止這種基於OpenHaystack的黑客化應用的濫用,那麼或許應該重新考慮Find My的安全性。

比如加強BLE廣播的認證,或限制位置報告的檢索速率。

團隊介紹

Positive Security是一家來自德國柏林的IT安全諮詢和研究公司,主要提供網路安全支援服務。

創始人有兩位。其中fabian畢業於德國波茨坦大學,lukas畢業於卡爾斯魯厄理工學院,兩人都曾效力與德國安全研究室SRLabs。

參考連結:https://positive.security/blog/send-my

應用下載:https://github.com/positive-security/send-my

團隊官網:https://positive.security/


IT145.com E-mail:sddin#qq.com