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

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

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

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

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/virtualabs/btlejuice
数据包嗅探与分析蓝牙安全物联网安全冒充工具无线安全渗透测试红队Archived
GitHubvirtualabs/btlejuice

btlejuice

BLE 中间人框架,通过基于 Web 的拦截代理,拦截、重放并修改蓝牙智能设备与移动应用之间的 GATT 流量。

查看仓库
87年前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

BtleJuice 框架

简介

BtleJuice 是一个用于对蓝牙智能设备(又称低功耗蓝牙)执行中间人攻击的完整框架。它由以下部分组成:

  • 一个拦截核心
  • 一个拦截代理
  • 一个专用的 Web 界面
  • Python 和 Node.js 绑定

如何安装 BtleJuice?

安装 BtleJuice 简直是小菜一碟。首先,请确保你的系统使用较新版本的 Node.js(>=4.3.2)和 npm。然后,请确保安装所有必需的依赖项:

Ubuntu/Debian/Raspbian

root@kitploit:~
sudo apt-get install bluetooth bluez libbluetooth-dev libudev-dev

Fedora / 其他基于 RPM 的系统

root@kitploit:~
sudo yum install bluez bluez-libs bluez-libs-devel npm

最后,使用 npm 安装 BtleJuice:

root@kitploit:~
sudo npm install -g btlejuice

如果一切顺利,BtleJuice 就可以使用了!

如何使用 BtleJuice?

BtleJuice 由两个主要组件组成:一个拦截代理和一个核心。这两个组件需要运行在独立的机器上,以便同时操作两个蓝牙 4.0+ 适配器。BtleJuice 代理无法在 Docker 容器中运行。

使用虚拟机可能有助于让该框架在单台计算机上工作。

在你的虚拟机中,安装 btlejuice,并确保你的 USB BT4 适配器在虚拟机中可用:

root@kitploit:~
$ sudo hciconfig
hci0:	Type: BR/EDR  Bus: USB
	BD Address: 10:02:B5:18:07:AD  ACL MTU: 1021:5  SCO MTU: 96:6
	DOWN
	RX bytes:1433 acl:0 sco:0 events:171 errors:0
	TX bytes:30206 acl:0 sco:0 commands:170 errors:0
$ sudo hciconfig hci0 up

然后,确保你的虚拟机有一个宿主机可以访问的 IP 地址。

在你的虚拟机中启动代理:

root@kitploit:~
$ sudo btlejuice-proxy

在宿主机上,别忘了停止蓝牙服务,并确保 HCI 设备保持打开/初始化状态:

root@kitploit:~
$ sudo service bluetooth stop
$ sudo hciconfig hci0 up

最后,在宿主机上运行以下命令:

root@kitploit:~
$ sudo btlejuice -u <Proxy IP address> -w

-w 参数告诉 BtleJuice 启动 Web 界面,而 -u 选项用于指定代理的 IP 地址。

Web 用户界面现在可通过 http://localhost:8080 访问。请注意,Web 服务器端口可以通过命令行更改。

使用 Web 界面

BtleJuice 的 Web 界面在右上角提供了一组用于控制拦截核心的链接,如下所示。

BtleJuice 主 Web 界面

目标选择

首先,点击 Select target(选择目标)按钮,将弹出一个对话框,显示拦截核心检测到的所有可用低功耗蓝牙设备:

BtleJuice 目标选择弹窗

双击所需目标,然后等待界面就绪(蓝牙按钮的外观会发生变化)。虚拟设备就绪后,使用配套的移动应用程序或其他设备(取决于具体预期)连接到该虚拟设备。如果连接成功,主界面上将显示 Connected(已连接)事件。

BtleJuice 目标选择弹窗

所有被拦截的 GATT 操作都会随对应的服务(Service)和特征值(Characteristic)UUID 一起显示,当然也包括与之关联的数据。数据默认以 HexII 格式(Ange Albertini 设计格式的一种变体)显示,不过你也可以通过点击数据本身在 HexII 与 Hex 之间切换。BtleJuice 同时支持 Hex 和 HexII 格式。

重放 GATT 操作

你可以右键点击任意 GATT 操作,然后选择 Replay(重放)选项来重放该操作,如下所示:

重放弹窗

重放对话框

点击 Write(写入)(或 Read(读取))按钮即可重放相应的 GATT 操作。该操作将被记录在主界面中。

实时数据修改

最后但同样重要的是,界面可以局部或全局地拦截任意 GATT 操作,并允许实时修改数据。你可以通过点击右上角的 Intercept(拦截)按钮进行全局拦截,也可以使用右键菜单在某个服务和特征值上启用或禁用钩子。每当有 GATT 操作被拦截时,都会弹出以下对话框:

拦截对话框

将数据导出到文件

自 1.0.6 版本起,界面提供了数据导出功能,支持可读格式和 JSON 格式的导出。这些导出基于被拦截的 GATT 操作生成,同时也包含目标设备的信息。点击 Export(导出)按钮时,将显示以下对话框:

导出对话框

点击对话框底部的 Export(导出)按钮,即可下载被拦截数据的 JSON(或文本)版本。

设置

设置对话框目前只提供一个选项,即当目标设备断开连接时自动重新连接代理。这在处理短时间内活跃的设备时可能很有用。

设置对话框

断开连接

当代理处于活动状态时,点击右上角的 Select Target(选择目标)按钮将停止代理,并允许重新选择目标。

安装绑定

BtleJuice 的 Node.js 绑定也可以通过 npm 安装:

root@kitploit:~
$ sudo npm install -g btlejuice-bindings

有关如何使用 Node.js 绑定的更多信息,请参阅包文档。

致谢

特别感谢 Slawomir Jasek,他在 DEF CON 24 上指出了许多 noble/bleno 的技巧,以避免与移动应用程序相关的各种问题,并与我们分享了 BLE 中间人攻击策略 =)。他也是 Gattacker 的作者。

许可证

版权所有 (c) 2016 Econocom Digital Security

特此免费授予任何获得本软件及相关文档文件(“本软件”)副本的人,允许其不受限制地处理本软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售本软件副本的权利,并允许向其提供本软件的人这样做,但须满足以下条件:

上述版权声明和本许可声明应包含在本软件的所有副本或重要部分中。

本软件按“原样”提供,不作任何明示或暗示的担保,包括但不限于适销性、特定用途适用性和非侵权性的保证。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,无论该责任是基于合同、侵权或其他方式,也不论其是否由本软件或本软件的使用或其他交易引起或与之相关。

下载工具