В своём новом блоге на Хабре я хочу поделиться уникальной информацией о том, как именно мы извлекаем данные из смартфонов. На собственном сайте мы выложили ряд статей на эту тему, рассказав, казалось бы, всё возможное о способах извлечения данных из смартфонов и планшетов Apple. Логический анализ, извлечение из облака и низкоуровневый анализ методом физического извлечения имеют как сильные, так и слабые стороны; о них я постараюсь рассказать в следующих публикациях.
Наверное, я никогда не устану говорить о преимуществах физического анализа. Здесь и доступ ко всему содержимому файловой системы, и расшифровка всех записей из Связки ключей (а это – пароли, включая, кстати, пароли к кошелькам криптовалюты и «секретным» чатам). Тут извлечение данных из всех приложений (а не только тех, разработчики которых разрешили резервное копирование) и доступ к скачанным сообщениям электронной почты, чатам и перепискам в самых разнообразных приложениях, включая хорошо защищённые (помашем рукой пользователям Telegram и Signal).
Как добраться до самого интересного? Разумеется, нам нужен низкоуровневый доступ к данным, который невозможен без получения прав суперпользователя. А как получить права суперпользователя? Если вы – не работник полиции или спецслужб из США, Израиля или ЕС, то вариант один: установкой джейлбрейка. Сегодня я расскажу о рисках и последствиях физического анализа устройств, связанных с использованием джейлбрейка для извлечения данных.
Для чего нужен джейлбрейк
Наверное, все знают, что такое джейлбрейк для iOS и чем он отличается от root для Android (подсказка: практически всем). Джейлбрейк – собирательное название класса приложений для операционной системы iOS, позволяющих путём эскалации привилегий получить на устройстве права суперпользователя. Эскалацию привилегий осуществляют с использованием ошибок в системе безопасности iOS. С учётом того, что разработчики Apple оперативно исправляют ошибки с выходом обновлений iOS, выход новых и новых утилит джейлбрейк – процесс непрерывный.
Джейлбрейки используются как независимыми исследователями для анализа систем безопасности iOS, так и пользователями-энтузиастами, которые получают возможности модификации внешнего вида и поведения системы, а также установки приложений из сторонних источников помимо официального магазина Apple App Store. Для нас эти возможности излишни; всё, что нам нужно – это доступ к устройству через SSH, ну и, конечно же, полный доступ к файловой системе.
Таким образом, у нас в лаборатории (а также в лабораториях экспертов-криминалистов) джейлбрейки используют для получения неограниченного доступа к файловой системе, извлечения данных из iPhone и iPad и расшифровки Связки ключей (паролей пользователя, сохранённых в браузере Safari, системных и сторонних приложений).
Использование джейлбрейка несёт следующие выгоды:
Образ файловой системы:
- Рабочие базы данных приложений, файлы WAL, доступ к недавно удалённым записям
- Данные всех приложений, включая те, для которых запрещены резервные копии
- Доступ к истории переписки в таких приложениях, как Signal и Telegram
- Скачанные сообщения электронной почты и Exchange
- Системные журналы
Связка ключей:
- Помимо паролей пользователя, которые можно извлечь и из резервной копии с паролем, расшифровываются и записи, защищённые атрибутом this_device_only
- В том числе извлекается пароль к резервным копиям iTunes
Использование джейлбрейка приносит не только выгоды, но и несёт ряд рисков.
Риски джейлбрейка
Установка и использование джейлбрейка связаны с некоторыми рисками. Риск установки джейлбрейка часто понимается неверно. Чаще всего опасаются «окирпичивания» устройства – ситуации, в результате которой взломанный iPhone или iPad перестаёт загружаться. Представление о такой опасности джейлбрейков тянется со времён iOS 8 и 9, джейлбрейки для которых патчили ядро и пытались (иногда – успешно, но чаще – не очень) отключить защиту Kernel Patch Protection, KPP. Срабатывание KPP и приводило к спонтанной перезагрузке устройства или его окирпичиванию.
У современных джейлбрейков (начиная с джейлбрейков для iOS 10) этот риск практически отсутствует: джейлбрейки не модифицируют ядро системы и никак не влияют на процесс загрузки (и, разумеется, не трогают KPP). Более того, даже устройства с установленным джейлбрейк загружаются в обычном режиме; для получения прав суперпользователя джейлбрейк необходимо будет запустить ещё раз, уже после загрузки.
К абсолютному минимуму этот риск сведён в джейлбрейках категории Rootless. Эти джейлбрейки не только никак не модифицируют систему, но даже не перемонтируют системный раздел. Соответственно, как-либо повлиять на процесс загрузки системы такие джейлбрейки не в состоянии.
Какие же риски несёт установка джейлбрейка? Перечислим.
1. Выход устройства в интернет. В процессе установки джейлбрейка вам придётся получить цифровую подпись для пакета IPA, в котором и содержится джейлбрейк. Неподписанные IPA не могут быть переданы на устройство и тем более не могут быть запущены на нём. Цифровую подпись выдают серверы Apple; к ним необходимо обратиться за её получением. Процесс автоматизирован: для него используется готовое и очень простое в использовании приложение Cydia Impactor с открытым исходным кодом. Тем не менее, если вы разрешите устройству выход в интернет, вы рискуете: злоумышленник может дистанционно подать на устройство команду для его блокировки или уничтожения данных.
Решение: эту проблему можно обойти, использовав сертификат для разработчиков (Apple Developer Program). Подробности в Пошаговом руководстве.
2. Джейлбрейк просто не установится. Да, второй по тяжести риск – это то, что джейлбрейк попросту не встанет на iPhone. Джейлбрейки используют не одну, а целую цепочку уязвимостей; найти и правильно использовать такую цепочку – тяжёлый труд. Увы, но ошибка на любом этапе приводит к тому, что джейлбрейк не установится, а вы окажетесь в лучшем случае с устройством без джейлбрейка, а в худшем – с устройством с перемонтированным системным разделом, но без джейлбрейка (о том, чем это плохо – ниже).
Решение: вообще говоря, джейлбрейков существует множество. Для iOS 12, например, мы насчитали как минимум 4 работоспособных джейлбрейка (на самом деле их больше). Не сработал один джейлбрейк? Просто попробуйте другой; о них опять же в Пошаговом руководстве.
Последствия
С рисками разобрались, джейлбрейк установлен. Чем это может грозить?
Прежде, чем говорить о рисках джейлбрейка, разберёмся с их видами. Их всего два: обычные (классические) джейлбрейки, и rootless-джейлбрейк.
Классический джейлбрейк предоставляет пользователю, так сказать, «полный фарш»: отключается проверка цифровой подписи (можно устанавливать и запускать любые приложения), устанавливается сторонний магазин приложений (чаще всего это Cydia, но начали появляться и альтернативные варианты). В системный раздел для этого записывается довольно много файлов, а сам системный раздел перемонтируется в режиме r/w.
Что это означает на практике? Хлам в системном разделе, который иногда невозможно полностью убрать в процессе удаления джейлбрейка (особенно если пользователь успел попробовать установку разных джейлбрейков). Потенциальную (а часто и реальную) нестабильность устройства. Наконец, невозможность корректной установки OTA-обновлений. Помогает только полное восстановление прошивки через iTunes, причём иногда нестабильность устройства сохраняется, и приходится делать сброс к заводским настройкам. Не слишком приятно.
Все эти вещи не происходят, если использовать джейлбрейк нового типа rootless, единственным представителем которого является RootlessJB. Этот джейлбрейк не снискал популярности своих классических собратьев по очевидной причине: он не устанавливает (и не поддерживает работу) сторонних магазинов (Cyida и подобных). У обычного пользователя-энтузиаста в этот момент интерес пропадает, и он устанавливает классический джейлбрейк.
Между тем для наших целей RootlessJB представляет особую ценность. Дело в том, что исследуемый iPhone мы должны вернуть примерно в том виде, в каком он поступил на анализ. То есть, как минимум устройство не должно работать менее стабильно, чем до анализа, и не должно быть проблем с установкой OTA-обновлений. Именно эти возможности нам даёт RootlessJB. Посудите сами: этот джейлбрейк не модифицирует системный раздел, не записывая в него ни одного лишнего файла. Более того, он и не может этого сделать: сам принцип работы этого джейлбрейка не предполагает перемонтирования системного раздела в режим r/w.
Дальше – больше. Поскольку джейлбрейку RootlessJB не нужно поддерживать сторонний магазин приложений, нет и необходимости отключать проверку цифровой подписи (отдельные бинарники запускать можно, но пути к ним нужно вручную прописать в файл контроля разрешений). Не нужно отключать проверку цифровой подписи – не нужно ничего записывать в системный раздел. Системный раздел не требуется открывать на запись – можно пропустить эксплуатацию соответствующей уязвимости, что упрощает процесс установки и делает его более надёжным. Иными словами, для нас RootlessJB – буквально подарок.
Закончим статью таблицей, в которой сравним последствия использования джейлбрейков разных видов.
Заключение
Эта статья – первая из запланированных. Я планирую рассказать о том, как именно в лабораториях полиции и спецслужб как нашей страны, так и за рубежом получают доступ к информации в устройствах Apple. Оставайтесь с нами, будет интересно!
Автор: v_katalov