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

80 lines
6.2 KiB
Markdown
Raw Normal View History

2023-06-06 18:56:34 +00:00
# Introdução
2022-05-01 16:32:23 +00:00
2023-06-06 18:56:34 +00:00
Disponível desde a especificação Bluetooth 4.0, o BLE usa apenas 40 canais, cobrindo a faixa de 2400 a 2483,5 MHz. Em contraste, o Bluetooth tradicional usa 79 canais na mesma faixa.
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
Os dispositivos BLE se comunicam enviando **pacotes de publicidade** (**beacons**), esses pacotes transmitem a existência do dispositivo BLE para outros dispositivos próximos. Esses beacons às vezes **enviam dados** também.
2022-05-01 16:32:23 +00:00
2023-06-06 18:56:34 +00:00
O dispositivo receptor, também chamado de dispositivo central, pode responder a um pacote de publicidade com uma **solicitação de varredura** (**SCAN request**) enviada especificamente para o dispositivo anunciante. A **resposta** a essa varredura usa a mesma estrutura que o **pacote de publicidade** com informações adicionais que não puderam ser incluídas na solicitação inicial de publicidade, como o nome completo do dispositivo.
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
2023-06-06 18:56:34 +00:00
O byte de preâmbulo sincroniza a frequência, enquanto o endereço de acesso de quatro bytes é um **identificador de conexão**, que é usado em cenários em que vários dispositivos estão tentando estabelecer conexões nos mesmos canais. Em seguida, a Unidade de Dados do Protocolo (**PDU**) contém os **dados de publicidade**. Existem vários tipos de PDU; os mais comumente usados são ADV\_NONCONN\_IND e ADV\_IND. Os dispositivos usam o tipo de PDU **ADV\_NONCONN\_IND** se eles **não aceitam conexões**, transmitindo dados apenas no pacote de publicidade. Os dispositivos usam **ADV\_IND** se eles **permitem conexões** e **param de enviar pacotes de publicidade** assim que uma **conexão** é **estabelecida**.
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
2023-06-06 18:56:34 +00:00
O **Perfil Genérico de Atributos** (GATT) define como o **dispositivo deve formatar e transferir dados**. Ao analisar a superfície de ataque de um dispositivo BLE, você geralmente concentra sua atenção no GATT (ou GATTs), porque é assim que a **funcionalidade do dispositivo é acionada** e como os dados são armazenados, agrupados e modificados. O GATT lista as características, descritores e serviços de um dispositivo em uma tabela como valores de 16 ou 32 bits. Uma **característica** é um valor de **dados** **enviado** entre o dispositivo central e o periférico. Essas características podem ter **descritores** que **fornecem informações adicionais sobre elas**. **Características** são frequentemente **agrupadas** em **serviços** se estiverem relacionadas à realização de uma ação específica.
2022-02-28 09:13:08 +00:00
2023-06-06 18:56:34 +00:00
# Enumeração
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
2023-06-06 18:56:34 +00:00
**GATTool** permite **estabelecer** uma **conexão** com outro dispositivo, listar as **características** desse dispositivo e ler e escrever seus atributos.\
O GATTTool pode iniciar um shell interativo com a opção `-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
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
```
2022-05-01 16:32:23 +00:00
## Bettercap
2022-02-28 09:13:08 +00:00
2023-06-06 18:56:34 +00:00
Bettercap é um framework de segurança de rede que permite a realização de testes de penetração em redes sem fio. Ele suporta a captura e decodificação de pacotes BLE (Bluetooth Low Energy) e pode ser usado para realizar ataques de spoofing, sniffing e injeção de pacotes em dispositivos BLE. O Bettercap também possui recursos para interceptar e modificar o tráfego de rede, bem como para realizar ataques de phishing e MITM (Man-in-the-Middle).
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
```
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
- Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
- Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
- Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
- **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
- **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
2022-04-28 16:01:33 +00:00
</details>