| name | performing-bluetooth-security-assessment |
| description | 通过扫描、枚举 GATT 服务并检测漏洞,评估蓝牙低功耗(BLE)设备的安全性。 |
| domain | cybersecurity |
| subdomain | wireless-security |
| tags | ["bluetooth","ble","gatt","wireless-security"] |
| version | 1.0 |
| author | mahipal |
| license | Apache-2.0 |
概述
本技能使用 Python bleak 库执行蓝牙低功耗(BLE,Bluetooth Low Energy)安全评估。BLE 设备广泛应用于物联网(IoT)、医疗健康、健身和智能家居等场景,许多设备出厂时安全控制薄弱甚至完全缺失。本评估可识别未加密的 GATT 特征值、广播敏感数据的设备、已知漏洞设备指纹,以及配对配置不安全的问题。
代理使用 bleak 的异步(asyncio)API 发现附近的 BLE 设备,连接到目标设备,枚举所有 GATT 服务和特征值,并分析每个特征值的安全属性。它会标记允许未认证读/写访问敏感数据的特征值,并识别符合已知漏洞特征的设备。
前置条件
- Python 3.9 或更高版本
- bleak 库(
pip install bleak)
- 支持 BLE(蓝牙 4.0+)的蓝牙适配器
- Linux:BlueZ 5.43+ 及 D-Bus 权限
- Windows:Windows 10 1709 版本以上,含蓝牙支持
- macOS:macOS 10.15+ 含 CoreBluetooth
步骤
-
扫描 BLE 设备:使用 BleakScanner 发现范围内所有广播的 BLE 设备。捕获设备名称、地址(MAC)、RSSI 信号强度和已广播的服务 UUID。
-
识别目标设备:按名称模式、地址或最低信号强度筛选发现的设备。标记广播了默认名称或已知漏洞名称的设备。
-
连接并枚举 GATT 服务:使用 BleakClient 连接目标设备并遍历所有 GATT 服务。对每个服务记录其 UUID、描述和包含的特征值。
-
分析特征值属性:对每个特征值检查其属性(读取、写入、无响应写入、通知、指示)。标记无需认证或加密即可读写的特征值。
-
检查已知漏洞 UUID:将发现的服务和特征值 UUID 与已知漏洞或敏感服务数据库(心率、血压、设备信息、电池电量)对比,这些服务应要求加密。
-
检测未加密数据暴露:尝试读取应受保护的特征值。未认证即可成功读取敏感数据表明缺少安全控制。
-
生成安全报告:将所有发现整合成带严重性分级和修复建议的结构化 JSON 报告。
预期输出
{
"assessment_type": "ble_security_audit",
"target_device": {
"name": "SmartBand-XR",
"address": "AA:BB:CC:DD:EE:FF",
"rssi": -42
},
"services_found": 5,
"characteristics_found": 18,
"findings": [
{
"severity": "high",
"finding": "Heart Rate Measurement readable without encryption",
"uuid": "00002a37-0000-1000-8000-00805f9b34fb",
"properties": ["read", "notify"],
"remediation": "Enable encryption requirement on characteristic"