kali linux 中文文档 下载 App

蓝牙 BLE 安全测试工具与方法

BLE vs 经典蓝牙

维度经典蓝牙BLE
功耗高(持续连接)低(广播模式)
场景耳机、音箱IoT、智能手环、门禁
协议BR/EDR4.x 起(GATT 架构)
安全特性配对加密配对模式更多、可选
典型设备AirPods、蓝牙键盘小米手环、智能门锁、BLE Beacon

大部分 IoT 设备用 BLE,所以 BLE 是硬件安全测试的重点。

Kali BLE 工具一览

工具功能
hcitool基础蓝牙命令(扫描、连接)
hciconfig蓝牙适配器配置
bluez底层蓝牙协议栈
GATTtool连接 BLE 设备并读写特征
Bettercap完整蓝牙审计框架(GUI)
Wireshark + BT蓝牙抓包分析
btlejackBLE 嗅探和 MITM

基础扫描

hcitool 扫描附近设备

# 查看蓝牙适配器
hciconfig

# 启动扫描
hcitool lescan

# 扫描结果输出格式:
# LE Scan ...
# AA:BB:CC:DD:EE:FF (unknown)
# AA:BB:CC:DD:EE:FF TestLock     ← 这是目标

Bettercap 扫描(推荐)

bettercap -eval "ble.recon on"
# 实时显示新发现的 BLE 设备
# 输入 devices 查看完整列表
# 输入 ble.enum <MAC> 枚举某个设备的 GATT 服务

GATT 服务枚举

BLE 设备使用 GATT(Generic Attribute Profile)架构,结构:

Device
  └─ Service (UUID)
       └─ Characteristic (UUID)
            └─ Descriptor (UUID)

GATTtool 枚举

# 连接目标设备
gatttool -b AA:BB:CC:DD:EE:FF -I

# 连接后
> primary           # 列出所有 Service
> characteristics    # 列出所有 Characteristic
> handle 0x0028      # 读取某个 handle 的值
> desc 0x0028        # 读取 descriptor
> char-read-uuid <UUID>   # 按 UUID 读取

Bettercap 枚举

bettercap -eval "ble.recon on; ble.enum AA:BB:CC:DD:EE:FF"

BLE 攻击面

未加密的特征值读写

很多 BLE 设备的特征值是未加密的:

读取:可能拿到传感器数据、固件版本
写入:可能触发设备动作(开门、关灯、发送指令)

实战案例:智能门锁有一个未加密的特征,写入 0x01 就能开门。

MITM 攻击(btlejack)

  1. 攻击者设备比合法设备和目标设备更靠近
  2. btlejack 同时连接两边
  3. 拦截并修改通信内容
# btlejack 需要特定蓝牙适配器(如 u-blox)
sudo btlejack -d AA:BB:CC:DD:EE:FF -w capture.pcap

重放攻击

很多 BLE 设备的认证方式简单——截获一次合法请求,重放即可。用 Wireshark 抓包后用 hciconfig 重放。

Beacon 欺骗

iBeacon、Eddystone 等 BLE Beacon 广播固定的 UUID + Major + Minor + TX Power。修改这些值可以:

蓝牙抓包

Kali 内置了蓝牙接口的抓包驱动:

# 确认蓝牙抓包可用
hciconfig hci0 up
hcitool -i hci0 cmd 0x03 0x004b 0x01   # 开启 HCI 日志

# Wireshark 捕获 HCI 日志
# interface → Bluetooth HCI snoop log

或者用 btsnoop(更稳定):

# 读取 HCI 日志
btmon | tee capture.log

硬件要求

大部分内置蓝牙适配器不支持嗅探和注入——它们是"只会说话不会偷听"的普通蓝牙芯片。要完整审计: