
WhatsApp 암호화된 미디어 파일(이미지, 동영상, 오디오, 문서)을 iOS ChatStorage.sqlite 또는 Android msgstore.db 데이터베이스에서 추출한 미디어 키를 사용하여 복호화합니다.
최근 고위급 포렌식 조사에서 "WhatsApp이 사용하는 종단간 암호화로 인해, 다운로더 [.enc 파일]의 내용을 복호화하여 전달된 비디오 외에 악성 코드가 포함되어 있는지 확인하는 것이 사실상 불가능하다"고 보고했습니다.
이 프로젝트는 WhatsApp에서 다운로드한 암호화된 미디어 파일을 복호화하는 방법을 보여줍니다.
$ go get github.com/ddz/whatsapp-media-decrypt
Usage: ./whatsapp-media-decrypt -o FILE -t TYPE ENCFILE HEXMEDIAKEY
Options:
-o FILE
decrypted output을 FILE에 씁니다
-t TYPE
미디어 TYPE (1 = 이미지, 2 = 비디오, 3 = 오디오, 4 = 문서)
미디어 키는 ZMEDIAKEY 열에 16진수로 인코딩되어 저장된 protobuf 메시지 안에 있습니다.
$ 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
미디어 키는 media_key 열에 16진수로 인코딩되어 저장되어 있습니다.
$ 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
아니요. WhatsApp의 암호화는 종단간(end-to-end) 방식으로, 송신자와 수신자만이 메시지를 읽을 수 있고 특히 그 사이의 어떤 서버(또는 공격자!)도 읽을 수 없도록 보장합니다. 이 도구는 종단점 중 하나에 저장된 암호화 키를 사용하여 WhatsApp 앱이 화면에 표시하는 것과 동일한 방식으로 미디어 첨부 파일을 복호화합니다.
아니요. WhatsApp은 iOS Data Protection을 사용하여 사용자 데이터 파일(ChatStorage.sqlite 포함)을 장치별 복구 불가능한 하드웨어 UID 키와 사용자 암호에서 파생된 키로 암호화합니다. 이 파일을 만든 특정 iOS 장치에 대한 물리적 접근 권한과 사용자 암호에 대한 지식 없이는 복호화할 수 없습니다.
아니요.
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