BLE-GATT浅析
字数 1603 2025-08-22 12:22:24
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控制灯泡
- 不同数据值对应不同颜色和开关状态
- 示例控制值:
0800470147014701000008000d0747014701000008004701b223c64c0000
-
安全限制:
- 某些灯泡有密钥校验机制
- 直接连接可能导致密钥不匹配
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操作时捕获数据包作为参考
- 注意不同厂商可能实现不同的安全机制