hacktricks/radio-hacking/pentesting-ble-bluetooth-low-energy.md
2024-02-10 21:30:13 +00:00

147 lines
8.5 KiB
Markdown

<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요<strong>!</strong></summary>
HackTricks를 지원하는 다른 방법:
* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요.
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요. 독점적인 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션입니다.
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**를** **팔로우**하세요.
* **Hacking 트릭을 공유하려면** [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 저장소에 PR을 제출하세요.
</details>
# 소개
Bluetooth 4.0 사양부터 사용 가능한 BLE는 2400에서 2483.5 MHz 범위를 커버하는 40개의 채널만 사용합니다. 이와는 달리 전통적인 Bluetooth는 동일한 범위에서 79개의 채널을 사용합니다.
BLE 장치는 **광고 패킷**(**비콘**)을 보내어 주변 장치에 BLE 장치의 존재를 알립니다. 이 비콘은 때때로 **데이터를 전송**하기도 합니다.
청취 장치, 즉 중앙 장치는 광고 패킷에 대한 **SCAN 요청**을 특정 광고 장치에게 보낼 수 있습니다. 그 스캔에 대한 **응답**은 초기 광고 요청에 맞지 않는 추가 정보를 포함하는 동일한 구조를 사용합니다. 예를 들어 전체 장치 이름과 같은 정보입니다.
![](<../.gitbook/assets/image (201) (2) (1) (1).png>)
전조 바이트는 주파수를 동기화하고, 4바이트 접근 주소는 동일한 채널에서 연결을 설정하려는 여러 장치가 있는 경우에 사용되는 **연결 식별자**입니다. 다음으로, 프로토콜 데이터 유닛(**PDU**)에는 **광고 데이터**가 포함됩니다. PDU에는 여러 유형이 있으며, 가장 일반적으로 사용되는 것은 ADV\_NONCONN\_IND와 ADV\_IND입니다. 장치는 **연결을 허용하지 않는 경우**에는 **ADV\_NONCONN\_IND** PDU 유형을 사용하여 광고 패킷에서만 데이터를 전송합니다. 장치는 **연결을 허용하고 연결이 설정된 후에는 광고 패킷을 전송하지 않습니다**.
## GATT
**일반 속성 프로파일**(GATT)은 **장치가 데이터를 형식화하고 전송하는 방법**을 정의합니다. BLE 장치의 공격 표면을 분석할 때, 주로 GATT(또는 GATTs)에 집중하여 주목합니다. 왜냐하면 이것이 **장치 기능이 트리거되는 방법**이며 데이터가 저장되고 그룹화되고 수정되는 방법이기 때문입니다. GATT는 장치의 특성, 설명자 및 서비스를 16비트 또는 32비트 값으로 나열하는 테이블로 구성됩니다. **특성**은 중앙 장치와 주변 장치 사이에 **전송되는 데이터 값**입니다. 이러한 특성은 **추가 정보를 제공하는 설명자**를 가질 수 있습니다. **특성**은 종종 특정 작업을 수행하는 데 관련된 경우 **서비스**에 **그룹화**됩니다.
# 열거
```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
```
## GATTool
**GATTool**은 다른 장치와 **연결**을 **설정**하고, 해당 장치의 **특성**을 나열하며, 속성을 읽고 쓸 수 있습니다.\
GATTTool은 `-I` 옵션을 사용하여 대화형 셸을 실행할 수 있습니다.
```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
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
Bettercap은 강력한 네트워크 스니핑 및 중간자 공격 도구입니다. 이 도구를 사용하여 Bluetooth Low Energy (BLE) 장치를 대상으로 펜테스팅을 수행할 수 있습니다.
### BLE 펜테스팅
BLE 펜테스팅을 시작하기 전에, Bettercap을 설치하고 실행해야 합니다. Bettercap은 다양한 운영 체제에서 사용할 수 있으며, 설치 방법은 해당 운영 체제에 따라 다릅니다.
#### Bettercap 설치
##### Kali Linux에서 Bettercap 설치
Kali Linux에서 Bettercap을 설치하려면 다음 명령을 사용합니다:
```bash
sudo apt-get update
sudo apt-get install bettercap
```
##### macOS에서 Bettercap 설치
macOS에서 Bettercap을 설치하려면 Homebrew를 사용합니다. 다음 명령을 사용하여 Homebrew를 설치한 후 Bettercap을 설치합니다:
```bash
brew install bettercap
```
##### Windows에서 Bettercap 설치
Windows에서 Bettercap을 설치하려면 다음 단계를 따릅니다:
1. [WinPcap](https://www.winpcap.org/install/default.htm)을 다운로드하고 설치합니다.
2. [Bettercap](https://github.com/bettercap/bettercap/releases)의 최신 릴리스를 다운로드합니다.
3. 압축을 해제한 후 `bettercap.exe`를 실행합니다.
#### Bettercap 사용
Bettercap을 설치한 후 다음 명령을 사용하여 BLE 펜테스팅을 시작할 수 있습니다:
```bash
sudo bettercap -X
```
위 명령은 Bettercap을 실행하고 BLE 펜테스팅을 위한 인터페이스를 활성화합니다.
#### BLE 펜테스팅 명령어
Bettercap을 사용하여 다양한 BLE 펜테스팅 명령을 실행할 수 있습니다. 몇 가지 유용한 명령어는 다음과 같습니다:
- `ble.recon on` : BLE 장치 스캔 시작
- `ble.recon off` : BLE 장치 스캔 중지
- `ble.enum` : 스캔된 BLE 장치 열거
- `ble.show <MAC 주소>` : 특정 BLE 장치에 대한 세부 정보 표시
- `ble.sniff on` : BLE 패킷 스니핑 시작
- `ble.sniff off` : BLE 패킷 스니핑 중지
- `ble.replay <패킷 파일>` : BLE 패킷 재생
이러한 명령어를 사용하여 BLE 장치를 대상으로 펜테스팅을 수행할 수 있습니다. Bettercap은 다양한 기능과 옵션을 제공하므로, 자세한 내용은 공식 문서를 참조하시기 바랍니다.
```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
```
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요<strong>!</strong></summary>
HackTricks를 지원하는 다른 방법:
* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요.
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요. 독점적인 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션입니다.
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)를 **팔로우**하세요.
* **Hacking 트릭을 공유하려면** [**HackTricks**](https://github.com/carlospolop/hacktricks)와 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 저장소에 PR을 제출하세요.
</details>