找到你:建造隐形航空标签克隆

2022-02-22 03:08:01

据报道,AirTags被越来越多地用于恶意目的后,苹果发布了一份声明,列出了其当前和未来防止滥用的努力

我们构建了一个AirTag克隆,它绕过了所有这些跟踪保护功能,并在现实世界的实验中证实了它的有效性(这里提供了源代码)

我们鼓励苹果在计划下一次改变“发现我的生态系统”时,将AirTag克隆/修改后的AirTag纳入其威胁模型

最近,关于航空标签被用来追踪他人及其物品的报道越来越频繁。

在一起典型的跟踪案件中,一名时尚和健身模特在收到iPhone发出的跟踪警告通知后,在外套口袋中发现了一个标签。还有一些时候,航空标签被放置在昂贵的汽车或摩托车上,用来追踪他们从停车场到主人家,然后在那里被盗。

2月10日,苹果发布了一份名为“AirTag和无用跟踪的更新”的新闻声明,描述了他们目前试图防止AirTag和Find My network被滥用的方式,以及他们对未来的计划。

诚然,我可能比普通黑客更熟悉AirTags(在Find My上设计并实现了一个用于任意数据传输的通信协议),但即便如此,我还是相当惊讶,在阅读苹果公司的声明时,我能够立即为这份相对较长的清单中提到的每一项当前和即将出台的保护措施设计出非常明显的绕开思路。

下一节将讨论每个反跟踪功能,以及如何在理论上绕过它。此后,我将描述我如何实现这些想法,构建一个隐形AirTag,并在不触发跟踪通知的情况下成功跟踪一名iPhone用户(当然是在他们同意的情况下)超过5天。

这篇博文的目的是提高人们对这些问题的认识,希望也能指导未来的变革。尤其是,苹果需要将非正版的AirTag纳入其威胁模型,从而在Find My协议和生态系统中实施安全和反跟踪功能,而不是在AirTag本身中,它可以运行经过修改的固件,也可以根本不是AirTag(苹果设备目前无法通过蓝牙区分真正的AirTag和克隆)。

--降价——[理论上](#理论上)-[当前功能](#当前功能)-[序列号](#序列号)-[嘟嘟声](#嘟嘟声)-[iPhone通知](#iPhone通知)-[Android通知](#Android通知)-[旁注:查询位置报告所需的Apple ID](#旁注查询位置报告所需的Apple ID)-[即将推出的功能](#即将推出的功能)-[AirTag设置期间的新隐私警告](#AirTag设置期间的新隐私警告)-[解决AirPad的警报问题](#解决airpods的警报问题)【更新的支持文档】(#更新的支持文档)【精确查找】(#精确查找)【声音显示警报】(#声音显示警报)【优化不需要的跟踪警报逻辑】(#优化不需要的跟踪警报逻辑)-[Tuning AirTag's sound](#Tuning AirTag's sound)-[In Practice](#In Practice)-[Test setup](#Test setup)-[Android detection](#Android detection)-[Tracker Detect](#Tracker Detect)-[AirGuard](#AirGuard)-(iOS detection](#iOS detection)-[Closing Thinks](#结束思考)——/MARKDOWN--

让我们看看苹果(计划中的)所有跟踪保护功能,以及我们如何通过基于OpenHaystack的AirTag克隆绕过它们。

“每个AirTag都有一个唯一的序列号,成对的AirTag与一个Apple ID相关联。Apple可以在收到传票或执法部门的有效请求时提供成对的帐户详细信息。在我们提供的信息被用于追踪AirTag至犯罪者的案件中,我们与他们成功合作。”

用于构建AirTag克隆(例如ESP32)的微控制器没有AirTag序列号(无论在软件还是硬件上)。

基于OpenHaystack的克隆已经没有与Apple ID配对(因为这不是以隐私为中心的设计所必需的)。

最初,一个AirTag已经三天多没有进入配对的Apple设备的蓝牙范围,它开始发出哔哔声。随着2021年6月的更新,苹果将其降低到8到24小时之间的随机时间范围。

这个很简单:我们的ESP32甚至没有扬声器。此外,OpenHaystack固件没有实现BLE服务来远程触发声音,因此甚至没有显示“播放声音”按钮。

作为补充说明,所谓的“无声标签”已经有了市场(经过修改的标签,其扬声器已被移除/断开)。

“如果发现任何AirTag、AirPods或其他发现我的网络配件与其所有者分离的物品随时间移动,将通知您';”

在这里,事情变得越来越有趣。从一开始链接的新闻报道来看,这似乎也是检测不需要的标签的最常见方式。

一方面,苹果希望AirTag通过蓝牙彼此无法区分,以防止在较长时间内识别特定的AirTag,从而阻止通过分布式蓝牙接收器网络连续跟踪特定的AirTag(或iPhone等)

另一方面,苹果希望在一段时间内识别特定的AirTag,以区分一个与用户同行的AirTag(它应该在那里发送通知),以及在繁忙区域行走的用户不断收到来自附近不同AirTag的ping(它不应该提醒用户)

通过编程一个AirTag(克隆)来连续播放以前从未见过的新公钥(每个公钥只播放一次),我们可以用一台设备模拟第二个场景。

在下面的PoC/实验中,AirTag克隆迭代了2000个预加载公钥的列表,并每30秒发送一个公钥信标(更多细节将在下一节中介绍)。

随着AirTags的首次发布,除了嘟嘟声之外,Android用户没有办法收到不需要的跟踪设备的通知。2021年12月,苹果发布了一款Android应用程序称为跟踪器检测,它可以用来主动扫描附近的跟踪设备。

应用程序不在后台运行;当Android用户靠近AirTag时,他们需要执行主动扫描

如果应用程序试图防止来自过往Find My设备的单个接收信标出现误报,则该应用程序容易受到上述“每公钥1信标攻击”

(OpenHaystack团队还有一款名为AirGuard的(更好的)替代应用程序,我们也将在下一节中讨论)

虽然基于OpenHaystack的AirTag克隆没有与Apple ID配对,但位置报告的检索需要身份验证。但是,可以使用电子邮件地址匿名创建此类帐户,而无需任何身份/KYC验证。

OpenHaystack团队目前甚至考虑运行一个服务器来代理这些位置报告请求,这在未来可能会减少自己创建帐户的需要。

让我们来看看新闻声明“即将到来的进步”部分列出的每一项:

不相关,因为它不会阻止罪犯,在使用OpenHaystack时也不会被看到。

不相关,因为它只是在AirPods触发警报时更改警告消息内容。

精确定位要求标签中有苹果的U1超宽带芯片。由于AirTag clone微控制器不包含这样的UWB芯片,因此无法通过精确查找找到这些芯片。

“当AirTag自动发出声音提醒附近的任何人它的存在,并被检测到与iPhone、iPad或iPod touch一起移动时,我们还会在您的设备上显示一个警报,然后您可以对其采取行动,如播放声音或使用精确查找(如果可用)。这将有助于AirTag可能位于以下位置:否则很难听到,或者如果AirTag扬声器被篡改。"

在克隆实现中可以跳过此通知(就像OpenHaystack当前的情况一样)。

“我们不想要的跟踪警报系统使用复杂的逻辑来确定我们如何提醒用户。我们计划更新我们不想要的跟踪警报系统,以便提前通知用户,未知的标签或查找我的网络附件可能与他们同行。”

这是非常模糊的,但最相关的一点。进退两难:如果他们不想在设备每次向苹果发送位置报告时通知用户,那么就很难抵御不断旋转的公钥。

无论如何,进行的实验表明,目前可以绕过跟踪警报逻辑,同时仍然能够跟踪iPhone用户。

“目前,收到不需要的跟踪警报的iOS用户可以播放声音来帮助他们找到未知的AirTag。我们将调整音调序列,以使用更多最响亮的音调,使未知的AirTag更容易找到。”

这只有在已经收到跟踪警报且不适用于没有扬声器的AirTag克隆时才有用。

"理论上,理论和实践没有区别。在实践中,这是有必要的" -本杰明·布鲁斯特

我决定通过构建这样一个隐形标签并进行一个真实的实验来测试我的假设(主要是一次性公钥)。

一种检索和显示每个广播公钥的解密位置报告的方法

为了进行实验,我决定在正确的椭圆曲线上预生成随机密钥对,并在要刷新的固件中包含公钥。相应的私钥将存储在兼容的OpenHaystack中。plist文件。理论上,这允许使用普通(甚至是预编译的)OpenHaystack macOS客户端将每个可能的公钥作为自己的标记导入。

在实践中,客户机的设计不是为了处理数千个标签(注意,苹果官方只允许16个!),因此,我做了一些更改来针对该用例进行优化(将不同设备的位置报告请求合并到单个HTTP请求中,跳过密钥链操作,稍微优化二次复杂度操作)。

修改后的固件和macOS检索应用程序可在https://github.com/positive-security/find-you.有意省略了用于以正确格式生成密钥对的python脚本。

在实验中,我选择迭代2000个密钥对,每30秒发送一个信标(因此每17小时重复一次公钥)

与有限的密钥对列表不同,可以在AirTag克隆和Mac应用程序中使用通用的种子和派生算法来生成几乎从不重复的密钥流

当使用不可逆的派生函数并总是用下一轮的输出覆盖种子时,苹果或执法部门无法检索标签之前广播的公钥或发现的位置,即使在设备被发现的情况下进行物理访问

被追踪的人使用的是iOS 15.3.1版iPhone,所有相关设置都配置为接收“查找我的安全”警报

这名隐形航空标签克隆人与被追踪者在一起超过5天,也是在离开他们家时

运行Apple的Tracker Detect的活动扫描来搜索Find My devices将根本不会显示隐形AirTag,而广播公钥的位置报告一直在上传,可以检索。

虽然没有对此进行更多调查,但可能的原因是,在标签显示在UI中之前,应用程序正在等待具有相同公钥的多个信标。

首次在2021年8月发布(StEfter检测前4个月),SeEMOO,TU达姆施塔特实验室也在OpenHaSACK之后,AcGuoor提供了另一种扫描附近找到我的设备的方法。

其优点是,与苹果的iOS应用程序类似,该应用程序还支持在后台进行连续扫描。然而,该功能的实现方式也要求使用相同公钥的多个信标来触发警报,因此也可以使用“每公钥1信标”标签绕过:

“每当一个跟踪器被多次检测到时,应用程序就会识别出这一点。它会比较检测到跟踪器的位置。如果一个跟踪器被检测到至少3次,并且位置发生了变化(以确保[It';s]不是你的邻居),应用程序会向你发送通知。”

与跟踪器检测相比,AirGuard和#39;s的“手动扫描”功能将显示隐形AirTag克隆(每个接收到的信标一个新设备):

2月16日,该隐形标签克隆人被传递给被追踪者,并一直与他们在一起,直到2月21日。在这段时间内,此人在家里待了很长时间,但我们也可以跟踪几次外出旅行(出于隐私原因,以下未显示)。

除了被追踪的iPhone用户和他们使用iPhone的室友在这段时间内都没有收到任何追踪警报之外,没什么可说的。一直以来,他们的iPhone都在将他们的位置转发到苹果的服务器,让我能够检索和解密它们。

"这就是为什么我们创新了有史以来第一个主动系统来提醒您不必要的跟踪。我们希望这会开启一种行业趋势,让其他公司也能在其产品中提供此类主动警告。"

我觉得很有趣的是,他们一开始就提倡为跟踪系统提供跟踪警报,并将其付诸实施。他们将有史以来第一个简单、廉价的全球跟踪系统引入了一个“不必要的跟踪长期以来一直是一个社会问题”的世界,为自己实施了破坏性的反跟踪功能而喝彩,现在还强迫其他人也实施针对他们推出的跟踪网络的保护。

主要的风险不在于引入AirTags,而在于引入Find My生态系统,该生态系统利用客户的设备提供这项苹果服务。由于苹果在当前的Find My设计中无法将其使用仅限于正版AirTags(以及官方合作伙伴的设备),因此他们需要考虑实现Find My协议的定制、潜在恶意信标(或带有修改固件的AirTags)的威胁。由于power bank+ESP32比AirTag便宜,这可能是一些人自己构建克隆的另一个动机。

根据该系统目前的设计,从技术上来说,似乎很难区分一个持续公钥旋转的恶意AirTag克隆与你在日常生活中路过几个真正的AirTag。

虽然每次从看似不同的设备不断接收Find My Beacon的异常行为可以通过实现更多的逻辑来检测,但当AirTag克隆以随机间隔发送数据时,这可能会失败,如果需要欺骗行为分析,则可能会多次发送几个信标。

在执行测试时,只有第三方应用程序AirGuard的活动扫描模式检测到隐形AirTag克隆。虽然我们不鼓励滥用,但我们希望分享这个实验将对Find My生态系统的安全性和隐私产生积极的改变。