蓝牙抓包-Ubertooth
安装
环境lib库:
1 | apt-get install python-software-properties |
环境libbtbb:
1 | wget https://github.com/greatscottgadgets/libbtbb/archive/2015-09-R2.tar.gz -O libbtbb-2015-09-R2.tar.gz |
ubertooth:
1 | wget https://github.com/greatscottgadgets/ubertooth/releases/download/2015-09-R2/ubertooth-2015-09-R2.tar.xz -O ubertooth-2015-09-R2.tar.xz |
抓包
低功耗蓝牙抓包:
1 | sudo ubertooth-btle -f -c blue.pcap |
抓到的blue.pcap放入wireshark,数据格式无法识别
在wireshark的Edit->Preferences->protocols->DLT_USER中设置payload protocol为btle
就能正常解析低功耗蓝牙包了
另外ubertooth可以指定双方蓝牙mac地址,从而跟踪指定的建链,如果只有-f -c参数则只能自动跟踪第一次抓到的建链信息,另外在实际的蓝牙抓包中发现,ble在第一次建链过程中是不加密的,但断开重连后第二次就会发送密钥,学习蓝牙协议栈后发现这是一个椭圆曲线加密,蓝牙建链双方会发送自己的公钥,因为不清楚双方的私钥,所以断开重连后的信息就无法破解了。
hollong
hollong比起ubertooth更加简单,按官网上的说法在windows上先安装了驱动,然后安装软件,结果还是出现了驱动证书问题,无法正确识别驱动,只好在kali上使用,很顺利,linux下就不需要安装驱动了,直接运行官网上linux版本文件中的start.sh就行,只要确保三个蓝牙嗅探设备都接入就能点击start,这时候会出现设备列表,可以全抓也可以指定抓,比起ubertooth有了可视化界面,比较方便。
蓝牙协议栈学习
推荐ble协议栈从零开始 https://blog.csdn.net/XG_2013/article/details/80726807
在抓包的时候发现有些设备的蓝牙mac地址不停变化,就是看了《ble协议栈从零开始四》解惑的。
在抓包过程中发现蓝牙断开重连后无法继续跟踪报文,看了《ble协议栈从零开始八》才明白,在实际中发现蓝牙断开重连后才会发送ENC报文,其中包含了密钥,因为没有双方设备的私钥,即使抓到公钥也没用,之所以之前能抓到包并得到数据完全是因为第一次建链没有加密。
评论加载中