BLE-GATT浅析
字数 1603 2025-08-22 12:22:24

BLE-GATT协议分析与安全实践

1. BLE-GATT概述

低功耗蓝牙(BLE)连接建立在GATT(Generic Attribute Profile)协议之上,GATT是一个在蓝牙连接之上发送和接收很短数据段(称为属性Attribute)的通用规范。

GATT层次结构

GATT包括三层结构:

  1. Profile:功能大类集合
  2. Service:服务,每个Service包含一个或多个Characteristic
  3. Characteristic:功能对象

2. 基础工具与准备

2.1 常用工具

  1. hcitool:扫描BLE设备
    • hcitool lescan:扫描附近的BLE设备
  2. gatttool:连接并操作蓝牙设备
  3. LightBlue:图形化BLE调试工具
  4. 数据包捕获工具
    • SmartRF格式嗅探数据
    • tibtle2pcap:将SmartRF格式转换为libpcap格式

2.2 环境准备

  • 安装BlueZ协议栈(包含hcitool和gatttool)
  • USB Dongle(用于BLE数据嗅探)

3. BLE设备分析实战

3.1 手环分析案例

  1. 设备发现

    • 使用hcitool lescan扫描手环设备
  2. 数据抓包与分析

    • 捕获SmartRF格式数据并转换为libpcap格式
    • 分析ATT Write Command控制指令
    • 关键发现:
      • Handle值:0x0051
      • Alert level:High Alert(0x02)
  3. 功能控制

    • 根据蓝牙官方GATT CHARACTERISTIC文档,0x02表示高警报级别
    • 通过修改此值可以控制手环震动级别

3.2 蓝牙灯泡分析案例

  1. 设备发现

    • 扫描确定MAC地址
  2. 数据分析

    • 寻找write字段信息
    • 跟踪字段信息寻找VULE字段值
    • 关键发现:
      • Handle:0x0019
      • 数据值示例:08004701470147010000
  3. 功能控制

    • 通过Write Command控制灯泡
    • 不同数据值对应不同颜色和开关状态
    • 示例控制值:
      • 08004701470147010000
      • 08000d07470147010000
      • 08004701b223c64c0000
  4. 安全限制

    • 某些灯泡有密钥校验机制
    • 直接连接可能导致密钥不匹配

4. 安全分析与攻击演示

4.1 攻击原理

  • 通过分析Write Command/Request实现设备控制
  • 重放攻击:捕获合法控制指令并重放
  • 功能滥用:连续发送控制指令导致设备异常

4.2 攻击演示

  1. 手环攻击

    • 通过修改Alert level值实现震动控制
    • 演示视频:https://v.qq.com/x/page/c0501jtxfkm.html
  2. 灯泡攻击

    • 使用gatttool直接控制开关和颜色
    • 编写脚本实现连续开关变色
    • 演示视频:https://v.qq.com/x/page/g0501zyymd9.html

5. 防御建议

  1. 设备厂商

    • 实现适当的认证机制
    • 使用加密通信
    • 限制敏感操作的频率
  2. 用户

    • 及时更新设备固件
    • 不使用BLE设备时关闭蓝牙
    • 避免连接不可信设备

6. 扩展知识

  1. Write Command与Write Request区别

    • Write Command:无需响应的写入命令
    • Write Request:需要设备响应的写入请求
  2. 颜色控制原理

    • 许多设备使用RGB颜色对照表
    • 数据值可能包含RGB分量或预设模式代码
  3. 其他BLE设备分析

    • 类似方法可应用于50%以上的BLE设备
    • 关键在于分析Write Command和Characteristic值

7. 实践建议

  1. 从简单设备(如手环)开始分析
  2. 重点关注Write操作和Handle值
  3. 结合官方GATT文档理解Characteristic含义
  4. 使用合法APP操作时捕获数据包作为参考
  5. 注意不同厂商可能实现不同的安全机制
BLE-GATT协议分析与安全实践 1. BLE-GATT概述 低功耗蓝牙(BLE)连接建立在GATT(Generic Attribute Profile)协议之上,GATT是一个在蓝牙连接之上发送和接收很短数据段(称为属性Attribute)的通用规范。 GATT层次结构 GATT包括三层结构: Profile :功能大类集合 Service :服务,每个Service包含一个或多个Characteristic Characteristic :功能对象 2. 基础工具与准备 2.1 常用工具 hcitool :扫描BLE设备 hcitool lescan :扫描附近的BLE设备 gatttool :连接并操作蓝牙设备 LightBlue :图形化BLE调试工具 数据包捕获工具 : SmartRF格式嗅探数据 tibtle2pcap :将SmartRF格式转换为libpcap格式 2.2 环境准备 安装BlueZ协议栈(包含hcitool和gatttool) USB Dongle(用于BLE数据嗅探) 3. BLE设备分析实战 3.1 手环分析案例 设备发现 : 使用 hcitool lescan 扫描手环设备 数据抓包与分析 : 捕获SmartRF格式数据并转换为libpcap格式 分析ATT Write Command控制指令 关键发现: Handle值:0x0051 Alert level:High Alert(0x02) 功能控制 : 根据蓝牙官方GATT CHARACTERISTIC文档,0x02表示高警报级别 通过修改此值可以控制手环震动级别 3.2 蓝牙灯泡分析案例 设备发现 : 扫描确定MAC地址 数据分析 : 寻找write字段信息 跟踪字段信息寻找VULE字段值 关键发现: Handle:0x0019 数据值示例: 08004701470147010000 功能控制 : 通过Write Command控制灯泡 不同数据值对应不同颜色和开关状态 示例控制值: 08004701470147010000 08000d07470147010000 08004701b223c64c0000 安全限制 : 某些灯泡有密钥校验机制 直接连接可能导致密钥不匹配 4. 安全分析与攻击演示 4.1 攻击原理 通过分析Write Command/Request实现设备控制 重放攻击:捕获合法控制指令并重放 功能滥用:连续发送控制指令导致设备异常 4.2 攻击演示 手环攻击 : 通过修改Alert level值实现震动控制 演示视频:https://v.qq.com/x/page/c0501jtxfkm.html 灯泡攻击 : 使用gatttool直接控制开关和颜色 编写脚本实现连续开关变色 演示视频:https://v.qq.com/x/page/g0501zyymd9.html 5. 防御建议 设备厂商 : 实现适当的认证机制 使用加密通信 限制敏感操作的频率 用户 : 及时更新设备固件 不使用BLE设备时关闭蓝牙 避免连接不可信设备 6. 扩展知识 Write Command与Write Request区别 : Write Command:无需响应的写入命令 Write Request:需要设备响应的写入请求 颜色控制原理 : 许多设备使用RGB颜色对照表 数据值可能包含RGB分量或预设模式代码 其他BLE设备分析 : 类似方法可应用于50%以上的BLE设备 关键在于分析Write Command和Characteristic值 7. 实践建议 从简单设备(如手环)开始分析 重点关注Write操作和Handle值 结合官方GATT文档理解Characteristic含义 使用合法APP操作时捕获数据包作为参考 注意不同厂商可能实现不同的安全机制