Skip to content
KitploitKITPLOIT
工具博客
Log in
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
blur — BLURtooth:利用蓝牙经典和蓝牙低功耗中的跨传输密钥派生 [CVE-2020-15802] [CVE-2022-20361] | Kitploit
工具/GitHubGitHub/francozappa/blur
蓝牙安全漏洞分析漏洞利用无线安全论文与研究学习与教育
GitHubfrancozappa/blur

blur

BLURtooth:利用蓝牙经典和蓝牙低功耗中的跨传输密钥派生 [CVE-2020-15802] [CVE-2022-20361]

查看仓库
215194年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

README

关于在 AsiaCCS'22 上展示的 BLUR 攻击的存储库,论文标题为:BLURtooth:利用蓝牙经典和低功耗蓝牙中的跨传输密钥派生漏洞。

有用链接: pdf, video, slides, website.

BibTeX 条目:

@inproceedings{antonioli22blur,
    author={Antonioli, Daniele and Tippenhauer, Nils Ole and Rasmussen, Kasper
    and Payer, Mathias},
    title={{BLURtooth: Exploiting Cross-Transport Key Derivation in
    Bluetooth Classic and Bluetooth Low Energy}},
    booktitle={Proceedings of the  Asia conference on computer and
    communications security (ASIACCS)},
    month={May},
    year={2022}
}

BLUR 攻击已被分配了 CVE-2020-15802 和 CVE-2022-20361。

初始化

在本文档的其余部分,我们以 BT 表示 蓝牙经典(又称 BR/EDR),以 BLE 表示 低功耗蓝牙,以 CTKD 表示 跨传输密钥派生。 我们还假设攻击设备和受害者设备都支持 BT、BLE 和 CTKD。 这意味着这些设备支持蓝牙 4.2+ 以及 BT/BLE 安全连接。

执行攻击最简单的方法是使用一台设备同时作为受害者和攻击设备。例如,我们建议使用一台 Linux 笔记本电脑作为受害者/攻击设备,并使用任何其他设备作为另一个受害者。

我们使用的是运行着 bluez 和 bluez tools 的 Linux 机器。我们依赖 btmgmt 工具,并且浏览其源代码可能会有所帮助。具体来说,我们使用其 pair 子命令,因为它允许在声明任意输入输出能力的同时,通过 BT/BLE 发送任意配对请求。

Usage: pair [-c cap] [-t type] <remote address>

如果你想复现我们论文中展示的确切攻击场景,你需要做一些额外的工作。 具体来说,你需要复现 BIAS 攻击中介绍的设置。一旦你的设置准备就绪,你应该能够使用开发板作为你的 BT/BLE 控制器,Linux 笔记本电脑作为主机。此外,你应该能够从主机嗅探链路层数据包(例如,BT LMP 流量),并使用 internalblue 在运行时动态修补开发板的固件。

执行 BLUR 攻击

硬编码 NoInputNoOutput 能力(不取消设置 MitM 标志)

此步骤是可选的,并且需要修补你自己的 Linux 内核。

当使用 btmgmt -c 3 时,bluez 会自动取消设置 MitM 保护标志,例如,它会将 AuthReq 字节设置为 0x02 而不是 0x03。 然而,BLUR 攻击不需要取消设置此标志,只需要在远程设备支持输入输出能力时声明 NoInputNoOutput 能力。通过此技巧,配对过程会降级为 Just Works,而无需 取消设置 MitM 标志。

实现此设置需要对 Linux 内核进行最小修改。具体来说,在 /net/bluetooth/hci_event.c 中,我们将:

cp.authentication = conn->auth_type;

改为:

cp.authentication = 0x03;

这样,无论我们声明的输入输出能力如何,我们都会将 AuthReq 标志硬编码为 0x03。

合法配对

像往常一样配对受害者设备。例如,如果你瞄准的是一部智能手机,请将其与你的笔记本电脑配对(笔记本电脑同时充当受害者和攻击设备)。配对过程中可能需要一些用户交互(例如,数字比较)。

打开 btmgmt 命令界面

  • 记下受害者的蓝牙地址,记为 REMOTE-BTADD
  • 打开一个终端
  • 运行 hciconfig 并记下你的 hci 索引,例如 0
  • 运行 sudo btmgmt -i 0
  • 你应该会看到一个包含 [hci0] # 的蓝色终端提示符

通过 BLE 进行中央模拟攻击,[覆盖]写入 BT 配对密钥

这里我假设受害者使用的是公共 BLE 地址。如果使用的是随机地址,请将 -t 选项改为 2

从 btmgmt 命令行界面运行:

pair -t 1 REMOTE-BTADD

如果你还需要将关联降级为 Just Works,请运行:

pair -c 3 -t 1 REMOTE-BTADD

-c 标志设置攻击者的输入输出能力,值 0x3 对应 NoInputNoOutput,而笔记本电脑/智能手机的默认值是 0x1,对应 Display Yes/No。

通过 BT 进行外围设备模拟攻击,[覆盖]写入 BLE 配对密钥

在这种情况下,即使我们模拟的是 BLE 外围设备,我们也要作为中央设备通过 BT 进行配对。

从 btmgmt 命令行界面运行:

pair -t 0 REMOTE-BTADD

如果你还需要将关联降级为 Just Works,请运行:

pair -c 3 -t 0 REMOTE-BTADD

意外会话攻击

在模拟一个当前对于受害者来说是未知(即未配对)设备的条件下,重复上述攻击。

问答(蓝牙、CTKD、Linux、bluez、Wireshark)

如何设置我的 BT/BLE 设备为可发现/可连接/可配对?

从 bluetoothctl 命令行界面中,你可以将 discoverable 设置为 on 或 off,以及设置 pairable。从 btmgmt 命令行界面中,你也可以设置 connectable 标志。

如何控制我的设备的可发现时间?

从 bluetoothctl 中,你可以使用 discoverable-timeout 控制可发现超时时间,例如,如果设置为 0,设备将始终处于可发现状态。

如何检查我的 BT/BLE 设备是否支持配对或处于可配对状态?

对于 BT,当作为中央设备或外围设备与远程设备配对时,你将收到以下 LMP 数据包:LMP not accepted ext(操作码:0x02),并附带配对不允许(错误代码:0x18)

对于 BLE,当作为中央设备或外围设备与远程设备配对时,你将收到以下 SMP 数据包:SMP Pairing Failed Command(操作码 0x05),并附带 Pairing Not Supported(原因 0x05)。

如何检查我的 BT/BLE 设备是否支持安全连接?

对于 BT,当与远程设备配对时,查看 LMP 功能包中主机和控制器的安全连接支持,例如,使用以下 Wireshark 显示过滤器:btbrlmp.efeat.scc or btbrlmp.efeat.sch。

对于 BLE,当与远程设备配对时,在 SMP 配对请求或响应中检查包含安全连接标志的 AuthReq 字节,例如,使用以下 Wireshark 显示过滤器:btsmp.sc_flag == 1。

如何检查我的 BT/BLE 设备是否支持 CTKD?

对于 BT,当与远程设备配对时,BLE SMP 流量通过 L2CAP 隧道传输。因此,通过使用 btl2cap.payload Wireshark 过滤器,你应该会看到从中央设备到外围设备的一个数据包,其负载以 0x01 开头(SMP 配对请求),以及另一个方向的数据包,其负载以 0x02 开头(SMP 配对响应)。然后你还应该会看到其他编码 SMP 密钥分发的原始 L2CAP 数据包。

对于 BLE,当与远程设备配对时,在 SMP 配对请求或响应中检查中央设备和外围设备是否都愿意在 SMP 密钥分发期间发送和接收链接密钥,例如,使用以下 Wireshark 过滤器 btsmp.key_dist_linkkey or btsmp.key_dist_linkkey。

下载工具