😜
蓝牙是一种广泛应用于数十亿个个人计算机、物联网、外围设备和可穿戴设备的短距离无线通信技术。蓝牙设备通过建立配对过程来交换命令和数据,例如键盘/鼠标输入、音频和文件,并通过安全通信信道进行传输。由于这些命令和数据的敏感性,安全机制如加密、身份验证和授权已经被开发和采用在这些标准中。然而,仍然不断发现蓝牙存在漏洞。
在文献中,对蓝牙连接建立阶段的成功攻击报道很少。许多攻击都基于一种假设,即连接已经建立或使用被 compromised 的代理来初始化连接,例如恶意应用程序或粗心的用户。我们认为这样的假设是强大且不切实际的。秘密建立的连接是针对蓝牙设备的任何实际攻击的重要起点。在本文中,我们证明了蓝牙规范中存在一系列漏洞,使攻击者能够冒充蓝牙设备,并成功与受害者设备建立连接。整个过程不需要设备所有者/用户的参与,也不需要在受害者设备上安装任何恶意应用程序。攻击者可以通过切换蓝牙配置文件来提升权限,从受害者设备中检索敏感信息并注入任意命令。我们将这种新型攻击命名为Blacktooth攻击。为了证明Blacktooth攻击的有效性和实用性,我们对21种不同制造商和操作系统、以及所有主要蓝牙版本的蓝牙设备进行了评估。我们展示了这种新型攻击在所有受害者设备上的成功实施。
蓝牙技术已经广泛部署在数十亿个电子设备中,用于低功耗、短距离的无线通信[11]。蓝牙规范由蓝牙特别兴趣组织(Bluetooth Special Interest Group,SIG)进行标准化,目前维护着两种部分不兼容的蓝牙协议变种:蓝牙BR/EDR和蓝牙低功耗(Bluetooth Low Energy,BLE)。由于蓝牙设计用于个人计算机、移动设备和可穿戴设备,并得到广泛采用,大量敏感信息通过蓝牙连接传输。因此,人们对蓝牙安全性进行了重要的努力。然而,仍然不断发现漏洞[17, 23, 34]。特别是,一些高调的攻击利用了协议漏洞,最终导致了规范的大幅修订[7, 22, 30]。最近,在蓝牙协议栈的不同阶段发现了广泛的攻击[8, 32]。例如,Antonioli等人提出了BIAS攻击[5]来欺骗蓝牙认证,以及KNOB攻击[4]用于降低蓝牙会话密钥的熵。Xu等人发现,即使蓝牙设备的配置文件发生了改变,它仍然会被配对的Android手机信任[36]。
然而,据我们所知,目前还没有存在一个有效的攻击能够在不与用户交互的情况下自主地触发蓝牙连接。在实践中,连接建立是针对蓝牙通信后期阶段的许多攻击的第一步。在文献中,攻击通常假设已经建立了连接,例如[3, 21, 31],或者通过用户误操作或在受害者设备上预先安装的恶意应用程序建立连接,例如[33, 36]。这样的假设在实际情况下可能过于强大。虽然一些现有的研究关注连接建立过程的其他阶段,但它们忽略了初始连接触发阶段[6, 21]。我们认为,能够偷偷与受害者设备建立蓝牙连接的有效攻击对于数十亿蓝牙用户来说是一个重大威胁,因为这种攻击将使所有随后的攻击更加实际和危险。
在本文中,我们介绍了一种名为"Blacktooth"的自主且隐秘的蓝牙通信连接建立阶段攻击。我们首先展示了蓝牙规范中存在一系列漏洞,攻击者可以利用这些漏洞来实现以下目标:(1)冒充外围蓝牙设备并与受害者设备建立连接,而无需提示设备所有者确认;(2)通过降级到单向Legacy认证仅"认证"受害者设备来绕过认证;(3)通过迫使受害者设备使用短加密密钥并对密钥进行暴力破解来突破加密;(4)通过切换蓝牙配置文件升级权限,并从受害者设备中检索敏感信息或注入任意命令。在这种攻击中,攻击者(或攻击设备)无需出现在冒充设备(例如,良性蓝牙耳机)和受害者设备(例如,智能手机)进行配对的过程中,也无需观察冒充设备与受害者设备之间的任何先前通信,也不知道连接的链接密钥,并且它们之间无需有任何预先共享的密钥。所提出的攻击是完全隐秘的,在整个攻击过程中,受害者设备不会弹出任何通知或提示对话框。
在一个概念验证的实现中,我们展示了Blacktooth攻击对普通蓝牙设备的有效性。我们测试了不同蓝牙芯片和版本的智能手机和平板电脑,这些设备由主要厂商制造,包括苹果、谷歌、三星、联想、华为、荣耀、一加、OPPO、小米等。攻击在所有测试设备上都取得了成功。我们总结我们的主要贡献如下:
我们详细阐述了蓝牙规范中的一系列漏洞,包括新的漏洞。我们证明了一个恶意设备可以由于一个蓝牙微网中未修复的主从角色问题而发起连接。通过结合这个新的漏洞和另外两个已知的漏洞,我们能够以完全隐秘的方式与受害者设备建立恶意连接。这种攻击还使得许多之前报道的攻击变得实际可行,因为它消除了初始连接建立阶段的主要障碍。
这些漏洞的存在使得Blacktooth攻击成为一个非常严重的安全威胁,因为它使攻击者能够在没有用户交互和察觉的情况下成功地与受害者设备建立连接,并且能够进一步发起各种攻击。这突出了对蓝牙规范和设备安全的进一步研究的紧迫性,以保护数十亿蓝牙用户的数据和隐私。
我们进一步证明,攻击者可以利用蓝牙配置文件认证过程中的另外两个漏洞来升级连接到敏感配置文件。我们展示了这种新提出的攻击是完全隐秘的,即设备所有者不会收到任何警报或通知,并且无需用户确认即可发起攻击。这种攻击也非常实用,它不假设任何先前的知识,也不需要在受害者设备上预先安装任何恶意代理。
Blacktooth攻击的隐秘性和实用性使其成为一种危险的攻击方式,可能会对大量的蓝牙用户造成严重影响。由于攻击者能够完全不受用户察觉地建立连接和进行各种攻击,蓝牙设备和规范的安全性问题变得尤为重要。为了保护用户的数据和隐私,进一步的研究和改进在蓝牙安全性方面是必要的。
为了展示Blacktooth攻击对实际设备的实用性,我们成功地在21种不同的蓝牙设备上进行了攻击。我们的设备样本包括来自各种智能手机和个人电脑制造商的设备,涵盖了不同的蓝牙芯片、操作系统和所有主要的蓝牙版本。最后,我们还讨论了可能针对这种新攻击的防御方法。
通过在这么多不同类型的设备上成功进行攻击,我们进一步证明了Blacktooth攻击的普适性和对真实世界设备的适用性。这表明这种攻击可能对广大蓝牙用户构成实际威胁,因此对于蓝牙设备和规范的安全性问题需要引起更多的关注和重视。探索可能的防御措施是至关重要的,以保护用户的设备和数据免受此类攻击的侵害。
Ethical Considerations and Responsible Disclosure: 该研究的目标是调查一种广泛采用的技术中的未知漏洞。该研究可能对数十亿最终用户产生潜在的益处。所有在本文中展示的实验均在研究实验室中进行。我们从未攻击过实验室以外的任何真实设备。在2022年4月,我们向测试设备的制造商披露了Blacktooth攻击的技术细节和潜在的对策。我们还向蓝牙特别兴趣组织(Bluetooth SIG)披露了我们的攻击。在本文手稿发表时,我们已收到几家公司的回应,他们承认了我们的发现,成功复现了这种攻击,并计划进一步探索这个问题。我们与一些制造商密切合作,开发有效的补丁。除了设备制造商和蓝牙SIG之外,我们没有向任何其他人披露这次攻击。
本文的其余部分按如下方式组织:在第2节中,我们简要介绍了蓝牙BR/EDR技术。第3节中,我们提出了系统和对手模型,并介绍了一系列待利用的漏洞。接着在第4节中,我们详细阐述了Blacktooth攻击的细节,然后在第5节中介绍了实现和评估结果。在第6节中,我们进一步讨论了攻击的几个实际问题,并提出了潜在的防御措施。在第7节中回顾了相关文献,最后在第8节中总结本文。
蓝牙基本速率/扩展数据率(Bluetooth BR/EDR),也被称为蓝牙经典模式,是一种低功耗的无线技术,广泛应用于短距离通信。蓝牙BR/EDR使用2.4GHz的ISM频段[10]。其中一个设备被称为主设备(Master),提供参考时钟信号,而其他设备(不超过七个)被称为从设备(Slave),它们都与该时钟同步。所有同步的设备构建了一个称为蓝牙微网(piconet)的网络。每个蓝牙设备都有一个48位的蓝牙设备地址(BD_ADDR)。
蓝牙系统由蓝牙核心协议栈和应用程序组成。蓝牙核心协议栈包含物理层、逻辑层和逻辑链路控制自适应协议(L2CAP)层,以及一些支持应用程序的协议。蓝牙设备在蓝牙芯片中实现物理层和逻辑层,被称为蓝牙控制器,并在设备操作系统(OS)中实现L2CAP层和面向应用程序的协议,被称为蓝牙主机。蓝牙主机通过主机控制器接口(HCI)与控制器通信。蓝牙设备通过服务发现协议(SDP)向其他设备广播支持的服务和相关参数。应用层在用户空间实现蓝牙服务接口和提供给用户的功能。
要在两个蓝牙设备之间建立安全连接,主设备首先查询从设备以获取设备名称和功能。然后,主设备发送连接请求以启动连接建立过程。需要注意的是,设备的角色并不是固定的——规范只定义了主设备作为启动连接的设备。也就是说,任何一个蓝牙BR/EDR设备都可以启动连接并成为主设备,无论其功能或之前的角色如何。例如,通常作为从设备的蓝牙耳机也可以扮演主设备角色,并主动与智能手机建立连接。设备可以在建立蓝牙微网后切换主从角色。
蓝牙规范提供了链路层机制来对设备进行认证,以避免对抗性连接。配对是使用链路管理协议(Link Manager Protocol,LMP)在两个蓝牙设备之间协商一个链接密钥的过程。安全简单配对(Secure Simple Pairing,SSP)是最常用的配对机制,它使用椭圆曲线迪菲-赫尔曼(Elliptic Curve Diffie-Hellman,ECDH)进行密钥协商。当一个新设备试图与用户的智能手机配对时,需要用户确认。一旦配对成功,两个蓝牙设备共享相同的链接密钥,用于未来的认证。认证成功后,设备会从链接密钥和公共参数中派生出一个加密密钥。加密密钥的熵范围为1到16字节,根据密钥长度协商过程而定。需要注意的是,上述过程既不受完整性保护,也不加密。如果两个设备都支持安全连接,则使用安全认证进行认证,并使用AES CCM进行加密。否则,将使用传统认证和流密码进行认证和加密。
不同制造商生产的不同蓝牙设备可能提供相同的功能;因此,开发了一些称为蓝牙配置文件的协议,用于规范设备之间的各种通信。蓝牙配置文件定义了蓝牙核心协议栈中的必要功能和其他所需的设置。截至目前,蓝牙特别兴趣组织(Bluetooth SIG)已经为蓝牙BR/EDR规范了大约40个配置文件。在蓝牙设备中有一些常用的配置文件,例如用于蓝牙耳机和智能手机之间的音频通信的高级音频分发配置文件(A2DP),用于从键盘向智能手机发送按键的人机接口设备配置文件(HID),以及用于获取联系人的电话簿访问配置文件(PBAP)。蓝牙设备可以同时实现多个配置文件,并使用SDP向其他设备指示所有可用的服务。
现有的蓝牙安全机制部署在蓝牙控制器和主机中。控制器在配对过程中对远程设备进行认证,并通过加密确保通信的机密性。主机识别设备的设备类别(CoD)并限制远程设备的能力。这些机制在它们是良好协调的前提下工作。然而,我们发现这种假设是不可靠的,特别是安全机制并未完全了解它们对手的行为和威胁。攻击者可以利用这些每个机制中的基本设计缺陷,逐步突破防御,最终控制目标设备。
我们考虑两个受害设备,Alice和Bob,在蓝牙BR/EDR上安全地相互通信(图1)。由于在攻击发生时两个受害者不需要同时出现,我们只假设存在两个合法设备并且它们在过去已经进行过通信。也就是说,Alice和Bob已经共享并存储了链接密钥,这是一个对攻击者来说是未知的长期密钥。该密钥已经通过蓝牙的安全简单配对(使用传统认证或安全认证)建立。这些标准化的安全机制旨在保护蓝牙通信免受窃听、冒充和中间人攻击。
为了简化,我们假设Alice是蓝牙主设备,例如智能手机,而Bob是蓝牙从设备,例如蓝牙耳机。Alice可以使用现有的链接密钥启动并与Bob建立安全连接,而Bob愿意接受Alice使用该密钥的连接。我们假设所有正在使用的安全原语,如FIPS和AES,都是完全安全的。
攻击者Mallory的目标是冒充Bob,与Alice建立一个安全的蓝牙连接,并通过从敏感配置文件(例如HID配置文件)中获取的高级权限(例如键盘输入)控制Alice。在第4节中,我们会详细介绍所有步骤的技术细节。
Mallory必须身处受害设备的蓝牙连接范围内。Mallory无法观察Alice和Bob之间的安全配对过程,也不知道链接密钥。Mallory能够窃听、解码和篡改未加密的数据包,以及干扰蓝牙频谱。Mallory知道Alice和Bob的公共信息,比如蓝牙名称和地址、协议版本、能力等。由于连接建立过程不加密,Mallory可以通过窃听通信来收集交换的属性信息。在Alice和Bob之间建立安全连接后,Mallory可以通过干扰蓝牙频谱来迫使它们断开连接。Mallory可以尝试重新与Alice建立安全连接。
在这里,我们阐明了连接/配对过程中存在的5个漏洞,这些漏洞在第2.2节中有所描述。特别地,Vulnerability #1是本研究中新发现的,而Vulnerability #4在Android上之前已经被报告过,但我们也在iOS、iPadOS、macOS、HarmonyOS以及最新版本的Android上进行了确认。
Vulnerability #1 (new): Unfixed Roles (Inquery). Alice和Bob在查询过程中相互发现,然后通过蓝牙BR/EDR连接。Alice(主设备)预期会向Bob发送连接请求来开始建立连接。通常,这个过程需要在主设备(Alice)上进行用户确认,以避免与非预期的(恶意的)设备进行错误连接。然而,蓝牙BR/EDR并未将Alice和Bob绑定到主从角色;因此,任何一个设备都可以切换到另一个角色。在实践中,发起页面的设备总是成为主设备,即使该设备具有传统从设备的功能(例如,蓝牙耳机)。角色的更改可以在连接完成后的任何时候进行。也就是说,Mallory可以首先冒充之前已经与Alice配对的Bob。然后,Mallory充分利用主设备的定义规则和角色切换机制向Alice发送连接请求。由于Mallory(冒充Bob)现在作为主设备,而Alice成为从设备,因此不会在Alice上提示用户确认。
请注意,市场上的一些普通蓝牙设备,特别是一些耳机,利用这个漏洞作为一个功能来实现“自动重连”功能。然而,我们证明这种设计在蓝牙规范中引入了一个严重的安全漏洞,如果在攻击中被利用,将导致严重后果。在大多数链路层通信中,主从角色是对称的,因此从通信角度来看,这些角色被认为是可以互相切换的,这也是目前蓝牙标准和产品中的实践。然而,在安全设计上,这两个角色并不对称。特别是,认证和握手过程由主设备控制。此外,协议并未将设备角色与上层功能绑定,而配对设备的功能也不对称。因此,角色切换在蓝牙标准中引入了严重的安全漏洞。我们认为未固定角色的漏洞是其他(已知或未知)威胁的放大器,因为它可能使其他攻击能够在不引起注意的情况下启动。我们担心未来的研究可能会发现新的漏洞,利用未固定角色的漏洞执行复杂且隐蔽的攻击。
Vulnerability #2: Unilateral Legacy Authentication (Connection). 在连接过程中,Alice和Bob使用共享的链接密钥进行认证。仅当两个设备都支持安全连接时才使用安全认证(SA)。与此同时,规范只要求在传统认证(LA)中进行单向认证,即不要求在LA中进行互相认证。Antonioli等人[5]证实,只有主设备在LA期间对从设备进行认证。因此,没有链接密钥的攻击者可以冒充主设备,并在不对从设备进行认证的情况下完成安全连接建立。即使两个设备都支持安全连接,攻击者也可以通过声明冒充的设备不支持安全连接来将SA降级为LA。
Vulnerability #3: Potential Low Encryption Key Entropy (Connection) [4]. 在连接过程中,Alice和Bob计算一个加密密钥,并协商加密密钥的熵,该熵在1字节到16字节的范围内。由于加密密钥是从链接密钥派生的,Mallory无法直接计算加密密钥。然而,并未直接用于加密消息。实际的加密密钥是通过将的熵减小到字节来计算的。是蓝牙加密密钥协商协议的结果。因此,攻击者可以冒充其中一个设备,并强迫另一个设备接受1字节的熵,然后尝试对加密密钥进行暴力破解。由于的密钥长度为8位,攻击者很容易穷举所有可能性。攻击者可以使用已知的蓝牙字段(例如L2CAP头)作为预言机来对进行已知明文攻击。
Vulnerability #4: Inconsistent Profile Authentication Procedure (Communication). 当在通信过程中请求更改配置文件时,Alice需要在连接到Bob的新配置文件并允许新功能之前进行额外的安全验证。然而,对于验证配置文件,蓝牙规范没有给出任何可行的建议。只要Alice和Bob配对成功,Bob就可以信任地进行任意的配置文件更改。更糟糕的是,Alice的屏幕上不会出现任何警告来提醒她有关配置文件的更改,也不会弹出确认对话框来请求Alice的许可。因此,如果Mallory成功地冒充Bob并与Alice建立安全连接,Mallory可以使用与Bob使用的配置文件不一致的新(恶意)配置文件。例如,Mallory可以冒充Bob(之前是一个耳机),并启用Human Interface Device Profile(HID)- 用于键盘和鼠标的配置文件。
整个上述过程是隐蔽的。在Android设备上,只有当Alice在手机设置中检查蓝牙设备的详细信息时,她才能注意到配置文件和权限的更改[36]。而且,在Apple设备上,Alice很可能注意不到这些变化,因为iOS并不总是显示设备信息(例如设备类型),并且将大部分权限对用户隐藏起来。
Vulnerability #5: Default Profile Services Authorization (Communication).
在通信过程中,主机接受来自蓝牙设备的任意配置文件请求。默认情况下,所有与请求的配置文件相关联的权限都会被授予,即使请求的配置文件与实际设备的功能不一致。例如,当一个耳机添加Human Interface Device(HID)配置文件时,受害者手机将接受请求并在不提示用户授权的情况下授予权限。因此,只要Mallory冒充Bob并与Alice连接,Mallory就可以实际上获得任意的权限而无需用户同意。我们认为这是一个严重的漏洞,允许特权升级。更糟糕的是,在Android系列操作系统中,新配置文件的状态在系统设置中显示为“已拒绝”,而新配置文件实际上已获得权限。在iOS中,配置文件状态是不可见的。
在本节中,我们介绍Blacktooth攻击的技术细节,该攻击利用了在第3.3节中介绍的所有五个漏洞。如图2所示,攻击包括以下步骤:
结果,Mallory成功冒充Bob并升级权限,获得对Alice的完全控制。Mallory可以发送任意按键,点击任意按钮以更改设置,截取和检索屏幕截图,读取电话簿和短信,甚至关闭智能手机。整个攻击过程完全无声,并且不需要任何用户的操作。
每个蓝牙BR/EDR连接的第一步是查询过程。通常情况下,Alice(主设备)会对Bob(从设备)发起呼叫,以获取远程设备的名称和功能,然后再建立连接。设备所有者可以修改设备名称,这意味着攻击者可以将自己的设备名称更改为Bob的名称(例如,Steve的耳机)。通过这种方式,即使所有者注意到他的手机已与蓝牙设备连接,他也不会觉察到任何异常,因为设备名称对他来说是熟悉的。同时,Mallory还必须将其蓝牙地址更改为Bob的地址()。然后Alice(智能手机)将Mallory视为Bob,因为蓝牙设备是通过蓝牙地址来标识的。Mallory很容易通过窃听Bob与任何设备之间的连接建立过程(未加密)或利用查询过程来获取Bob的设备信息。
接下来,Mallory希望触发与Alice之间的连接过程。这是整个攻击过程中最关键的步骤,Mallory需要保持隐蔽,避免引起用户的警觉。特别是,以前的研究在自动且无声地建立Alice和Mallory之间的连接方面存在不足。例如,Xu等人[36]需要在受害者手机上安装一个恶意应用程序,以向恶意蓝牙设备发送连接请求,而许多其他攻击则忽略了这个过程,假设用户不小心或已经建立了连接。据我们所知,没有任何已知的攻击可以在不利用恶意代理或需要用户确认的情况下,静默地与目标设备建立蓝牙连接。
为了使攻击在现实世界中实际可行,我们利用了设备角色协议设计中的一个缺陷。特别地,蓝牙规范定义了发起连接的设备为Master,并且Master-Slave角色在建立piconet之后可以更改。这意味着Alice和Bob的角色不是静态的,Bob可以作为Master主动发起连接,然后再切换为Slave从设备。尽管蓝牙耳机利用这种机制自动重新连接到其配对的手机上,但这并未引起安全界的关注。Mallory可以冒充Bob并向Alice发送连接请求,以触发连接建立过程,而无需Alice的任何操作。连接初始化阶段完全无声,不会触发任何通知或确认,也不需要任何手动干预。此外,除非用户手动关闭蓝牙,否则连接初始化阶段无法受到Alice的限制,因为Master和Slave的定义是基本概念,角色切换过程是蓝牙BR/EDR的基本设计。
在发送连接请求后,连接建立进入身份验证过程。蓝牙规范定义了两种身份验证方法:Legacy Authentication(传统身份验证)和Secure Authentication(安全身份验证)。值得注意的是,只有在两台设备都支持Secure Connections时才会使用Secure Authentication,这是在Bluetooth 4.1中首次提出的。
传统身份验证过程如图8所示。它的工作过程如下:验证者生成一个称为的随机数并将其发送给要求认证的设备。请求认证的设备使用参数、和链接密钥计算响应并将其发送回验证者。然后,验证者使用相同的哈希函数和相同的参数计算,然后将其与进行比较。如果和的值相等,验证者认为要求认证的设备拥有相同的链接密钥。
根据蓝牙规范,在传统身份验证中,验证者不一定是主设备,应用程序定义了哪个设备需要进行身份验证。在实践中,验证者几乎总是主设备,而请求认证的设备是从设备。此外,传统身份验证过程只提供单向认证。要实现双向认证,主设备和从设备必须分别运行传统身份验证过程。蓝牙规范不要求双向认证,在实践中,很少有设备需要双向认证。Antonioli等人的研究证实,只有主设备在安全连接建立期间对从设备进行单向认证。因此,如果Mallory保持其角色为主设备,它可以在未经Alice认证的情况下与Alice建立安全连接。
传统身份验证的身份伪造过程如图3所示。Alice接受来自Mallory的连接请求并将其视为Bob。然后,Mallory向Alice发送,并且Alice使用元组、和链接密钥计算,并将结果发送给Mallory。通过这种方式,Mallory可以作为Bob执行身份验证的其余步骤(例如,密钥协商和安全链路激活),而无需向Alice证明自己知道。
安全身份验证仅用于在安全连接中提供双向身份验证。在安全身份验证中,Master单方面验证Slave的漏洞不再存在。然而,我们可以通过降级安全身份验证来进行身份伪造攻击。蓝牙规范并不要求使用安全连接配对的两个设备后续必须继续使用安全身份验证。也就是说,即使Alice和Bob以前使用安全连接进行过配对,他们在连接建立时仍然可以使用传统身份验证。Mallory可以利用这个漏洞来降级安全身份验证。
假设Alice和Bob以前使用安全身份验证进行过配对,新的伪造攻击过程如图4所示。Mallory需要向Alice声明它不支持安全连接,以便将身份验证过程降级为传统身份验证。因此,Mallory作为Master,并使用单方面的传统身份验证来“验证”Alice,而Alice则不对Mallory进行身份验证。
一旦身份验证成功,加密过程就会开始。蓝牙规范为蓝牙BR/EDR定义了两种密钥生成方法,分别用于Secure Connections和Secure Connections之前的方法。由于在身份验证阶段已经降级到Legacy Authentication,我们的攻击不再使用Secure Connections的密钥生成方法。我们在本节中专注于Secure Connections之前的加密密钥生成方法。
在加密过程中,密钥是由元组、、和生成的。其中,是Alice和Bob之间共享的链路密钥,而其他参数是公开已知的。如果密钥生成器按照蓝牙规范实现,那么的熵始终为16字节。需要注意的是,不能直接用于加密消息。通过使用密钥缩短函数,可以将的熵减少到字节来计算实际的加密密钥,其中是由两个设备协商的。加密密钥的熵与蓝牙安全级别无关 - 即使在连接处于最高安全级别时,熵也可以是1字节。
密钥协商过程是由蓝牙控制器实现的,对于蓝牙主机和蓝牙应用程序来说是透明的。因此,Mallory(攻击者)可以说服Alice接受熵为1字节的加密密钥,而不被受害者察觉。接下来,我们详细描述Mallory和Alice如何协商等于1的过程(如图5所示)。蓝牙规范定义了两个参数L_\max和L_\min,其中1 \le L_\min \le 𝐿𝑚𝑎𝑥 \le 16,用于声明允许的密钥长度范围。在两个设备同意启动蓝牙链路层加密后,主设备(现在是Mallory)将发送一个建议值给从设备(现在是Alice)。应该最初等于L_\max。因此,如果Mallory想要协商𝑁等于1,它必须设置L_\max = L_\min = 1。然后,Alice将比较和它自己的L_\min。如果L_\min \le 𝐿_{sug},这意味着Alice支持这个长度,Alice将把该值作为加密密钥的长度,协商成功。
上述协商过程的成功依赖于Alice的L_\min=1。在理论上,有可能Alice设置的L_\min大于1并且不接受Mallory的建议,这意味着Mallory无法说服Alice将加密密钥的熵降低到1字节。确实,如果Alice适当地设置了L_\min的值,它可以防止这种攻击。然而,Antonioli等人发现,L_\min和L_\max存储在蓝牙控制器(芯片)的固件中,通常是固定的。蓝牙主机和蓝牙应用程序无法检查和设置L_\min和L_\max的值,也不能决定是否接受建议。更糟糕的是,Antonioli等人发现市场上大多数设备都可以接受1字节熵的密钥。因此,在实际中,Alice无法避免接受1字节的熵。
由于Alice和Mallory已经将加密密钥的熵协商为1字节,因此Mallory可以轻松枚举所有256个可能的并对其进行穷举攻击。Mallory可以利用一些众所周知的蓝牙数据包字段(例如L2CAP头)作为“神谕”来辅助进行穷举攻击。通过利用这个漏洞,Mallory最终可以获取正确的加密密钥,并在不被察觉的情况下获得对Alice和Bob之间通信的未经授权访问权限,从而进行进一步的恶意行为。
是根据流密码使用方程(EQ 1)计算的,其中是一个介于1到16之间的整数,表示加密密钥长度的协商值。是一个次多项式,用于将的熵减小到字节。减小后的输出使用一个块码进行编码,该块码是一个次数小于或等于128 - 的多项式。这些多项式依赖于,并在文献[10, p. 969]中定义。当 = 1时,等于0x0000000000000000000000000000011d,而等于0x00e275a0abd218d4cf928b9bbf6cb08f。
在了解了实际的加密密钥后,Mallory可以使用它向Alice发送消息,并解密从Alice接收的数据包。
目前,Mallory已成功地让Alice相信它是Bob,并建立了一个安全的连接。Mallory可以利用Alice的信任来执行Blacktooth攻击的下一步:通过更改配置文件实现权限提升。在实践中,Mallory并不会更改Bob的配置文件,而是使用SDP添加它想要利用的新配置文件,并要求Alice接受它们。正如我们在第3.3节中提到的Vulnerability #4和Vulnerability #5,Alice会自动接受Mallory建立到这些配置文件的连接请求,并授予相应的权限。由于蓝牙规范在配置文件授权方面存在模糊性,移动操作系统没有正确实现此功能 - 我们测试过的所有Android和iOS设备都会授权新配置文件,而不会要求用户确认大多数配置文件。除非受害者检查蓝牙设置,否则他不会注意到蓝牙设备的服务更改。表1显示了一些可用于执行Blacktooth攻击的配置文件[1]。Mallory可以通过欺骗成键盘和/或鼠标并连接HID配置文件[9]来获得输入权限。然后,Mallory可以像真正的用户一样使用键盘和鼠标来控制Alice。例如,Mallory可以打开相机拍照(点击相机按钮),截屏(发送名为KEY_SYSQR的按键),输入任意消息(发送常规按键),复制(KEY_CTRL+KEY_C),粘贴(KEY_CTRL+KEY_V),授予权限(点击设置按钮并打开权限)等等,以及其他使用键盘和鼠标的操作。在发动攻击后,Mallory可以删除所有消息、照片和截屏以销毁证据。此外,Mallory还可以使用PBAP和MAP配置文件窃取敏感信息。PBAP是用于访问联系人的配置文件,Mallory可以使用它来下载存储在Alice中的姓名和相应的电话号码。MAP是用于访问消息的配置文件,Mallory可以利用它来下载消息。Mallory可能能够获得SMS验证码以登录受害者的帐户。
幸运的是,授权读取手机存储中的任意文件的配置文件需要用户手动确认,正如我们在实验中发现的。因此,Mallory无法通过受损的蓝牙连接直接从手机下载文件。然而,Mallory仍然可以利用HID配置文件来控制手机上的应用程序,并通过短信、电子邮件或云存储发送任意文件或图像。
即使Mallory不升级其权限,它仍然可以造成严重的损害。假设Bob是一个最常见的蓝牙BR/EDR设备——耳机。为了使用耳机功能,Alice必须授予电话音频和媒体音频权限。由于Mallory伪装成了Bob,它获得了这些权限,因此可以进行电话呼叫并录音,或者使用HFP和A2DP配置文件向Alice注入语音命令。
最后,我们想强调Blacktooth攻击并不需要任何预先安装的(正常或恶意的)代理程序,也不需要任何用户交互。Mallory只是利用Bluetooth规范中的漏洞以及Alice操作系统的内置功能。更重要的是,Mallory的所有操作都是完全符合Bluetooth规范的。因此,常规的安全软件很难识别或阻止这种攻击。
虽然我们的Blacktooth攻击本身是完全隐蔽的,但受害者仍然有机会注意到自己正在受到攻击。例如,如果攻击者在受害者想使用蓝牙耳机时发起Blacktooth攻击,受害者会发现他无法连接到耳机,并有机会发现这次攻击。
为了使攻击更加隐蔽,我们可以将Blacktooth攻击修改为MITM版本。MITM Blacktooth攻击比原始的Blacktooth攻击更加具有破坏性。MITM Blacktooth攻击可以被看作是两个基本Blacktooth攻击的组合,其中包含了一些额外的消息转发。MITM Blacktooth攻击的阶段如图6所示。
具体来说,MITM Blacktooth攻击由两个蓝牙设备组成。第一个设备假扮Bob,就像Blacktooth攻击中的原始Mallory一样,第二个设备假扮Alice。这两个设备通过互联网进行通信。第一个设备实现了Bob的功能(例如A2DP sink)以及攻击所需的配置文件(例如HID和PBAP),而第二个设备实现了Alice的功能(例如A2DP gateway)。假设Alice和Bob当前未连接在一起,Mallory的这两个部分分别假冒Alice和Bob,并尝试与它们建立安全连接。当Alice对Bob进行身份验证时,第一个设备通过互联网将挑战转发到第二个设备,第二个设备将挑战发送给Bob,然后Mallory将Bob的响应转发给Alice。通过这种方式,Mallory的第一个设备成功通过了Alice的身份验证并伪装成了Bob。Mallory还可以以同样的方式通过Bob的身份验证并伪装成Alice。对于加密密钥,Mallory可以利用KNOB攻击来使Alice和Bob协商出一个只有1字节熵的加密密钥,并尝试对其进行暴力破解。因此,Mallory可以窃听并转发Alice和Bob之间的所有消息。当受害者不使用Alice和Bob时,Mallory可以发起Blacktooth攻击来注入命令或窃取数据。如果受害者恰好使用设备,例如听音乐,Mallory可以在Alice和Bob之间转发数据以确保正常运行。
总的来说,新的MITM Blacktooth攻击通过允许受害者设备(Alice)执行其与被冒充设备(Bob)的常规操作来提高原始Blacktooth攻击的隐蔽性。更重要的是,Mallory还可以进一步窃听Alice和Bob之间的通信,这可能引发更多的安全和隐私问题,例如当用户使用受到攻击的蓝牙耳机(Bob)进行电话通话时,Mallory会窃听通话内容。
在本节中,我们将展示Blacktooth攻击的实验室实现,并对多种商品设备进行评估,展示攻击的有效性。
我们的攻击场景(图7)包括一个受害者设备——一台OnePlus 7 Pro智能手机(Alice,在合法的安全连接中作为Master),一个被冒充的设备——一对OnePlus Bullets Wireless 2耳机(Bob,在合法的安全连接中作为Slave)。Mallory是一台第五代ThinkPad X1 Carbon笔记本电脑,配合一个CYW920819EVB-02评估板。ThinkPad X1笔记本还用于对加密密钥𝐾𝐶′进行暴力破解。我们在表2中列出了Alice和Bob的相关技术规格。正如我们在第4节中提到的,Alice已经与Bob配对,并共享一个对Mallory未知的链接密钥。
Mallory使用一个CYW920819EVB-02评估板[13]作为连接到运行基于Linux 4.14.111的ThinkPad X1笔记本电脑的蓝牙控制器。请注意,我们必须根据我们的需求修改蓝牙控制器和蓝牙主机才能用它们来发动攻击。
我们使用了一些开源工具来修改蓝牙控制器,以对蓝牙芯片固件进行补丁,以获得我们需要的功能。例如,我们使用InternalBlue [27]来实时对CYW920819 SoC进行补丁,并在运行时读取固件的RAM和ROM。我们还使用了Antonioli等人发布的BIAS工具包[5]来进行冒充目的。为了修改蓝牙主机[2],我们修改了Linux内核源代码并重新编译以获得我们需要的功能。例如,我们修改了hci_h4.c和内核中的其他一些文件,以解析来自蓝牙控制器的H4消息。
我们的攻击还使用了免费工具来便于信息收集和分析。表3列出了我们实现中使用的所有相关工具。攻击的硬件/软件成本较低。
Blacktooth Attack 如第4节所述,包含以下步骤:信息收集、身份伪造与主动连接请求、认证欺骗、加密密钥协商与暴力破解,以及配置文件更改。需要注意的是,MITM(中间人)黑牙攻击是对Alice和Bob分别进行两个黑牙攻击的集成。对Bob的攻击与对Alice的攻击没有本质上的区别。为了不失一般性,我们在本小节中介绍了针对Alice的攻击实现,该实现基于我们在第5.1节中描述的攻击设备和攻击场景。
**Information gathering. **为了伪造Bob,Mallory的第一步是收集关于Bob的信息,包括蓝牙地址()、设备名称、设备类型(CoD)以及其他必要的属性。我们使用CYW920819EVB-02开发板连接到基于Linux的笔记本电脑,并在笔记本电脑上启动hcidump。通过这个功能,我们能够捕获所有蓝牙HCI数据包,并保存在一个BTSnoop文件中,其中包含所有需要的信息。然后,我们使用Wireshark来分析这些数据包,并选择包含特定信息的数据包。
具体而言,首先假设我们在Alice的附近,我们使用CYW920819开发板进行扫描并发现附近所有的蓝牙设备,根据设备名称来确定Alice的蓝牙地址()。然后,我们将开发板的蓝牙地址更改为,并接近Bob。假设Bob已经开启,我们使用开发板向Bob发送一个连接请求或者从Bob接收一个连接请求。需要注意的是,将蓝牙地址更改为是为了使信息收集过程普适且隐蔽。
有一种蓝牙设备在与设备(例如手机)配对后,即使配对的设备不在可发现范围内,也不会对新的查询包作出响应。这意味着,如果Bob属于这种类型,我们无法发现它,并且不能通过使用bluetoothctl向其发送连接请求来收集信息。然而,为了与配对的设备建立安全连接,Bob不得不不时地向配对的蓝牙地址发送连接请求。由于我们已将蓝牙地址更改为,我们可以接收来自Bob的连接请求并从特征交换过程的数据包中收集信息。
在攻击的隐蔽性方面,由于我们只改变了蓝牙地址而没有获得链接密钥,Mallory无法通过Bob进行身份验证来建立安全连接。这意味着我们没有破坏Alice和Bob之间的原始绑定关系。然而,如果我们不修改Mallory的蓝牙地址,那么它有可能成功地与Bob建立安全连接,并且Bob会存储绑定记录,这可能会覆盖与Alice的原始绑定关系。受害者可能会注意到她的智能手机无法自动连接到Bob,并可能意识到遭受了攻击。
另一种收集信息的方法是在安全连接建立阶段监听蓝牙BR/EDR数据包。然而,这种方法不太实用,因为蓝牙BR/EDR嗅探器要么非常昂贵(例如Ellisys Bluetooth Explorer的价格为17,500美元 [24]),要么容量有限(例如Ubertooth无法捕获所有蓝牙BR/EDR数据包)。最后,还可以购买一个与Bob完全相同的蓝牙设备,Mallory可以收集蓝牙属性,这样它只需要嗅探Bob的蓝牙设备地址和名称。
Identity forging and proactive connection request. 在收集了Bob的身份信息后,我们使用BIAS工具包来修改CYW920819板的固件,以伪造成Bob。我们创建一个包含Bob蓝牙设备信息的伪造文件(IF),并生成攻击脚本。最后,我们使用InternalBlue和攻击脚本来修改板的固件,将CYW920819板转换为伪装的设备Mallory。
现在我们靠近受害者,扫描找到Alice,并使用bluetoothctl主动发送连接请求。在这个过程中,Mallory冒充Bob,尝试像一个正常的蓝牙设备(耳机)重新连接到Alice。由于Alice已经与Bob建立了绑定关系,所以不会弹出对话框询问权限,也不会在通知栏显示任何通知。受害者完全不知道攻击正在进行。需要注意的是,是Mallory触发了连接,因此在连接过程中不需要受害者的手动交互。Mallory而不是Alice担任了Master角色,因为Mallory发起了连接请求。
Authentication spoofing. 在接受Mallory的连接请求后,Alice进入认证过程。从Alice的特征页1中(见表2),我们知道Alice(OnePlus 7 Pro)支持Secure Connections。也就是说,Mallory必须通过在连接建立期间告知Alice不支持Secure Connections来将其降级为Legacy Authentication。Mallory还必须保持其作为Master的角色,以避免被Alice认证。
为了在Mallory上实现这些功能,我们使用BIAS工具包与InternalBlue一起使用。由于我们已经使用伪造文件(IF)将Mallory配置为伪装成Bob的所有属性(如在身份伪造段中),现在我们使用工具包来降级Secure Connections,并通过攻击文件(AF)配置Mallory进行单向认证。攻击文件包含有关攻击设备的信息,例如要在蓝牙芯片固件中进行补丁的ROM和RAM地址。相关的蓝牙固件标志应该被修改以降级Secure Connections。对于单向认证,蓝牙固件被修改为跳过Mallory验证Alice的响应的过程。
**Encryption key negotiation and brute force. ** 在身份认证过程之后,下一步是启动加密过程。这个过程完全由两个蓝牙控制器处理,这意味着我们必须对蓝牙固件进行补丁,以便感染加密密钥协商过程。由于我们没有Alice和Bob之间共享的链路密钥,我们无法使用加密密钥生成函数计算实际的加密密钥。为了获得,Mallory必须说服Alice接受加密密钥的熵为1字节,从而方便对进行暴力破解(见第4.4节)。然后,我们可以将来自Alice的L2CAP头视为预言,对所有256个候选项中的进行暴力破解。
在攻击中,我们修改了CYW920819EVB-02板固件,并设置L_\max = 1和L_\min = 1。这样,Mallory总是要求Alice接受1字节的加密密钥。在加密密钥长度协商完成后,Mallory必须计算所有256个可能的,并根据预言选择正确的。然后,Mallory就有能力通过将写入RAM中用于存储密钥的位置来加密和解密消息。这是可以实现的,因为Mallory可以通过逆向工程找到用于存储的RAM地址。利用InternalBlue,Mallory可以在运行时对RAM进行补丁,将选定的写入其中。
Profile change. 在前面的攻击阶段之后,Mallory已经可以在没有链路密钥的情况下模拟Bob,并与Alice建立安全连接。在正常的连接建立过程中,只有具有链路密钥的设备才能通过身份认证过程并与Alice建立安全连接。换句话说,如果Mallory能够成功与Alice建立安全连接,Alice会认为Mallory拥有链路密钥。
由于绑定过程是将在配对时创建的链路密钥存储以供后续安全连接使用,Alice和Bob在配对过程之后会存储链路密钥。从Alice的角度来看,如果一个设备拥有与Bob对应的链路密钥,Alice将认为该设备是Bob,因为链路密钥应该只在Alice和Bob之间共享。这相当于Mallory与Bob的绑定关系“继承”了Alice的绑定关系,换句话说,Mallory与Alice建立了绑定关系。因此,让Mallory与Alice建立真正的绑定关系是合理的。
为了实现这个攻击阶段,我们使用Mallory的绑定记录替代Bob的绑定记录。我们使用开源代码向Mallory的SDP记录列表中添加A2DP和HFP记录,以实现耳机功能。通过前面的步骤设置,Mallory几乎成为了Bob的克隆。当Mallory首次与Alice配对时,它会以Bob的身份广播其A2DP和HFP服务,然后Alice将存储电话呼叫和媒体音频的服务记录,这与Bob的服务记录相同。
对于任意命令注入攻击,我们利用开源代码将HID应用程序实现为键盘和鼠标,并将HID记录添加到SDP服务列表中。然后我们在主机上运行该应用程序(即基于Linux的笔记本电脑),并主动向Alice发送连接请求。由于Alice已经与Mallory配对,它将接受请求并与Mallory建立安全连接(如上所述)。由于Vulnerability #4和Vulnerability #5,Alice接受HID连接请求并授予Mallory输入权限。这样,Mallory就可以使用键盘和鼠标操作Alice,例如打开应用程序、发送消息、进行电话呼叫或关闭Alice。
对于信息窃取攻击,我们实现了PBAP应用程序并将PBAP记录添加到SDP服务列表中。然后我们运行该应用程序并与Alice连接。由于Alice已经授权Bob访问电话簿,Mallory可以获取存储在Alice手机上的所有联系人信息。
值得强调的是,所有的注入和窃取攻击都不需要任何预装的(良性/恶意)应用程序或用户交互。Mallory只利用了Bluetooth规范中的漏洞。整个攻击过程完全是无声的。
**Attack efficiency. ** 上述的Blacktooth攻击可以在几秒钟内完成。收集设备信息的时间大约为3秒,这个过程可以在实际攻击之前完成。破解加密只需要不到1秒的时间。除了这两个步骤,其余的Blacktooth攻击步骤所需时间与正常的连接建立过程相同。总体而言,该攻击非常高效且实用。
通过我们在第5.3节中提出的Blacktooth攻击实现,我们能够对不同的蓝牙设备进行Blacktooth攻击。我们考虑了一个包含两个受害者Alice和Bob以及一个攻击者Mallory的攻击场景。Alice可以是我们手头上的任何蓝牙设备,Bob是一个OnePlus Bullets Wireless 2耳机(见表2),而Mallory是一个连接到Linux操作系统的ThinkPad X1 Carbon笔记本的CYW920819EVB-02开发板。Alice已经与Bob配对,并且链接密钥K_L对Mallory来说是未知的。在Alice或Bob中不需要安装任何额外的(良性或恶意)应用程序。Mallory冒充Bob并试图获取对Alice的控制权。当Mallory收集Bob的信息时,Bob应该在场,但在Mallory对Alice发起Blacktooth攻击时,Bob不需要在场。对于MITM Blacktooth攻击,Mallory同时冒充Alice和Bob,并尝试与Alice和Bob建立安全连接。
我们的评估结果如表4所示。总体而言,我们对21种不同设备进行了Blacktooth攻击的评估(其中ThinkPad X1 Carbon 5th分别使用Windows和Linux进行了评估)。前6列显示了设备制造商、设备型号、操作系统、芯片型号、芯片生产商和支持的蓝牙版本。最后的两列评估了Blacktooth攻击和MITM Blacktooth攻击。勾号(✓)表示攻击成功(成功连接、更改配置文件、检索数据和操作设备),而星号(★)表示设备在更改配置文件后无法完成安全连接建立。
在表4中,我们展示了所有不同Android(从Android 8.0到最新的Android 12.0)、iOS、iPadOS、macOS或HarmonyOS操作系统的设备都是原始Blacktooth攻击和MITM Blacktooth攻击的受害者。在Windows和Linux上,Mallory在更改配置文件后无法完成连接过程。然而,如果Mallory使用Bob的原始配置文件发起攻击(例如,Bob是耳机,Mallory可以注入语音命令),那么所有设备都容易受到Blacktooth攻击。
同时,表4还表明原始Blacktooth攻击和MITM Blacktooth攻击对不同设备型号、操作系统、蓝牙芯片型号和蓝牙版本都是有效的。实验验证了我们的Blacktooth攻击是完全隐蔽、非交互式、符合标准且实用的。通过原始Blacktooth攻击,Mallory可以在所有Android和iOS设备上成功通过更改配置文件提升其权限。通过MITM Blacktooth攻击,Mallory可以进一步窃听Android/iOS设备与蓝牙外设/可穿戴设备之间的所有实时通信。我们发现市面上商品设备使用的蓝牙芯片固件不容易修补以满足兼容性考虑。实验结果确认了我们提出的Blacktooth攻击对数十亿蓝牙BR/EDR设备用户构成严重威胁。
本文作者:Du4t
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!