针对蓝牙4.0 BLE通讯过程的逆向和攻击

简介: 本文讲的是针对蓝牙4.0 BLE通讯过程的逆向和攻击,从6个月前,我就开始针对BLE设备进行学习和研究,其中接触到了一些关于BLE逆向的博客和文章,但是相关内容都没有给出很好的方案。因此通过我的这篇文章,你将会很好地了解如何进行BLE 4.0通讯的逆向工程并利用它。
本文讲的是 针对蓝牙4.0 BLE通讯过程的逆向和攻击从6个月前,我就开始针对BLE设备进行学习和研究,其中接触到了一些关于BLE逆向的博客和文章,但是相关内容都没有给出很好的方案。因此通过我的这篇文章,你将会很好地了解如何进行BLE 4.0通讯的逆向工程并利用它。

 在开始之前,我们首先需要了解蓝牙通信,通常情况下有2种类型的蓝牙通信:

经典蓝牙,即蓝牙2.0

低功耗蓝牙,即BLE 4.0

实际上,经典的蓝牙规范从蓝牙1.0和1.0B开始,这些规范由蓝牙技术联盟(Bluetooth SIG)来进行规范和处理,而所有蓝牙制造商和服务公司都是SIG的成员。

蓝牙4.0是2012年最新蓝牙版本,是3.0的升级版本;较3.0版本更省电、成本低、3毫秒低延迟、超长有效连接距离、AES-128加密等;通常用在蓝牙耳机、蓝牙音箱等设备上。

蓝牙技术联盟(Bluetooth SIG)2010年7月7日宣布,正式采纳蓝牙4.0核心规范(Bluetooth Core Specification Version 4.0 ),并启动对应的认证计划。会员厂商可以提交其产品进行测试,通过后将获得蓝牙4.0标准认证。 该技术拥有极低的运行和待机功耗,使用一粒纽扣电池甚至可连续工作数年之久。

BLE 4.0设备通常在两种情况下被使用:

外设: – 主要用在低功耗和受限制的设备上

中枢设备: – 通常用在比较强大的设备上,如手机,笔记本电脑等

Bluetooth网络的启动网络在蓝牙术语中被称为Piconet,Piconet 指用蓝牙(Blue tooth)技术把小范围(10-100m)内装有蓝牙单元(即在支持蓝牙技术的各种电器设备中嵌入的蓝牙模块)的各种电器组成的微型网络,俗称微微网。一个微微网由2-8个蓝牙单元组成,即可以组成以一个为主、其他2-7个为副的电器组成的微微网。这些电器可以是PC机、打印机、传真机、数码相机、移动电话、笔记本电脑等等。多个微微网之间还可以互联形成散射网(Scatternet),从而方便快捷地实现各类设备之间随时随地的通信。

GAP和GATT则主要用于蓝牙设备的可被发现以及扫描工作。

GAP代表通用访问配置文件,它控制连接和被发现的过程。GAP能够确保您的设备对所有人都可见。

一旦建立了外围设备和中央设备之间的连接,蓝牙设备通常也将停止被发现,您通常将无法再发送被发现过程的数据包,这时您就需要使用GATT的服务和特性在两个方向进行通信。

GATT代表通用属性配置文件,它定义了客户端和服务器之间的通信语义。当连接建立时,它起着一个作用,这一作用使用了一个概念,称为简档,服务和特征。该配置文件是使用Bluetooth SIG或外围设计器编译的预定义服务集合。服务可能包含一个或多个特性,它用于分解不同实体中的数据,并以16位或128位UUID标识。特性封装单个数据点,并在16位或128位UUID中标识。

所以通过以上的内容我们大致了解了BLE 4.0,现在我们有一个Mansaa蓝牙LED灯泡,它支持BLE 4.0通信协议,所以下面我会以它为例进行讲解:

首先在这里我使用了Kali 2.0,并配有默认的最新Bluez实用程序与BLE设备进行交互。同时我还使用了CSR 4.0 BLE适配器来交互和利用BLE设备。一旦你插入了CSR适配器,它会在hci1上侦听你是否在虚拟机上,这里我是在Kali虚拟机上。您可以通过命令“hciconfig”来标识接口。

在重启阶段,我使用hcitool来识别可用的BLE设备的蓝牙地址。

$ hcitool - I hci1 lescan

lescan用于扫描启用BLE的设备。

 针对蓝牙4.0 BLE通讯过程的逆向和攻击

要了解有关特定蓝牙地址的更多信息,请使用以下命令。

$ hcitool –I hci1 leinfo 8C:8B:83:52:FF:B8

leinfo用于收集有关BLE设备的更多信息,如制造商信息,这里看到的德州仪器是Mansaa BLE LED设备中使用的BLE芯片的制造商。

 针对蓝牙4.0 BLE通讯过程的逆向和攻击

现在我们再来获取有关Mansaa设备提供的服务和特性的信息,从而能够从Bluez使用gatttool实用程序的服务和特性信息。

$ gatttool –I hci1 –b 8C:8B:83:52:FF:B8 - - primary

针对蓝牙4.0 BLE通讯过程的逆向和攻击

在上面的截图中我们可以看到,00001800-0000-1000-8000-00805f9b34fb是主服务的UUID。您可以看到1800,1801,180a是由SIG指定的特定服务的标识号,您可以从以下链接获取有关1800的更多信息。

https://www.bluetooth.com/specifications/gatt/viewer?attributeXmlFile=org.bluetooth.service.generic_access.xml

而对于其他的一样也是如此,1800用于通用信息,如设备名称,外观等。

为了识别Mansaa设备的特点,我再次使用gatttool和命令如下:

$ gatttool –I hci1 –b 8C:8B:83:52:FF:B8 - - characteristics

针对蓝牙4.0 BLE通讯过程的逆向和攻击

在以上屏幕截图中,您可以看到2a00,2a01,2a02和2a03是由SIG指定的特征UUID的标识号。您可以从以下链接获取有关2a00的信息。 

https://www.bluetooth.com/specifications/gatt/viewer?attributeXmlFile=org.bluetooth.characteristic.gap.device_name.xml

现在是时候进行BLE通信的逆向工程了,我启用了HCI监听记录来记录中央(这里是我们的Android Mobile)和外围设备(Mansaa LED灯泡)之间的所有交互。以下是从Android Mobile启用和检索日志文件的链接:

http://www.fte.com/WebHelp/BPA600/Content/Documentation/WhitePapers/BPA600/Encryption/GettingAndroidLinkKey/RetrievingHCIlog.htm

在通信过程中,我在Android手机上启动Mansaa应用程序,并开启和关闭Mansaa BLE LED灯泡,并再次尝试更改灯泡的颜色,因此所有这些交互记录在btsnoop日志文件中。 

从名为btsnoop_hci.log的手机中检索日志文件,并使用Wireshark打开它,并应用过滤器“btl2cap.cid == 0x0004”,并用句柄分析写入命令。

 针对蓝牙4.0 BLE通讯过程的逆向和攻击

以上截图中的write命令的句柄0x002b用于写入值为d0fffffff的命令。这意味着Mansaa应用程序正在使用句柄0x002b编写一些值,因此将利用该值和句柄。

所以在分析每一个价值时,都会了解每个价值的使用。一旦我使用了gatttool,那么就要将这些值发送给Mansaa Bulb。

$ gatttool –I hci1 –b 8C:8B:83:52:FF:B8 - -char-write-req –a 0x002b –n d00000000

针对蓝牙4.0 BLE通讯过程的逆向和攻击

BOOM,Mansaa BLE灯泡熄灭了。

这意味着通过分析命令可知,d00000000被用于关闭灯泡了,-char-write-req用于写入任何请求, – 用于给出句柄和值,即d00000000与-n开关。

进一步的进行操作后,我了解了其他值的用法:

开灯

针对蓝牙4.0 BLE通讯过程的逆向和攻击

绿色 

针对蓝牙4.0 BLE通讯过程的逆向和攻击

粉红色

针对蓝牙4.0 BLE通讯过程的逆向和攻击

 

好了,以上就是我的整个过程了,希望能够让您有所收获。




原文发布时间为:2017年7月10日
本文作者:Change
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。
目录
相关文章
|
物联网 测试技术 Android开发
蓝牙BLE传输性能及延迟分析
BLE传输性能主要受以下几个因素影响:操作类型,Connection Interval,每个Connection Event内发送的帧数、每一帧数据的长度。具体参见如下链接: https://en.wikipedia.
3786 0
|
Linux 网络安全
树莓派开发笔记(十一):蓝牙的使用,BlueZ协议(双树莓探测rssi并通过蓝牙互传获取的rssi信号强度)
树莓派开发笔记(十一):蓝牙的使用,BlueZ协议(双树莓探测rssi并通过蓝牙互传获取的rssi信号强度)
树莓派开发笔记(十一):蓝牙的使用,BlueZ协议(双树莓探测rssi并通过蓝牙互传获取的rssi信号强度)
|
4月前
|
供应链 安全 物联网
NFC(近场通信)技术及其工作原理详解
NFC(近场通信)技术及其工作原理详解
1328 11
|
4月前
|
安全 数据安全/隐私保护
WiFi工作原理及WiFi接入过程
【9月更文挑战第17天】WiFi(Wireless Fidelity)是一种基于IEEE 802.11标准的无线局域网技术,使用2.4GHz和5GHz频段进行数据传输,并通过正交频分复用(OFDM)技术提高传输效率。WiFi网络通常由接入点和客户端组成,采用IEEE 802.11系列协议实现通信。接入WiFi网络需经历扫描、选择网络、身份验证和关联等步骤,最终实现数据传输。
310 4
|
8月前
|
传感器 物联网 芯片
低功耗蓝牙(BLE) 和 经典蓝牙(SPP) 的区别
如何选择适合的蓝牙协议以实现最佳的无线通信效果。
572 0
|
编解码 语音技术
【经典蓝牙】 蓝牙HFP层协议分析
HFP(Hands-Free Profile), 是蓝牙免提协议, 可以让蓝牙设备对对端蓝牙设备的通话进行控制,例如蓝牙耳机控制手机通话的接听、 挂断、 拒接、 语音拨号等。HFP中蓝牙两端的数据交互是通过定义好的AT指令来通讯的
2648 0
【经典蓝牙】 蓝牙HFP层协议分析
|
编解码
【经典蓝牙】蓝牙AVRCP协议分析
蓝牙AVRCP协议是蓝牙设备之间音视频的控制协议。定义了音频/视频的控制、浏览、查询、通知等一系列的命令集。常用来蓝牙耳机对手机的音乐进行控制,以及获取手机的音乐信息等场景。AVRCP协议有两个角色,分别是controller(CT)和 target(TG)。CT: 发送控制命令到对端,控制对端媒体播放器的设备,例如蓝牙耳机,蓝牙遥控器等。TG:接收对端的控制命令,并执行操作,进行回复的设备,例如手机,电脑等。
3087 0
【经典蓝牙】蓝牙AVRCP协议分析
|
编解码 算法 数据格式
【经典蓝牙】蓝牙 A2DP协议分析
A2DP(Advanced Audio Distribution Profile)是蓝牙高音质音频传输协议, 用于传输单声道, 双声道音乐(一般在 A2DP 中用于 stereo 双声道) , 典型应用为蓝牙耳机。         A2DP旨在通过蓝牙连接传输高质量的立体声音频流。它使用的基本压缩算法是SBC(Sub-Band Coding)来减小音频数据的大小,同时保持高音质,SBC压缩虽然效率较低,但是是必须支持的基本备用方案。A2DP还支持其他高级编解码器,例如AAC、aptX和LDAC,这些编解码器比SBC提供更好的音质,但这些编解码器的支持取决于设备本身的支持情况。
2555 0
【经典蓝牙】蓝牙 A2DP协议分析
|
传感器 Ubuntu 物联网
ESP32-C3 学习测试 蓝牙 篇(一、认识 ESP-IDF 的蓝牙框架、简单的了解蓝牙协议栈)
在我们前面 ESP32-C3 的教程中,从基本的外设,到wifi,到最后使用MQTT连接云平台完成了一个 简单的项目,我们已经掌握了ESP32-C3 的大部分功能了。 但是作为一款蓝牙芯片,蓝牙的使用是必不可少的,今天我们就开始对 ESP32-C3 蓝牙的使用进行学习测试。 蓝牙部分已经不敢叫教学了,为了搞清楚ESP-IDF的那些示例程序到底是关于什么内容, 因为自己也是边学习边测试花了大量时间补充蓝牙的基本知识,希望小伙伴指出不足之处! ...更新说明,ESP32-C3只支持BLE
2067 2
ESP32-C3 学习测试 蓝牙 篇(一、认识 ESP-IDF 的蓝牙框架、简单的了解蓝牙协议栈)
|
物联网
经典蓝牙与低功耗蓝牙BLE开发基础知识:服务、特征、属性、UUID
蓝牙大致被认为是1.0 2.0 3.0 4.0版本,不过现在已经不再用版本号区分蓝牙了,蓝牙1.0~3.0都是经典蓝牙,在塞班系统就已经开始使用了。而蓝牙4.0开始就是包括蓝牙BLE了。蓝牙4.0是双模的,既包括经典蓝牙又包括低能耗蓝牙。经典蓝牙和蓝牙BLE虽然都是蓝牙,但其实还是存在很大区别的。蓝牙BLE相比于经典蓝牙的优点是搜索、连接的速度更快,关键就是BLE(Bluetooth Low Energy)低能耗,缺点呢就是传输的速度慢,传输的数据量也很小,每次只有20个字节。但是蓝牙BLE因为其低能耗的优点,在智能穿戴设备和车载系统上的应用越来越广泛。
经典蓝牙与低功耗蓝牙BLE开发基础知识:服务、特征、属性、UUID