checkm8: Особенности использования, проблемы и решения

31 октября, 2023, Oleg Afonin
Рубрика: «Разное»
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Уязвимость в загрузчике, которой подвержены несколько поколений устройств Apple, открыла возможность криминалистически чистого извлечения для ряда устройств. В сегодняшней статье мы расскажем о поддерживаемых устройствах, особенностях использования нашей реализации checkm8, возможных проблемах и методах их решения.

Уязвимость загрузчика и её ценность для мобильной криминалистики

Исследователи безопасности находили уязвимости в загрузчиках многочисленных устройств Apple. Самой известной такой уязвимостью стала дыра в безопасности, которая кочевала от одного поколения устройств Apple к другому. Ей подвержены все модели iPhone, iPad и других устройств Apple, собранные на чипах от Apple A5 до A11 Bionic включительно (то есть, модели iPhone от 4s до iPhone 8/8 Plus/iPhone X). Более старые модели имели свои уязвимости; именно их мы используем для извлечения данных из iPhone 4.

Код, посредством которого можно использовать найденную уязвимость, получил название checkm8 («чекмейт», «шах и мат»). Эксплойт checkm8 в чистом виде использовать для доступа к данным не получится — в нём отсутствуют соответствующие механизмы и необходимые надстройки, которые и были разработаны различными поставщиками ПО для мобильной криминалистики. Реализации разных вендоров сильно отличаются; многие из них основаны на коде публичного джейлбрейка checkra1n, оставляя на устройстве следы использования. В нашей реализации checkm8 используется для криминалистически чистого извлечения данных из целого ряда устройств Apple, включая многочисленные поколения смартфонов iPhone, планшетов iPad, а также часы Apple Watch, приставки Apple TV и умную колонку HomePod первого поколения.

Использование уязвимости загрузчика позволило нам реализовать метод извлечения, стабильно выдающий повторяемый и верифицируемый результат. Достичь этого удалось благодаря уникальному алгоритму, в котором все необходимые модификации происходят в оперативной памяти устройства, не затрагивая основного хранилища — системного раздела и раздела данных.

checkm8: таблица совместимости

Эксплойт checkm8 доступен для нескольких поколений платформ Apple. Поскольку уязвимость, эксплуатируемая кодом checkm8, находится на самом низком уровне, для которого Apple не предусмотрел возможности записи (и, соответственно, обновлений, которые могли бы исправить уязвимость), долгое время считалось, что эксплойт будет работать независимо от того, какая версия iOS запущена на устройстве. Это оказалось ошибкой: благодаря усилению защиты аппаратного сопроцессора безопасности SEP разработчики Apple, не сумев закрыть саму уязвимость, смогли минимизировать возможность её использования для доступа к данным — хоть и далеко не на всех устройствах. Так, с выходом iOS 16 использовать checkm8 для доступа к данным не получится на смартфонах iPhone 8, 8 Plus и iPhone X, если на них хотя бы раз с момента настройки использовался код блокировки экрана. На более ранних iOS 14 и 15 для доступа к данным на этих моделях нужно удалять код блокировки экрана, что нарушает криминалистическую чистоту процесса и приводит к безвозвратному уничтожению некоторых категорий данных. Время от времени код блокировки приходится удалять и при исследовании некоторых планшетов iPad.

Ниже приводится таблица совместимости checkm8 (в ячейках зелёного цвета перечислены 32-разрядные устройства, синего — 64-разрядные):

Извлечение данных с использованием checkm8

Сам по себе эксплойт checkm8 не является достаточным в качестве инструмента для извлечения к данным. Мы разработали решение на основе checkm8, позволяющее извлекать данные из ряда устройств Apple. Помимо нашего решения, входящего в состав инструментария Elcomsoft iOS Forensic Toolkit 8, вам также потребуется компьютер под управлением macOS (на процессоре Intel или Apple Silicon). Версия для Windows не поддерживает checkm8; в то же время версия для Linux, которая на данный момент в стадии разработки, будет поддерживать извлечение через эксплойт загрузчика.

Подробные инструкции по использованию инструментария доступны в ранее опубликованных статьях:

Использовать checkm8 можно только в специальном режиме DFU. О том, как перевести различные устройства в этот режим, мы писали в статьях:

checkm8: особенности, проблемы и решения

Извлечение через эксплойт загрузчика требует точных действий и полного понимания сути процесса — что, однако, не всегда гарантирует успех. В этом разделе рассмотрены типичные проблемы и методы их решения.

После извлечения через checkm8 устройство перезагружается в режим Recovery

Так и должно быть. После успешного применения эксплойта iOS Forensic Toolkit сбрасывает флаг автозагрузки, после чего устройство всегда будет загружаться в режим восстановления (recovery). Сделано это для того, чтобы обезопасить данные на устройстве от модификации, которая неизбежно возникает при штатной загрузке ОС. Эта защита обеспечивает повторяемость результатов: в каждой последующая сессии извлечения данных эксперт получит тот же результат, что и в первый раз; контрольные суммы образов совпадут.

В то же время возвращать устройство владельцу в таком состоянии нельзя. Перед возвратом устройства необходимо вернуть флаг автозагрузки в изначальное состояние. Для этого переведите устройство в режим восстановления (recovery), подключите его к компьютеру с iOS Forensic Toolkit и выполните следующую команду:

./EIFT_cmd tools autobootTrue

После её выполнения устройство перезагрузится штатным образом.

Нарушает ли переключение флага автозагрузки криминалистическую чистоту процесса? Нет, не нарушает: значение флага хранится в NVRAM, а не на разделе данных или в системном разделе. Его переключение не нарушает целостность данных. Подробнее — в статье Цифровые улики и повторяемость криминалистического анализа.

ВАЖНО: iOS Forensic Toolkit автоматически установит флаг автозагрузки только после успешного применения эксплойта загрузчика. В то же время и предварительный процесс перевода устройства в режим DFU сопряжён с риском случайной перезагрузки устройства в ОС. Соответственно, перед вводом устройства в режим DFU мы рекомендуем перевести устройство в режим восстановления (Recovery), после чего вручную установить флаг автозагрузки указанной ниже командой, :

./EIFT_cmd tools autobootFalse

Ошибка при попытке извлечения 32-разрядного устройства

Проблема: Не удаётся выполнить команду unlockdata при извлечении из 32-разрядных устройств.

Причина: Так и должно быть. Для 32-разрядных устройств используются другая процедура, в рамках которой извлекается не копия файловой системы, а образ раздела данных.

Решение: Используйте процесс по извлечению данных из 32-разрядных устройств, описанный в статье Perfect Acquisition Part 4: The Practical Part

Сброс кода блокировки экрана: применимость и риски

В некоторых случаях на раннем этапе загрузки возникает ошибка, которая может выглядеть следующим образом (значения code, line и commit могут не совпадать):

[ERROR] EIFT: failed with exception:
[exception]:
what=Failed to open connection to device
code=11993119
line=183
file=../../../ra1nsn0w/iOSDevice.cpp
commit count=191
commit sha  =1d674084639c73f1397535ee8aec50b35f1760d6

Если это происходит, на устройстве придётся удалить (сбросить) код блокировки экрана, после чего повторить попытку. Как правило, ситуация возникает в результате усиления мер безопасности на уровне SEP (Secure Enclave Processor) в поздних версиях iOS.

Проблема: Не проходит команда unlockdata на устройствах с чипом A11 Bionic под управлением iOS 14 или 15 (всегда) или любые другие устройства под управлением iOS 16 (только при возникновении ошибки).

Решение: Загрузите устройство штатным образом, разблокируйте его кодом блокировки экрана, после чего удалите код блокировки в настройках Settings — Face ID & Passcode или Touch ID & Passcode — Turn Passcode Off (потребуется подтверждение вводом кода блокировки).

Возможные проблемы: Обратите внимание на флаг автозагрузки (см. выше), который может предотвратить штатную загрузку ОС. При необходимости установите нужное значение флага из режима recovery.

Последствия: Сброс кода блокировки экрана приводит к безвозвратному удалению некоторых категорий данных (например, переписку в Exchange, транзакции Apple Pay и т.д.), а также приводит к утрате устройством статуса доверенного (в контексте последующего доступа к данным, защищённым сквозным шифрованием в Apple ID/iCloud).

Невозможно перевести устройство в режим DFU

Существует несколько возможных ошибок при переводе в режим DFU.

Недостаточный уровень заряда. Часто встречается, если устройство долго хранилось обесточенным. Если подключить устройство к питанию, то по достижении определённого уровня заряда оно начнёт загрузку в ОС, чего желательно избежать. Мы рекомендуем сразу перевести устройство в режим восстановления (Recovery), что можно проделать даже при низком уровне заряда.

Неисправность или дребезг кнопок. Для перевода в DFU требуется точное соблюдение последовательности нажатия кнопок и таймингов. Неисправность кнопок или дребезг контактов могут нарушить последовательность, что приведёт к перезагрузке устройства. Рекомендуем воспользоваться одной из следующих инструкций: Аппаратный перевод в DFU: когда не работают кнопки (требуется разборка) либо Автоматический ввод в DFU с микроконтроллером Raspberry Pi Pico (только для устройств на чипах A11 Bionic, разборка не требуется).

Несоблюдение последовательности нажатий или таймингов также может привести к перезагрузке или переводу в режим восстановления. Чтобы исключить сценарий с неисправными кнопками или контактами, рекомендуем предварительно потренироваться на аналогичной заведомо исправной модели.

Общие рекомендации

В случае проблем с вводом в режим DFU (это требует некоторой сноровки) или применения уязвимости в первую очередь просто повторите попытку, затем попробуйте поменять кабель (желательно использовать оригинальный) и/или подключить устройство к другому USB-порту. Если же и это не помогает – использовать другой компьютер (разумеется, при наличии). Наконец, попробуйте ввести устройство в DFU другим способом.

Несовпадение версии прошивки, ошибка автоматического определения версии

Проблема: В iOS Forensic Toolkit отображается несколько ссылок на скачивание прошивки либо не отображается ни одной; при использовании ссылки или образа прошивки не удаётся разблокировать раздел данных.

Причина: В нашей реализации checkm8 используется образ оригинальной прошивки Apple, изменения в которую вносятся на лету в оперативной памяти. Версия прошивки, установленной на устройстве, должна совпадать с той, модифицированный образ которой подгружается в память устройства. Если версии не совпадают, то извлечение может как сработать штатным образом, так и не сработать (не удастся смонтировать раздел данных) или привести к перезагрузке устройства.

Функция определения версии прошивки работает на основе версии загрузчика iBoot. В то же время одна и та же версия загрузчика может использоваться несколькими версиями iOS, что и приводит к выводу нескольких ссылок на прошивки.

Решение: Доступно два варианта.

  1. Определить точную версию ОС с использованием режима диагностики (это безопаснее полной загрузки устройства).
  2. Последовательно перебрать все предложенные iOS Forensic Toolkit варианты прошивок начиная с самой свежей сборки. Убедитесь, что флаг автозагрузки установлен (при спонтанной перезагрузке устройство войдёт в режим восстановления, а не начнёт загрузку ОС).

В некоторых случаях корректную версию прошивки определить не удаётся (например, если новая версия iOS вышла позднее установленной у вас версии iOS Forensic Toolkit). В таких случаях попробуйте найти ссылку на нужный образ на сайте ipsw.me.

Если на устройстве установлена бета-версия iOS, свяжитесь с нашей службой поддержки. Как правило, Apple не публикует образов бета-версий ОС.

Для устройств Apple TV (часто), Apple Watch (всегда), HomePod (всегда) и iPhone/iPad (редко) полные образы прошивок .ipsw могут быть недоступны. Вместо этого может быть доступен образ обновления в формате OTA. Такие образы или ссылки на них поддерживаются iOS Forensic Toolkit; переименовывать или распаковывать такие файлы не нужно.

В выходных данных присутствует предупреждение ‘Snapshot’

Проблема: В выходных данных присутствует предупреждение ‘Snapshot’:

Mounts:
[RW] (hfs) /dev/md0 -> /
[RW] (devfs) devfs -> /dev
APFS Volumes:
/dev/disk0s1s1 (Whitetail14A403.D10D101OS) [NONE]
Snapshot: com.apple.os.update-151D1F6F36C3D125B3424A627391C16BCF5FCDA55D4BAE35
C3BE3D65720F574C23EE3363F263A1A37DBF741A65C4CC73
Snapshot: com.apple.os.update-MSUPrepareUpdate
/dev/disk0s1s2 (Data) [NONE]
/dev/disk0s1s3 (Baseband Data) [NONE]

Причина: Если в выходных данных присутствует ‘Snapshot’, это означает, что устройство находится в одном из двух возможных состояний:

  1. Обновление скачано, но не установлено: на устройстве скачан файл обновления ОС, который ещё не был установлен.
  2. Модифицированный системный раздел: работа джейлбрейка, вредоносного или шпионского ПО.

Решение 1: Если на устройстве скачано обновление, его можно удалить из настроек.

Шаги:

  1. В настройках Settings выберите General — iPhone Storage.
  2. В списке приложений найдите пункт «iOS update» и коснитесь его.
  3. Нажмите «Delete Update».

Если обновлений не обнаружено, а предупреждение «Snapshot» присутствует, свяжитесь с нашей службой поддержки.

Существует способ, позволяющий обойти предупреждение «Snapshot» без загрузки устройства и удаления обновления. Этот способ связан с сопутствующими рисками; если вы хотите его использовать, свяжитесь с нашей службой поддержки.

Внимание: Загрузка устройства в iOS несёт сопутствующие риски (нежелательный выход устройства в интернет, изменение временных меток некоторых баз данных и т.п.)

Решение 2: Если системный раздел устройства модифицирован или есть подозрение на работу вредоносного/шпионского ПО, свяжитесь с нашей службой поддержки.

Повреждения файловой системы, проблемные файлы APFS ‘copy-on-write’

Проблема: Некоторые файлы имеют анормально большие размеры.

Причина: Как правило, причина — повреждение файловой системы либо специфика реализации схемы APFS «copy-on-write». При использовании агента-экстрактора проблема решается автоматически, однако это решение неприменимо при использовании checkm8.

Решение: На данный момент универсального решения не существует.

Обходной путь: Проблему можно обойти, подключившись к устройству в режиме SSH (поддерживается в iOS Forensic Toolkit) и либо вручную скопировав только нужные файлы, либо, напротив, удалив повреждённые файлы. За подробными инструкциями обратитесь в нашу службу поддержки.

В будущих версиях: Решение ожидается в будущих версиях iOS Forensic Toolkit, в которых запланирована интеграция агента-экстрактора и нового агента для работы с checkm8. Новый агент, в частности, будет поддерживать частичное извлечение файловой системы и извлечение метаданных.

Заключение

Мы рассмотрели основные особенности применения checkm8, часто возникающие проблемы и методы их решения. Если вы столкнулись с проблемой, которая не описана в данном руководстве — свяжитесь с нами! Наша служба поддержки поможет вам решить проблему, а мы — получим ценную обратную связь, которая позволит нам улучшить работу продукта и составить более подробное руководство.


  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

REFERENCES:

Elcomsoft iOS Forensic Toolkit

Elcomsoft iOS Forensic Toolkit – специализированный инструмент для проведения криминалистического анализа устройств, работающих под управлением Apple iOS. Для анализа доступна вся пользовательская и системная информация, а также зашифрованные данные из системного хранилища (связка ключей).

Официальная страница Elcomsoft iOS Forensic Toolkit »

НАШИ НОВОСТИ