[AGGIORNATO] WhatsApp Hacked – Impersoniamo un’altra persona

 

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.

0 0 votes
Article Rating
Subscribe
Notificami
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

157 Comments
più votati
più nuovi più vecchi
Inline Feedbacks
View all comments
Giomen
Giomen
18/09/2012 09:47

senza fare tutto questo, come si cambia la password di Whatsapp?

Giomen
Giomen
18/09/2012 10:06

e come faccio a farlo, se non ho modo di interagire con Whatsapp nella scelta della password? la si cambia via web?

mbagattini
mbagattini
18/09/2012 10:20
Reply to  Giomen

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.

__anto_twit__
18/09/2012 21:31

“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.

Antonio Rivalta
Antonio Rivalta
17/09/2012 23:53

 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?

geppo
geppo
19/09/2012 15:44

ciao Andrea sai dove reperire lo script whatsapp.php

3years.
3years.
10/09/2013 12:33

mi sento ignorante… non capisco cosa devo fare

Andrea Barbieri
18/09/2012 09:02

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

Fede19801980
Fede19801980
17/12/2012 17:38

 Chiedo una cortesia come si genera la password su un dispositivo Symbian?

Benedetto Angiolini
Benedetto Angiolini
18/09/2012 11:10

Scusate ma per dispotivi blackberry cosa bisogna usare: imei o mac?

Luca Corsini
18/09/2012 12:20

Sicuro che funziona? io ho appena provato col mio, e sia utilizzando WhatsAPI che generando manualmente l’hash mi dice password sbagliata!

Luca Corsini
18/09/2012 14:23

Si, sia nell’url nella parte cc=39 che utilizzando whatsapi, in entrambi i casi mi dice fail

Luca Corsini
18/09/2012 18:04

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

Luca Corsini
18/09/2012 18:56

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 »

faquick
18/09/2012 19:51

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

faquick
18/09/2012 21:40

Non ho modo di provarlo, ma non credo

Luca Corsini
19/09/2012 09:46
Reply to  faquick

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

Maxgara
Maxgara
28/12/2012 17:25

 mi aiuteresti?

geppo
geppo
19/09/2012 15:46
Reply to  Luca Corsini

ciao Luca, potresti passarmi lo script whatsapp.php pf?

Antonio Carlucci
Antonio Carlucci
18/09/2012 11:55

Ok funziona, ma dopo aver ricevuto status=ok cosa è possibile fare concretamente?

Roberto
Roberto
18/09/2012 12:05

Questo è un bel bug!  Lo avete comunicato a whatsapp?

Gieki
Gieki
18/09/2012 15:05

dove lo leggo il codice wlan mac?

Gieki
Gieki
18/09/2012 18:35

grazie mille 🙂

Filippo
Filippo
18/09/2012 15:31

con cellulari symbian OS uso  IMEI o MAC ?

Ezio Amodio
Ezio Amodio
18/09/2012 16:13

Solo una precisazione, Granger ha scoperto la generazione password su Android e non su iOS…

Ezio Amodio
Ezio Amodio
18/09/2012 16:58
Alessandro
18/09/2012 18:10

Ottimo articolo, complimenti! 

Guglielmo_10
Guglielmo_10
18/09/2012 19:12

Ciao,Non riesco a calcolare la password come faccio a passare dall’indirizzo wifi alla psw in md5?
potresti rispiegarmi bene questo passaggio?

Larucalis
Larucalis
18/09/2012 19:58

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]?

Larucalis
Larucalis
18/09/2012 20:12
Reply to  Larucalis

 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

Larucalis
Larucalis
18/09/2012 21:12
Reply to  Larucalis

 ok.. sono riuscito a capire, FUNZIONA, ho capito di quale “chiave” Wi-Fi si trattava, infine eliminando i “$” all’inizio

Marinaiosam
Marinaiosam
18/09/2012 20:05

ma su windows phone funziona?ho provato con imei ma niente..

Matteo Rizzi Zoldus
18/09/2012 20:47

mi dice 

Marinaiosam
Marinaiosam
18/09/2012 21:50

su windows inserendo il device unique come password ottengo come risultato temporarily-unavailable

Kikate
Kikate
18/09/2012 23:38

non più disponibile la WhatsAPI … avete qualche mirror?

geppo
geppo
19/09/2012 15:40
Reply to  Kikate

ciao, se lo trovi me lo passi pf

Daniele F.
Daniele F.
18/09/2012 23:56

Qualcuno potrebbe uppare WhatsAPI da qualche parte? Il codice è stato revocato.

geppo
geppo
19/09/2012 14:46
Reply to  Daniele F.

ciao daniele lo hai trovato

Ruga
Ruga
19/09/2012 00:51

Non credo sia corretto che il codice non sia più disponibile per la verifica.

Luca Bati
Luca Bati
19/09/2012 02:15

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????

mauro
mauro
19/09/2012 09:03

lo script è stato rimosso per rischiesta di whataspp.inc. quali sono i comandi get che utilizzava?

Luca Bati
Luca Bati
19/09/2012 09:26
Reply to  mauro

 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…

mauro
mauro
19/09/2012 10:06
Reply to  Luca Bati

se hai ancora lo script puoi vedere che comandi usava

S@lwos
S@lwos
19/09/2012 11:05

Con un SO che sia Apple si può operare ugualmente? O forse c’è bisogno della disto Unix o Windows?
 

Haring01
Haring01
19/09/2012 12:42

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

Chocolater
Chocolater
19/09/2012 13:04

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

Fabio Verdoliva
Fabio Verdoliva
19/09/2012 13:55

non riesco a calcolare la mia password, chi potrebbe aiutarmi ho un iphone…
grz…

Ruga
Ruga
19/09/2012 14:22

Ragazzi, qualcuno posta il programma gentilmente?

Fabio Kaos Gastaldi
19/09/2012 14:28

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

Proximos
Proximos
19/09/2012 18:28

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?

Daniele F.
Daniele F.
21/09/2012 16:29
Reply to  Proximos

 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.

teo155
teo155
24/09/2012 01:02

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?

Alexdarpino73
Alexdarpino73
24/09/2012 14:08

aiuto
con l’opzione -l mi risponde fatal error ………. on line 40

nri
nri
25/09/2012 17:13

scusate non riesco a capire di che chiave wifi si parla. qualche anima pia?

Dario
Dario
26/09/2012 22:07

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?

RRrepotec
RRrepotec
27/09/2012 17:51

Ciao, funziona ancora???

Maury Nk
Maury Nk
29/09/2012 07:31

ciao andrea.. ma se io volessi leggere la cronologia dei messaggi wh

Maury Nk
Maury Nk
29/09/2012 07:34

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

Maury Nk
Maury Nk
02/10/2012 17:45

andrea..sono un pò crudo di informatica etc.. dammi delle dritte se puoi ovviamente…posso darti anche la mia mail.. in tutta riservatezza..

grazie

Maury Nk
Maury Nk
05/10/2012 18:40
Reply to  Maury Nk

andrea ho bisogno di aiuto..grazie

Francesco L Costi
Francesco L Costi
11/10/2012 11:23

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!!! 

Francesco L Costi
Francesco L Costi
11/10/2012 11:40

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

Giggi
Giggi
13/11/2012 19:47

quindi non ci sono altri metodi per ora ?

Francesco L Costi
Francesco L Costi
11/10/2012 11:46

ah ecco perchè 🙂 grazie comunque per la risposta

sdrufolo
sdrufolo
31/10/2012 19:28

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?

Davide
Davide
07/11/2012 20:21
Reply to  sdrufolo

 stesso problema come calcolo la pass per n97

Giggi
Giggi
11/11/2012 21:37

non si può piu fare nulla ??
nemmeno con chi non ha ancora aggiornato l’ app ?

lellyjé
lellyjé
13/11/2012 19:45

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 … ??

Alessandro Mastropietro
Alessandro Mastropietro
30/11/2012 16:46

provato e funzionante al 100% 

Warrockrnk96
Warrockrnk96
01/12/2012 15:28

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?

LukeGH
LukeGH
11/12/2012 15:26

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è:

Guglio
Guglio
17/12/2012 16:31

[AGGIORNATO 18/12/2012]… ti sei dimenticato di scriverlo xD

Techweaver
Techweaver
20/12/2012 15:53

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

Andrea Valente
Andrea Valente
22/12/2012 17:21

Non capisco come creare la password. qualcuno mi puo aiutare???

Davide Mod Lolli
27/12/2012 21:34

Non Ho capito come calcolare la password su ANDROID…. Puoi rispondermi via email? lollidavide97@gmail.com

Alberto Gorni
Alberto Gorni
07/01/2013 15:59

non funziona piu’ quindi?

Xxlucaa
Xxlucaa
08/01/2013 11:07

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?

Polistus
Polistus
10/01/2013 02:11

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!!!

pegaso
pegaso
11/01/2013 14:30

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