Introduzione alla Reverse Engineering BLE per la ricerca sulla sicurezza

I dispositivi Bluetooth Low Energy (BLE) sono diventati una pietra angolare dell'Internet of Things (IoT), incorporati in tutto, dai monitor medici alle serrature intelligenti e ai sensori industriali. Il loro basso consumo energetico e la facilità di integrazione hanno fatto loro la soluzione di connettività di scelta per miliardi di dispositivi. Tuttavia, l'adozione diffusa di BLE crea anche una vasta superficie di attacco.

Comprendere BLE Architettura e Comunicazione

Per invertire efficacemente un dispositivo BLE, devi prima capire come funziona BLE a livello fondamentale. BLE è un sottoinsieme delle specifiche Bluetooth 4.0+, progettate per un consumo energetico estremamente basso. Utilizza uno stack di protocollo semplice che consiste in tre strati principali: il livello fisico (PHY), il livello di collegamento (LL), e il livello di applicazione (che include il profilo di accesso generico (GAP) e il profilo di attributi generico (GATT).

I livelli fisici e di collegamento

BLE divide la banda in 40 canali: 3 canali pubblicitari (37, 38, 39) utilizzati per la scoperta e la trasmissione dei dispositivi, e 37 canali di dati per la comunicazione orientata alla connessione. Il Link Layer gestisce la trasmissione dei pacchetti, l'istituzione della connessione e la crittografia. I pacchetti sono piccoli, fino a 255 byte, e includono un protocollo di registrazione dati.

GAP e i profili del GATT

I dati relativi all'accesso generico (GAP)] definiscono come i dispositivi pubblicizzano, scoprono e stabiliscono le connessioni. I dispositivi possono agire come emittenti (solo per l'annuncio), osservatori (scanning), periferiche (pubblicità e connessione), o centrali (scanning e initi Connection).

La comunicazione BLE può essere orientata alla connessione (dopo l'accoppiamento) o senza connessione tramite pacchetti pubblicitari. Gli ingegneri inversa devono analizzare entrambe le modalità per catturare il comportamento completo del protocollo.

Strumenti essenziali per BLE Reverse Engineering

Avere gli strumenti hardware e software giusti è fondamentale per l'ingegneria inversa di successo. Di seguito sono gli strumenti più utilizzati nella comunità di ricerca di sicurezza.

Hardware Sniffer

  • Ubertooth One:[]] Una piattaforma di sviluppo wireless open-source 2.4 GHz che può catturare il traffico BLE (e Classic Bluetooth). Funziona con Kismet]] o Wireshark]] integrazione e supporta sia canali pubblicitari che dati.
  • nRF52840 Dongle:[]] Un bordo di sviluppo dei semiconduttori nordici che può eseguire il firmware sniffing (ad esempio, dallo strumento NRF Sniffer).
  • Adafruit Bluefruit LE Sniffer:[] Un dongle USB basato sul nRF51822, compatibile con il software sniffer di Wireshark e Nordic.

Strumenti software

  • Wireshark:[] L'analizzatore del protocollo di rete de facto. Con un'interfaccia Bluetooth (ad esempio, Ubertooth o nRF Sniffer), Wireshark può decodificare i pacchetti BLE, mostrare la scoperta del servizio e persino filtrare dall'indirizzo BD.
  • nRF Connect per Mobile/Desktop:[] Sviluppato da Nordic Semiconductor, questa applicazione consente di eseguire la scansione di dispositivi BLE, connettersi a loro, e interagire con i servizi e le caratteristiche del GATT.
  • LightBlue (Punch Through):[] Un'altra potente app mobile (iOS/macOS) per l'esplorazione BLE. Supporta anche funzioni avanzate come la lettura/scrittura delle caratteristiche, la sottoscrizione alle notifiche e la visualizzazione dei dati dell'espulsione grezza.
  • Ghidra / IDA Pro:[ Per l'analisi del firmware, questi disassemblatori possono invertire il firmware del dispositivo BLE (spesso binari ARM Cortex-M). Ghidra è free e open-source, mentre IDA Pro è commerciale ma offre script avanzati.
  • Binwalk:[]] Uno strumento per l'estrazione di filesystem e l'analisi delle immagini del firmware.

Il processo di reverse engineering: una guida passo-passo

In seguito è riportato un processo che copre le fasi tipiche dalla ricognizione iniziale alla valorizzazione dei test, che può sovrapporre e iterare quando emerge una nuova informazione.

Passo 1: Riconnascimento e raccolta informazioni

Prima di catturare qualsiasi pacchetto, raccogliere quante più informazioni possibile sul dispositivo di destinazione: produttore, modello, FCC ID, documentazione disponibile, versione firmware e vulnerabilità note. Cercare lacerazioni, schede di dati e forum della comunità.

Fase 2: Intercettazione hardware (opzionale)

Se possibile, aprire il dispositivo e identificare il chip BLE (ad esempio, Nordic nRF52, TI CC2541). Verifica se la scheda ha un'interfaccia debug come SWD o JTAG che potrebbe consentire lo scarico del firmware. Utilizzare un analizzatore di logica o o oscilloscopio per osservare le linee UART o SPI tra il chip principale MCU e il chip BLE.

Passo 3: Catturare traffico BLE

Impostare il tuo sniffer (ad esempio Ubertooth One) vicino al dispositivo di destinazione. Utilizzare Wireshark con l'interfaccia Bluetooth selezionata. Iniziare una scansione per catturare i pacchetti pubblicitari. Quindi avviare una connessione tra il dispositivo e la sua applicazione ufficiale (o un centro personalizzato) per catturare il traffico dei canali di dati. Assicurarsi di registrare sia il processo di accoppiamento (se c'è) che il normale funzionamento.

Importante:[] Se il dispositivo crittografa la sua connessione, potrebbe essere necessario estrarre la chiave a lungo termine (LTK) da uno smartphone a due piazze (utilizzando strumenti come lo stack Bluetooth di Android o l'estrazione della portachiavi iOS) per decifrare il traffico in Wireshark.

Passo 4: Analisi dei pacchetti e Discovery del protocollo

In Wireshark, applicare un filtro per il display per Bluetooth (ad esempio, ]).Guarda i pacchetti pubblicitari: contengono il nome del dispositivo, i dati specifici del produttore, i UUID del servizio e talvolta il livello di potenza TX. Questi possono rivelare la funzionalità crittografata. Quindi analizza i pacchetti dei canali di dati: osserva quali caratteristiche del GATT sono letti / scritti e quali valori vengono scambiati.

Per dispositivi più complessi, è necessario scrivere uno script Python usando librerie come [bleak[] o pygatt[]] per imprecare sistematicamente tutti i servizi del GATT e cercare di innescare comportamenti diversi.

Passo 5: Estrazione e analisi firmware

Se si dispone di accesso fisico, cercare di scaricare il firmware del dispositivo tramite interfacce di debug (SWD/JTAG) utilizzando strumenti come OpenOCD], Segger J-Link, o ] Black Magic Probe

Fase 6: Identificazione della vulnerabilità

Con entrambe le acquisizioni di pacchetti e l'analisi del firmware, inizia a cercare vulnerabilità comuni:

  • Cerca di crittografia o chiave di crittografia di filetto:[ Il firmware può contenere chiavi statiche AES-128 o utilizzare la generazione di chiavi prevedibili.
  • Insicure Pairing Methods:[] Se il dispositivo utilizza l'accoppiamento "Just Works" (che omette la protezione MITM), è vulnerabile agli attacchi origlianti e man-in-the-middle.
  • Mancanza di autenticazione per le operazioni del GATT:[ Alcuni dispositivi permettono di scrivere a caratteristiche che cambiano le impostazioni critiche (ad esempio, sbloccare la porta, modificare la password di amministratore) senza richiedere un collegamento o un'autenticazione a coppia.
  • Buffer Overflows in Command Handlers:[] Inviare pacchetti malformati o dati oversize a una caratteristica può crash del dispositivo o avviare l'esecuzione del codice.
  • Attacchi di riproduzione:[] I comandi che non sono autenticati con un nonce o timestamp possono essere registrati e riprodotti per ripetere un'azione.
  • Impressioni di aggiornamento di file:[ Se gli aggiornamenti non sono firmati o crittografati, un attaccante può distribuire il firmware maligno.

Passo 7: Prova di esplosione e reportistica

Sviluppare un exploit di proof-of-concept, come la forgiatura di un pacchetto per attivare un'azione non voluta. Ad esempio, se si scopre che una caratteristica accetta un comando "unlock" di testo normale, è possibile scrivere uno script Python usando bleak[]]] per collegare e inviare quel valore senza autenticazione.

Vulnerabilità BLE comune e esempi reali-mondo

Per illustrare l'importanza dell'ingegneria inversa BLE, ecco alcune vulnerabilità notevoli scoperte nei dispositivi commerciali.

Autenticazione mancante sulle caratteristiche del GATT

Nel 2019, i ricercatori hanno dimostrato che una popolare serratura intelligente potrebbe essere sbloccata inviando una specifica sequenza byte ad una caratteristica, indipendentemente dal fatto che lo smartphone fosse stato abbinato. Questo tipo di difetto è solitamente scoperto esplorando l'albero del GATT con nRF Connect e cercando di scrivere alle caratteristiche.

Utilizzo di chiavi di crittografia statiche

Alcuni produttori hanno incorporato una chiave statica AES-128 nel firmware e lo utilizzano per tutte le connessioni. Una volta che la chiave viene estratta da un singolo dispositivo, un aggressore può decifrare tutto il traffico per ogni caso di quel prodotto.

Riprodurre le vulnerabilità nei dispositivi medici

Le pompe per l'insulina BLE e i monitor per il glucosio continuo sono stati indicati per essere suscettibili di rigiocare gli attacchi. Catturando i pacchetti pubblicitari o i pacchetti di dati che attivano un'azione (ad esempio, la consegna delle dosi), un aggressore potrebbe riprodurli ripetutamente.

Considerazioni giuridiche ed etiche

I ricercatori devono essere consapevoli di leggi come il Digital Millennium Copyright Act (DMCA) negli Stati Uniti e il Computer Misuse Act nel Regno Unito, che possono vietare la circonferenza di misure di protezione tecnologica o l'accesso non autorizzato ai sistemi.

Le linee guida IETF sulla divulgazione delle vulnerabilità[[] forniscono un buon quadro per il comportamento responsabile.

Tecniche avanzate di ingegneria inversa

Oltre a sniffing di pacchetti di base, i ricercatori avanzati impiegano tecniche per superare la crittografia e l'obfuscation.

Estrazione chiave tramite canali laterali

Se avete accesso fisico al dispositivo durante il funzionamento, si può essere in grado di estrarre l'LTK dallo stack Bluetooth dello smartphone. Su Android, lo stack Bluetooth memorizza le chiavi in un database che può essere accessibile con privilegi di root. Su iOS, l'estrazione di chiave è più difficile ma possibile tramite dispositivi jailbroken. In alternativa, utilizzare un attacco side-channel hardware (consumo di potenza o analisi di emissione elettromagnetica) per catturare la chiave di crittografia mentre il chip BLE sta eseguendo AES.

Emulazione firmware

Strumenti come Unicorn[] o QEMU[]] possono essere utilizzati per emulare il firmware estratto. Questo consente di testare il comportamento, debug dei gestori di comando e trovare vulnerabilità senza il dispositivo fisico. L'emulazione è particolarmente utile quando il firmware è fortemente offuscato o quando è necessario sfociare lo stack BLE.

Test di fusione e automatizzato

Strumenti come btlejack[]] o script personalizzati che inviano richieste del GATT malformato possono essere utilizzati per lo stress-test del dispositivo.

Difendere contro BLE Reverse Engineering

Per i produttori, capire come gli aggressori invertiscono i dispositivi BLE è essenziale per la costruzione di difese migliori.

  • Utilizza l'accoppiamento sicuro:[] implementare sempre le connessioni sicure (con Elliptic Curve Diffie-Hellman) per fornire la protezione MITM.
  • Crittografa tutte le caratteristiche del GATT:[] Mark caratteristiche come bisogno di crittografia autenticata per le operazioni di lettura / scrittura.
  • Implement Application-Layer Security:[ Anche se viene utilizzata la crittografia BLE, aggiungere un codice di autenticazione per messaggio (MAC) o una firma digitale per impedire la riproduzione e la falsificazione.
  • Disabilita le interfacce di Debug sull'hardware di produzione:[] Rimuovere i pad SWD/JTAG o soffiare e-fus per evitare lo scarico del firmware.
  • Firmware Integrity Verification:[] Firma tutti gli aggiornamenti del firmware e verifica la firma prima dell'applicazione.
  • Protezioni antirigioco:[] Includere un contatore monotonico o un timestamp in ogni comando e rifiutare vecchi messaggi.

Conclusioni

Grazie alla gestione dello stack di protocollo BLE, gli strumenti di cablaggio come Ubertooth e Ghidra, e a seguito di un processo di analisi strutturata, i ricercatori possono esporre le vulnerabilità che vanno dall'autenticazione mancante alle chiavi in codice rigido. La conoscenza acquisita non solo aiuta a proteggere i singoli prodotti, ma anche a migliorare l'estetico più ampio ecosistema BLE.