Введение 5
1. Постановка задачи 8
2. Обзор 9
2.1. Существующие решения по получению доступа к резервным копиям приложения WhatsApp 9
2.1.1. Проприетарные решения 9
2.1.2. Открытые решения 10
2.2. Расшифровка трафика в новых версиях WhatsApp ... 10
2.3. Содержание резервной копии базы данных 11
2.4. Используемые инструменты и технологии 11
2.4.1. Рутирование, jailbreak, Root Explorer 11
2.4.2. Android Debug Bridge 12
2.4.3. Снифферы Burp Suite Community, Wireshark ... 12
2.4.4. Протокол XMPP 13
2.4.5. Библиотека Cydia Substrate и система сборки theos 13
2.4.6. Декомпилятор jadx 13
3. Получение доступа к резервным копиям базы данных приложения WhatsApp непосредственно с устройства 14
3.1. Рутирование устройства и файлы приложения WhatsApp 14
3.2. Понижение версии приложения WhatsApp 15
4. Генерация ключа расшифровки резервной копии базы
данных приложения WhatsApp и имитация WhatsApp- клиента для получения данных ключа 17
4.1. Исследование генерации ключа расшифровки путем
реверс-инжиниринга WhatsApp 17
4.1.1. Перехват HTTPS-трафика 18
4.1.2. Структура ключа расшифровки 21
4.1.3. Логирование iOS-версии WhatsApp и перехват
XMPP-трафика 23
4.1.4. Параметры XMPP-запроса Android-версии
WhatsApp 25
4.2. Имитация WhatsApp-клиента для генерации ключа расшифровки 26
4.2.1. Регистрация клиента 26
4.2.2. Авторизация клиента и XMPP-запрос на получение данных ключа расшифровки 28
4.2.3. Алгоритм генерации ключа расшифровки без участия устройства 28
5. Архитектура прототипа по генерации ключа расшифровки без участия устройства 30
5.1. Компонент WhatsApp server 31
5.2. Компонент Registration simulator 31
5.3. Компонент Curve25519 32
5.4. Компонент Cipher key request simulator 32
5.5. Компонент Noise Protocol Framework 33
5.6. Последовательность «облачного» извлечения в Belkasoft X 33
6. Апробация 35
Заключение 36
Приложение А: Результаты обзора решений для выгрузки и расшифровки данных WhatsApp для платформы Android 38
Список литературы 39
Используя приложения для обмена сообщениями, человек может передавать любую информацию. Это могут быть как обыденные сообщения, так и данные, связанные с преступлениями. Разработчики мессенджеров обеспечивают безопасность пользовательских данных путем
шифрования. Но шифрование данных затрудняет для экспертов в области цифровой криминалистики анализ данных подозреваемого, которые могут содержать потенциальные улики. То есть эксперты должны
иметь возможность анализировать полученные данные. Им требуются
инструменты для извлечения данных с целью получения потенциальных улик. Данные могут находиться на различных источниках: внешние накопители; внутренняя память устройств; облачные хранилища.
Компания «Белкасофт» занимается разработкой инструмента
Belkasoft X, одной из задач которого является получение доступа к
данным из облачных хранилищ. Компанией была поставлена задача
исследовать возможности извлечения данных приложения WhatsApp
для платформы Android. На момент января 2021 года WhatsApp является самым популярным в мире мессенджером [12].
WhatsApp реализует безопасность данных пользователей, шифруя
резервные копии их сообщений. Резервная копия базы данных содержит: тексты сообщений, контакты получателя/отправителя сообщений,
информацию о пересланных файлах, список чатов, время прочтения
сообщения, упомянутые в сообщении аккаунты и другую информацию.
Приложение WhatsApp создает зашифрованные резервные копии данных на устройстве пользователя и дублирует их в облако (Google Drive
для платформы Android). Извлекать резервные копии возможно методами «физическим» и «облачным». «Физическим» методом возможно
выгрузить зашифрованные и не зашифрованные базы данных, а также ключ расшифровки. Для «физического» метода необходим доступ к
Android-устройству. А без доступа к Android-устройству работает «облачный» метод извлечения данных, для которого необходимы логин и
пароль от Google Drive и SMS-код от сервера WhatsApp. В случае «об-
5лачного» метода ключ расшифровки необходимо генерировать.
В итоге, были достигнуты следующие результаты.
• Были рассмотрены следующие закрытые решения для получения доступа к резервным копиям приложения WhatsApp:
«Мобильный Криминалист», «UFED», «AXIOM», «Elcomsoft».
Были также рассмотрены открытые решения: WhatsApp-GDExtractor-Multithread, WhatsApp-Key-DB-Extractor, WhatsAppCrypt12-Decrypter, WhatsApp-Key-Generator. Для дальнейшей работы были выбраны следующие решения: для выгрузки зашифрованных резервных копий использовался проект WhatsApp-GDExtractor-Multithread, для расшифровки резервных копий по имеющемуся ключу – WhatsApp-Key-Generator.
• Получен доступ к резервной копии базы данных
msgstore.db.crypt12 приложения WhatsApp непосредственно
с Android-устройства следующими способами.
– Рутирование устройства: выгружены ключ расшифровки,
расшифрованная база данных из приватной области памяти
Android.
– Понижение версии приложения WhatsApp на разных версиях
Android рутованного и не рутованного устройства: выгружены резервные копии приложения WhatsApp пониженной версии, содержащей сохраненные файлы расшифрованной базы
данных и ключа расшифровки актуальной версии приложения WhatsApp.
• Описана структура ключа расшифровки резервной копии базы
данных приложения WhatsApp и имитирован WhatsApp-клиент
для получения основной части данных ключа, используемой для
расшифровки.