
Descifrar archivos multimedia cifrados de WhatsApp (imágenes, videos, audio, documentos) usando claves multimedia extraídas de las bases de datos iOS ChatStorage.sqlite o Android msgstore.db.
Una reciente investigación forense de alto perfil informó que “debido al cifrado de extremo a extremo empleado por WhatsApp, es prácticamente imposible descifrar el contenido del archivo descargado [.enc] para determinar si contenía algún código malicioso además del video entregado.”
Este proyecto demuestra cómo descifrar archivos multimedia cifrados descargados desde 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 clave de medio se almacena dentro de un mensaje protobuf que está almacenado codificado en hexadecimal en la columna 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 clave de medio se almacena codificada en hexadecimal en la columna 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. El cifrado de WhatsApp es de extremo a extremo, lo que garantiza que solo el remitente y el destinatario puedan leer el mensaje y especialmente no cualquier servidor (¡o atacante!) intermedio. Esto utiliza una clave criptográfica almacenada en uno de los puntos finales para descifrar un archivo adjunto multimedia de la misma manera que la aplicación de WhatsApp lo hace para mostrarlo en pantalla.
No. WhatsApp utiliza iOS Data Protection para cifrar los archivos de datos del usuario (incluyendo ChatStorage.sqlite) usando la clave de hardware UID específica del dispositivo e irrecuperable, así como una clave derivada del código de acceso del usuario. No se puede descifrar sin acceso físico al dispositivo iOS específico que creó el archivo, así como conocimiento del código de acceso del usuario.
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