前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >BLE空口抓包方案对比

BLE空口抓包方案对比

作者头像
yichen
发布2022-11-11 16:31:44
2.3K0
发布2022-11-11 16:31:44
举报
文章被收录于专栏:陈冠男的游戏人生

本文根据实际使用经验,介绍了每种抓包方案的环境配置与抓包方法,对比分析目前几种 BLE 的空口抓包方案(只讨论普通人用得起的,ellisys 这类神器摸都没摸过 Orz)

PART1

方案一

ubertooth one + wireshark

ubertooth one 是一套开源的方案,淘宝购买大概 800 左右,缺点是贵,还只能同时抓一个信道,Github地址:

代码语言:javascript
复制
https://github.com/greatscottgadgets/ubertooth

01

环境配置方法

1、安装相关依赖

代码语言:javascript
复制
sudo apt install cmake libusb-1.0-0-dev make gcc g++ libbluetooth-dev wget \
pkg-config python3-numpy python3-qtpy python3-distutils python3-setuptools

2、安装 libbtbb

代码语言:javascript
复制
wget https://github.com/greatscottgadgets/libbtbb/archive/2020-12-R1.tar.gz -O libbtbb-2020-12-R1.tar.gz
tar -xf libbtbb-2020-12-R1.tar.gz
cd libbtbb-2020-12-R1
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig

3、安装ubertooth tools

代码语言:javascript
复制
wget https://github.com/greatscottgadgets/ubertooth/releases/download/2020-12-R1/ubertooth-2020-12-R1.tar.xz
tar -xf ubertooth-2020-12-R1.tar.xz
cd ubertooth-2020-12-R1/host
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig

4、安装 wireshark

代码语言:javascript
复制
sudo apt-get install wireshark wireshark-dev libwireshark-dev cmake

5、配置 BTBB 和 BREDR 插件

代码语言:javascript
复制
cd libbtbb-2020-12-R1/wireshark/plugins/btbb
mkdir build
cd build
cmake -DCMAKE_INSTALL_LIBDIR=/usr/lib/x86_64-linux-gnu/wireshark/libwireshark3/plugins ..
make
sudo make install

回到之前的目录

代码语言:javascript
复制
cd libbtbb-2020-12-R1/wireshark/plugins/btbredr
mkdir build
cd build
cmake -DCMAKE_INSTALL_LIBDIR=/usr/lib/x86_64-linux-gnu/wireshark/libwireshark3/plugins ..
make
sudo make install
【这里如果提示没有python使用先whereis python3然后再sudo ln -s /usr/bin/python3 /usr/bin/python】

6、更新固件

在 github 上找到 release 里面的的压缩包,在里面找到 bluetooth_rxtx.dfu 以后拷贝出来

执行命令刷入固件,如果是在虚拟机中操作会断开连接,再次接入虚拟机即可

代码语言:javascript
复制
ubertooth-dfu -d bluetooth_rxtx.dfu -r

02

使用教程

首先创建通信管道

代码语言:javascript
复制
mkfifo /tmp/pipe

在命令行输入 wireshark 打开 wireshark,然后点击 捕获 -> 选项

(忽略截图是windows平台的)

点击管理接口

新建管道 /tmp/pipe

点击开始抓包,新开一个终端,插入 ubertooth one 后输入

代码语言:javascript
复制
ubertooth-btle -f -c /tmp/pipe

就可以看到流量在终端里显示了,同时 wireshark 里也会捕获到流量

PART2

方案二

CC2540 + TI Packet Sniffer

CC2540 是 TI(德州仪器)的一款芯片,优点是价格便宜,淘宝购买大概40,缺点同样是只能同时抓一个信道

TI 有配套的官方软件:Packet Sniffer,直接安装就行,安装好之后接上 CC2540 协议类型选择蓝牙就可以抓包了

他保存的文件格式为 psd,可以用 Github 上的开源项目转换成 wireshark 可以识别的 pcap 格式:

代码语言:javascript
复制
https://github.com/joswr1ght/tibtle2pcap

PART3

方案三

Hollong + wireshark

纬图出品的 BLE 抓包工具,配合 wireshark 抓包操作简单,优点是同时抓三个广播信道,不会出现概率问题,价格大概在 800 左右

提供官方软件,安装好后点击打开应用程序

配置好 wireshark 的安装路径,点击菜单栏的开始摁扭,列表右侧的 select 勾上哪个抓那个

ps.又出了一个 Hollong 低功耗蓝牙侦听仪9通道,价格 1376

PART4

方案四

nRF Sniffer+wireshark

目前感觉性价比最高的一款,使用北欧的 nRF 系列芯片,52840、52832 都行,同时抓三个广播信道,还能指定设备抓包,原版价格大概在 160 左右,信驰达的才 60

01

环境配置

1、下载需要的插件,地址:

代码语言:javascript
复制
https://www.nordicsemi.com/Products/Development-tools/nRF-Sniffer-for-Bluetooth-LE/Download?lang=en#infotabs

2、在解压出来的目录里的 extcap 目录中运行如下命令安装 Python 依赖

代码语言:javascript
复制
pip3 install -r requirements.txt

3、打开 wireshrak,在 帮助 -> 关于wireshark -> 文件夹 找到Global Extcap path 里面的路径

把刚才的 extcap 文件夹里的内容拷贝过去

运行这条命令,若如下图所示这样就是成功了,Linux 下用 .sh

代码语言:javascript
复制
nrf_sniffer_ble.bat --extcap-interfaces

02

抓包使用教程

连接上设备之后在 wireshark 的捕获->刷新接口列表就可以看到 nRF Sniffer for Buletooth LE 这个接口

双击捕获就行了,另外,在 视图 -> 接口工具栏 中有个工具,可以指定捕获哪些地址的数据

还可以指定配对码,比如我抓的一个开发板的流量,设置错误的 passkey 显示的是 Encrypted

设置正确的就可以看到数据了

03

更新Sniffer固件

打开 nRF Connect for Desktop,找到这个 Programmer 打开

下拉选择设备

如果设备读不出来内存布局,可以摁一下一个小摁扭,注意是紧贴着板子的那个

选择要烧写的文件

找到下载的那个压缩包,在 hex 文件夹里面,选择

代码语言:javascript
复制
sniffer_nrf52840dongle_nrf52840_4.1.0.hex

点击 Write 烧进去就行了

PART5

总结

SUMMARY

nRF52840 是性价比最高的,既便宜又能同时抓取三个广播信道,还能自己刷写固件用作其他方面。Hollong 是个人感觉这几个方案中最好用的一款,在抓取非 Secure Connect 配对流量的时候它抓到的流量包能够用 crackle 解密,但 nRF52840 抓到的解密不了,可能是 nRF52840 抓的少了什么数据,暂时还没有认真检查。

本文发表于1024安全团队,欢迎各位师傅关注

1024安全团队是由来自网安企业、车企与高校的网络安全爱好者组建的团队,希望通过此平台更好的进行前沿的技术交流与分享,现研究方向包含但不限于车联网安全、物联网安全、硬件安全、无线电安全等,我们正在招募新的成员,期待更多志同道合的朋友加入我们,一起进行技术交流学习。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-09-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 陈冠男的游戏人生 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档