
Descriptografar arquivos de mídia criptografados do WhatsApp (imagens, vídeos, áudio, documentos) usando chaves de mídia extraídas dos bancos de dados ChatStorage.sqlite do iOS ou msgstore.db do Android.
Uma recente investigação forense de alto perfil relatou que "devido à criptografia de ponta a ponta empregada pelo WhatsApp, é virtualmente impossível descriptografar o conteúdo do arquivo .enc baixado para determinar se ele continha algum código malicioso além do vídeo entregue."
Este projeto demonstra como descriptografar arquivos de mídia criptografados baixados do WhatsApp.
$ go get github.com/ddz/whatsapp-media-decrypt
Uso: ./whatsapp-media-decrypt -o ARQUIVO -t TIPO ARQUIVO.ENC CHAVEHEXMEDIA
Opções:
-o ARQUIVO
escreve a saída descriptografada em ARQUIVO
-t TIPO
tipo de mídia (1 = imagem, 2 = vídeo, 3 = áudio, 4 = documento)
A chave de mídia é armazenada dentro de uma mensagem protobuf que é armazenada codificada em hexadecimal na coluna 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
A chave de mídia é armazenada codificada em hexadecimal na coluna 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
Não. A criptografia do WhatsApp é de ponta a ponta, o que garante que apenas o remetente e o destinatário possam ler a mensagem e especialmente não quaisquer servidores (ou atacantes!) entre eles. Isso usa uma chave criptográfica armazenada em um dos pontos finais para descriptografar um anexo de mídia da mesma forma que o aplicativo WhatsApp faz para exibi-lo na tela.
Não. O WhatsApp usa o iOS Data Protection para criptografar arquivos de dados do usuário (incluindo ChatStorage.sqlite) usando a chave UID de hardware específica do dispositivo e irrecuperável, bem como uma chave derivada da senha do usuário. Ele não pode ser descriptografado sem acesso físico ao dispositivo iOS específico que criou o arquivo, bem como conhecimento da senha do usuário.
Não.
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