大家好,在这篇文章中,我们将学习怎样利用蓝牙技术攻击来攻击智能蓝牙灯泡。为了轻松一点,我将这篇文章分为两个部分。在第一部分,我们将学习基本的蓝牙理论,在第二部分,我们将实际使用这些理论。
让我们开始吧。
我们的目标—我们想要做什么?
我们有一个可以和智能灯泡交互的移动应用。
我们将使用Bluetooth CSR V4.0 dongle 远程控制灯泡(CSR V4.0 dongle是我们和智能灯泡交流的工具,相当于蓝牙收发器)。总而言之,即使我们不是灯泡的主人我们也能控制它。
蓝牙知识理论–我们都知道,蓝牙是一项历史悠久的技术,但是你可能不知道,蓝牙有两种不同的通信方式。
1) 经典蓝牙,例如 蓝牙 2.0
2) 低功耗蓝牙 例如 低功耗蓝牙 4.0
在蓝牙1.0 中,就介绍了经典蓝牙的规格。这些规格由SIG确定(SIG,蓝牙特别兴趣小组)并且所有的蓝牙制造商和服务提供商都是SIG的会员。
BLE(低功耗蓝牙) 是一种个人无限局域网。它最初由诺基亚在2006年发明并命名为Wibree,在2010年Wibree融入了蓝牙标准化。BLE 被有意设计在低功耗设备上运行。因为很多物联网设备都是低功耗设备,所以他们使用BLE来通信。事实上无线协议有很多,但是BLE是最简单且最容易实现的。
BLE 支持的系统- BLE 几乎被所有的平台支持,主要可分为下面这些:
1) 移动平台类 -Android ,Ios,windows等
2) 桌面类 – windows ,linux ,macos等
工作频率2.4-2.8Ghz
BLE体系结构,下面是BLE 体系结构
BLE体系结构包含3层
a) 主机层
b) 控制器层
c) 主机控制器接口层(HCI)
主机层和控制层以主机控制器接口 分开。
对于体系结构,我们不需要了解所有层的功能,我们只需要了解我们所需要的(GATT,GAP和ATT),让我们具体看下它们的功能。
a) GAP—通用访问配置文件(GernericAccess Profile) ,它的作用是发现新的BLE设备.简单一句话,你的新蓝牙设备应该被其它的设备或应用发现,这样才可以连接它。这一部分的工作主要就是由GAP完成。
b) ATT – 属性协议(AttributeProtocol),总而言之,如果我们想连接web 服务器,我们必须使用HTTP协议,HTTP连接了浏览器和服务器。可以类比,应用和蓝牙智能灯泡的连接就是ATT协议控制。
c) GATT -通用属性配置文件(GenericAttribute Profile)。类比,我们使用浏览器与服务器交互,因此,浏览器负责交换整个数据。GATT也扮演了同样的角色。它负责在智能蓝牙灯泡和移动应用之间交换和展示整个信息。GATT只会在两个设备连接之后才会起作用。
GATT 主要是利用了服务和特征。 为了更好的理解什么是服务和特征,我们画了下面这张图: