浅谈蓝牙安全
简介
官网:https://www.bluetooth.com/
蓝牙(Bluetooth)是一个短距离无线传输的技术,工作在免证的ISM频段。最初名字为Wibree,在90年代由Nokia设计开发,随后转交给蓝牙特别兴趣小组(SIG)专门维护。
为什么叫蓝牙?
为该技术命名时,来自英特尔的蓝牙技术开发者Jim Kardach提到国王Harald 统一了纷争不断的丹麦部落,就像他们想用该短距离无线电技术统一无线领域一样,而Harald 国王有一个坏牙是蓝色的,所以绰号蓝牙
蓝牙分类
蓝牙经过不断的发展已经发展到了版本5.3,按照版本来划分可以为:
- 经典蓝牙(泛指蓝牙协议在4.0以下)Classic Bluetooth
- BR(Basic Rate,基础速率)
- EDR(Enhanced Data Rate,增强数据速率)
- 低功耗蓝牙(指支持蓝牙协议4.0或更高的模块)Bluetooth Low Energy
- 蓝牙双模模块(支持蓝牙所有版本,兼容低功耗蓝牙以及经典蓝牙)
蓝牙连接过程
- Step 1 蓝牙扫描 Inquiry
Inquiry(直译为查询)就是蓝牙信息发现的过程,目标设备必须处于Discoverable的状态下,才能被周边设备扫描到。在Inquiry之后会得到目标设备的蓝牙MAC地址。换句话说如果已经知道蓝牙MAC地址,其实是不需要执行Inquiry操作的。
- Step 2 蓝牙连接 Page
Page过程会建立蓝牙物理链路,也称为ACL Link,目标设备必须处于Connectable的状态下,才会接受连接。在Page的过程中会协商很多参数,例如蓝牙版本和MTU等,最重要的是要交换CHANNEL_MAP参数,该参数使得通信双方可以进行可靠的跳频,而不至于丢失连接。
- Step 3 蓝牙配对 Pairing
在蓝牙物理连接建立后,可由一方发起配对请求,从而进入蓝牙配对流程,目标设备必须处于Pairable的状态下,才会接受连接。配对流程由安全管理器(Security Manager, SM)完成。第一步是交换安全参数,以确定配对方法
BR/EDR的配对方法有
- BR/EDR Legacy Pairing:蓝牙2.0引入,只保护机密性,不保护完整性
- Secure Simple Pairing:蓝牙2.1引入,对Legacy Pairing进行了增强,使用链路密钥(Link Key)加密通信链路
- BR/EDR Secure Connections:蓝牙4.1引入,能保护机密性和完整性,使用长期密钥(LTK)加密通信链路
BLE的配对方法有
- LE Legacy Pairing:蓝牙4.0引入,和Secure Simple Pairing比较类似,使用短期密钥(STK)加密通信链路
- LE Secure Connections:蓝牙4.2引入,将BR/EDR Secure Connections移植到了BLE上,同样使用长期密钥(LTK)加密通信链路
可以看到经过不断的迭代,在4.2以后BLE和BR/EDR统一了配对流程,称为Secure Connection,其在SSP的基础上进行了安全性的增强。
- Step 4 蓝牙绑定 Bonding
在蓝牙配对流程的Pairing Request和Pairing Response报文中,可以设置Bonding Flags(BF)标志位为01,这样双方就会存储上述用于加密链路的密钥(Link Key, STK, LTK)并通过密钥分发生成IRK以备未来使用。
生成IRK就意味着在双方之间创建了永久安全性(就像是你配对了一次蓝牙耳机,后面打开蓝牙都能直接连接使用),直到用户取消绑定删除IRK为止。显然必须要在配对之后才能执行绑定。
BLE核心概念
- GAP 通用访问配置文件(Generic Access Profile)
GAP用于设备连接和广播通信。GAP负责蓝牙设备对外可见性,并在决定设备如何与其他设备交互时起重要作用
- GATT 通用属性配置文件(Generic Attribute Protocol)
GATT使用一种称为属性协议的通用数据协议,它定义了两个BLE设备如何使用服务和属性两个概念进行数据交换。该协议使用蓝牙技术联盟指定的16 位 ID 将所有服务和属性存储在查找表中。需要注意的是,GATT 只有在 GAP 广播流程结束之后才能初始化。
相关协议
在蓝牙中,主机系统称为Host,蓝牙射频芯片的系统称为Controller,它们之间的通信接口称为HCI(Host Controller Interface),同时这也是其传输协议的名字。
HCI是Host端所能接触到的最底层协议,通过内核的HCI驱动进行操作,基于HCI逐步往上封装和实现了一系列高级协议,下面逐步介绍HCI,ACL以及L2CAP协议
HCI
HCI协议是HCI接口最底层的协议,可根据传输层的介质分为不同类型,例如:
- UART传输层:在btsnoop中表示为hci_h4
- USB传输层:在btsnoop中表示为hci_h5
- SD传输层:Secure Digital
- ...
HCI数据包分为command、event和data三种类型。command表示Host发送给Controller的命令,event为Controller发送给Host的事件,data通常是实际的蓝牙传输数据。
ACL
HCI的ACL协议主要用于在Host和Controller之间传输数据
L2CAP
ACL只提供了一个数据传输协议,类比于网络协议栈中的IP协议,在其之上使用的L2CAP协议可以类比于TCP/UDP协议,实现了更为完善的数据传输功能,包括:
- 协议/信道(L2CAP channel)多路复用
- 分段(segmentation)和重组(reassembly)
- 基于L2CAP channel的流量控制机制
- 错误控制重传机制
- 支持流式传输(streaming)
- 分片(fragmentation)和重组(recombination)
- QoS(Quality of Service)
- ...
在L2CAP之上,有着各种各样的应用层协议,比如服务发现协议SDP,蓝牙传输协议RFCOMM/OBEX,BLE的属性协议ATT,甚至是通用以太网协议BNEP以及其上的TCP/IP网络栈等。通过分层和抽象使得上层应用无需关心底层的细节,从而实现了整个蓝牙协议栈的普适性和拓展性。
蓝牙安全威胁
信息泄露
收集周边蓝牙的相关信息,下面的工具部分功能有重叠
- 设备发现
BlueSniff
项目仓库:https://github.com/0x646e78/bluesniff
不过该项目已经很久没更新了
Bluesniff可以在以下两种模式之一中查找BlueTooth设备:
-
正常扫描 - 仅查找可发现的设备
-
蛮力扫描 - 使用redfang蛮力猜解MAC地址(关于redfang,它的项目地址是:https://github.com/deltj/redfang)
-
情报收集
bluescan 为 Hacking 而生的蓝牙扫描器
项目仓库:https://github.com/fO-000/bluescan
主要功能如下:
- BR 设备扫描
- LE 设备扫描
- BR LMP 特性扫描
- LE LL 特性扫描
- SMP Pairing 特性扫描
- 嗅探 advertising physical channel PDU
- SDP 服务扫描
- GATT 服务扫描
- 数据嗅探
数据嗅探需要有蓝牙适配器
项目仓库:https://github.com/greatscottgadgets/ubertooth
Ubertooth需要与它的BLE蓝牙嗅探器配套使用
拒绝服务
常见的针对蓝牙的拒绝服务分为三类
- L2ping DOS攻击
L2ping类似于PING,能够发送L2CAP回显请求并接收回答,检查链接并测量往返时间。L2CAP(逻辑链路控制及自适应协议层)是一个复用层,可以让低功耗蓝牙复用三条不同的信道
利用工具:
- https://github.com/crypt0b0y/BLUETOOTH-DOS-ATTACK-SCRIPT
- https://github.com/deadlysnowman3308/BT-ddos-tool
- 鉴权 DOS攻击
类似于手机输入解锁密码,上一次鉴权失败到下一次可以发起鉴权期间,第三方通过伪装发起故意使鉴权失败,从而使间隔时间持续上升,直到达到允许的最大值,在此期间双方不能进行正常的鉴权。
- Obex文件 DOS攻击
Obex为Object Exchange,用于在蓝牙设备间传输对象。该攻击方式通过不断快速地给远程蓝牙发送文件,而远程设备被大量的是否要接收该文件的命令冲击到瘫痪。
针对蓝牙的拒绝服务存在以下危害:
- 影响设备的正常运行
- 设备被攻击者击溃
- 所有者无法操作设备
- 耗尽设备的电池
- 等等
数据窃听
- PIN码破解
在老版本蓝牙2.0协议中,配对过程需要输入一个PIN码,长度可以从4到16个数字(很多设备默认为0000或者1234),4位PIN码破解仅仅需要0.06秒,8位暴力攻击不到两个小时就能破解。
而BLE配对过程中在某些情况下存在缺陷,允许攻击者暴力破解TK(临时密钥),通过配对过程中手机的TK和其他数据,
破解PIN码后,通过嗅探包中间计算的值得到Linkkey以及EncryptionKey,用于以后的配对和通信解密,实现蓝牙信息的窃听
相关利用的工具:
-
btcrack
-
crackle
-
中间人攻击
这里多提一嘴,实际上的蓝牙中间人攻击需要模拟出需要攻击的设备的所有接口,还需要考虑将原来正常通信的链路阻断,想要实际应用是很难的。
中间人攻击中第三方设备伪装成合法设备,欺骗两个合法的设备,让他们相信双方是相互连接的。事实上合法的设备被连接到攻击设备上,攻击者能够访问正常设备之间的所有交互数据,以及在数据到达接收端之前通过删除或者修改方式来伪造数据。
相关利用的工具:
- btproxy
仓库地址:https://github.com/conorpp/btproxy
- btlejuice
仓库地址:https://github.com/DigitalSecurity/btlejuice
btlejuice的攻击案例:https://cloud.tencent.com/developer/article/1345586
中继攻击
广义上来说,中继攻击是中间人攻击的一个应用场景
蓝牙设备使用中继以扩大传输距离,几乎所有的中继攻击,中继设备都有可能遭到信息窃取
新闻一则:特斯拉再现蓝牙中继漏洞 赛博偷车贼手段更新 - https://www.anquanke.com/post/id/273321
蓝牙相关的CVE
该类别的蓝牙攻击大多数属于协议栈的漏洞,需要在特定的攻击场景下才能进行相应的攻击
因为蓝牙有着很长的发展历史,所以也存在海量的CVE:https://github.com/engn33r/awesome-bluetooth-security/
例如BlueBorne系列漏洞,在一定场景下就能够实现对具有蓝牙功能的远端设备的控制,进而窃取受害者数据、进行中间人攻击以及在感染一个设备后蠕虫式感染其它设备,且此攻击方式无需向用户申请认证授权,具有较大的危害性。
蓝牙的防护措施
便捷和安全总会达成一个平衡
- 不适用蓝牙时将设备设置为不可发现模式
- 蓝牙通信时设置为安全模式3来启动链路鉴权
- 及时对蓝牙设备进行升级
- 点击授权获取敏感数据等请求时注意识别真伪
- 等等
参考连接
- https://paper.seebug.org/1633/
- https://www.zhihu.com/question/60824531/answer/181351944
- https://wrlus.com/wireless-security/bluetooth-intro/
- https://ch4r1l3.github.io/2020/08/02/BlueBorne%E8%93%9D%E7%89%99%E6%BC%8F%E6%B4%9E%E5%A4%8D%E7%8E%B0/
- https://www.freebuf.com/articles/neopoints/258561.html
- https://delikely.github.io/2018/12/27/%E4%BD%8E%E5%8A%9F%E8%80%97%E8%93%9D%E7%89%99%E6%94%BB%E5%87%BB%E5%AE%9E%E7%94%A8%E6%8C%87%E5%8D%97/
- http://jdhblog.com/2019/05/14/BLE%E5%AE%89%E5%85%A8%E6%9C%BA%E5%88%B6%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E6%94%BE%E5%BC%83/
- https://5alt.me/2016/11/%E8%93%9D%E7%89%99%E5%AE%89%E5%85%A8%E5%88%9D%E6%8E%A2/
- https://github.com/apachecn/apachecn-kali-zh/blob/master/docs/kali-linux-wless-pentest-cb/7.md
- https://www.anquanke.com/post/id/209757
- https://www.cnblogs.com/k1two2/p/5577301.html
- http://www.gandalf.site/2018/11/ble_26.html
- https://www.wireghost.cn/2016/07/25/%E4%BD%8E%E5%8A%9F%E8%80%97%E8%93%9D%E7%89%99%EF%BC%88BLE%EF%BC%89%E5%AE%89%E5%85%A8%E5%88%9D%E6%8E%A2/
- https://www.freebuf.com/column/208073.html
- https://www.cnblogs.com/k1two2/p/5018216.html
- https://www.cnblogs.com/k1two2/p/5018212.html
- https://mp.weixin.qq.com/s/wrOZ13q0dmg11X5U1VISTQ
- https://blog.lyle.ac.cn/Learn-Binary-Hacking/firmware/ble.html
- https://www.ol4three.com/2020/09/24/IOT/%E8%93%9D%E7%89%99%E5%AE%89%E5%85%A8%E4%BB%A5%E5%8F%8A%E7%9B%B8%E5%85%B3%E6%BC%8F%E6%B4%9E%E7%A0%94%E7%A9%B6/
- https://www.freebuf.com/tag/%E8%93%9D%E7%89%99
- http://www.gandalf.site/2018/11/ble.html
- https://xuanxuanblingbling.github.io/wireless/ble/2018/08/01/ble/
END
建了一个微信的安全交流群,欢迎添加我微信备注进群
,一起来聊天吹水哇,以及一个会发布安全相关内容的公众号,欢迎关注 😃