引言

蓝牙技术已经普遍应用在个人电子、汽车电子、智能家居、智慧城市和工业物联网等各种场景中,获得了三万多家厂商的支持。支持蓝牙的设备数量已经高达36亿台,预计到2020年,这一数字将上升到52亿。蓝牙是目前近场通信环境下使用量最大的通信技术之一,如果该技术出现严重的安全隐患,其影响将极为广泛和深远。

蓝牙联盟在标准制定过程中,已经充分考虑了蓝牙的安全性,在设备间的配对、认证、授权、机密性和完整性等方面都有所设计。然而,各个厂商对蓝牙协议进行实现的过程中,由于对蓝牙协议理解的不一致性,或者是受设备资源所限,暴露出大量的安全事件。包括手机、汽车娱乐、智能手环、智能门锁、蓝牙灯泡和蓝牙保险箱等产品都被暴光存在蓝牙漏洞,给用户带来担忧。

解决蓝牙技术的安全问题,不仅需要厂商完善自己的安全研发流程,增加安全设计,引入第三方安全测试等必要的步骤;也需要安全研究人员通过持续研究和发现蓝牙设备协议的漏洞,开发专业的蓝牙漏洞检测和监测工具,促进整个蓝牙产业安全有序发展。

本文首先简述了蓝牙技术和蓝牙产业,接着分析了蓝牙安全机制和现状,通过针对公开的和原创的蓝牙漏洞分析,阐述了蓝牙技术所面临的安全威胁,最后给出了一个具体的蓝牙攻击案例。

2 蓝牙技术介绍

蓝牙(Bluetooth)是短距离射频(RF)通信的开发标准,主要用于建立无线个人区域网络。蓝牙已经集成到许多类型的商业和消费设备中,包括手机、笔记本电脑、汽车、打印机、键盘、鼠标、耳机以及最近的医疗设备和个人设备(如智能手表,音乐扬声器,家用电器,健身器材和跟踪器)。这允许用户在各种设备之前形成自组织网络以传送语言和数据。

蓝牙是一种低成本、低功耗的技术,它提供了一种以特殊方式创建小型无线网络的机制,称为微微网。微微网由两个或更多物理接近的蓝牙设备组成,在相同的信道上使用相同的跳频序列进行操作。蓝牙微微网通常建立在临时和变化的基础上,这提供了移动设备之间的通信灵活性和可扩展性。

3 蓝牙产业

3.1 蓝牙市场现状

蓝牙如今由蓝牙技术联盟(Bluetooth Special Interest Group, 简称SIG)管理。蓝牙技术联盟在全球拥有超过33000家成员公司,它们分布在电信、计算机、网络和消费电子等多重领域。蓝牙技术联盟负责监督蓝牙规范的开发,管理认证项目,并维护商标权利,制造商的设备必须符合蓝牙技术联盟的标准才能以“蓝牙设备”的名义进入市场。

据蓝牙技术联盟于2018年发布的《蓝牙市场最新资讯》数据,2017年蓝牙设备出货量已达36亿台,预计到2022年将有52亿台蓝牙设备输出,并广泛应用于各个行业之中。

3.2 蓝牙应用市场

随着物联网需求的不断增长,蓝牙应用也在不断成长,从最初专注于解决点对点互联问题扩展至广播通信,以实现室内定位和基于位置的服务。现状,在蓝牙mesh网络的推动下,蓝牙开创了需要通过可靠的无线解决方案建立大规模设备网络的新兴市场。下表展示了蓝牙的应用市场。

功能

音频传输

数据传输

位置服务

设备层网络

应用场景

无线耳机

无线扬声器

车载信息娱乐系统

体育和健身装置

医疗和健康装置

周边装置和配件

地标信息导航

地图及相关服务

物品及资产追踪

控制系统

监控系统

自动化系统

蓝牙版本

蓝牙基础速率/增强资料速率(BR/EDR)

低功耗蓝牙

3.3 蓝牙应用场景

3.3.1 手机、平板电脑及个人电脑

蓝牙技术已经成为手机、平板电脑和个人电脑的固有组成部分,2018年在此领悟的蓝牙设备出货超过20亿。

3.3.2 音频和娱乐

蓝牙现已成为无线音频和娱乐市场的代名词,蓝牙技术将大量用于无线扬声器、耳机、游戏手柄、助听器等设备上。

3.3.3 汽车

蓝牙是车载信息娱乐系统背后的领先技术,它实现了免提通话和音频传输功能。另外蓝牙也适用于汽车的一些新兴用例如无钥匙开锁、车载可穿戴设备以及互联维护上。

3.3.4 互联设备

蓝牙也应用于从日常家居用品到智能医疗的互联设备之上,如智能手表、医疗领域的可穿戴设备、企业级可穿戴设备(如智能眼镜和扫描仪等)以及消费级蓝牙机器人等。

3.3.5 智能楼宇

蓝牙通过实现室内定位和基于位置的服务扩展了智能楼宇的定义。蓝牙技术赋予了全楼宇范围的Beacon网络,从而实现室内定位和基于位置的服务,包括地标信息、室内导航和资产跟踪。另外蓝牙互联照明开始成为自动化领域的主要用例,医疗机构也采用蓝牙技术来监控患者、跟踪资产并推动应急服务的发展。

3.3.6 智能工业

蓝牙技术应用与无线传感网络上,可实现预测性维护并在发生机器故障之前进行检测。

3.3.7 智能家居

2018年首批蓝牙全家居自动化系统已经面世,蓝牙网络持续提供可靠的无线连接平台,实现照明、温控、烟雾探测器、摄像头、门铃、门锁等的自动化控制。

4 蓝牙安全现状

4.1 蓝牙安全机制

蓝牙从出现开始,经历了1.0-5.0再到蓝牙mesh多个版本,每个版本都有不同的特性。一般来说,将蓝牙4.0及以上称为低功耗蓝牙(LE),蓝牙4.0之前的称为蓝牙BR/EDR/HS(蓝牙1.0, 2.0, 3.0)。蓝牙标准中规定了五项基本的安全服务:

(1)认证:基于蓝牙设备地址,验证正在通信的设备的身份。蓝牙不提供原生的用户认证机制;

(2)机密性:确保只有被授权的设备能够访问和查看传输的数据,以防止窃听导致的信息泄露;

(3)授权:通过确保设备在被允许使用一项服务之前是已经被授权的,来允许其对资源的控制;

(4)消息完整性:验证在两个蓝牙设备之间发送的消息在传输过程中没有被更改;

(5)配对/绑定:创建一个或多个共享密钥和存储这些密钥以用于后续连接,以便形成可信设备对。

蓝牙提供的身份验证和加密机制的关键在于生成一个秘密对称密钥,在蓝牙BR/EDR中,该密钥称为链接密钥,低功耗蓝牙中称为长期密钥。密钥的生成主要通过配对完成,下面将介绍PIN(传统配对)和SSP(安全简单配对)两类配对方式。

4.1.1 PIN(传统配对)

PIN(传统配对)是用户在一个或两个设备上输入完全相同的PIN码完成。蓝牙配对中使用的PIN码可以使1到16个字节的二进制数或更常见的字母数字字符。对于低风险应用场景,一般是4位数PIN码;对于要求较高的应用场景,一般使用更长的PIN码(如8个字符的字母数字)。

4.1.2 SSP(安全简单配对)

SSP首先在蓝牙2.1中引入,与PIN相比,SSP简化了配对过程,还通过添加ECDH公钥加密来提高安全性,以防止在配对期间的被动窃听和中间人(MITM)攻击。SSP提供了如下四种关联模式:

(1)数字比较(Numeric Comparison)

在配对期间,用户在每个显示器上显示六位数字,如果数字匹配,则在每个设备上提供“是”响应。否则,用户响应“否”,配对失败。此操作与传统配对中使用PIN的主要区别在于,不会将显示的数字用作链接密钥的生成。

(2)密码输入(Passkey Entry)

在这个模型中,只有一个显示器的设备显示一个六位数的数据,然后用户在具有输入能力的设备上输入。与数字比较模型一样,这六位数字并不参与链接密钥生成。

(3)直接工作(Just Work)

该模式应用于至少有一个配对设备既没有显示也没有输入数字的情况。用户在连接过程中无需进行任何操作,此模式易受中间人攻击。

(4)带外(Out of Band)

此模式被设计为支持外部通信方式,如NFC等,交换在配对过程中使用的一些信息。配对通过蓝牙射频完成,但还是要求非蓝牙传输机制提供信息。

4.2 蓝牙典型安全漏洞分析

4.2.1 智能手机

2017年9月,物联网安全公司Armis在蓝牙协议中发现了9个0-day漏洞,被称为BlueBorne。BlueBorne能够利用这些漏洞对运行Android、iOS等操作系统的设备发起攻击,危害较大。

以Android智能手机为例,在用户开启蓝牙功能并且没有打补丁的情况下,黑客利用该漏洞对手机进行攻击。攻击成功后黑客可获取非常高的权限,例如:可控制摄像头、拍照、截屏、启动应用、唤醒手机;读取通讯录、照片、文档;可控制手机键盘等。

图4-1 BlueBrone

4.2.2 汽车娱乐系统

博世的Drivelog Connect是一个提供有关车辆状态信息的服务,这项服务可以给汽车驾驶员提供大量便捷功能以及车辆的健康状态信息,如汽车潜在的问题、服务期限、燃料消耗数据及驾驶情况。用户可以通过手机APP与Drivelog Connector适配器相连接,该适配器蓝牙认证存在一个信息泄露漏洞,攻击者可通过该漏洞快速离线爆破配对的PIN码,以此通过蓝牙连接Drivelog Connect适配器,连接成功后可通过注入恶意指令来控制汽车,甚至能够在蓝牙可连接的范围内关闭一辆正在运行的汽车引擎。

图4-2 手机蓝牙与Drivelog适配器配对过程

图4-2描述了手机蓝牙与适配器配对的过程,适配器会发送其证书,其中包含公钥和已签名的二进制字符串,签名使用了SHA-256哈希算法,计算参数由适配器MAC地址、适配器PIN码和适配器公钥。

攻击者如果能够与适配器进行连接,那么他就能获取足够的信息来对PIN码进行爆破。由于Drivelog适配器额PIN码由8位数字组成,因此总共有1亿中可能的组合。一般来说,一台普通的笔记本电脑可以在30分钟内完成1亿此的SHA-256哈希计算,如果使用多台服务器进行计算这个时间会更短。也就是说攻击者能够在短时间内完成PIN码破解,成功连接到适配器。

4.2.3 智能穿戴设备

智能穿戴设备主要有蓝牙手环、蓝牙手表等,这些智能穿戴设备多采用低功耗蓝牙技术,使用手机APP通过蓝牙与设备进行通信。这些设备往往使用Just Work(直接工作)配对模式,且对蓝牙指令的来源不经过认证,攻击者往往通过其他途径获取到设备的蓝牙指令后即可直接控制设备。

以某品牌手环为例,攻击者只要在蓝牙链接后写入一段特殊格式的数据,就能对手环进行随意写蓝牙指令(如私有协议的震动、LED颜色变化、开启实时步数监控等)。

4-3 某手环

4.2.4 蓝牙门锁

低功耗蓝牙技术大规模应用于智能门锁之上,用户只需要在手机APP或微信小程序上轻轻一点即可开锁。但蓝牙门锁作为一款安全产品的自身安全性不容乐观,在DEFCON24上早有安全研究员爆出数款蓝牙智能锁的安全漏洞,漏洞类型五花八门,从明文密码到重放攻击,甚至还有一款智能门锁在Fuzzing攻击下完全失效,门户大开。

4-4 蓝牙门锁

4.2.5 蓝牙灯泡

蓝牙灯泡是一种非常常见的蓝牙智能家居设备,其通常采用低功耗蓝牙技术,使用手机APP控制。由于灯泡本身不带有输入输出,因此灯泡与手机APP的连接一般采用Just Work(直接工作)模式,如果灯泡对蓝牙指令来源没有任何的认证方式,攻击者往往可以通过重放手机APP发送给灯泡的蓝牙指令来控制灯泡。

以某品牌蓝牙灯泡为例,该灯泡通过手机APP控制灯泡的开关和颜色变化。

图4-5 蓝牙灯泡APP

如图4-6为抓取到的蓝牙通信数据包,攻击者发送指令“0800c430d239cc260000”来使灯泡改变颜色。通过重放不同指令可达到控制灯泡的效果。

图4-6 APP与灯泡通信的低功耗蓝牙数据包

4.2.6 蓝牙保险箱

部分保险箱也具备蓝牙功能,VT20i保险箱是亚马逊上一款热销产品,该产品使用手机APP通过蓝牙来解锁保险箱。

4-7 VT20i保险箱

该保险箱存在多个漏洞,根据官方网站以及厂商宣传材料中的描述,APP和保险箱之间的蓝牙通信是经过加密的,而实际上厂商并没有使用加密,攻击者能够通过窃听保险箱和应用程序之间的通信数据来获取保险箱开锁密码。

另外,该APP并没有使用任何加固措施,通过对反编译后的源码分析,攻击者可获取APP开锁的逻辑。攻击者可通过特殊构造的蓝牙指令来远程解锁此保险箱。

4.3 蓝牙漏洞攻击案例分析

Android蓝牙远程代码执行漏洞(CVE-2017-0781)为蓝牙BNEP协议中的堆溢出漏洞。BNEP(Bluetooth Network Encapsulation Protocol, 蓝牙网络封装协议)将来自不同网络的数据分组重新封装,通过蓝牙L2CAP协议进行传输。

4-8 Bluetooth Stack Overview

现有的Android系统中蓝牙使用的是BlueDroid架构,BlueDroid中BNEP服务对于接受到的数据包的处理流程如下:

(1)解析BNEP_TYPE,得到extension位;

(2)检查连接状态,如果已经连接则后续可以处理非BNEP_FRAME_CONTROL的包,如果没有建立连接,则后续只处理BNEP_FRAME_CONTROL的包;

(3)去BNEP_TYPE对应的处理函数进行处理;

(4)对于BNEP_TYPR不是BNEP_FRAME_CONTROL而且有extension位的,还需要对extension的数据进行处理;

(5)调用pan层的回调函数。

图4-9 BNEP control message format

图4-10 BNEP extension header format

当BNEP连接真正建立起来之前,需要先处理一个合法的BNEP_FRAME_CONTROL数据包,该漏洞正是连接还未建立之时,处理BNEP_FRAME_CONTROL时所发生的堆溢出。

只要发送一个BNEP_TYPE为BNEP_FRAME_CONTROL,extension字段为1,CTRL_TYPE为BNEP_SETUP_CONNECTION_REQUEST_MSG的错误的BNEP包即可触发漏洞。

图4-11 BNEP堆溢出数据包

在用户开启蓝牙功能并且没有打补丁的情况下,黑客利用该漏洞对手机进行攻击。攻击成功后黑客可获得与蓝牙进程相同的系统权限, 利用反弹shell在Android手机上执行任意代码。

图4-12 对nexus 5X手机进行攻击并反弹shell

声明:本文来自工业互联网安全应急响应中心,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。