测试工具

https://github.com/securing/gattacker
https://github.com/DigitalSecurity/btlejuice

环境安装

需要两个蓝牙适配器,均采用 CSR4.0
软件方面我用的 ubuntu 18.04 一个安装好之后直接克隆一个

1
2
3
4
5
6
7
8
curl -sL https://deb.nodesource.com/setup\_8.x | sudo -E bash
apt install nodejs
apt-get install bluetooth bluez libbluetooth-dev libudev-dev
apt install npm
npm install bleno
npm install noble
npm install gattacker
npm install -g btlejuice

btlejuice

第一台机器执行:sudo btlejuice-proxy
第二台机器运行:sudo btlejuice -u 192.168.127.139 -w(ip 是第一台机器的)
然后在第二台机器上就可以打开浏览器访问 http://127.0.0.1:8080
上面的四个标志依次是:拦截开关、导出数据、选择目标、设置

选择目标后会用第一台机器的适配器与目标连接,获取目标的服务与特征,然后用第二台机器的适配器为造出一个假的目标,因为目标已经与第一台设备的适配器连接了,所以你就扫描不到了,再扫描出来的就是第二台设备伪造的假目标了
扫描出来的目标,双击选中

image.png
image.png

过一小会再扫描就是适配器模拟的假目标了,我这个不知道为啥,只探测到了一个服务

8ea23d60538a835d3a421fb7ad84f2d.jpg
8ea23d60538a835d3a421fb7ad84f2d.jpg

试一下蓝牙灯泡,基本都探测出来了,用 APP 也能扫描到,但是连接上之后会断开,再点击 APP 就没法连接到它了

image.png
image.png

开启拦截开关会在收到数据的时候先展示给你,由你选择是发出去还是扔掉,也可以在发的时候修改,类似 burp 的抓包改包

image.png
image.png