蓝牙

蓝牙漏洞

蓝牙的漏洞是指蓝牙协议或实现中存在的安全缺陷,可能导致攻击者利用蓝牙连接进行远程代码执行、信息泄露、中间人攻击等恶意行为。根据蓝牙的不同版本和功能,蓝牙的漏洞可以分为以下几种类型:

  • 经典蓝牙(BR/EDR)的漏洞:这些漏洞主要影响使用经典蓝牙协议的设备,如耳机、键盘、鼠标等。一些典型的漏洞有:
    • BlueBorne:这是一组利用蓝牙协议栈中的多个漏洞进行远程攻击的攻击向量,包括CVE-2017-0781、CVE-2017-0782、CVE-2017-0783等。
    • KNOB:这是一个利用蓝牙加密密钥协商过程中的缺陷,使攻击者能够降低加密密钥的长度,从而破解蓝牙通信的漏洞,编号为CVE-2019-9506。
    • BIAS:这是一个利用蓝牙配对过程中的逻辑错误,使攻击者能够伪造已配对设备的身份,从而绕过认证和授权的漏洞,编号为CVE-2020-10135。
  • 低功耗蓝牙(BLE)的漏洞:这些漏洞主要影响使用低功耗蓝牙协议的设备,如智能手环、智能锁、智能灯泡等。一些典型的漏洞有:
    • SweynTooth:这是一组利用蓝牙低功耗协议栈中的多个漏洞进行远程攻击的攻击向量,包括CVE-2019-16336、CVE-2019-17061、CVE-2019-17060等。
    • BLESA:这是一个利用蓝牙低功耗协议中的重连机制的缺陷,使攻击者能够在设备重连时进行中间人攻击的漏洞,编号为CVE-2020-26558。
    • BLURtooth:这是一个利用蓝牙双模设备在CROSS-TRANSPORT KEY DERIVATION(CTKD)过程中的缺陷,使攻击者能够覆盖或降级已配对设备的密钥的漏洞,编号为CVE-2020-15802。
  • Android蓝牙的漏洞:这些漏洞主要影响使用Android系统的设备,如手机、平板、电视等。一些典型的漏洞有:
    • CVE-2020-0022:这是一个由于Android系统在蓝牙传输收包重组过程中存在的代码bug而引发的漏洞,可能导致内存泄露或远程代码执行。
    • CVE-2021-0918:这是一个由于Android系统在处理蓝牙GATT协议中的Notification消息时存在的数组越界漏洞,可能导致远程代码执行。
    • CVE-2021-39805:这是一个由于Android系统在处理蓝牙L2CAP协议中的数据包时存在的内存拷贝错误漏洞,可能导致内存泄露或远程代码执行。

工具

安装BLE渗透测试所需要的工具:

wget https://raw.githubusercontent.com/IoTSecurity101/BLE-UAE/master/ble_uae.sh
chmod +x ble_uae.sh
./ble_uae.sh

工具

  • Hcitool

Hcitool 是一个用于在 Linux 系统上与蓝牙设备交互的命令行工具。它可用于监视、配置连接以及向蓝牙设备发送特殊命令。

扫描蓝牙设备:

hcitool scan

获取远程蓝牙设备信息:

hcitool info <bdaddr>

对于LE设备扫描:

hcitool lescan

获取LE设备信息:

hcitool leinfo <baddr>
  • Bleak

Bleak 是一款 GATT 客户端软件,能够连接到充当 GATT 服务器的 BLE 设备。它旨在提供异步、跨平台的 Python API 来与传感器等连接和通信。

安装:

pip install bleak

发现可以连接的蓝牙设备:

import asyncio
from bleak import BleakScanner

async def main():
    devices = await BleakScanner.discover()
    for d in devices:
        print(d)

asyncio.run(main())

连接蓝牙设备并读取型号:

import asyncio
from bleak import BleakClient

address = "24:71:89:cc:09:05"
MODEL_NBR_UUID = "2A24"

async def main(address):
    async with BleakClient(address) as client:
        model_number = await client.read_gatt_char(MODEL_NBR_UUID)
        print("Model Number: {0}".format("".join(map(chr, model_number))))

asyncio.run(main(address))
  • SDPtool

SDPtool提供了在蓝牙设备上执行 SDP 查询和管理本地 sdpd 的接口。

浏览由蓝牙地址作为参数指定的设备上的所有可用服务:

sudo sdptool browse --tree --raw <baddr>

BLE-UAE 101