Group of Software Security In Progress

Disrupting Continuity of Apple’s Wireless Ecosystem Security New Tracking DoS and MitM Attacks on iOS and macOS Through Bluetooth Low Energy AWDL and Wi-Fi

作者:Milan Stute, Alexander Heinrich, Jannik Lorenz, Matthias Hollick

单位:Secure Mobile Networking Lab, Technical University of Darmstadt, Germany

会议:USENIX Security 2021

论文链接:Disrupting Continuity of Apple’s Wireless Ecosystem Security: New Tracking, DoS, and MitM Attacks on iOS and macOS Through Bluetooth Low Energy, AWDL, and Wi-Fi

Abstract

Apple控制着全世界最大的移动生态系统之一,掌控着其中的硬件、软件,能够快速将新服务推向其下所有平台(iOS,macOS,tvOS和watchOS),尤其是无线服务。目前,Apple共有12种专有的wireless Continuity services,但研究人员对这一领域的研究覆盖面还相当小。这一领域的研究通常需要大量的逆向工作、协议分析与设备实验,研究难度较大。因此,作者在本文中:

  1. 对自己在Apple无线生态的安全研究中的经验进行了总结,给出了一套hacker’s guide作为方法论指导;
  2. 对苹果的三个具体的continuity service进行了逆向,还原出了服务背后的协议流程;
  3. 作者对这三个服务进行了安全分析,发现了若干漏洞并进行了DoS、tracking和MitM这三类攻击。

1 Background

1.1 Apple’s Continuity Services

如表1所示,Apple目前共有12种continuity service,他们通常用于在设备间传输潜在敏感的用户数据(e.g., 剪贴板内容,电话,照片和密码)。这些服务的协议设计和实现都是闭源的,其中只有AirDrop有过深入的研究。

/images/2021-05-07/Untitled%201.png

本文,作者着眼于以下三个continuity service:

  • Handoff (HO):用于多个苹果设备之间切换时保持在同一个应用上下文中;

    /images/2021-05-07/Untitled%202.png

  • Universal Clipboard (UC):用于同一个owner的临近设备间共享剪切板;
  • Wi-Fi Password Sharing (PWS):用于设备间Wi-Fi口令的分享。

    /images/2021-05-07/Untitled%203.png

Apple的链路层协议主要是AWDL、BLE和Wi-Fi。本文研究中主要涉及其中的AWDL和BLE:

  • AWDL是基于Wi-Fi的专有链接层协议,可以与常规Wi-Fi操作共存,并提供相邻设备之间的高吞吐量直接连接

    /images/2021-05-07/Untitled%204.png

  • BLE在与Wi-Fi相同的2.4 GHz频带内运行

    • BLE advertisement是一种广播机制,可以包含任意数据。当设备建立连接或与附近的设备共享其当前活动时,将使用advertisement。
    • 苹果公司严重依赖自定义BLE advertisement来宣布其Continuity服务,并通过Wi-Fi或AWDL引导各种协议。
    • 通用属性配置文件(GATT)是用于发现服务(由UUID标识)和与对等设备进行通信的蓝牙协议。Apple将GATT用于消息传输,例如通过PWS交换Wi-Fi密码。

2 A Hacker’s Guide to Apple’s Wireless Ecosystem

作者在这部分给出了方法论指导。整个研究涉及的组建和交互如图1所示。这类研究的基础就在于二进制代码分析,由于协议的特性,研究对象跨度较大,涉及诸多frameworks、daemons以及driver(IO80211Family)。作者给出的建议是借助系统日志来找到相关的进程,进而找到其依赖的frameworks和libraries。然后再进一步缩小范围,利用符号信息识别我们感兴趣的函数和代码片段。单纯硬着头皮逆是很困难的,作者的方法是借助系统日志、网络接口(可以获取加密传输前的明文消息)和keychain来作为辅助。

/images/2021-05-07/Untitled%206.png

2.1 Binary Analysis

  • Binary landscape
    • Frameworks and Daemons

      框架为其相应的单例守护程序提供API,并且可以由其他守护程序和进程使用。

      • Frameworks路径
        • /System/Library/Frameworks
        • /System/Library/PrivateFrameworks
      • Daemons路径
        • /usr/libexec
        • /usr/sbin
      • low-level libraries
        • /usr/lib
        • /usr/lib/system
    • Drivers

      位置: /System/Library/Extensions

      主要集成在IO80211Family中

  • Binary selection
    • 通过系统日志找目标服务相关的进程
    • 通过找到的daemons来找相关的frameworks和libraries
  • Interesting functions and code segments

    借助符号和debug字符串等信息

2.2 System Logging

Console应用自macOS 10.12后,集成了所有的系统和应用日志,并包括来自内核的调试信息。也可以通过log指令,结合修改log level或是进行过滤。

/images/2021-05-07/Untitled%207.png

2.3 Network Interface

监视Wi-Fi和BLE网络接口是一种收集有关特定服务信息的快速方法

  • 借助Wireshark来分析数据包,编写自定义的dissectors,结合二进制逆向,推断各个字段语义;
  • 借助Bluetooth Explorer来实时显示周边的蓝牙设备及广播包,借助Packet Logger跟踪BLE HCI指令,并提供部分InternalBlue的功能。
  • 部署MitM proxy tool来解决端到端的加密

更进一步的,通过复现协议的原型来进行实验。

具体来说,作者分析中发现,许多continuity service都使用repportd提供的安全传输服务,可以通过HTTP MitM proxy获取加密前和解密后的明文数据。

2.4 Keychain

在对可能采用的安全机制进行有根据的假设时,访问特定服务或协议使用的私钥和其他安全数据非常有用。这在构建和测试原型时也同样有效。例如AirDrop中的TLS或一些自定义加密,都需要一个或多个秘密输入,例如私钥、证书或令牌。

可以基于FRIDA,在特定进程访问钥匙串时将代码注入Security框架中,以记录秘密信息。

3 HO & UC 协议

对于HO或UC,所涉及的设备必须登录到相同的Apple ID,并打开蓝牙和Wi-Fi。二者的协议是相同的:

  1. 使用BLE advertisement和mDNS-over-AWDL的发现阶段
  2. 派生会话密钥的认证阶段
  3. 传输应用程序数据的有效载荷传输阶段
    • 细节

    /images/2021-05-07/Untitled%208.png

    BLE advertisement的frame结构如图3所示,采用TLV8结构。Apple通过专用的蓝牙加密密钥$K^{BLE}$使用AES-GCM算法加密、认证。

    /images/2021-05-07/Untitled%209.png

    /images/2021-05-07/Untitled%2010.png

4 PWS 协议

  • 协议流程

    /images/2021-05-07/Untitled%2011.png

5 Security and Privacy Analysis

作者对这两个协议进行了安全分析,针对其中的漏洞提出了四种攻击:

  1. 针对HO和UC的协议级DoS攻击:利用BLE advertisement中的低熵身份验证标签和重播保护机制。
  2. 设备跟踪攻击:利用了几个AWDL设备标识符(例如MAC地址和mDNS记录)的异步随机间隔。
  3. MitM攻击:利用PWS中的单向身份验证来自动分发和填写Wi-Fi密码,从而使受害者连接到攻击者控制的Wi-Fi网络。
  4. 针对PWS协议的DoS攻击:该攻击利用了解析错误,并导致iOS上的“设置”应用崩溃,能够阻止用户连接到新的Wi-Fi网络。

/images/2021-05-07/Untitled%2014.png

  • DoS via IV Desynchronization
    • The Vulnerabilities
      • HO advertisement采用1字节的authentication tag和2字节的IV。该IV是个线性增长的计数器,一旦收到一个成功认证的advertisement,接收方会更新IV,此后不高于该IV值的advertisement均会被丢弃
      • 认证失败时,会触发密钥更新协议(走AWDL),向发送方请求当前的key-IV。但如果收到的key-IV对与存储的一致,则不会重新交换密钥。
    • The Attack

      C:client device,存储着key-IV对;S:已连接过的server device

      目标: 改变C中key-IV对的IV counter,使得基于IV的重放保护机制丢弃未来所有来自S的advertisements,于是C无法接受到来自S的新的UC剪切板数据或是HO activity。

      攻击步骤:

      • 生成一个有效的HO advertisement
      • 将S的BLE MAC地址设置为源地址进行欺骗
      • 将有效载荷中的IV设置为最大值
      • 发出256个广告副本以暴力破解所有身份验证标签的值。

      攻击说明:

      该攻击之所以有效,是因为Apple设备使用BLE advertisement中的共享密钥和IV来验证authentication tag。

      通过发送255个带有无效标签的advertisement,其中总有一个能碰上正确的authentication tag,使得C的IV增加到最大值0xffff,后续所有advertisement的IV均被丢弃。

    • The Mitigation

      增加tag的长度:BLE最多携带24字节,目前已用16字节,可以添加一个8字节的认证tag

  • Device Tracking via Linear IV

    尽管Apple在BLE中采用MAC地址随机化,但当BLE地址更改时,IV保持不变,这使得HO广告中线性增加的IV仍可用于长期设备跟踪。

    • The Mitigation

      思想就是用不可猜测的伪随机序列代替线性计数器,防止通过线性IV进行跟踪。

      /images/2021-05-07/Untitled%2015.png

  • Device Tracking via Asynchronous Identifier Randomization
    • Vuln & Attack

      当使用诸如HO或UC之类的连续性服务时,AWDL会明确发出多个设备标识符,例如MAC地址和主机名。尽管Apple为这些标识符实施了随机化方案,但间隔有时不同步,并允许连续的设备跟踪。 AWDL使用Wi-Fi,并且本身不提供身份验证或加密,因此攻击者可以监视通过空中发送的所有数据包。

      /images/2021-05-07/Untitled%2016.png

    • Mitigation

      作者分析了CoreUtils框架中的 -[CUSystemMonitorImp _rotatingIdentifierMonitorStart]函数,发现该函数将计时器设置为17分钟以随机化rpBA值。但是这里使用了low level API,其允许系统推迟调用以节省能量。 此计时器值既不会与其他计时器同步,也不会定期更新,这导致了分析的重叠。 为了减轻这个问题,作者建议标识符的随机化间隔应该被同步或者至少不重叠(例如,主机名和MAC地址)。 另外,作者还建议任何标识符的随机间隔不应超过15分钟,并引入系统范围内的随机化API,以防止回归并容纳将来的标识符。

  • MitM via Wi-Fi Password Auto-Fill
    • The Vuln

      /images/2021-05-07/Untitled%2017.png

    • The Attack

      目标: 使目标设备连接到由攻击者控制的具有相同SSID的受密码保护的Wi-Fi网络。此外,攻击者可以使用自动加载的强制门户网站网页来利用Safari中的漏洞,从而提取敏感的用户数据或访问用户的摄像头

      攻击步骤:

      /images/2021-05-07/Untitled%2018.png

    • The Mitigation

      SSID复制攻击之所以有效,是因为请求者上的无交互用户界面以及缺少授予者的身份验证。因此,作者提出了两步缓解措施:

      • 建议对配对验证握手引入相互认证(如AirDrop)。使用相互身份验证,由于攻击者必须位于受害者的联系人列表中,因此实施攻击将更加困难。
      • 建议更改UI,以便请求者的用户可以决定是否接受来自授予者的密码。(如AirDrop)
  • Preventing Wi-Fi Password Entry via Settings App Crash
    • Vuln

      作者发现从PWS3消息中发送的字典中删除必需的SSID或PSK键值对时,请求者无法解析数据包导致当前应用崩溃。

      /images/2021-05-07/Untitled%2019.png

    • Attack

      作者成功使iOS上的“设置”应用程序崩溃或关闭当前正在输入Wi-Fi网络密码的蓝牙范围内的每台设备的macOS上的Wi-Fi密码窗口。

    • Mitigation

      检查缺少的字段

6 Others

SEEMOO团队专注于无线安全的研究,尤其在Apple的无线协议方面取得了相当丰硕的成果,例如对AWDL协议的逆向就有多篇相关论文发表。而且他们的研究成果确实对学术界和工业界有重要价值,例如Ian Beer的iOS AWDL zero-click exploit就用到了Milan对AWDL协议的还原结果。

从作者这几篇相关论文的工作中,可以感受到方法论的逐渐成熟。目前他们已经对AirDrop、HO、UC、PWS这四种服务进行了逆向还原,从技术上看非常成熟了,也都找到了一些漏洞(偏协议)并进行了攻击实现。同时,对于一些利用条件非常复杂的漏洞(比如用无线消息进行内存破坏),借助他们对协议的还原,也有机会进行触发,有助于对无线协议实现上的安全问题的研究。