6.4 KiB
Pentesting BLE - Bluetooth Low Energy
Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras maneiras de apoiar o HackTricks:
- Se você quiser ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF Verifique os PLANOS DE ASSINATURA!
- Obtenha o swag oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-nos no Twitter 🐦 @carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para os HackTricks e HackTricks Cloud repositórios do github.
Introdução
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 nessa mesma faixa.
Os dispositivos BLE se comunicam enviando pacotes de publicidade (beacons), esses pacotes transmitem a existência do dispositivo BLE para outros dispositivos próximos. Às vezes, esses beacons enviam dados também.
O dispositivo ouvinte, também chamado de dispositivo central, pode responder a um pacote de publicidade com uma solicitação de SCAN enviada especificamente ao dispositivo anunciante. A resposta a esse scan usa a mesma estrutura do pacote de publicidade com informações adicionais que não puderam ser incluídas na solicitação de publicidade inicial, como o nome completo do dispositivo.
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 onde 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 publicidade uma vez que uma conexão tenha sido estabelecida.
GATT
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ê frequentemente concentrará 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 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.
Enumeração
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 permite estabelecer uma conexão com outro dispositivo, listar as características desse dispositivo e ler e escrever seus atributos.
GATTTool pode iniciar um shell interativo com a opção -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
Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras maneiras de apoiar o HackTricks:
- Se você deseja ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF Confira os PLANOS DE ASSINATURA!
- Adquira o swag oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-nos no Twitter 🐦 @carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para os HackTricks e HackTricks Cloud repositórios do github.