
Decifra file multimediali crittografati di WhatsApp (immagini, video, audio, documenti) utilizzando chiavi multimediali estratte dai database iOS ChatStorage.sqlite o Android msgstore.db.
Una recente indagine forense di alto profilo ha riportato che “a causa della crittografia end-to-end utilizzata da WhatsApp, è praticamente impossibile decifrare il contenuto del file scaricato [file .enc] per determinare se contenesse codice malevolo oltre al video consegnato.”
Questo progetto dimostra come decifrare i file multimediali crittografati scaricati da WhatsApp.
$ go get github.com/ddz/whatsapp-media-decrypt
Usage: ./whatsapp-media-decrypt -o FILE -t TYPE ENCFILE HEXMEDIAKEY
Options:
-o FILE
write decrypted output to FILE
-t TYPE
media TYPE (1 = image, 2 = video, 3 = audio, 4 = doc)
La chiave multimediale è memorizzata all'interno di un messaggio protobuf che è memorizzato con codifica esadecimale nella colonna ZMEDIAKEY.
$ sqlite ChatStorage.sqlite
SQLite version 3.27.2 2019-03-09 15:45:46
Enter ".help" for usage hints.
sqlite> select ZMEDIAURL,ZVCARDSTRING,hex(ZMEDIAKEY) from ZWAMEDIAITEM where Z_PK = 1795;
https://mmg-fna.whatsapp.net/d/f/Atzc5Drr8l7ngis8GmUTMI6vMQNjOU9zGQ2SYRkjwq44.enc|video/mp4|0A2069A349914734B9359DA0CD8923E6DFDE06F1E2BCE23222C738C521570BA8242A1220A1F5AEB2E620F73007FA853200559B2669455BB5818F619397C638042D8F7F2A18B984A5F1052000
sqlite> .quit
La chiave multimediale è memorizzata con codifica esadecimale nella colonna media_key.
$ sqlite msgstore.db
SQLite version 3.27.2 2019-03-09 15:45:46
Enter ".help" for usage hints.
sqlite> select message_url,mime_type,hex(media_key) from message_media where message_row_id = 1337;
https://mmg-fna.whatsapp.net/d/f/AnUpYQ390rgUBOQRhuwCyNqo_9KGATdmLUq-ghYEx-D9.enc|video/mp4|14F9C1B3BB5E66D9A593999A5E0ED3D03ABFECA84320D17763C2B44205E91C17
sqlite> .quit
$ curl -O https://mmg-fna.whatsapp.net/d/f/Atzc5Drr8l7ngis8GmUTMI6vMQNjOU9zGQ2SYRkjwq44.enc
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 389k 100 389k 0 0 1966k 0 --:--:-- --:--:-- --:--:-- 1956k
$ whatapp-media-decrypt -o Atzc5Drr8l7ngis8GmUTMI6vMQNjOU9zGQ2SYRkjwq44.mp4 -t 2 ./Atzc5Drr8l7ngis8GmUTMI6vMQNjOU9zGQ2SYRkjwq44.enc 0A2069A349914734B9359DA0CD8923E6DFDE06F1E2BCE23222C738C521570BA8242A1220A1F5AEB2E620F73007FA853200559B2669455BB5818F619397C638042D8F7F2A18B984A5F1052000
No. La crittografia di WhatsApp è end-to-end, il che garantisce che solo il mittente e il destinatario possano leggere il messaggio e specialmente non i server (o gli aggressori!) intermedi. Questo utilizza una chiave crittografica memorizzata su uno degli endpoint per decifrare un allegato multimediale nello stesso modo in cui l'app di WhatsApp lo fa per visualizzarlo sullo schermo.
No. WhatsApp utilizza iOS Data Protection per crittografare i file dei dati utente (incluso ChatStorage.sqlite) utilizzando la chiave hardware UID specifica del dispositivo e non recuperabile, nonché una chiave derivata dal codice di accesso dell'utente. Non può essere decifrato senza accesso fisico al dispositivo iOS specifico che ha creato il file e la conoscenza del codice di accesso dell'utente.
No.
Engelke, Lucas. go-whatsapp
Graham, Robert. How to decrypt WhatsApp end-to-end media files
Marczak, Bill. "Some Directions for Further Investigation in the Bezos Hack Case"
Sigalor. WhatsApp Web Reverse Engineered
WhatsApp. WhatsApp Encryption Overview