CVE-2024-21306与CVE-2024-0230:Hi, My Name is Keyboard漏洞利用指南
【免费下载链接】hi_my_name_is_keyboard项目地址: https://gitcode.com/gh_mirrors/hi/hi_my_name_is_keyboard
Hi, My Name is Keyboard项目是一个针对CVE-2024-21306与CVE-2024-0230等蓝牙键盘漏洞的开源工具集,提供了多种操作系统的键盘注入攻击演示。通过该项目,安全研究者可以深入了解蓝牙键盘配对机制中的安全缺陷,以及如何通过技术手段防范此类攻击。
漏洞原理:蓝牙键盘的隐形威胁 🚨
现代设备广泛依赖蓝牙键盘进行输入,但CVE-2024-21306与CVE-2024-0230漏洞暴露了蓝牙配对流程中的严重安全缺陷。攻击者可通过伪造蓝牙键盘设备,在无需用户确认的情况下强制配对并注入恶意指令,实现对目标设备的远程控制。
这类攻击主要利用以下漏洞点:
- 零交互配对:部分系统在蓝牙开启时会自动接受键盘配对请求
- 设备身份验证缺失:未能有效验证蓝牙设备的物理合法性
- 链接密钥泄露:Magic Keyboard等设备存在链接密钥存储漏洞
环境准备:快速搭建测试平台 ⚙️
硬件要求
- Ubuntu 22.04主机(推荐)
- Broadcom蓝牙适配器(如Kinivo BCM20702A0)
- 目标测试设备(Android/iOS/macOS/Linux/Windows)
依赖安装
# 更新系统 sudo apt-get update && sudo apt-get -y upgrade # 安装基础依赖 sudo apt install -y bluez-tools bluez-hcidump git \ python3-pip python3-setuptools \ libbluetooth-dev # 配置蓝牙兼容性模式 sudo sed -i "s|ExecStart=/usr/lib/bluetooth/bluetoothd|ExecStart=/usr/lib/bluetooth/bluetoothd --compat|g" /lib/systemd/system/bluetooth.service sudo systemctl daemon-reload sudo systemctl restart bluetooth # 安装Python依赖 git clone https://github.com/pybluez/pybluez.git cd pybluez && sudo python3 setup.py install python3 -m pip install pydbus # 编译bdaddr工具 cd ~ && git clone https://github.com/bluez/bluez.git cd bluez && gcc -o bdaddr tools/bdaddr.c src/oui.c -lbluetooth -I. sudo cp bdaddr /usr/local/bin/代码获取
git clone https://gitcode.com/gh_mirrors/hi/hi_my_name_is_keyboard cd hi_my_name_is_keyboard跨平台攻击演示:实战操作指南 📱💻
Linux系统攻击演示
当Linux主机开启蓝牙并处于可发现状态时,攻击者可利用BlueZ协议栈漏洞实现键盘注入。下图展示了Ubuntu系统的蓝牙设置界面,此时设备正处于易受攻击状态:
攻击步骤:
- 确认目标Linux主机蓝牙处于可发现状态
- 执行注入脚本:
./keystroke-injection-android-linux.py -i hci1 -t 58:28:39:E6:AE:1C- 脚本将自动完成设备伪装与配对,注入Tab键击10秒
macOS系统攻击演示
macOS系统在Magic Keyboard断开连接时存在短暂的安全窗口,攻击者可通过伪造键盘设备实现注入。下图展示了macOS系统在攻击过程中的屏幕状态变化:
攻击步骤:
- 确保目标Mac已配对Magic Keyboard并处于连接状态
- 执行注入脚本:
./keystroke-injection-macos.py -i hci1 -t 50:DE:06:A8:E1:CA -k 1C:57:DC:88:55:02- 断开目标Magic Keyboard连接触发攻击
- 脚本将自动注入打开浏览器并执行搜索的指令
Windows系统攻击要点
Windows系统需要用户点击通知才能完成攻击流程,具体步骤如下:
- 确保目标Windows已配对蓝牙键盘并关闭该键盘
- 执行注入脚本:
./windows-poc.py -i hci0 -k 3C:A6:F6:EC:5B:ED -c 04:33:C2:19:CD:3B- 诱导目标用户点击"添加设备"通知
- 用户关闭配对对话框后,脚本将注入Tab键击5秒
防御措施:保护你的设备安全 🛡️
系统层面防护
及时更新系统:
- Android:升级至2023-12-05安全补丁级别
- iOS:升级至17.2或更高版本
- macOS:升级至14.2或更高版本
- Linux:更新BlueZ至最新安全版本
蓝牙使用规范:
- 仅在需要时开启蓝牙
- 禁用自动配对功能
- 开启蓝牙时避免将设备设为可发现状态
硬件层面防护
- 使用带有物理开关的蓝牙设备
- 定期更换蓝牙设备链接密钥
- 考虑使用USB有线键盘替代蓝牙键盘
高级防护策略
- 开启macOS的"锁定模式"(Lockdown Mode)
- 配置Linux系统蓝牙白名单
- 监控异常蓝牙连接请求
漏洞影响范围与修复状态 📊
受影响设备
| 操作系统 | 受影响版本 | 修复状态 |
|---|---|---|
| Android | 4.2.2-14 | 部分修复 |
| iOS | 16-17.1 | 17.2已修复 |
| macOS | 12-14.1 | 14.2已修复 |
| Linux | BlueZ 5 | 已发布补丁 |
| Windows | 10/11 | 部分缓解 |
受影响Apple外设
- Magic Keyboard (A2450)
- Magic Keyboard with Touch ID (A2449)
- Magic Mouse (A1657)
- 其他蓝牙输入设备
项目结构与核心文件 🔍
该项目包含多个平台的攻击演示脚本和工具模块:
注入工具:
- keystroke-injection-android-linux.py - Android/Linux注入脚本
- keystroke-injection-macos.py - macOS注入脚本
- keystroke-injection-ios.py - iOS注入脚本
- windows-poc.py - Windows注入脚本
链接密钥提取工具:
- read-link-key-bluetooth.py - 蓝牙方式提取密钥
- read-link-key-from-mac.py - Mac USB端口提取密钥
- read-link-key-lightning.py - Lightning端口提取密钥
核心模块:
- injector/agent.py - 蓝牙HID代理实现
- injector/hid.py - HID设备模拟
- injector/client.py - 蓝牙连接管理
总结与展望 🔮
CVE-2024-21306与CVE-2024-0230漏洞揭示了蓝牙输入设备生态中的基础性安全问题。Hi, My Name is Keyboard项目通过开源演示的方式,帮助安全社区更好地理解这些漏洞的原理与影响。
随着蓝牙设备的普及,类似的物理 proximity 攻击将持续对用户安全构成威胁。建议普通用户保持系统更新,安全研究者可基于本项目进一步探索蓝牙协议的安全边界,共同推动更安全的蓝牙生态建设。
注意:本项目仅用于安全研究目的,未经授权使用可能违反法律法规。
【免费下载链接】hi_my_name_is_keyboard项目地址: https://gitcode.com/gh_mirrors/hi/hi_my_name_is_keyboard
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考