原文标题:Breaking Android Security Mechanisms via Malicious Bluetooth Peripherals

原文作者:Fenghao Xu, Wenrui Diao, Zhou Li, Jiongyi Chen, Kehuan Zhang, The Chinese University of Hong Kong

议题详情:https://www.ndss-symposium.org/ndss-paper/badbluetooth-breaking-android-security-mechanisms-via-malicious-bluetooth-peripherals/

一、背景

蓝牙是一种广泛使用的无线通信技术,特别是在安卓手机、智能家居以及车联网等场景中。一旦与主机设备配对,蓝牙外设就可以与主机交换命令和数据,例如语音、键鼠输入、智能家居控制指令等等。蓝牙协议为了保护这些敏感的数据和命令,内置了一系列安全措施,如身份验证,加密等。但复杂的蓝牙协议在实现过程中,很容易出现一些设计缺陷,该议题提出了三种攻击场景,以证明安卓上蓝牙设计的缺陷以及潜在的危害。

二、蓝牙相关概念

蓝牙通信通常为主机与从机的模式,支持一主多从,即星型的拓扑结构。其中,主机通常为安卓手机,个人电脑等设备,从机通常为蓝牙耳机、蓝牙键盘等外设。主机与从机的整体通信流程如图 1所示。

图 1 蓝牙主机与从机建立连接过程

主机(安卓手机)首先通过广播的方式,扫描希望通信的从机(蓝牙外设),蓝牙外设在上电之后,通常将广播其MAC地址等信息,另外,从机收到主机的扫描请求后,会回应更详细的设备信息。在扫描到需要通信的设备后,主机将发起配对,根据不同类型从机提供的配置,选择不同的配对方式,如带屏幕的从机可以通过随机生成pin码的方式完成配对。完成配对后,主机将根据从机的配置文件,逐一建立连接。

配置文件(Bluetooth Profile)是蓝牙技术联盟针对不同通信场景,定义的一系列规范,不同厂商按照相同的规范生产产品,各家的产品即可兼容。安卓支持的配置文件如表 1所示,一台物理设备,可以具备多个配置文件(如蓝牙耳机可以同时具备A2DP和HFP/HSP两种配置文件),主机与从机建立连接的过程中,主机将尽可能按照从机提供的所有配置文件,依次建立连接。

表 1 安卓支持的配置文件

三、攻击模型

本议题中,研究人员做了两个基本假设。首先假设受害安卓手机上已经装有具备BLUETOOTH和BLUETOOTH_ADMIN蓝牙权限的恶意APP,这两个权限是蓝牙APP的通用权限,恶意应用程序能够发起与蓝牙外设配对的请求并按照配置文件与蓝牙设备建立连接。请注意,由于BLUETOOTH和BLUETOOTH_ADMIN都只是普通级权限,因此操作系统将自动授予恶意应用权限,而无需用户确认,因此恶意应用程序可以伪装成任何类型的应用程序。

同时,研究人员还假设蓝牙外设已经被盗用,其固件包含恶意代码。攻击者可以通过几种不同的方式实现这一目标。例如,攻击者可以先破环蓝牙设备的SDK,类似于XcodeGhost的攻击。另外,蓝牙设备可能被之前的所有者、销售者或在运输途中攻击,篡改固件。更重要的是,在安装了恶意APP的前提下,攻击者可以通过Over The Air升级机制的安全漏洞,为蓝牙外设升级含有恶意代码的固件。

具备了以上假设的前提,即形成了攻击链,如图 2所示。假设恶意应用程序在用户安卓手机的后台运行,找到合适的攻击时机后(如检测到屏幕关闭时),应用程序将发起与恶意蓝牙外设配对的请求并通知恶意的蓝牙外设修改正常的配置文件为包含恶意配置文件的,之后与蓝牙外设建立连接。最后,应用程序可以通过蓝牙外设,对安卓系统进行一些操作,在完成攻击之后,销毁证据。图中的虚线表示恶意的APP可以静默、在用户未知的情况下,发起蓝牙配对的请求。

图 2 攻击链

攻击模型中的两个假设和流程复杂的攻击链很容易让人产生疑问,攻击者已经给安卓手机安装恶意APP了,恶意的APP本身就可以在后台完成很多攻击了,为什么还要使用蓝牙外设?这种攻击模型有什么价值?笔者认为,通常来说,安卓手机上的APP,在完成一些操作时是需要用户授予其权限的,如读取通讯录、获取位置信息等。具备安全常识的用户对于未知的应用,通常不授予其权限。但在上述攻击链中,安装在用户安卓手机上的APP,是无需用户授予任何权限的(所需的权限都是普通权限,系统自动授予的),这在某些特定的攻击场景中非常适用。

四、脆弱性

本议题中,研究人员提出了一些安卓系统在实现过程中的一些脆弱性,笔者认为,该议题,攻击模型中最重要的脆弱性,是配置文件缺少认证。

在蓝牙相关概念一节笔者提到,蓝牙主机与从机通信的过程中,一旦设备之间配对成功,主机将尽可能,按照从机提供的所有配置文件,依次建立连接。这种方式虽然简化了配对、连接的过程,但粗粒度、设备级别的认证,导致即使从机的固件受到了攻击,配置文件发生变化,主机依然会信任从机,按照从机提供的、修改过的恶意配置文件,与从机建立连接,如图 3所示。

图 3 配置文件缺失认证的流程

该脆弱性的存在,使得攻击者可以使用正常的配置文件,欺骗用户将其安卓手机与恶意蓝牙外设配对。而在发起攻击时新增配置文件,静默为恶意的蓝牙外设增强攻击能力(由于之前与安卓手机建立的配对还在,安卓手机第二次连接外设时,无需用户再次确认)。

五、攻击场景

人机接口设备

安卓支持全功能的键盘和鼠标输入,因此,恶意的蓝牙外设通过添加HID配置文件,即可使其具备输入能力,模拟用户键盘鼠标的输入操作,对安卓系统进行一系列攻击,如图 4所示。

图 4 人机接口设备的攻击场景

在这种攻击场景中,由于不同手机品牌和安卓版本的UI布局不同,攻击者可以首先通过android.os.build收集UI信息并通知恶意蓝牙外设匹配有效的负载(有效的负载包含XY轴滑动数据以及额外的按键数据)。另一方面,恶意的蓝牙本身也可以通过电话的SDP记录检索电话相关信息。

在匹配到有效的负载后,攻击者可以通过模拟人机接口输入,自由移动鼠标或注入按键事件。除此之外,安卓还定义了各种功能键,如“Home”、“Back”、“Volume Control”,攻击者可以使用这些功能键来增加其攻击能力。研究人员整理了可用于该攻击链的功能键,如表 2所示。值得注意的是,除了单一的功能键,这种攻击场景可以使用复制(KEY CTRL + KEY C)和粘贴(KEY CTRL + KEY V)等组合键输入。另外,研究人员发现,若没有鼠标输入,可以通过发送KEY TAB来切换屏幕上的APP、发送KEY ENTER来执行点击操作,模拟移动和点击任务,这种方式使攻击变得更加隐蔽和快捷。

表 2 安卓支持的功能键

最后,虽然人机接口提供了输入的功能,但是如果攻击者希望实施更高级的攻击,则必须具备输出能力,也就是获取手机用户界面的能力。事实上,名为KEY SYSRQ的功能键可以实现截图的功能,他将真正捕获安卓上的手机屏幕。

在具备了上述能力后,这种攻击场景可以给受害者带来以下影响:

1、信息窃取。利用截图的能力,攻击者可以从普通或者系统应用程序中获取非常敏感的信息,如私人电子邮件、短信、联系人、聊天软件记录等,并将其发送出手机(通过Internet发送或者通过Web浏览器打开恶意上传网站上传、电子邮件传输等)。

2、应用程序和系统控制。由于安卓手机大部分安全机制都是在用户参与的情况下执行的,攻击者可以模拟用户点击,修改系统设置(普通APP无法修改关键设置或跨应用执行操作),安装卸载APP,甚至可以通过模拟电源按钮的输入,重启或关闭手机

个人区域网络

在这种攻击场景中,研究人员通过利用个人区域网络(PAN)配置文件,研究如何篡改网络通信,该配置文件通过蓝牙管理网络功能。一个典型的攻击案例是恶意的蓝牙具备额外的网络资源,比如安卓手机可以扮演NAP的角色来转发流量或者提供DHCP服务。另外一种攻击案例是,恶意的蓝牙类型为PANU,用来分享NAP网络的带宽。安卓支持这两种设备类型但没有预防滥用的相应机制。这两种假设的攻击案例,如图 5所示。

图 5 个人区域网络场景下的攻击流程

在这种攻击场景中,对受害者造成的影响如下:

1、网络嗅探和欺骗。由于手机可以通过蓝牙设备访问互联网,因此可以在恶意的蓝牙端提供NAP服务并进行中间人攻击。一旦连接了 安卓手机,蓝牙设备将接收BNEP从电话转发的所有以太网数据包,并将其传递给与构建的虚拟网桥。如果设备具备自己访问互联网的能力,桥接器即可将流量转发到远程实体上(注意,很多物联网设备如智能音箱,兼具WiFi访问互联网和蓝牙的能力)。建立蓝牙连接后, 安卓手机(PANU)将从NAP查询网络设置。虚拟网桥的DHCP服务器可以侦听此查询并返回恶意DNS服务器地址。此DNS服务器可以是攻击者拥有的公共服务器,也可以构建在设备上的公共服务器。

2、流量消耗。从另一个角度来看,手机还可以充当NAT并通过蓝牙共享其网络资源。因此,在此攻击中,设备可以修改其设备类型为PANU,并尝试连接和共享手机的网络。理想情况下,安卓应默认禁止此类连接,并要求用户进行交互。但实际上,在没有任何特权许可的情况下,APP依然能够轻松完成打开蓝牙网络共享的操作。因此,一旦APP启用该设置,恶意蓝牙外设就可以尝试连接到手机的NAT上。这样,设备可以发送收集到的数据或接收数据以进行恶意固件的更新。此外,设备可以恶意消耗网络以引起额外的流量消耗。

这里需要额外对安卓上的网络资源优先级做相关说明,众所周知,安卓手机可以使用WiFi和蜂窝网络访问蓝牙以外的互联网,因此,如果出现多个网络源,安卓将通过内部排名方案自动选择一个(根据各网络源的基础分数,在最终决定之前对网络源进行连接测试,如ping一个谷歌的网站,若测试失败则扣除积分)。研究人员调查发现,蓝牙网络的基本分数高于其他常用网络(WiFi和蜂窝数据),这意味着即使安卓手机同时连接着WiFi或蜂窝数据,依然有较大的概率会优先使用蓝牙访问互联网。

免提

蓝牙支持两种方式的音频传输,第一种是通过SCO信道传输音频信号,另一种是使用A2DP。耳机配置文件(HSO)和免提配置文件(HFP)是依赖于SCO通道的两种典型配置文件,研究人员在这种攻击场景中专注于HFP。实现HFP的耳机设备允许用户通过发出命令而不触碰电话来执行操作(如打电话)。此外,该设备可以使用HFP接听电话。因此,当恶意的蓝牙外设实现HFP时,它能够操纵音频输入并接收电话音频的输出。图 6显示了攻击者如何滥用这些配置文件,实现一些攻击(在挂断电话后,若手机开启了语音助理,恶意的蓝牙外设就可以注入预置的语音命令)。

图 6 免提场景中的攻击流程

这种攻击场景中,对受害者造成的影响如下:

1、电话控制。HFP定义了两个角色,音频网关(AG)和免提单元(HF)。AG可以传输电话状态并打开SCO连接以将语音流传输到HF。HF可以发出若干命令,例如接收、拒绝来电以及终止当前呼叫等。在这种攻击场景中,恶意的蓝牙外设声明HF角色,并等待来自电话的连接。最初,AG和HF将建立RFCOMM信道,以使用各种AT命令交换握手信息和电话状态。之后,基于电话的情况,恶意蓝牙外设可以发送命令来应答,拒绝或终止来电。

2、语音命令注入。除了电话的功能,研究人员发现HFP还可以触发谷歌语音助手。默认情况下,即使手机已经安全锁定,此谷歌服务也会允许蓝牙耳机发送语音命令。在这种攻击场景中,恶意的蓝牙外设可以注入任何谷歌语音助手支持的语音命令。

六、总结

如今,蓝牙技术充斥着我们的生活,无论是智能家居场景中使用蓝牙通信的传感器,还是车联网场景中使用蓝牙连接的车机系统,亦或是安卓手机、个人电脑使用场景中使用蓝牙连接的智能手表、蓝牙音箱、蓝牙键盘鼠标等设备。随着蓝牙加入对mesh网络的支持,搭载蓝牙芯片作为无线通信方式的智能设备,将在很长一段时间内将持续增长。

笔者认为,对于智能音箱、智能手表等产品,完全具备本文所述的攻击链(在受害者手机上安装有相应的APP,设备也本身支持蓝牙、WiFi等连接方式,消费者很难了解到设备的固件是否被篡改)。很难想象,我们白天使用的智能音箱也许在夜间,变为窃取隐私的利器。作为普通消费者,很难要求相关厂商做出改变,只能不断提高自己的安全意识,尽可能采取一些措施,防止个人隐私的泄露。针对本文所述的攻击场景,笔者提出如下建议:

1、请设置解锁 安卓手机时的身份认证(如密码,指纹等),且在任何情况下保证解锁手机时开启身份认证(部分厂商的 安卓手机,提供智能解锁的服务,允许用户在某些信任的区域内,无需身份认证即可解锁手机)。本文所述的人机接口攻击场景中,若设置了解锁需要身份认证,即使攻击者能够模拟键盘鼠标输入,但在不知道密码的情况下,依然无法解锁手机,发动更多的攻击。

2、为敏感APP设置应用密码。对于相册、聊天软件、邮件应用等APP,应设置相应认证,限制对这些APP的访问,防止恶意的蓝牙外设模拟键鼠输入,窃取隐私。

3、注意清理后台运行的APP,应重点关注蓝牙外设配套的APP,在不使用相关蓝牙外设时,请杀死后台运行的这些APP。

参考文献:

[1].Breaking Android Security Mechanisms via Malicious Bluetooth Peripherals. NDSS Symposium https://www.ndss-symposium.org/ndss-paper/badbluetooth-breaking-android-security-mechanisms-via-malicious-bluetooth-peripherals/

[2].Bluetooth Core Specification v5.1 Feature Overview . https://3pl46c46ctx02p7rzdsvsg21-wpengine.netdna-ssl.com/wp-content/uploads/2019/03/1901_Feature_Overview_Brief_FINAL.pdf

声明:本文来自绿盟科技研究通讯,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。