BlueToolkit Recon侦察模块详解:如何采集目标设备的蓝牙版本、厂商与配对能力
BlueToolkit Recon侦察模块详解:如何采集目标设备的蓝牙版本、厂商与配对能力
【免费下载链接】BlueToolkitBlueToolkit is an extensible Bluetooth Classic vulnerability testing framework that helps uncover new and old vulnerabilities in Bluetooth-enabled devices. Could be used in the vulnerability research, penetration testing and bluetooth hacking. We also collected and classified Bluetooth vulnerabilities in an "Awesome Bluetooth Security" way项目地址: https://gitcode.com/gh_mirrors/bl/BlueToolkit
BlueToolkit 是一个可扩展的蓝牙经典(BR/EDR)与低功耗蓝牙(BLE)漏洞测试框架,其Recon 侦察模块能一键采集目标设备的蓝牙版本、厂商、LMP 特性和配对能力,是渗透测试前的第一块基石。本文将带你快速上手 Recon 侦察流程,看懂它的输出数据,并了解这些数据如何指导后续的漏洞利用。
为什么 Recon 侦察是蓝牙安全测试的第一步
对蓝牙设备发起攻击前,你需要先回答几个问题:
- 它广播吗?支持 BLE 还是经典蓝牙?
- 它允许连接、允许配对吗?
- 它的 LMP(链路管理协议)版本是多少?用的是哪家芯片方案?
- 它支持安全简单配对(SSP)吗?I/O 能力是什么?
BlueToolkit 的三大模块中,Recon(侦察)→ Exploit(利用)→ Report(报告),Recon 正是入口:它先收集目标设备的蓝牙能力与安全配置,再决定哪些漏洞模板值得测试。Recon 的核心实现位于 bluekit/bluekit/recon.py。
一条命令启动 Recon 侦察
安装完成后(支持裸机 Ubuntu/Debian 或 Vagrant 虚拟机,入口脚本为install.sh与vagrant/Vagrantfile),只需一条命令即可对目标 MAC 地址执行完整侦察:
sudo bluekit -t AA:BB:CC:DD:EE:FF -r参数说明(命令行入口在bluekit/bluekit/bluekit.py):
| 参数 | 作用 |
|---|---|
-t, --target | 目标设备 MAC 地址 |
-r, --recon | 运行 Recon 侦察脚本 |
-ct, --checktarget | 仅检查目标连通性与可用性 |
-v | 版本信息 |
上图为 BlueToolkit 汽车安全评估中记录的车机蓝牙配对界面(Hyundai、Renault、Audi、BMW)——这些真实设备的配对信息,正是 Recon 模块要采集的目标。
Recon 侦察模块采集的 7 项关键信息
run_recon()会以双模(BR/EDR + BLE)中心角色启动本地蓝牙,按流程逐项探测目标:
| # | 采集项 | 含义 | 对应结果字段 |
|---|---|---|---|
| 1 | Advertising | 设备是否在广播,广播类型(BLE/BREDR) | type、advertising |
| 2 | Connectable | 是否允许建立连接 | connectable |
| 3 | LMP Version | 链路层版本,如 5.0、4.2 | version |
| 4 | Manufacturer | 蓝牙芯片厂商(如 Qualcomm、Cypress) | vendor |
| 5 | LMP/LM Features | 链路层支持的特性位 | lmp_ll_features |
| 6 | Pairable | 是否可配对 | pairable |
| 7 | Pairing Features | 配对能力,含 I/O 能力(I/O capabilities) | pairing_features |
几点值得注意的细节:
- 版本换算:LMP 版本字节(十六进制)会映射为人类可读的蓝牙版本,映射表见
bluekit/bluekit/constants.py中的VERSION_TABLE(如0x8→ 4.2,0xb→ 5.2)。 - 自动重试:探测结果中只要还有
None,就在超时(默认 20 秒)内循环重试,提高弱信号环境下的成功率。 - 连通性前置检查:
bluekit/bluekit/verifyconn.py提供check_device_status(),用位掩码(TARGET_ADVERTISING/TARGET_CONNECTABLE/TARGET_PAIRABLE)描述设备状态;DoS 测试前还会用dos_checker()反复确认目标存活,避免把"设备掉线"误判为漏洞。
如何读懂 recon.json 输出文件
侦察成功后,所有数据会按目标 MAC 归档保存:
/usr/share/BlueToolkit/data/tests/<目标MAC>/recon/recon.json(路径规则定义在bluekit/bluekit/constants.py的OUTPUT_DIR)
recon.json是一个结构化 JSON,关键字段包括type(BT 类型)、version(蓝牙版本)、vendor(芯片厂商)、lmp_ll_features、pairable与pairing_features.io_capabilities等。这些数据后续会被两处直接消费:
- 漏洞过滤:
bluekit.py中的exploit_filter()读取vendor / version / bt_type,自动剔除版本不匹配、BT 类型不匹配的漏洞模板,让扫描又快又准。 - 侦察类检查:
exploits/目录下有多份基于侦察数据的 YAML 模板,例如 reconnaissance_SSP_supported.yaml(判断 SSP 是否启用)、reconnaissance_SC_supported.yaml(判断安全连接 SC)、reconnaissance_possible_BLUR.yaml(BLUR 攻击面预检),它们统一调用bluekit_recon_based_check.py复用 Recon 结果。
从侦察到利用:Recon 数据如何决定攻击路线
理解 Recon 的价值,关键在"数据驱动过滤"这条链路:
bluekit -t <MAC> -r # 1. 采集版本/厂商/配对能力 ↓ recon.json # 2. 持久化侦察数据 ↓ exploit_filter() # 3. 按 bt_type + 版本区间过滤可用漏洞 ↓ engine 逐个执行 YAML 模板 # 4. 执行 Exploit 并生成 Report举例:如果 Recon 发现目标是 BT 3.0 的经典蓝牙设备,那么只影响 BT 5.0+ 的漏洞(如 CVE-2020-24490)会被自动跳过;若发现io_capabilities为 NoInputNoOutput(NiNo),则 KNOB、方法混淆等 MitM 攻击的适用性评估就有了依据。这正是 BlueToolkit 能半自动化覆盖 40+ 个已知漏洞(Braktooth、BleedingTooth、InternalBlue 等)的设计基础——漏洞模板全部以 YAML 存放在exploits/目录,硬件档案在hardware/目录。
小结
- 一条命令:
sudo bluekit -t <MAC> -r即可完成完整蓝牙侦察。 - 七项情报:广播、可连接性、LMP 版本、厂商、LMP 特性、可配对性、I/O 能力,一次采集、JSON 存档。
- 数据驱动:侦察结果直接驱动漏洞模板过滤与攻击路线选择,避免无效扫描。
- 生态完整:Recon 之后无缝衔接 Exploit 与 Report 模块,适合漏洞研究、渗透测试与车载蓝牙安全评估。
掌握 Recon 侦察模块,你就拿到了打开 BlueToolkit 蓝牙安全测试之门的钥匙。
【免费下载链接】BlueToolkitBlueToolkit is an extensible Bluetooth Classic vulnerability testing framework that helps uncover new and old vulnerabilities in Bluetooth-enabled devices. Could be used in the vulnerability research, penetration testing and bluetooth hacking. We also collected and classified Bluetooth vulnerabilities in an "Awesome Bluetooth Security" way项目地址: https://gitcode.com/gh_mirrors/bl/BlueToolkit
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
