ATTENZIONE: La vulnerabilità è stata risolta, non è più possibile utilizzare la procedura illustrata!
Continuano i problemi del famoso software di messaggistica istantanea WhatsApp, risolto il problema della memorizzazione in chiaro delle conversazioni un ricercatore Tedesco Sam Granger ha individuato una nuova vulnerabilità ancor più preoccupante.
L’autenticazione degli utenti durante l’invio o la ricezione dei messaggi è violabile, ciò permette ad 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.
[AGGIORNATO 18/12/2012]
Generazione della Password per i dispositivi Android:
$imei = “112222223333334”; // IMEI di esempio
$androidWhatsAppPassword = md5(strrev($imei)); // calcolo della Password (inversione dell’IMEI e generazione del MD5)
Generazione della Password per i dispositivi iOS a cura di Ezio Amodio:
$wlanMAC = “AA:BB:CC:DD:EE:FF”; // WLAN MAC address di esempio
$iphoneWhatsAppPassword = md5($wlanMAC$wlanMAC); // calcolo della Password
Generazione della Password per i dispositivi BlackBerry:
$imei = “112222223333334”; // IMEI di esempio
$BBWhatsAppPassword = md5(strrev($imei)); // calcolo della Password (inversione dell’IMEI e generazione del MD5)
Per i dispositivi BB non è possibile avviare una conversazione interattiva, il servizio BIS vi scollegherà una volta inviato il primo messaggio rendendo impossibile la lettura della risposta.
Generazione della Password per i dispositivi Windows Phone a cura di Ezio Amodio:
$DeviceUniqueID = “112222223333334” // ID del Dispositivo
$WPWhatsAppPassword = $DeviceUniqueID // calcolo della Password
Per la lettura del vostro ID Dispositivo potete affidarvi all’applicazione gratuita Device Unique Id disponibile nel Market Place.
L’username è ancor più semplicemente il vostro numero di cellulare anteposto dal prefisso internazionale senza il simbolo + o il doppio zero (Es. 393481234567).
Siete utilizzatori di WhatsApp? Bene provate voi stessi ad autentificarvi, vi basterà aprire il vostro Browser e digitare il seguente URL
https://r.whatsapp.net/v1/exist.php?cc=$countrycode&in=$phonenumber&udid=$password
Dovrete sostituire i campi $countrycode, $phonenumber e $password con i relativi dati ovvero il vostro codice paese (per l’Italia è il 39) senza il simbolo + o il doppio zero, il numero di cellulare e la password che avete attentamente calcolato secondo le specifiche precedentemente illustrate.
Se tutto andrà per il meglio il vostro Browser vi riporterà la seguente stringa XML:
<exist>
<response status=”ok” result=”393481234567″/>
</exist>
Notate immediatamente che l’esito dello stato è OK il che conferma che avete ottenuto l’accesso al vostro account, se invece la password generata o l’utente non è riconosciuto dal servizio di messaggistica apparirà la dicitura FAIL.
Con la stessa identica metodologia, invio di variabili GET su PHP, possiamo inviare messaggi ad utenti WhatsApp o verificare se ci sono messaggi non letti. Per automatizzare la procedura ci viene in soccorso uno script denominato WhatsAPI e disponibile sul circuito GitHub.
WhatsAPI ci permette quindi di testare la sicurezza di WhatsApp rendendo possibile l’invio di messaggi e la relativa ricezione attraverso il nostro PC anziché sullo Smartphone, lo script è di estremo utilizzo e richiede l’installazione di PHP sulla nostra distribuzione.
Nell’esempio di seguito sfrutteremo la distribuzione BackBox basata su Ubuntu Linux, vi consigliamo di usare una distribuzione Unix Based anche se PHP è disponibile anche per Windows.
Terminato il download di WhatsAPI estraiamo il contenuto e dirigiamoci nella cartella “test” in essa troveremo un unico file denominato “whatsapp.php” apriamolo attraverso l’editor di testo che più preferiamo e dirigiamoci alla 16° riga dove troveremo tre parametri da editare, nello specifico:
$nickname = “WhatsAPI Test”;
$sender = “393481234567”; // Mobile number with country code (but without + or 00)
$imei = “35xxxxxxxxxxxxx”; // MAC Address for iOS IMEI for other platform (Android/etc)
Come è facile intuire nel campo Nickname specifichiamo il soprannome da utilizzare durante l’invio dei messaggi, nel campo Sender specifichiamo il nostro numero di cellulare comprensivo del codice paese senza il simbolo + o il doppio zero e infine indichiamo il nostro codice IMEI o WLAN MAC address se usiamo un dispositivo Apple.
Salviamo il file ed ora siamo pronti ad avviare lo script PHP, semplicemente da riga di comando digitiamo:
$ php whatsapp.php
Il software ci risponderà con una breve ma efficace guida:
USAGE: whatsapp.php [-l] [-s <phone> <message>] [-i <phone>]
phone: full number including country code, without ‘+’ or ’00’
-s: send message
-l: listen for new messages
-i: interactive conversation with <phone>
Facilmente intuiamo che attraverso il parametro “-s” possiamo inviare un nuovo messaggio, con il parametro “-l” individuiamo eventuali messaggi non letti ed infine con il parametro “-i” avviamo una vera e propria conversazione interattiva nella quale potremo scrivere messaggi e leggere le eventuali risposte.
Per avviare una conversazione è quindi necessario digitare il seguente comando:
$ php whatsapp.php -i 393481234567
Sempre sulla riga di comando digiteremo il nostro messaggio da inviare e leggeremo le eventuali risposte.
Di seguito vi riporteremo diversi screenshot di esempio, abbiamo impersonato l’utente avete numero 346xxx e dialogato con l’utente 347xxx.
(Avvio di una conversazione con l’utente 347xxx mediante l’utente 346xxx e procedura di Login di quest’ultimo)
(Invio del messaggio “Prova Invio By Over Security” da parte dell’utente 346xxx verso il 347xxx)
(Conferma di avvenuta lettura del messaggio invio da parte del destinatario 347xxx)
(Ricezione della risposa “Owned!” dall’utente 347xxx all’utente 346xxx da noi impersonato.)
In conclusione WhatsApp è vulnerabile, qualsiasi persona può sostituirci in una conversazione conoscendo esclusivamente il nostro codice IMEI. Si possono inviare e ricevere risposte senza che il destinatario si accorga di nulla e ancor più gravoso neanche il mittente (utente vulnerabile) avrà la ben che minima traccia di quanto accaduto, nella sua cronologia di chat non solo non appariranno i messaggi inviati ma neanche quelli in risposta.
Le applicazioni Android sono in grado di raccogliere IMEI e numeri di telefoni, non è improbabile che alcuni sviluppatori stiano già raccogliendo queste informazioni e gli Spammer iniziano già a offrire soldi per ottenere i dati degli utenti.
Nell’ipotesi peggiore avendo a disposizione il codice IMEI di due utenti che comunemente si scrivono, attraverso l’attacco Man in the Middle potremmo intercettare le loro conversazioni catturando diverse informazioni sensibili rimanendo completamente all’oscuro.
Una possibile soluzione della vulnerabilità è l’introduzione di un Salt Crittografico all’interno della password rendendo notevolmente più difficile il cracking del Hash Md5.
senza fare tutto questo, come si cambia la password di Whatsapp?
Al momento non si può cambiare la password di WhatsApp, non è di competenza dell’utente in quanto non ha mai potuto scegliere una propria password!
WhatsApp dovrà migliorare il suo software integrando una password più sicura e univoca per ogni utente!
Una possibile soluzione della vulnerabilità è l’introduzione di un Salt Crittografico all’interno della password rendendo notevolmente più difficile il cracking del Hash Md5.
Andrea
Il 18/09/12 09:47, Disqus ha scritto:
e come faccio a farlo, se non ho modo di interagire con Whatsapp nella scelta della password? la si cambia via web?
Non ci siam capiti!
Noi utenti NON possiamo modificare la password, toccherà all’azienda che sviluppa WhatsApp creare delle password univoche per ogni utente più sicure!
Andrea
Il 18/09/12 10:06, Disqus ha scritto:
Non ci si può fare nulla per il momento, da utenti. E’ la casa produttrice a dover correre ai ripari. La password, come spiegato, è il codice IMEI del telefono, leggermente rimaneggiato, ma non in maniera sufficiente da renderla sicura.
“Una possibile soluzione della vulnerabilità è l’introduzione di un Salt Crittografico all’interno della password rendendo notevolmente più difficile il cracking del Hash Md5.”
Non sono affatto d’accordo. Il problema non è il craking dell’hash della password, il problema è l’uso dell’IMEI per generare la password. Anche in presenza di un salt generato in locale, usando informazioni locali e replicabili, senza preventivo scambio di una precomputed key con il server la sicurezza non aumenta.
Non posso che quotarti indubbiamente esistono diverse soluzioni, ognuna di diversa qualità.
Il 18/09/12 21:31, Disqus ha scritto:
calcolo della Password (inversione dell’IMEI e generazione del MD5)
e questa la parte che non mi è chiara … ho l’imei ok… ma come faccio a generare l’md5 di qst imei?
A te: http://it.wikipedia.org/wiki/MD5#Applicazione_pratica_dell.27MD5 Il 17/09/12 23:53, Disqus ha scritto:
ciao Andrea sai dove reperire lo script whatsapp.php
mi sento ignorante… non capisco cosa devo fare
Con le api mi da questo errore:
Warning: socket_read(): unable to read from socket [54]: Connection reset by peer in …Downloads/venomous0x-WhatsAPI-526e38e/src/php/whatsprot.class.php on line 140
Ho appena verificato, sfruttando l’opzione “-i” e funziona perfettamente.
Verifica se inserendo l’URL nel browser avviene l’autenticazione.
Andrea
Il 18/09/12 09:02, Disqus ha scritto:
Chiedo una cortesia come si genera la password su un dispositivo Symbian?
Scusate ma per dispotivi blackberry cosa bisogna usare: imei o mac?
IMEI 😉
Il giorno 18/set/2012, alle ore 11:10, “Disqus” ha scritto:
Sicuro che funziona? io ho appena provato col mio, e sia utilizzando WhatsAPI che generando manualmente l’hash mi dice password sbagliata!
Nel numero di telefono hai introdotto il Country Code?
Il 18/09/12 12:21, Disqus ha scritto:
Si, sia nell’url nella parte cc=39 che utilizzando whatsapi, in entrambi i casi mi dice fail
Che strano,
ho appena provato e tutto funziona regolarmente!
Se vuoi girarmi i dati per eMail provo io personalmente: info [*chiocciola*] oversecurity [*punto*] net
Andrea
Il 18/09/12 14:23, Disqus ha scritto:
Senza offesa, ma già c’è questo baco… preferirei non darli in giro 😛 cmq grazie dell’offerta,
WhatsAPI ha qualche dipendenza particolare? qualche libreria di supporto per la crittografia? io ho provato su mountain lion e ubuntu 12.04, sia usando whatsAPI che generando la password da riga di comando usando md5 sull’imei e sul mac invertito,(blackberry bold e iphone4) da una rilettura dell’articolo mi accorgo che su ios la password è l’hash del mac ripetuto 2 volte, ora provo, whatsapi cmq non funziona
Ci mancherebbe, capisco benissimo!
No non server alcuna dipendenza in particolare, mi sorge però un dubbio la procedura funziona esclusivamente ad utenti che già hanno effettuato la registrazione sulla piattaforma di WhatsApp con la ricezione del SMS di convalida.
Tu sei già un utente registrato?!
Il 18/09/12 18:04, Disqus ha scritto:
certo, sia su iOS che su Blackberry, infatti con iOS funziona, whatsAPI ha bisogno del mac in forma classica XX:XX:XX:XX:XX evidentemente c’è qualcosa che non va usando l’imei del blackberry, ho provato a reinserirlo, ho provato anche a metterlo con i puntini ma non funziona, a meno di non essere veramente cecato e sbagliare continuamente l’inserimento dell’imei l’unico dubbio che ho è che la registrazione del contatto che ho sul blackberry all’inizio era stata fatta su android, ma mi par di capire che la password viene generata ogni volta che viene registrato il numero su un nuovo dispositivo (con sms… Leggi il resto »
Invoco l’aiuto di un conoscente su Twitter che stamani ha testato la piattaforma BB.
Spero che Fabrizio ti risponda…
Andrea
Il 18/09/12 18:56, Disqus ha scritto:
Eccomi qui 🙂
Io ho inserito nel file .php il mio numero preceduto dal 39 e come password l’IMEI del mio Bold 9900, e ha funzionato.
Anch’io avevo utilizzato WhatsApp prima su altri dispositivi, ma evidentemente la “password” si è aggiornata quando l’ho spostato sul BB
Ma dimmi che errore ti dà, perché a me – come scrivevo ad Andrea su Twitter stamattina – funziona solo per UN invio, poi non appena il destinatario mi risponde il BB si rilogga automaticamente e il “client” PHP viene sbattuto fuori
Grazie Fabrizio,
mi sorge ora un dubbio…su BB 9900 hai sicuramente l’OS 7.1 non è che cambia la generazione della psw in base al sistema operativo?
Non ho modo di provarlo, ma non credo
pensavo fosse partito il post ieri sera, invece è rimasto qui, cmq dicevo, su bold 9700 con OS credo 6, semplicemente quando inserisco imei e numero di telefono (con country code come richiesto) mi da Wrong Password
mi aiuteresti?
La vulnerabilità è stata risolta.
Andrea
Il 28/12/12 17:25, Disqus ha scritto:
ciao Luca, potresti passarmi lo script whatsapp.php pf?
Ok funziona, ma dopo aver ricevuto status=ok cosa è possibile fare concretamente?
Tramite le WhatsAPI puoi inizializzare una conversazione, proprio come negli screenshot dell’articolo.
Andrea
Il 18/09/12 11:55, Disqus ha scritto:
Questo è un bel bug! Lo avete comunicato a whatsapp?
Si,
abbiamo provveduto a segnalarlo noi personalmente e anche il ricercatore tedesco.
Andrea
Il 18/09/12 12:05, Disqus ha scritto:
dove lo leggo il codice wlan mac?
Impostazioni > Generali > Info > Indirizzo Wi-Fi
Andrea
Il 18/09/12 15:05, Disqus ha scritto:
grazie mille 🙂
con cellulari symbian OS uso IMEI o MAC ?
Direi IMEI, ma non ho mai provato!
Andrea
Il 18/09/12 15:31, Disqus ha scritto:
Solo una precisazione, Granger ha scoperto la generazione password su Android e non su iOS…
Grazie Mille Ezio,
la scoperta per i dispositivi iOS a chi risale?
Andrea
Il 18/09/12 16:13, Disqus ha scritto:
a me 🙂
http://www.ezioamodio.it
Ottimo articolo, complimenti!
Ciao,Non riesco a calcolare la password come faccio a passare dall’indirizzo wifi alla psw in md5?
potresti rispiegarmi bene questo passaggio?
Prendi la tua chiave Wifi, comprensiva del simbolo “:” la copi due volte e di essa generi MD5.
Esempio: md5(AA:BB:CC:DD:EE:FFAA:BB:CC:DD:EE:FF)
Andrea
Il 18/09/12 19:13, Disqus ha scritto:
scusate ma non ho capito bene.. devo prendere la IMEI del mio iphone e generarla in md5? io adesso ho un 3gs davanti, country39..numero..[md5 di IMEI iPhone]?
se prendo l’IMEI dell’iPhone e la converto in md5 non mi va, se copio la “Chiave Wife” – cioè la password per collergarmi in wifi e la copio due volte “pass123pass123” non funziona nanke… sono su un portatile windows e ho un router della cisco
ok.. sono riuscito a capire, FUNZIONA, ho capito di quale “chiave” Wi-Fi si trattava, infine eliminando i “$” all’inizio
md5(AA:BB:CC:DD:EE:FFAA:BB:CC:DD:EE:FF);
Facendo attenzione a riportare i due punti all’interno del Mac Address!
ma su windows phone funziona?ho provato con imei ma niente..
In serata aggiornamenti per Windows Phone! 😉
Il giorno 18/set/2012, alle ore 20:05, “Disqus” ha scritto:
Aggiornato!
mi dice
“bad cc=$39”
Hai il simbolo del dollaro di troppo…
su windows inserendo il device unique come password ottengo come risultato temporarily-unavailable
non più disponibile la WhatsAPI … avete qualche mirror?
ciao, se lo trovi me lo passi pf
Qualcuno potrebbe uppare WhatsAPI da qualche parte? Il codice è stato revocato.
ciao daniele lo hai trovato
Non credo sia corretto che il codice non sia più disponibile per la verifica.
Come mai provando ad inviare un comando con la sintassi
php whatsapp.php -s
mi appare una segnalazione del tiporx
Perchè c’è scritto “paid”? cosa significa????
lo script è stato rimosso per rischiesta di whataspp.inc. quali sono i comandi get che utilizzava?
Semplicemente avevo scaricato lo script prima che venisse rimosso e ho soltanto lanciato il comando “php whatsapp.php -s 328xxxxxxx Ciao!!!”; non so dirle altro…
se hai ancora lo script puoi vedere che comandi usava
Con un SO che sia Apple si può operare ugualmente? O forse c’è bisogno della disto Unix o Windows?
Scusate qualcuno sa dove poter scaricare whatsAPI? nel link che c’è nell’articolo non è più disponibile il download.
Inoltre io ho provato per il momento ad utilizzare l’URL https://r.whatsapp.net/v1/exist.php?cc=$countrycode&in=$phonenumber&udid=$password
con iphone ma mi da
ho inserito sia $countrycode sia $phonenumber ed ho generato la password tramite l’indirizzo MAC
domanda da newbie, come faccio a dialogare con whatsapp.php su mountain lion? ho installato apache, fatto tutte le modifiche del caso per abilitare il php, ma non so con che cosa lanciare il file! qualcuno mi può venire in aiuto anche solo postando link a guide abbastanza semplici?
grazie
non riesco a calcolare la mia password, chi potrebbe aiutarmi ho un iphone…
grz…
Ragazzi, qualcuno posta il programma gentilmente?
Per chi come me volesse provare questa applicazione: al momento lo sviluppatore lo ha rimosso da GitHub sotto richiesta di WattsApp, in ogni caso cercando su XDA potete trovare alcuni mirror delle versioni precedenti, che sono comunque funzionanti.
Link: http://forum.xda-developers.com/showthread.php?p=31693769
ma fatemi capire … l’unico modo per approfittare di questa vuln. è di sparare imei a caso onde mandare messaggi pubblicitari di massa …o mi sfugge qualcosa?
No, se riesci ad ottenere l’IMEI di qualcuno ed hai il suo numero sei capace di sostituirti completamente a lui in quanto potrai avere accesso al suo account whatsapp e scambiare messaggi come se fossi lui.
Essendo che funziona così bene..non si potrebbe costruire una GUI, prima che fixino il bug? Mi sembra che questa scoperta, al di là delle cattiverie, possa permettere anche di creare un programma per chattare su whatsapp da pc/mac, o sbaglio?
aiuto
con l’opzione -l mi risponde fatal error ………. on line 40
scusate non riesco a capire di che chiave wifi si parla. qualche anima pia?
Io ho scaricato whatsAPI dal mirror sul forum di xda. Ho android e ho notato che funziona solo se il vero utente non è connesso. Appena si riconnette cade la connessione da terminale. Ho notato che nel file whatsprot.class.php la variabile $_device è settata al valore “iPhone”, può essere questo il problema? Ho la configurazione valida per iOS? Nel caso dove posso trovare quella per Android o quali variabili devo modificare?
Ciao, funziona ancora???
ciao andrea.. ma se io volessi leggere la cronologia dei messaggi wh
ciao anndrea.. come faccio a leggere una cronologia di messaggi whatsapp di un numero di cellulare??? esiste un modo tramite pc per estrarre tutta la cronologia.. ho bisogno di capire come fare e se si può fare..
grazie
Ciao,
se usi una versione aggiornata di WhatsApp il database interno è crittografato. Se invece usi una versione vecchia puoi aprire il DB con qualsiasi software di gestione database.
Se cerchi in rete trovi delle specifiche migliori!
Andrea
Il 29/09/12 07:34, Disqus ha scritto:
andrea..sono un pò crudo di informatica etc.. dammi delle dritte se puoi ovviamente…posso darti anche la mia mail.. in tutta riservatezza..
grazie
andrea ho bisogno di aiuto..grazie
a me si pone il problema di trovare la password di iOS tramite md5, ho visto il link di wikipedia ma non capisco come faccio a inserire l’esempio che sta qui con quello su wiki!!!
questo è quello che scrivo, mi da comunque un risultato ma mi continua a dare password errata!!! ma cosa sto sbagliando?? sono due giorni che ci sto impazzendo!!!
grazieeeeeeeee
La vulnerabilità è ormai stata corretta, inutile continuare a tentare.
Andrea
Il giorno 11/ott/2012, alle ore 11:40, “Disqus” ha scritto:
quindi non ci sono altri metodi per ora ?
ah ecco perchè 🙂 grazie comunque per la risposta
ma se uso un nokia n97 mini, che devo fare se mi da “UDID not valid”? dove lo trovo l’udid di un nokia o che devo fare?
stesso problema come calcolo la pass per n97
non si può piu fare nulla ??
nemmeno con chi non ha ancora aggiornato l’ app ?
quoto giggi,
ho letto che si poteva anche usare http://whatsapp.filshmedia.net/
ma neanche quello funziona più quindi questo bug è ormai un ricordo o è ancora possibile accedere dal pc ai profili … ??
provato e funzionante al 100%
Ciao io ho un problema, quando tento di loginnarmi dal web funziona mentre se inserisco la stessa password nel file mi dice all’avvio wrong password e esce quaclhe soluzione?
Sicuri che funziona ancora, io ho provato con android… procedimento?
Ho copiato la mia imeil, reversa cioè da 123456 l’ho fatta 654321 e poi l’ho criptata in md5.. però anche inserendola nella URL mi da “FAIL” anziché “OK”… faccio un esempio di quel che ho fatto:
Parlo di android:
Presumendo il mio numero sia: 3481111222
La mia imei: 123456
Nazionalità: Italiana
quindi l’url la compongo cosi:
https://r.whatsapp.net/v1/exist.php?cc=39&in=3481111222&udid=XXXXOvviamente invece di XXXX metto l’md5 di 654321A me provando cosi mi restituisce “FAIL” cioè:
Ciao,
come comunicato sui nostri canali Facebook e Twitter circa tre settimana fa il bug è stato risolto.
Andrea
[AGGIORNATO 18/12/2012]… ti sei dimenticato di scriverlo xD
Ciao, ho provato ad utilizzare questo script… apparte il fatto che il mio cell è symbian, a cosa possono essere dovuti questi due errori:
( ! ) Notice: Undefined variable: argc in C:wampwwwwhattestswhatsapp.php on line 24
e
( ! ) Notice: Undefined index: argv in C:wampwwwwhattestswhatsapp.php on line 25
Aggiungo che ho usato lo script su windows 7 utilizzando wamp
Non capisco come creare la password. qualcuno mi puo aiutare???
Non Ho capito come calcolare la password su ANDROID…. Puoi rispondermi via email? lollidavide97@gmail.com
non funziona piu’ quindi?
No!
Andrea
Il 07/01/13 15:59, Disqus ha scritto:
ciao ho letto il tuo articolo di whatapp e anche se sono ignorante in materia sono rimasto molto colpito complimenti. COME POSSO RICEVERE UN AIUTO DA TE SU QUESTO ARGOMENTO?
Ciao! Ma non funziona più questa vulnerabilità? Ho fatto tutto (e son praticamente sicuro sia giusto visto che sviluppo in PHP :D) però continua a darmi FAIL!
Peccato era molto interessante come cosa!!!
No, il bug é stato risolto!
Il giorno 10/gen/2013, alle ore 02:11, “Disqus” ha scritto:
vorrei provare se funziona , ho il mio codice imei del cellulare e il mio numero di cellulare , chi mi sa dare la giusta procedura per vedere da qualsiasi pc i miei messaggi ?
sono molto ignorante in materia pertanto se qualche volenteroso e abile in tale procedura puo’ indicarmi i giusti passaggi grazie ciao e grazie a tutti
Come già detto più volte, la vulnerabilità è stata risolta!
Andrea
Il 11/01/13 14:30, Disqus ha scritto: