蓝牙工具

1.简介

应对工控以及车联网测试需求,研究蓝牙工具以及测试方法。

2.工具清单

  • hciconfig
  • hcitool
  • l2ping
  • sdptool
  • blueranger
  • bluetoothctl
  • gatttool
  • Bettercap
  • wireshark

2.1前期准备

  • 物理机kali(或者免驱USB蓝牙)
  • 测试目标蓝牙设备(测试经典蓝牙可用蓝牙耳机、手机等,测试BLE需要使用物联网设备如蓝牙插座、BLE车机等)

在kali中打开蓝牙服务

image-20231022134631198

2.2 hciconfig

hciconfig命令,用于展示本地蓝牙设备的详细信息,比如BD Address等。

1.使用hciconfig命令查看蓝牙是否正常识别,正常情况如下图所示:

image-20231022134509384

如果使用虚拟机kali配合免驱USB蓝牙,会发现多出hci1设备。

2.若蓝牙设备未启用,则需要进行启用

1
hciconfig hci0 up 

2.3 hcitool

hcitool命令,测试命令的合集,比如扫描周边的蓝牙设备

1.扫描周围开启发现模式的蓝牙设备

1
hcitool scan 

image-20231022134206231

2.如果scan过程中发现目标设备,可以使用使用如下命令进一步调查的设备

1
hcitool inq 

image-20231022134331617

2.3 l2ping

l2ping命令,L2CAP ping Logical Link Control and AdaptationProtocol,即逻辑链路控制和适配协议

使用l2ping可以对目标设备进行存活确认

image-20231022134425470

2.4 sdptool

sdptool命令,Bluetooth Service Discovery Protocol

image-20231022134849415

2.5 blueranger

强制连接目标设备

image-20231022141310012

image-20231022141352227

2.6 bluetoothctl

Bluetoothctl是用于控制蓝牙设备的交互式且易于使用的工具。它是在基于Linux的操作系统上管理蓝牙的主要实用程序。实质上是由bluez源码下的client目录的相关文件编译生成的可执行程序(命令)。bluetoothctl 主要是bluez官方提供的一个命令行交互的一个客户端,用于和bluetoothd的通信进行BLE广播包的设置、BLE相关配置、创建服务、特征等

查看controller

image-20231022152257808

查看controller的属性

image-20231022152353358

扫描周边设备

1
scan on

image-20231022152603937

设备配对

1
pair MAC

image-20231022152905210

2.7 gatttool

GATTool 允许与另一个设备建立连接,列出该设备的特性,并读取和写入其属性。 GATTTool 可以使用 -I 选项启动交互式 shell

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
gatttool -i hci0 -I
[ ][LE]> connect 24:62:AB:B1:A8:3E Attempting to connect to A4:CF:12:6C:B3:76 Connection successful
[A4:CF:12:6C:B3:76][LE]> characteristics
handle: 0x0002, char properties: 0x20, char value handle:
0x0003, uuid: 00002a05-0000-1000-8000-00805f9b34fb
handle: 0x0015, char properties: 0x02, char value handle:
0x0016, uuid: 00002a00-0000-1000-8000-00805f9b34fb
[...]

# Write data
gatttool -i <Bluetooth adapter interface> -b <MAC address of device> --char-write-req <characteristic handle> -n <value>
gatttool -b a4:cf:12:6c:b3:76 --char-write-req -a 0x002e -n $(echo -n "04dc54d9053b4307680a"|xxd -ps)

# Read data
gatttool -i <Bluetooth adapter interface> -b <MAC address of device> --char-read -a 0x16

# Read connecting with an authenticated encrypted connection
gatttool --sec-level=high -b a4:cf:12:6c:b3:76 --char-read -a 0x002c

2.8 Bettercap

Bettercap是Ettercap的继任者,具有用于许多不同类型的无线电和网络技术的攻击模块。

1
2
3
4
5
# Start listening for beacons
# 启动BLE嗅探
sudo bettercap --eval "ble.recon on"

# 也可以进入bettercap交互模式键入"ble.recon on"启动BLE嗅探

如下图所示可以看到嗅探到大量蓝牙设备

image-20231022232501595

1
2
3
4
5
6
7
8
9


# Wait some time
>> ble.show # Show discovered devices
>> ble.enum <mac addr> # This will show the service, characteristics and properties supported

# Write data in a characteristic
>> ble.write <MAC ADDR> <UUID> <HEX DATA>
>> ble.write <mac address of device> ff06 68656c6c6f # Write "hello" in ff06
1
2
# 查看嗅探到的蓝牙设备
ble.show

image-20231022232738643

1
2
# 枚举有关该设备的详细信息
ble.enum MAC地址

image-20231022233011754

1
2
3
# 写入数据
ble.write MAC地址 <UUID> <HEX DATA>

image-20231023001345230

途中方框中存在写入权限。

尝试写入hello2f7cabce808d411f9a0cbb92ba96c102但尝试写入失败。

image-20231023001655441

image-20231023001548387

虽然我们无法写入此蓝牙设备,但许多设备都可以。如果我们了解到设备正在运行一个服务,其漏洞可以通过写入值来利用,我们可以使用 Bettercap 开始寻找进一步利用附近设备的方法。

2.9 wireshark

通过手机抓取蓝牙包并分析

设置-我的设备-全部参数-状态信息

image-20231022215844632

红米手机log日志路径为

/data/misc/bluetooth/logs

通过wireshark读取蓝牙版本信息

搜索字符串Read Remote Version Information Complete

image-20231022230543710

3.蓝牙存在的安全威胁

3.1基于蓝牙版本的威胁

1、蓝牙1.2之前的版本: 基于单元密钥的链接密钥都是静态的且在每个配对中被重复使用。一旦设备的单元密钥被泄露(即当第一次配对的时候),任何其他拥有该密钥的设备能够欺骗该设备或任何其他已经与该设备配对的设备。

2、蓝牙2.1+ EDR之前的版本:允许使用短PIN码。这些PIN码长度较短,容易被攻击者猜到。加密密钥流是依赖于链路密钥、EN_RAND、主设备BD_ADDR和时钟。在一个特定加密的连接中,只有主设备时钟会发生改变。如果连接持续时间超过23.3小时,时钟值将开始重复,从而产生一个与之前连接中使用的相同的密钥流。重复的密钥流是一个严重的加密漏洞,这将让攻击者确定原始明文。

3、蓝牙2.1到3.0版本: 安全模式4的设备(即v2.1或更高版本的)与不支持安全模式4(即v2.0及更早版本)的设备连接时,其被允许回退到任何其他安全模式。例如,可能会使用不提供任何安全性的安全模式1,使得版本2.1到3.0更容易受到攻击。此外,版本2.1到3.0版本中使用了SSP静态密钥,这大大增加了设备遭受中间人攻击的可能性。

4、蓝牙4.0之前的版本:支持无限数量的身份请求,攻击者能够获得许多登录申请的返回的信息。这使他们能够轻易的破解链接密钥。这是因为蓝牙BR/EDR加密所用的E0流密码算法是相对较弱的。

5、所有版本: 如果没有通过访问控制来安全地存储和保护链接密钥,密钥可能被攻击者读取或修改。加密密钥的长度太短;没有用户身份验证;可被发现/可连接的设备都会容易受到攻击。

3.2基于攻击类型的威胁

分类 说明 威胁与工具集
伪装 保护攻击者的身份 HCIConfig(隐藏设备名称)
HCIConfig/BTclass(隐藏设备类别)
BD_addr(隐藏设备地址)
Spooftooph(进行设备克隆)
监视 进行信息采集 HCITool(发现周边设备)
Sdptool(服务层设备扫描)
Redfang(发现隐藏设备)
Blueprinter(远程采集蓝牙设备指纹)
BT_audit(蓝牙审计)
War-Nibbling(不安全蓝牙设备扫描)
Bluefish(搜索蓝牙设备)
Bluescanner(搜索蓝牙设备)
增强范围 信号放大 Bluetooone(图2)
嗅探 蓝牙通信抓包 BlueSniff
HCIDump(HCI数据分析)
Ubertooth
中间人攻击 伪造身份信息管道端的数据篡改与抓取。 Bthidproxy(蓝牙中间人分析工具)
Snarf攻击 未认证的攻击 Bluesnarfer
Blooover
BTCrack(Pin码破解工具)
Carwhisperer(无屏幕蓝牙设备测试工具)
Helomoto
Bluebugger(蓝牙漏洞测试)
HID attack(人机接口设备攻击)
Btaptap(蓝牙键盘嗅探)
拒绝服务 进行拒绝服务攻击 BlueSmack(L2CAP协议攻击)
BlueJacking(匿名名片发送)
Smurf(ICMP请求攻击)
信号攻击
PingBlender(Syn洪水攻击)
电池耗尽攻击
漏洞攻击 通过代码逻辑及安全漏洞进行入侵 Bluebag (图3)(背包客攻击蓝牙)
Caribe病毒
Blueborne 漏洞
CVE-2020-0022
模糊测试 通过注入随机数据来触发安全bug BSS(Bluetooth Stack Smasher 蓝牙协议栈模糊测试)
HCIDUMP(HCI数据分析)
L2cap 模糊测试

参考链接

apachecn-kali-zh/docs/kali-linux-wless-pentest-cb/7.md at master · apachecn/apachecn-kali-zh (github.com)

Bluez测试命令汇总 - 知乎 (zhihu.com)

kali中嗅探蓝牙设备-腾讯云开发者社区-腾讯云 (tencent.com)

蓝牙的安全与威胁(上) - FreeBuf网络安全行业门户

蓝牙的安全与威胁(中) - FreeBuf网络安全行业门户

蓝牙的安全与威胁(下) - FreeBuf网络安全行业门户

11种常见的蓝牙攻击方法简析 | 信息化观察网 - 引领行业变革 (infoobs.com)

渗透测试 BLE - 低功耗蓝牙 - 黑客技巧 (hacktricks.xyz)

Bluetooth Low Energy recon using Bettercap | by MKS | Medium

获取你耳机的蓝牙版本 - 知乎 (zhihu.com)

How to Target Bluetooth Devices with Bettercap « Null Byte :: WonderHowTo