hacktricks/radio-hacking/pentesting-ble-bluetooth-low-energy.md

93 lines
6.3 KiB
Markdown
Raw Normal View History

{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>Support HackTricks</summary>
2022-04-28 16:01:33 +00:00
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}
2022-04-28 16:01:33 +00:00
2022-05-01 16:32:23 +00:00
2024-02-10 21:30:13 +00:00
# 소개
2022-02-28 09:13:08 +00:00
Bluetooth 4.0 사양 이후로 사용 가능한 BLE는 40개의 채널만 사용하며, 2400에서 2483.5 MHz 범위를 커버합니다. 반면, 전통적인 Bluetooth는 동일한 범위에서 79개의 채널을 사용합니다.
2022-02-28 09:13:08 +00:00
BLE 장치는 **광고 패킷**(**비콘**)을 전송하여 통신하며, 이 패킷은 BLE 장치의 존재를 주변의 다른 장치에 방송합니다. 이 비콘은 때때로 **데이터**를 **전송**하기도 합니다.
2022-02-28 09:13:08 +00:00
청취 장치, 즉 중앙 장치는 광고 장치에 특정하게 전송된 **SCAN 요청**으로 광고 패킷에 응답할 수 있습니다. 그 스캔에 대한 **응답**은 **광고** 패킷과 동일한 구조를 사용하며, 초기 광고 요청에 맞지 않았던 추가 정보(예: 전체 장치 이름)를 포함합니다.
2022-02-28 09:13:08 +00:00
2022-05-01 16:17:23 +00:00
![](<../.gitbook/assets/image (201) (2) (1) (1).png>)
2022-02-28 09:13:08 +00:00
프리앰블 바이트는 주파수를 동기화하며, 4바이트 접근 주소는 **연결 식별자**로, 여러 장치가 동일한 채널에서 연결을 시도하는 시나리오에서 사용됩니다. 다음으로, 프로토콜 데이터 단위(**PDU**)는 **광고 데이터**를 포함합니다. 여러 유형의 PDU가 있으며, 가장 일반적으로 사용되는 것은 ADV\_NONCONN\_IND와 ADV\_IND입니다. 장치는 **연결을 수락하지 않는** 경우 **ADV\_NONCONN\_IND** PDU 유형을 사용하여 광고 패킷에서만 데이터를 전송합니다. 장치는 **연결을 허용하는** 경우 **ADV\_IND**를 사용하며, **연결**이 **설립**되면 광고 패킷 전송을 중단합니다.
2022-02-28 09:13:08 +00:00
2022-05-01 16:32:23 +00:00
## GATT
2022-02-28 09:13:08 +00:00
**일반 속성 프로파일**(GATT)은 **장치가 데이터를 형식화하고 전송하는 방법**을 정의합니다. BLE 장치의 공격 표면을 분석할 때, GATT(또는 GATTs)에 주의를 집중하는 경우가 많습니다. 이는 **장치 기능이 트리거되는 방법**과 데이터가 저장, 그룹화 및 수정되는 방법이기 때문입니다. GATT는 장치의 특성, 설명자 및 서비스를 16비트 또는 32비트 값으로 표 형식으로 나열합니다. **특성**은 중앙 장치와 주변 장치 간에 **전송되는** **데이터** 값입니다. 이러한 특성은 **추가 정보를 제공하는** **설명자**를 가질 수 있습니다. **특성**은 특정 작업을 수행하는 것과 관련이 있는 경우 **서비스**로 **그룹화**되는 경우가 많습니다.
2022-02-28 09:13:08 +00:00
2024-02-10 21:30:13 +00:00
# 열거
2022-02-28 09:13:08 +00:00
```bash
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
```
2022-05-01 16:32:23 +00:00
## GATTool
2022-02-28 09:13:08 +00:00
**GATTool**는 다른 장치와 **연결**을 **설정**하고, 해당 장치의 **특성**을 나열하며, 속성을 읽고 쓸 수 있게 해줍니다.\
GATTTool은 `-I` 옵션으로 대화형 셸을 시작할 수 있습니다:
2022-02-28 09:13:08 +00:00
```bash
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
2024-02-10 21:30:13 +00:00
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
2022-02-28 09:13:08 +00:00
[...]
# 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
```
## 베터캡
2022-02-28 09:13:08 +00:00
```bash
# 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
```
{% hint style="success" %}
AWS 해킹 배우기 및 연습하기:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>HackTricks 지원하기</summary>
2022-04-28 16:01:33 +00:00
* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
* **💬 [**디스코드 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}