L’acceso fisico ad un computer equivale all’accesso di root.
Sebbene questo sia il mantra che viene ripetuto da chi si occupa di sicurezza, c’è la presunzione che cellulari e tablet siano meno attaccabili di un normale computer sotto questo aspetto. Illusi.
I sistemi di estrazione dei dati dai cellulari sono relegati alle apparecchiature per l’uso forense, che costano (quelle belle) oltre diecimila euro, escluso l’abbonamento annuale per gli aggiornamenti.
Michael Ossmann e Kyle Osborn hanno dimostrato {video} come sia possibile con costi contenuti e con materiali facilmente reperibili accedere alla console di debug di Android di molti dispositivi, anche se la funzione di debug è disabilitata. Il metodo utilizzato è semplicissimo, una volta che si conosce come funzionano le cose.
I dispositivi moderni utilizzano la porta USB per scopi molteplici, per questa ragione è necessario frapporre un chip multiplexer tra la porta USB e la circuiteria del dispositivo in modo tale che i dati o l’energia vengano diretti verso il circuito adatto. Il multiplexer analizza il tipo di connessione in arrivo e segnala al dispositivo cosa è stato connesso alla porta USB. Questo permette ad Android di reagire in maniera opportuna: se è stato connesso un caricabatterie, viene passata la corrente al circuito di carica, se è stato connesso un computer viene attivato il software apposito, se è stato connesso l’impianto audio di un’automobile viene avviata la riproduzione dei brani musicali e così via.
I connettori miniUSB e microUSB hanno un pin in più rispetto ai normali quattro, chiamato ID. Secondo la documentazione questo pin doveva servire per selezionare il tipo di dispositivo USB che si stava connettendo: se è cortocircuitato con GND si sta connettendo un host USB (un computer), se non è connesso si sta connettendo uno slave (chiavetta, lettore DVD, stampante, eccetera).
I dispositivi Android Samsung (e probabilmente anche altri) utilizzano come multiplexer il chip Fairchild FSA9280A che è in grado di utilizzare il pin ID in maniera meno grossolana rispetto alle specifiche. Quando viene connesso qualcosa ad una porta governata dal FSA9280A, questo è in grado di leggere la resistenza tra il pin ID e GND e comportarsi di conseguenza come descritto nelle specifiche del chip (pagina 9).
Ossmann e Osborn hanno notato nella tabella la voce “UART cable”; ai vecchi lupi della telematica la sigla UART suonerà tutto fuorché nuova. Se il dispositivo Android supporta questa funzione del FSA9280A, dovrebbe essere possibile attivare un’interfaccia seriale attraverso il connettore USB del dispositivo stesso. In questo caso bisogna sottolineare che la porta USB del dispositivo Android non funziona con il protocollo USB, ma viene trasformata in seriale, è questa una delle funzioni del multiplexer.
Per verificare la teoria sono necessari:
- un connettore microUSB montato su una schedina ($3.95);
- un convertitore USB/seriale ($14.95);
- una resistenza da 150 kΩ;
- fili e saldatore.
Come si può vedere è materiale molto comune e facilmente reperibile, il risultato finale è quello che si vede nella foto sopra.
Quando si connette un dispositivo Android ad un circuito del genere, viene attivata sull’interfaccia UART il FIQ debugger. Nelle piattaforme ARM, FIQ è sinonimo di NMI delle piattaforme Intel; in sostanza si tratta di una consolle testuale di debug attivata da un interrupt ad altissima priorità.
Ciascun dispositivo Android si comporta in maniera diversa: alcuni permettono di aprire una shell con privilegi di root, altri non hanno questa feature abilitata, ma permettono comunque di vedere il log del kernel e di compiere altre funzioni che rivelano comunque delle informazioni.
Una veloce ricerca rivela che Ossmann e Osborn non sono stati i primi ad accorgersi delle funzionalità del FSA9280A come è testimoniato da questo forum polacco, da questo articolo o da questo articolo giapponese.
Per difendersi da attacchi di questo tipo, a parte non lasciare un Android incustodito è bene non connettere mai un dispositivo ad un caricabatteria sconosciuto, inclusi quelli presenti in aeroporto o nelle prese a muro degli alberghi. Trovandosi in albergo e avendo bisogno di caricare il telefono via USB, una valida alternativa potrebbe essere quella di utilizzare la porta USB del televisore. (via Hack a Day)
Lascia un commento