Pentesting BLE - Bluetooth Low Energy

htARTE (HackTricks AWS Red Team Expert)를 통해 제로부터 영웅까지 AWS 해킹 배우기 htARTE (HackTricks AWS Red Team Expert)!

HackTricks를 지원하는 다른 방법:

소개

Bluetooth 4.0 사양부터 사용 가능한 BLE은 2400에서 2483.5 MHz 범위를 커버하는 40개 채널만 사용합니다. 이에 반해 전통적인 블루투스는 해당 범위에서 79개 채널을 사용합니다.

BLE 장치는 광고 패킷(비콘)을 보내는 방식으로 통신하며, 이러한 패킷은 BLE 장치의 존재를 근처 장치에 브로드캐스트합니다. 이러한 비콘은 때로는 데이터를 전송하기도 합니다.

청취 장치인 중앙 장치는 광고 패킷에 SCAN 요청을 특별히 광고 장치로 보내 응답할 수 있습니다. 해당 스캔에 대한 응답은 초기 광고 요청에 맞지 않는 추가 정보를 포함하는 동일한 구조를 사용하며, 전체 장치 이름과 같은 정보가 포함될 수 있습니다.

프리앰블 바이트는 주파수를 동기화하고, 4바이트 액세스 주소는 연결 식별자로, 여러 장치가 동일한 채널에서 연결을 설정하려고 하는 시나리오에서 사용됩니다. 그 다음 프로토콜 데이터 유닛(PDU)에는 광고 데이터가 포함되어 있습니다. PDU에는 여러 유형이 있으며, 가장 일반적으로 사용되는 것은 ADV_NONCONN_IND 및 ADV_IND입니다. 장치는 ADV_NONCONN_IND PDU 유형을 사용하여 연결을 수락하지 않는 경우에만 데이터를 광고 패킷에서 전송합니다. 장치는 ADV_IND를 사용하여 연결을 허용하고 연결이 설정된 후 광고 패킷을 전송 중지합니다.

GATT

일반 속성 프로필(GATT)은 장치가 데이터를 형식화하고 전송하는 방법을 정의합니다. BLE 장치의 공격 표면을 분석할 때 GATT(또는 GATTs)에 주로 집중하게 되는데, 이는 장치 기능이 트리거되는 방법 및 데이터가 저장, 그룹화 및 수정되는 방법입니다. GATT는 장치의 특성, 설명자 및 서비스를 16비트 또는 32비트 값으로 나열한 표로 나타냅니다. 특성은 중앙 장치와 주변 장치 간에 전송되는 데이터 값입니다. 이러한 특성에는 그들에 대한 추가 정보를 제공하는 설명자가 있을 수 있습니다. 특성은 종종 특정 작업을 수행하는 데 관련이 있는 경우 서비스그룹화됩니다.

열거

hciconfig #Check config, check if UP or DOWN
# If DOWN try:
sudo modprobe -c bluetooth
sudo hciconfig hci0 down && sudo hciconfig hci0 up

# Spoof MAC
spooftooph -i hci0 -a 11:22:33:44:55:66

GATTool

GATTool는 다른 장치와 연결설정하고 해당 장치의 특성을 나열하며 속성을 읽고 쓸 수 있습니다. GATTTool은 -I 옵션을 사용하여 대화형 셸을 시작할 수 있습니다:

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

Bettercap

# Start listening for beacons
sudo bettercap --eval "ble.recon on"
# 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
제로부터 영웅이 될 때까지 AWS 해킹 배우기 htARTE (HackTricks AWS Red Team 전문가)!

다른 방법으로 HackTricks를 지원하는 방법:

Last updated