BLE低功耗蓝牙

ble低功耗蓝牙

ble流量嗅探与重放

低功耗蓝牙协议栈

BLE是低功耗蓝牙的英文缩写(Bluetooth Low Energy),是蓝牙4.0版本起开始支持的新的、低功耗版本的蓝牙技术规范。

低功耗蓝牙瞄准多个市场,特别是移动智能终端,智能家居,互联设备等领域,主要特点包括:

  • 低功耗,使用纽扣电池就可以运行数月至数年。
  • 快连接,毫秒级的连接速度,传统蓝牙甚至长达数分钟。
  • 远距离,长达数百米的通信距离,而传统蓝牙通常10米左右。

qq_pic_merged_1719058374210

物理层(phy):使用GFSK调制无线信号,并将2.4GHz频段划分为40个射频信道(3个广播信道,37个数据信道)。

  • 直接测试模式(DTM):通过测试仪器直接连接蓝牙设备控制接口,自动完成与蓝牙模块之间的交互命令和蓝牙参数的设定,从而对蓝牙模块进行测试。

  • 链路层(LL):定义逻辑通道并为通道选择调频技术;控制设备的射频状态(等待、广播、扫描、发起连接等)和角色;控制数据包的发送时机、完整性等。

  • 主机控制器接口(HCI):为主机和控制器提供统一的通信接口。这一层的功能可以通过软件API来实现,也可以使用硬件外设来实现。

  • 逻辑链路控制和适配协议(L2CAP):用于协商与建立逻辑通信信道。BLE使用固定逻辑通信信道来传输协议数据,可避免建立信道时带来的额外时间消耗。

  • 安全管理器(SM):定义了设备配对与密钥分配的方式,并为设备之间的安全连接和数据交换提供服务。

  • 属性协议(ATT):定义了访问服务端设备数据的规则(比如读、写等)。数据存储在属性服务器的属性(attribute)中,供属性客户端执行读写操作。

  • 通用属性规范(GAP):负责处理设备的访问模式和程序,具体包括定义蓝牙设备的角色、通信操作模式和过程,定义蓝牙地址、蓝牙名称等与蓝牙相关的参数。

  • 通用访问规范(GAP):主要用来控制设备连接和广播。通用访问规范可使你的设备被其他设备发现,并决定了你的设备是否可以或者怎样与交互设备进行通信。

  • 各种应用程序:基于蓝牙协议的应用程序

  • 通用属性配置文件(GATT)
    GATT配置文件定义了如何通过BLE连接来交换所有配置文件和用户数据。它为基于GATT的配置文件提供了参考框架和精确的用例,以确保不同供应商生产的设备之间的互操作性。标准的BLE配置文件都以GATT配置文件为基础,并且必须遵守GATT配置文件才能正常运行。

    ​ 尽管蓝牙规范在属性协议(ATT)中定义了属性,但定义的这些属性是与ATT相关的。ATT依靠公开的所有概念提供一系列精确的协议数据单元(PDU),以允许客户端访问服务器上的属性。

    ​ 而GATT进一步建立了严格的层次结构,允许使用一组简洁的规则在客户端和服务器之间访问与检索数据,而这些规则共同构成了所有基于 GATT 的配置文件使用的框架。

    在GATT服务器中,属性被分组为服务(service),每个服务可以包含零个或多个特征(characteristic),不同的特征之间用唯一的 UUID区分,这些特征又可以包括零个或多个描述符(descriptor)。对于声称与 GATT 兼容的任何 BLE 设备来说,都具有相应的层次结构。

    image-20240622201454991

    ​ 在日常生活中,一种常见的 BLE 设备是智能手环。假设它包含 3 个服务,分别是提供设备信息的服务、统计步数的服务和检测心率的服务。在提供设备信息的服务中,包含的特征有厂商信息、硬件信息和版本信息等,而在检测心率的服务中则包含心率的特征等。每个特征都有对应的值(value)和描述符,用于提供更多相关信息。心率特征中的值是与心率相关的数据,而描述符是对该value的描述说明,如value的单位。权限等。

    ​ 尽管BLE设备的配对操作是加密的,但每个特征的值可以在不加密的状态下进行读写。当特征值发生改变时,蓝牙设备会收到相应的通知。

智能灯泡攻击实验

工具:wireshark+52832dongle+lifesmart智能灯泡+lightblue+lifesmart

1.确定蓝牙设备

打开蓝牙灯泡并用产品官方app与其蓝牙连接,再使用lightblue检测蓝牙信号强度,找到一靠近灯泡信号飙升远离灯泡信号掉的最明显的设备就是蓝牙灯泡。

image-20240622202302750

这里是第二个设备,BULB。

2.wireshark抓蓝牙数据包

插上52832,监听目标设备,当52832指示灯变从红色闪烁变绿即连接成功。

image-20240622205827402

多次在app上开关灯泡,找到对应开关的服务。

image-20240622204720722

标记的2条是开关操作,发现每次操作value倒数第七位自增1,开灯末尾是181,关灯180.并且找到了servic和其特征的uuid红线划出了。

3.重放攻击

现在灯是开的,我们通过lightblue改写上述服务的特征值,达到重放攻击。

输入Value: 0e000000000000000000000410020180.灯灭

posted @   蟇窳瓨  阅读(94)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示