针对蓝牙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.
3464 0
|
Linux 网络安全
树莓派开发笔记(十一):蓝牙的使用,BlueZ协议(双树莓探测rssi并通过蓝牙互传获取的rssi信号强度)
树莓派开发笔记(十一):蓝牙的使用,BlueZ协议(双树莓探测rssi并通过蓝牙互传获取的rssi信号强度)
树莓派开发笔记(十一):蓝牙的使用,BlueZ协议(双树莓探测rssi并通过蓝牙互传获取的rssi信号强度)
|
7月前
4G、Wifi、蓝牙所谓的AT指令模式和数据透传模式到底是什么意思?
4G、Wifi、蓝牙所谓的AT指令模式和数据透传模式到底是什么意思?
222 0
|
8月前
|
物联网 开发工具 芯片
BLE蓝牙连接不稳定以及突然断开的原因和解决方法
在开发BLE的时候经常会遇到连接突然断开的情况,比如刚连接上就断开、连接成功之后传输数据随机断开(有时候连接很稳定不断开)。以上这些断开连接的情况或多或少都遇到过,很是让人头疼。当然咸鱼也不例外,也碰到过BLE突然断开的问题。咸鱼根据自己的经验做一些这方面的总结,希望能对大家有所帮助。
1041 0
BLE蓝牙连接不稳定以及突然断开的原因和解决方法
|
编解码 语音技术
【经典蓝牙】 蓝牙HFP层协议分析
HFP(Hands-Free Profile), 是蓝牙免提协议, 可以让蓝牙设备对对端蓝牙设备的通话进行控制,例如蓝牙耳机控制手机通话的接听、 挂断、 拒接、 语音拨号等。HFP中蓝牙两端的数据交互是通过定义好的AT指令来通讯的
1468 0
【经典蓝牙】 蓝牙HFP层协议分析
|
编解码 算法 数据格式
【经典蓝牙】蓝牙 A2DP协议分析
A2DP(Advanced Audio Distribution Profile)是蓝牙高音质音频传输协议, 用于传输单声道, 双声道音乐(一般在 A2DP 中用于 stereo 双声道) , 典型应用为蓝牙耳机。         A2DP旨在通过蓝牙连接传输高质量的立体声音频流。它使用的基本压缩算法是SBC(Sub-Band Coding)来减小音频数据的大小,同时保持高音质,SBC压缩虽然效率较低,但是是必须支持的基本备用方案。A2DP还支持其他高级编解码器,例如AAC、aptX和LDAC,这些编解码器比SBC提供更好的音质,但这些编解码器的支持取决于设备本身的支持情况。
1468 0
【经典蓝牙】蓝牙 A2DP协议分析
|
编解码
【经典蓝牙】蓝牙AVRCP协议分析
蓝牙AVRCP协议是蓝牙设备之间音视频的控制协议。定义了音频/视频的控制、浏览、查询、通知等一系列的命令集。常用来蓝牙耳机对手机的音乐进行控制,以及获取手机的音乐信息等场景。AVRCP协议有两个角色,分别是controller(CT)和 target(TG)。CT: 发送控制命令到对端,控制对端媒体播放器的设备,例如蓝牙耳机,蓝牙遥控器等。TG:接收对端的控制命令,并执行操作,进行回复的设备,例如手机,电脑等。
1958 0
【经典蓝牙】蓝牙AVRCP协议分析
|
小程序 API Android开发
微信小程序使用蓝牙通信协议连接硬件整理总结(蓝牙连接、获取设备UUID、开水器notify及关闭蓝牙)
微信小程序使用蓝牙通信协议连接硬件整理总结(蓝牙连接、获取设备UUID、开水器notify及关闭蓝牙)
2578 0
微信小程序使用蓝牙通信协议连接硬件整理总结(蓝牙连接、获取设备UUID、开水器notify及关闭蓝牙)