В одной из статей мы рассказывали, как на примере Android- и iOS-устройств можно получить информацию из мессенджера Telegram. Сегодня мы поговорим о механизмах шифрования и дешифрования данных в мессенджере WhatsApp.
- Введение
- Шифрование данных в WhatsApp
- Дешифровка резервных копий WhatsApp
- Использование опенсорсных решений для дешифровки резервной копии WhatsApp
- Использование специализированного программного обеспечения
- Выводы
Введение
Практически каждый из нас в повседневной жизни использует различные приложения для звонков и отправки сообщений. У такого вида коммуникации есть свои преимущества: это удобно и бесплатно. В настоящее время существует множество различных мессенджеров (WhatsApp, Telegram, Viber и т. п.), и каждый пользователь рано или поздно задается вопросом — насколько безопасно использовать тот или иной мессенджер. О безопасности Telegram мы писали в статье Доступ к переписке в Telegram без пароля на устройствах Android и iOS.
Стоит отметить, что этот вопрос всегда волнует злоумышленников, которые также используют такой вид связи для общения между собой.
Рисунок 1. Сравнение мессенджеров
По этой теме читателей также наверняка заинтересует подробный Обзор безопасности популярных в России мобильных мессенджеров, который мы недавно опубликовали.
Шифрование данных в WhatsApp
Согласно имеющейся информации, WhatsApp использует сквозное шифрование. Это означает, что сообщения зашифровываются и расшифровываются непосредственно на устройстве.
Пример сквозного шифрования. Иван решил отправить некое сообщение Олегу, но не хочет, чтобы сообщение прочитали третьи лица. За несколько дней до отправки сообщения Иван запускал WhatsApp и сканировал QR-код на телефоне Олега. Теперь Иван уверен: ключ шифрования доступен только Олегу, и никто, кроме него, не сможет прочитать отправленное сообщение.
Помимо шифрования, сообщения в WhatsApp автоматически копируются и сохраняются в память устройства. В зависимости от настроек также можно периодически создавать резервные копии чатов в iCloud или Google Drive.
Резервные копии, которые сохраняются в облако, зашифрованы с использованием безопасного алгоритма AES-256, причем в разных версиях WhatsApp используются различные алгоритмы шифрования.
Резервные копии содержат следующую информацию:
- список звонков;
- фотографии и видеофайлы;
- список контактов, включая телефонные номера;
- текстовые сообщения, включая идентификаторы пользователей.
Рисунок 2. Алгоритм шифрования резервной копии данных в WhatsApp
Дешифровка резервных копий WhatsApp
Для расшифровки резервных копий используется криптографический ключ, который создается в момент, когда пользователь впервые делает копию данных в облаке. Ключ генерируется на сервере WhatsApp и не попадает в облако.
В Android-устройствах ключ находится в каталоге data/data/сom.whatsapp/files. В iOS-устройствах ключ хранится в кейчейне и не попадает в облачные и iTunes-бэкапы.
Кроме самого ключа, который хранится на устройстве, также могут находиться зашифрованные базы данных.
Для извлечения ключа шифрования необходимо выполнить физическое извлечение данных из устройства. Но это не всегда возможно из-за проблем с программным или аппаратным обеспечением некоторых мобильных устройств.
В мобильной криминалистике эксперты часто сталкиваются с проблемами, которые не позволяют им провести полноценную экспертизу устройств и получить доступ к информации, хранимой в WhatsApp, из-за следующих проблем:
- Устройство заблокировано.
- Невозможно снять физический образ устройства или дешифровать его.
- Приложение удалено с устройства владельца.
Такие проблемы возможно решить с помощью опенсорсных решений или применить специализированные программы.
Использование опенсорсных решений для дешифровки резервной копии WhatsApp
Для дешифровки резервной копии, имея key-файл, можно воспользоваться опенсорсными утилитами, например WhatsApp Crypt12 Database Decrypter, который доступен на GitHub. Для использования данной утилиты необходимо установить среду выполнения Java.
Для дешифровки необходимо переместить файлы msgstore.db.crypt12 и key в папку с файлами decrypt12.jar и decrypt12.java.
Далее запустить командную строку из папки, в которой содержатся вышеперечисленные файлы, и выполнить следующую команду:
java -jar decrypt12.jar key msgstore.db.crypt12 msgstore.db
Рисунок 3. Результат дешифрования резервной копии
Дешифрованная резервная копия сохранится в файл msgstore.db, просмотреть которую можно с помощью SQL- viewer, например DB Browser for SQLite.
Рисунок 4. Просмотр дешифрованной резервной копии с помощью DB Browser for SQLite
Для упрощения дешифровки резервной копии нами разработана утилита WhatsApp Decrypter, которая упрощает данный процесс.
Рисунок 5. WhatsApp Decrypter
Использование специализированного программного обеспечения
Программное обеспечение «Мобильный Криминалист» содержит модули, позволяющие получить криптографический ключ, который необходим для дешифрования резервной копии с помощью:
- key-файла (только для Android);
- авторизации по токену или SMS;
- токена авторизации WhatsApp Cloud.
Принцип работы дешифрации резервной копии заключается в следующем:
- выполняется авторизация на сервере WhatsApp;
- на сервер WhatsApp отправляется специальный запрос;
- в ответ на запрос сервер WhatsApp отправляет ключ для дешифрования резервной копии.
Рисунок 6. Алгоритм дешифрования резервной копии
Основные преимущества «Мобильного Криминалиста»:
- обход двухфакторной авторизации;
- выгрузка данных напрямую с WhatsApp Cloud;
- дешифрование любой резервной копии с помощью токена;
- дешифрование локальных резервных копий с флеш-карты устройства.
Выводы
Мы рассмотрели, как устроено шифрование данных в WhatsApp, алгоритмы дешифрования резервной копии, а также как дешифровать имеющуюся базу данных WhatsApp.
Использование мессенджера WhatsApp при имеющемся шифровании данных не является надежным, поэтому пользователю необходимо задумываться о безопасности использования различных мессенджеров, в том числе и WhatsApp.
Скачать утилиту WhatsApp Decrypter можно здесь.
Автор выражает благодарность сотрудникам компании Oxygen Software за содействие в написании статьи.