Введение 4
1. Постановка задачи 6
2. Обзор существующих решений 7
3. Версия Wickr Me для iOS 8
3.1. Структура хранимых приложением файлов 8
3.2. Исполняемый файл и используемые библиотеки 9
3.3. Извлечение ключа шифрования без пароля пользователя 10
3.4. Формирование ключа шифрования по паролю пользователя 15
3.5. Расшифровка и извлечение данных 17
4. Версия Wickr Me для Android 21
4.1. Структура хранимых приложением данных 21
4.2. Исполняемый файл и используемые библиотеки 22
4.3. Извлечение ключа шифрования без пароля пользователя23
4.4. Формирование ключа шифрования по паролю пользователя25
4.5. Расшифровка и извлечение данных 26
5. Реализация 28
6. Апробация 30
6.1. Извлечение данных из полного логического образа
устройства без пароля пользователя 30
6.2. Извлечение данных из фрагмента логического образа устройств с паролем пользователя 31
Заключение 32
Список литературы 33
Широкое распространение смартфонов и повсеместный доступ к высокоскоростному мобильному Интернету привели к тому, что приложения-мессенджеры стали значимым способом общения между людьми по всему миру. Это касается как личных переписок, так и корпоративной связи.
Доверяя мобильным приложениям гигабайты конфиденциальной информации, пользователи привлекают внимание разного рода злоумышленников, крупных корпораций и государства, озабоченного проблемами национальной безопасности и сохранения порядка. Именно эта причина привела ко все возрастающей популярности мессенджеров с поддержкой шифрования данных.
Однако приложения с высокой степенью безопасности передаваемых и хранимых данных могут быть интересны не только пользователям, обеспокоенным приватностью конфиденциальной информации, но и преступникам, пытающимся скрыть следы своей незаконной деятельности от правоохранительных органов и нуждающихся в средствах коммуникации. Мессенджеры с поддержкой шифрования данных регулярно используются в планировании и координации правонарушений, связанных с торговлей наркотиками, насилием над детьми и терроризмом [16][18][8]. Все это способствовало возникновению в среде криминалистов существенного спроса на программные решения для извлечения информации из подобных приложений.
Тем не менее, существуют мессенджеры, использующие нетипичные механизмы обеспечения безопасности данных пользователей и тем самым ставящие в тупик специалистов по цифровой криминалистике. Од-ним из таких приложений является Wickr Me, позиционирующийся его создателями как платформа-лидер по уровню безопасности и приватности данных [19]. Wickr Me поддерживает State-of-the-Art алгоритмы сквозного шифрования передаваемых по сети сообщений, возможность автоматического их удаления по истечению определенного срока (удаление не только логическое, но и физическое, с перезаписыванием области памяти), полное шифрование данных приложения на самом устройстве пользователя и другие механизмы защиты информации [20].
На данный момент существуют программные решения, позволяющие извлекать данные из версий Wickr Me для платформ Android и iOS от таких компаний как Celebrite [5], MSAB [7], Oxygen Forensics [13] и Magnet Forensics [11]. Тем не менее, все они являются проприетарными, а принцип их работы остается неизвестен, так как исчерпывающие открытые исследования на эту тему отсутствуют. Именно этот пробел и призвано заполнить данное исследование — изучить механизм шифрования данных в приложении Wickr Me, описать его и предложить способ расшифровки хранимых данных. Данная работа будет выполнена в сотрудничестве с компанией Белкасофт, а ее результаты будут интегрированы в продукт компании Belkasoft X.
1. Постановка задачи
Цель данной работы — исследовать алгоритмы шифрования хранимых приложением Wickr Me данных (версии для iOS и Android) и реализовать механизм их расшифровки, используя методы реверс- инжиниринга.
Для достижения данной цели были поставлены следующие задачи:
• описать структуру файлов, хранимых приложением;
• определить используемые приложением алгоритмы шифрования и их параметры;
• описать способ извлечения ключей шифрования данных Wickr Me;
• описать механизм расшифровки данных приложения;
• интегрировать механизм расшифровки данных в Belkasoft X.
Таким образом, были достигнуты следующие результаты:
• было описано, каким образом Wickr Me хранит данные пользователей и какая их часть является зашифрованной в версиях для Android и iOS;
• были определены применяемые приложением алгоритмы шифрования данных: Wickr Me использует алгоритм AES-256 в режиме GCM, а также функцию формирования ключа Scrypt;
• были описаны два способа получения ключа шифрования данных Wickr Me в версиях для iOS и Android: один из них подразумевает использование сохраненных в файловой системе устройства значений, другой — пароля пользователя;
• механизм расшифровки данных приложения с помощью полученного ключа был также изложен. Описан формат protobuf- сообщений, в которых эти данные хранятся;
• описанный механизм был реализован с помощью языков программирования C# и Cd—+, интегрирован в продукт Belkasoft X компании Белкасофт и апробирован.
Отдельно хочу выразить благодарность специалистам компании Белкасофт, в частности Никите Тимофееву и Михаилу Виноградову, за предоставление тестовых устройств и лицензий для использованных программных инструментов, а также за неоценимую помощью в исследовании и написании текста выпускной квалификационной работы.