物联网安全101-4.低功耗蓝牙BLE(翻译)

文章目录
  1. 1. Generic Access Profile (GAP) 通用访问配置文件
  2. 2. Generic Attribute (GATT)通用属性 (GATT)
    1. 2.1. 连接蓝牙适配器:
    2. 2.2. 扫描蓝牙设备
    3. 2.3. 读取和写入数据
  3. 3. 参考:

如果您还没有看我们的物联网安全系列的第 1 部分到第 3 部分,我建议您先阅读它们,除非您已经熟悉 IoT 的基础知识。上一篇博客的链接——物联网安全——第 3 部分
蓝牙一直是一个流行词,因为人们希望他们的所有设备都是智能的,这意味着您可以不需要线缆就可以跨设备控制其他设备。蓝牙已经进入市场十多年了。如果您是千禧一代,您可能会使用过那些带有蓝牙功能的经典诺基亚手机。蓝牙是由爱立信发明的,随后其他厂商也开始使用蓝牙。不久之后,主要终端厂商一起都创建了一个名为蓝牙特别兴趣小组- SIG的联盟,该联盟管理制定蓝牙标准以及不同版本之间的互操作性。
我们不打算谈论蓝牙。蓝牙本身就是一个庞大的协议栈,它们的规范大约有2000 多页。在本博客中,我将仅介绍更为著名的 BLE 蓝牙低功耗。

随着万物互联时代的到来,随之而来的是能量和资源的问题。正如我上面提到的,蓝牙是一个巨大的协议栈。在像健身手环这样的终端设备中实现它需要耗费很多的能量和资源。因此,在蓝牙 4.0 标准中,他们引入了一种称为 Low energy 的技术,专门针对在内存和功率受限的设备上运行的物联网和智能设备。



Bluetooth SIG 开始将该标准作为 Bluetooth Smart进行销售。它有两个组件,Bluetooth Smart设备是只有蓝牙低功耗组件的终端设备,Bluetooth Ready是能够同时执行Bluetooth LE 和 EDR-Bluetooth经典组件的设备,这可能是您的中心设备,如手机或笔记本电脑。
现在让我们来看看蓝牙规范的技术细节



来源:https://archive.eetindia.co.in/www.eetindia.co.in/STATIC/ARTICLE_IMAGES/201312/EEIOL_2013DEC13_RFD_NET_TA_01Tab1.gif

该表本身将使您更好地了解规格、范围和带宽已减少以承受低功耗和低资源。
正如我之前提到的,LE 有两种不同类型的设备。

Bluetooth Smart Ready- 这是电池供电和高资源的中央设备,能够运行所有蓝牙协议。它们是您的笔记本电脑和手机。



Bluetooth Smart– 它们是您的终端设备,如健身追踪器、行李追踪器或智能假阳具。他们不必运行整个堆栈,他们需要节省电力和资源。它们仅运行 Bluetooth LE 服务器。它们是中央设备可以连接的外围设备。



蓝牙和 LE 堆栈详细信息超出了本文的范围。
但是我们将关注的两个重要组件是 GAT 和 GAPP,它们负责 BLE 服务的运行。



Generic Access Profile (GAP) 通用访问配置文件

GAP定义了您与中央和外围设备的通信和连接应该如何工作。



Generic Attribute (GATT)通用属性 (GATT)

GATT就像一个管理您的数据需要如何处理的服务器。
您的Bluetooth LE 设备按照服务器-客户端原理工作。在这里,您的终端设备/外围设备充当运行 GATT 服务器的服务器,而您的中央设备充当客户端。因此,您的最终应用程序或工具连接到 GATT 服务器并从设备请求数据。
在您的 GATT 服务器内。有三个组成部分。

    1. Profile – Bluetooth SIG 定义,它可以基于设备的类型,可以是血压设备或温度传感器,也可以是任何最常用的具有互操作性优势的设备。
    1. Services - 每个设备内部都有多个参数。假设设备可以有名称、固件版本、OTA 功能、设备操作。它们被分组到称为服务的特定数据集。
    1. Characteristics - 在您的服务中放置您的数据。它可以是 16 位Bluetooth SIG 派生特征或特定于供应商的 128 位特征。

简而言之,service就像一个文件夹,characteristics是保存数据的文件。



现在我们了解了什么是低功耗蓝牙及其工作原理的基础知识。让我们来看看有关如何访问 BLE 设备的一些工具和方法。
如果您使用的是 Windows,我会认真建议您使用 Ubuntu,因为它带有所有必要的工具来访问 ble 设备并从亚马逊获得那些便宜的蓝牙 4.0 模块。(有些笔记本电脑不附带它。)

连接蓝牙适配器:

    1. 将蓝牙 USB 模块连接到笔记本电脑的空闲 USB 端口。(无需从主机安装任何驱动程序)。
    1. 连接后,打开终端并输入”sudo hciconfig “, 您应该能够看到此窗口,该窗口为您提供 mac 地址(蓝牙USB模块),并且应该显示 UP and RUNNING。
    1. 如果您遇到任何问题,请通过”sudo hciconfig hci0 reset”重新启动蓝牙接口→这会很方便。


扫描蓝牙设备

    1. 成功将蓝牙适配器连接到机器后
    1. 您现在可以使用”sudo hcitool lescan”扫描您周围的所有 ble 设备


    1. 您将看到带有名称和 MAC 地址的设备列表。
    1. 通过关闭和打开设备并找出差异来找出设备的 mac。
    1. 现在获取有关该设备的更多信息。执行”sudo hcitool leinfo –random “ –random 取决于类型寻址。


    1. 您将获得基本信息,例如蓝牙设备的制造商。

读取和写入数据

  • 获得设备的MAC地址后。将其保存在一个文件中。它会很有用。
  • 连接到智能设备的 GATT 服务器。我们使用名为 gatttool 的工具。
  • 使用这个命令”sudo gatttool -I -b -t random “你会得到一个像这样的CLI并输入”connect”。


  • 现在您可以通过使用”primary”、”characteristics”和”char-desc”查看设备中运行的所有UUID来查看设备上运行的特性和服务。




  • 现在您可以使用”char-read-hnd “和” char-write-req “读取和写入这些句柄来读取和写入它。




  • 这里的字符属性为您提供了句柄的权限,如读取、写入、通知、指示。




  • 您也可以通过将“01”写入句柄来启用通知


您可以查看我们的其他博客,了解如何逆向智能按摩器的蓝牙通信。

参考:

https://www.nordicsemi.com/eng/News/ULP-Wireless-Update/A-short-history-of-Bluetooth
https://www.bluetooth.com/specifications/gatt/generic-attributes-overview
https://www.bluetooth.com/specifications
https://learn.adafruit.com/introduction-to-bluetooth-low-energy/gatt
https://www.oreilly.com/library/view/getting-started-with/9781491900550/ch01.html
https://en.wikipedia.org/wiki/Bluetooth_Low_Energy
https://www.jaredwolff.com/blog/get-started-with-bluetooth-low-energy/
http://object-network.blogspot.com/2014/01/scanning-ble-adverts-from-linux.html
https://elinux.org/images/3/32/Doing_Bluetooth_Low_Energy_on_Linux.pdf
https://www.digikey.com/Web%20Export/Supplier%20Content/Laird_776/PDF/laird-wireless-bluetooth-smart-ready.pdf

原文链接:https://payatu.com/blog/Arun-Magesh/iot-security-part-4-bluetooth-low-energy-101