本文经AI新媒体量子位(公众号ID:QbitAI)授权转载,转载请联系出处。2019年,苹果系统推出了FindMy功能。此功能允许Apple用户的外围设备即使在网络断开或GPS关闭时也能被附近的其他Apple设备发现。这样,当您跟踪自己的设备时,您可以要求附近的其他Apple设备上传自己的位置信息。基本原理类似于遇到困难时请人帮忙。总之,就是突出“我为大家,大家为我”。但即便如此,还是有用户表示:FindMy怎么样,SendMy怎么样?今天我们就来看看柏林研究团队PositiveSecurity开发的离线无网情况下依然可以上传数据的应用SendMy。搜索功能的“机会”让我们来看看搜索系统是如何工作的。首先,当苹果设备用户通过FindMy应用将其苹果设备与其他外设连接时,会协商出一对密钥对。FindMyapp保存私钥和公钥,周边设备保存公钥。这时候外设就相当于一个BLE信标(BluetoothLowEnergyBroadcast),会不断广播一个从公钥衍生出来的变化的密钥。周围的苹果设备检测到后,将密钥和自己的位置信息打包一起上传到苹果服务器。最后,原苹果设备从服务器上下载这个信息包,用自身设备APP中存储的密钥解密,得到具体的位置数据。你注意到了吗?上述过程中有一个数据上传步骤。如果能把我们要上传的数据混进去,就可以搭便车FindMy离线网络机制一起上传。上传的数据内容为key+locationreport。其中,位置报告只能用正确的私钥(存储在所有者设备上)进行解密,无法通过暴力破解。那么,突破点就是从公钥导出的密钥。Leakingdatain研究团队设计了这样一个数据渗漏(DataExfiltration)协议:设置公钥中的任意一位(bit),并不断广播,直到发送完一条完整的消息。当发送方和接收方都同意相同的编码方案时,数据才能成功传输。当发送特定位的数据时,创建一个28字节的数组,其结构为[4b位索引][4b消息ID][4b调制解调器ID][填充0s...][位值]。然后搭建调制解调器(modem),通过串口接收报文,循环发送。△将信息位编码成可广播的有效载荷研究团队使用低成本、低功耗的ESP32作为传输固件。这种集成Wi-Fi和双模蓝牙的单片机可以快速改变其蓝牙MAC地址。在启动时,它会广播一个硬件编码的默认消息,然后在串行接口上??侦听并循环广播,直到收到新消息。获取数据时,接收程序生成相同结构的28字节数据。△从联网的macOS设备中检索之前发送的数据。应用程序的开发SendMy应用程序基于OpenHaystack,由达姆施塔特技术大学的研究人员开发,作为一种有点骇人听闻的逆向工程。OpenHaystack在3月份开源,当时苹果向第三方配件制造商开放了FindMy应用程序。但此时,用户已经可以使用OpenHaystack定制可以被FindMy追踪的配件。与OpenHaystack类似,SendMy使用相同的AppleMail插件技巧向Apple后端发送位置检索(retrieval)请求。然后将提示用户输入一个4位数的调制解调器ID,该ID可以在刷新ESP固件时设置。之后,应用程序可以自动获取、解码和显示ID为0的信息。测试在成功配备硬件和应用程序后,研究团队进行了第一个测试:接收32位信息。几分钟后,有23条消息成功到达。研究团队猜测,剩下的9位数字生成的公钥可能已经被附近的苹果设备拒绝为无效公钥。为此,他们决定在广播一个有效载荷(payloads)之前检查它所代表的EC点对于它使用的曲线(curve)是否真的有效。如果不是,则递增计数器直到找到有效的公钥。△这个过程可以在查询钥匙ID之前由位置检索程序离线执行。SendMy目前的发送速度约为每秒3个字节。根据周围设备的数量和其他随机因素,可能会有1分钟到1小时的延迟。△公钥广播和上传相应位置报告之间的延迟分配,苹果很难禁止此类应用。研究团队最后说。因为FindMy系统根本无法读取未加密的位置信息,也不知道公钥在哪里,更不知道位置信息和公钥之间的联系。如果要禁止滥用这个基于OpenHaystack的黑客应用程序,那么或许应该重新考虑FindMy的安全性。比如加强BLE广播的鉴权,或者限制位置报告的检索率。团队介绍PositiveSecurity是一家来自德国柏林的IT安全咨询研究公司,主要提供网络安全支持服务。有两个创始人。其中,法比安毕业于德国波茨坦大学,卢卡斯毕业于卡尔斯鲁厄理工学院。他们都曾在德国安全研究实验室SRLabs工作。参考链接:https://positive.security/blog/send-my应用下载:https://github.com/positive-security/send-my团队官网:https://positive.security
