
Scacco matto a cellulari e periferiche Bluetooth
Ecco come i malintenzionati sfruttano i “difetti” di questo tipo di comuncazione per accedere a telefonini e altri dispositivi senza autorizzazione
(pagina 1 di 2)
Dalle stampanti ai telefonini, dal PC il palyer multimediali,
fino ad arrivare a fotocamere, navigatori GPS e
cuffie, ormai su tutti i dispositivi elettronici è presente
un’interfaccia Bluetooth che ci permette di farli comunicare
tra di loto per scambiare dati. Come ogni altro protocollo,
anche questo, è soggetto a problemi di sicurezza che possono
mettere in pericolo i nostri dati e la nostra privacy. Allora,
se è vero che la miglior difesa è l’attacco, scopriamo quali sono
le tecniche di hacking più diffuse che consentono ai male intenzionati
di sfruttare le vulnerabilità di questo complesso sistema
e quali sono le periferiche più a rischio per poter porre rimedio
ad un attacco prima che sia troppo tardi. Ma prima di andare
avanti, vediamo cos’è e come funziona questo particolare sistema
di comunicazione.
L’origine del nome
Una curiosità che in tanti non conoscono
Sembra sia stato inspirato dal Re Aroldo I che riuscì ad
unificare il regno di Danimarca. Il soprannome del Re era
Dente Blu e fu preso come riferimento metaforico dai creatori
del protocollo Bluetooth il cui obiettivo era unire tra
loro periferiche differenti mediante un sistema universale.
Anche il logo del Bluetooth non è casuale, si tratta infatti di
due simboli runici che indicano rispettivamente la H e la B,
ovvero le iniziali del nome del Re: Harald Blatand.
Bluetooth. Sei proprio
Sicuro di conoscerlo?
Si tratta di una specifica sviluppata
sul finire degli Anni ‘90 per consentire
lo scambio di dati tra periferiche
differenti utilizzando un canale senza
fili. Tramite Bluetooth è possibile
creare una WPAN (Wireless Personal Area Network) a corto
raggio, normalmente 10/20 metri, resa sicura dall’utilizzo della
crittografia. La possibilità di interconnettere periferiche molto
diverse tra loro, come cellulari, stampanti, computer, fotocamere,
etc, ha contribuito notevolmente a diffondere questo tipo
di interfaccia che ora è parte integrante di tutte le periferiche
che consentono la memorizzazione di dati digitali. Lo standard
Bluetooth è stato oggetto di numerose revisioni nel corso degli
anni, la prima versione fu ovviamente la 1.0 che però soffriva
di numerosi problemi, infatti era difficile, se non impossibile,
mettere in comunicazione dispositivi prodotti da società differenti.
Ben presto la versione 1.0 venne rimpiazzata dalla 1.0B
che risolveva i problemi di interoperabilità, ma comunque non
garantiva alcun grado di riservatezza sui dati inviati tra due
dispositivi.
Successivamente lo standard venne irrobustito e arricchito
di funzionalità: attualmente la versione 2.0 consente di
utilizzare la crittografia forte per la cifratura dei dati tramite
l’algoritmo SAFER+, è stata aumentata la banda che ora può
arrivare fino a 3Mbit, e sono state introdotte varie migliorie
per gestire la qualità del servizio e per migliorare l’efficienza
delle trasmissioni. Oltretutto, è stato possibile diminuire
ulteriormente
la potenza del segnale inviato, riducendo, quindi, il
consumo senza compromettere il range coperto dai vari dispositivi.
Tuttavia, nonostante lo standard sia maturo e collaudato,
molte implementazioni non sono molto curate, e questo come
spesso accade per altri protocolli, ha portato all’introduzione
di vulnerabilità più o meno gravi nei vari dispositivi. Nel corso
dell’articolo studieremo le falle attualmente conosciute e poi
proveremo ad attaccare una periferica Bluetooth. Fatta questa
necessaria premessa, passiamo all’analisi del primo tipo di attacco,
noto con il nome BlueSnarf.
Toothing. Di cosa si tratta?
Invio di messaggi anonimi ad altri cellulari
Il toothing ha fatto la sua prima apparizione nel 2004 come
bufala partita dal direttore del magazine di videogame
Edge. Tuttavia, a differenza di molte altre trovate di questo
tipo, il toothing prese vita rapidamente e oggi è possibile
trovare varie comunità, anche in Italia. Ma in cosa consiste?
Semplicemente nello scambio di messaggini tramite
Bluetooth, principalmente all’interno dello stesso ambiente
(PUB, discoteca, ristoranti...), che hanno come fine quello di
conoscere nuove persone. Come farlo? È davvero semplice:
basta creare in rubrica una voce nella quale il nome del
nuovo contatto deve contenere il messaggio da inviare, poi
si invia questo contatto tramite Bluetooth ad un altro cellulare
presente nelle vicinanze in attesa di una risposta.
Attacchi di tipo BlueSnarf
Questo tipo di attacco è apparso per la prima volta nel 2003 ed ha interessato
un notevole numero di produttori di telefoni cellulari, tra cui
Nokia ed Ericsson. Per portare a termine un attacco di tipo BlueSnarf
è necessario connettersi all’OBEX Push Profile (OPP), che è stato
sviluppato per scambiare agevolmente biglietti da visita elettronici tra
varie periferiche. Nella definizione dell’OPP non era prevista alcuna
autenticazione, e questo di per se non è il problema principale, perché
se l’implementazione è corretta non si incorre in alcuna vulnerabilità.
Purtroppo, sappiamo che la realtà e gli standard spesso differiscono tra
loro, e questo è il caso delle varie implementazioni di OPP ad opera dei
produttori. Il risultato di tali errori progettuali è la possibilità di richiedere
al dispositivo l’invio di file il cui nome è noto a priori (senza che il
proprietario si accorga di nulla), una situazione che si presenta spesso:
basti pensare al nome del file di rubrica che generalmente è sempre lo
stesso per ogni modello di cellulare.
BlueSnarf++, quello evoluto
Si tratta di un attacco in tutto e per tutto simile al BlueSnarf, la “sola”
differenza è che mentre con questo possiamo leggere i dati dal file system,
con BlueSnarf++ possiamo scriverli o, peggio, rimuoverli. Questo
attacco fu scoperto a distanza di poco tempo dal BlueSnarf e risulta
particolarmente pericoloso poiché non è necessaria alcuna autenticazione
sulla periferica remota.
BlueBug permette
il controllo remoto
Ancora una volta ci troviamo di fronte ad un bug che non è dovuto a
mancanze nella stesura dello standard, ma ad implementazioni errate.
Una periferica Bluetooth è sostanzialmente un emulatore wireless di
terminale RS232 (la comune porta seriale tanto per intenderci), e come
avviene per molte periferiche seriali, ad esempio con i vecchi modem,
è possibile comunicare tramite i comandi AT. Chi ha mai configurato
un demone PPP (Point to Point Protocoll, quello per le connessioni a
Internet) o ha provato a collegarsi al proprio modem sa di cosa stiamo
parlando: si tratta di una serie di comandi che permettono di pilotare
la periferica, nel caso di un cellulare è quindi possibile far partire una
chiamata, l’invio di un SMS o anche avviare una connessione a Internet.
La pericolosità del BlueBug è dunque notevole perché si può prendere
il controllo completo della periferica remota, ma fortunatamente
le implementazioni vulnerabili sono davvero pochissime.
BlueJacking: accesso
non consentito al cellulare
Prima che inizi lo scambio di risorse tra client Bluetooth è necessario
completare una fase di handshaking (pairing), una sorta di
identificazione
reciproca dove, tra le altre cose, un terminale Bluetooth, ad esempio
il telefonino, invia all’altro il proprio nome. Lo standard ha fissato
la lunghezza massima del nome delle periferiche a 248 caratteri che se
sfruttati attentamente possono consentire di ottenere accesso completo
al terminale remoto. Il procedimento è semplice: si imposta il nome
del proprio dispositivo con un messaggio che, si spera, verrà accettato
dall’utente. Poi si fa una richiesta di connessione al client remoto e
se
l’utente accetta, completando quindi la fase di pairing dei
dispositivi,
è possibile accedere in tutta comodità ai dati presenti sull’altro
client.
Questo è il classico esempio di attacco basato su Social Engineering, e
spesso risulta più efficace di molti exploit basati su difetti
tecnologici.
Attacco al Bluetooth
Dopo aver descritto i vari attacchi è giunto il momento di provarne
uno. In questo caso specifico proveremo infatti ad “iniettare” un
messaggio
audio all’interno di un paio di cuffie Bluetooth. Ovviamente,
è necessario disporre di una chiavetta Bluetooth o di un PC/notebook
con integrata un’interfaccia di questo tipo, e un paio di cuffie
Bluetooth,
magari con microfono integrato. Questo attacco è interessante
perché, in maniera analoga, è possibile ascoltare le conversazioni
captate da un microfono/auricolare Bluetooth. Ma passiamo all’azione.
Per prima cosa abbiamo bisogno delle Bluez Utils che dovrebbero
essere già presenti su tutte le distribuzioni desktop, in caso
contrario
dovremo effettuarne l’installazione tramite il packet manager della
nostra distribuzione dopo essere diventati root con su o sudo -s. In
particolare, per Debian GNU/Linux, Ubuntu e derivate il comando
è apt-get install bluez-utils, yum install bluez-utils per Fedora e
derivate e emerge bluez-utils per Gentoo. Fatto ciò, abbiamo ancora
bisogno di installare Carwhisperer, un programma sviluppato per
“iniettare” l’audio all’interno dei carkits Bluetooth, perciò
scarichiamolo
sul PC da http://trifinite.org/trifinite_stuff_carwhisperer.
html e compiliamolo:
tar -xzf carwhisperer-0.1.tar.gz
cd carwhisperer-0.1
make
sudo make install
Questo genere di attacco funziona perché di default il PIN di una periferica
Bluetooth (auricolari, GPS, microfoni, stampanti...) è composto
di soli 4 caratteri che nella maggior parte dei casi sono: 0000 oppure
1234. La prima cosa da fare è scegliere il messaggio audio che si
vuole inviare e convertirlo. A scopo dimostrativo, abbiamo utilizzato
il celebre pezzo del film Terminator 2, dove il Terminator, prima di
sparare al T-1000, dice: “Hasta la vista baby!”, ma potete usare quello
che ritenete più consono. Una volta trovato il file adatto, che dovrà
essere in formato .wav, bisogna convertirlo, quindi apriamo la console
ed eseguiamo quanto segue:
sox -t wav -r 44100 -c 2 -t raw -r 8000
-c 1 -s -w message.raw
Il file message.raw sarà quello che inietteremo nelle cuffie. Carwhisperer
include anche un piccolissimo database di carkits con alcuni PIN
predefiniti, è possibile quindi che le vostre cuffie, auricolari, etc siano
già supportati, in caso contrario niente paura, per prima cosa accendiamo
il dispositivo e scopriamone il MAC address eseguendo:
sudo hcitool scan
Scanning ...
00:15:9E:00:46:33 DM05-SINK
Abbiamo utilizzato hcitool, una delle tante utility presenti nella suite
BlueZ Utils che prova ad identificare i dispositivi Bluetooth che si
trovano nel range coperto dalla nostra chiavetta Bluetooth. Il risultato
sarà una lista di periferiche, se raggiungibili. A sinistra troveremo il
MAC address e a destra il rispettivo nome. Per verificare che il client
Bluetooth sia attivo, possiamo fare un ping:
sudo l2ping 00:15:9E:00:46:33
4 bytes from 00:15:9E:00:46:33 id 0 time 42.26ms
4 bytes from 00:15:9E:00:46:33 id 1 time 47.40ms
2 sent, 2 received, 0% loss
Se il client risponde possiamo passare alla fase successiva, ovvero l’inserimento del PIN di default nello script /usr/bin/cw_pin.pl di Carwshisperer, quindi apriamolo
sudo vi /usr/bin/cw_pin.pl
Ed inseriamo i primi 3 byte del MAC address nello switch dei PIN:
SWITCH: for ($bdaddr) {
/00:15:9E/ && do { $pin=”8888”; last;}; #
Il pin del nostro dispositivo
/00:02:EE/ && do { $pin=”5475”; last;}; # Nokia
Se, invece, il PIN del vostro dispositivo è 0000 allora non ci sarà bisogno
di aggiungere alcuna riga perché verrà provato automaticamente
dal programma. A questo punto, siamo pronti a per iniettare l’audio e
non solo, quindi, da console eseguiamo il comando seguente:
sudo carwhisperer 0 message.raw audio.raw
00:15:9E:00:46:33 1
Nel terminale, se tutto va bene, vedremo qualcosa di simile a quanto
visibile nella prima immagine sottostante. Se il collegamento avviene con successo sentiremo
il nostro messaggio nelle cuffie. Ma le buone notizie non finiscono
qui: vi siete chiesti cos’è il file audio.raw? Quel file contiene
l’audio intercettato dalla periferica Bluetooth, significa che se
invece
di utilizzare un paio di cuffie stiamo utilizzando un headset o un
auricolare, allora nel file audio.raw troveremo l’audio catturato dal
microfono. Non male se consideriamo che molti auricolari per cellulari
supportano anche il pairing multiplo, che in parole povere significa che è possibile, senza grandi sforzi come abbiamo appena
visto,ascoltare la telefonata di qualcuno che sta utilizzando un
auricolare
Bluetooth. Ma come facciamo a scoprire se un dispositivo supporta
il pairing multiplo? In linea di massima anche questo è abbastanza
semplice: per prima cosa proviamo a pingare l’auricolare per vedere
se risponde anche dopo aver fatto il pairing con il telefono cellulare,
in caso positivo possiamo provare a stabilire una connessione tramite
rfcomm (ancora BlueZ Utils):
rfcomm connect 1 00:15:9E:00:46:33 1
Se ci viene richiesto il PIN come visibile nella seconda immagine di seguito presente, allora la periferica
supporta il pairing multiplo e quindi saremo in grado di ascoltare
ogni telefonata per intero. In caso contrario soltanto un dispositivo
potrà associarsi all’auricolare e, quindi, a meno di non avere uno sniffer
hardware (o meglio, il relativo software dal momento che uno
sniffer hardware è spesso una normale chiavetta Bluetooth programmabile)
non saremo in grado di intercettare il traffico.
 |
Carwshisperer si è connesso alla periferica e sta iniettando l’audio |
 |
La schermata per la richiesta del PIN |
 |
RedFang ha identificato il dispositivo Bluetooth nascosto |
In cosa consiste il pairing
L’autenticazione dei dispositivi Bluetooth
Il pairing è la fase più delicata di una connessione tra
dispositivi Bluetooth. In pratica i due client, ad esempio
due PC o due telefonini, un PC e un telefonino e
così via, generano una chiave segreta, tramite il PIN
inserito dagli utenti, che utilizzeranno durante tutta
la sessione per lo scambio dei dati, ed è anche il solo
modo per mettere in comunicazione due dispositivi.
Esiste però un attacco, scoperto da Shaked e Wool, che
consente di ricostruire il PIN semplicemente ascoltando
il traffico al momento del pairing tra i dispositivi,
si tratta di un’eventualità remota allo stato attuale a
causa dei costi elevati di uno sniffer hardware e del
relativo software, ma comunque possibile e che quindi
va tenuta in considerazione.
Redfang. Attacco alle
periferiche non visibili
Tutti gli attacchi visti finora sono possibili soltanto quando un
dispositivo
è in modalità visibile, tuttavia, il Bluetooth consente di impostare
una periferica anche in modalità invisibile, ed in questo caso
non verrà identificata dal comando hcitool scan. Cosa è possibile
fare in queste situazioni? L’unica alternativa percorribile è quella di
effettuare la scansione di tutti i MAC address e fare una richiesta
read_remote_name() per ottenere il nome del dispositivo. Il problema
è che un MAC address è lungo 48bit che si traducono in 2^48
richieste da parte dello scanner, decisamente troppe. Sappiamo però
che i primi 3 byte sono gli stessi per ogni produttore, una delle
particolarità
dei MAC address è infatti proprio quella di essere univoci
per ogni periferica del mondo. Conoscendo gli slot assegnati ad ogni
produttore è possibile ottimizzare lo scan riducendo notevolmente i
tempi. Per fortuna, questo lavoro è svolto egregiamente da Redfang
(www.net-security.org/software.php?id=519), un piccolo programma
che consente di trovare un dispositivo Bluetooth anche se posto
in modalità invisibile. Vediamo come funziona. Scarichiamo il file
redfang.2.5.tar.gz e salviamolo in una directory temporanea. A questo
punto, scompattiamolo e compiliamolo:
tar -xzf redfang.2.5.tar.gz
cd redfang-2.5
make
All’interno di Redfang è già stata inclusa una piccola lista di ID, nel
caso non fosse presente il nostro device potremo identificarne il produttore
semplicemente greppando i primi tre byte del relativo MAC
address dal file oui.txt dopo averlo prelevato da http://standards.ieee.
org/regauth/oui/oui.txt:
bzcat oui.txt.bz2 | grep 00-18-8D
00-18-8D (hex) Nokia Danmark A/S
A questo punto, se vogliamo effettuare uno scan per un determinato produttore (Nokia in questo caso), non dobbiamo far altro che avviare Redfang in questo modo:
sudo ./fang -r 00188D000000-00188DFFFFFF
L’opzione -r specifica il range di MAC address su cui fare lo scan. I
tempi di attesa sono comunque lunghi, ma il risultato è garantito, se è
presente un dispositivo in zona.
mettiamoci al riparo
Un dispositivo nascosto non è invulnerabile agli attacchi, semplicemente
non risponde alle richieste di discovery, ma se viene fatta una
richiesta esplicita allora anche questo svela la sua presenza. Questo
comportamento è necessario perché se così non fosse, non sarebbe
possibile effettuare il pairing tra dispositivi attivi in modalità invisibile.
Mettersi al riparo dagli attacchi al sistema Bluetooth non è
semplicissimo vista la carenza di strumenti di protezione: il consiglio
è quello di mantenere il dispositivo spento fin quando è possibile, utilizzare
sempre firmware aggiornati e, se ciò non fosse fattibile ,consigliamo
almeno di utilizzarlo in modalità invisibile. Infine, per evitare
di essere attaccati da dispositivi sconosciuti tramite BlueJacking è
sufficiente rifiutare le richieste di connessione delle quali non conosciamo
la provenienza.
Cellulari vulnerabili
Alcuni modelli Nokia e Sony Ericsson
L’attacco più pericoloso è sicuramente il BlueSnarf assieme
al BlueSnarf++. Per fortuna i modelli di cellulari che sono
noti per essere vulnerabili non sono moltissimi, eccone
una breve lista: Ericsson T68, Sony Ericsson R520m, T68i,
T610/Z1010, Nokia 6310, 6310i, 7650, 8910 e 8910i. Se il vostro
cellulare è tra questi, tenete sempre spento il Bluetooth
quando non è strettamente necessario utilizzarlo, specie se
vi trovate in locali affollati.