Старые iPhone, новый способ извлечения данных

18 июля, 2023, Elcomsoft R&D
Рубрика: «Полезные советы», «Разное»
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Мы разработали принципиально новый способ разблокировки и извлечения данных, поддерживающий большинство устройств Apple, не оборудованных сопроцессором безопасности Secure Enclave. Для устаревших устройств, оборудованных 32-разрядными процессорами, стал доступен вариант разблокировки устройства с последующим полным физическим извлечением всех данных.

Извлечение данных и подбор кода блокировки

Новый метод используется в iOS Forensic Toolkit 8 для Mac и совместим со следующими устройствами независимо от версии iOS, под управлением которой они работают (за исключением самых первых iOS 1 и 2):

  • iPhone 3G/3GS/4/4s/5/5c
  • iPod Touch 2/3/4/5
  • iPad 1/2/3/4
  • iPad Mini (1st gen)
  • Apple TV 2/3

Обратите внимание: установка эксплойта на iPhone 4s (а также некоторых моделей iPad и одной из модификаций Apple TV 3) поддерживается посредством дополнительного аппаратного модуля, использование которого описано в соответствующей статье.

Для извлечения данных и подбора кода блокировки экрана мы разработали новый метод полного извлечения. Этот метод – лучший способ получить данные с устройств, не оборудованных аппаратным сопроцессором безопасности Secure Enclave. Он идеально подходит для криминалистического анализа, так как гарантированно не вносит никаких изменений в данные устройства и имеет ряд преимуществ по сравнению с другими методами.

Процедура извлечения состоит из нескольких этапов:

  • ввод устройства в режим Recovery и сброс флага автозагрузки
  • ввод устройства в режим DFU
  • создание полного образа раздела данных
  • получение BFU ключей
  • подбор кода блокировки экрана, если он неизвестен
  • получение полного набора ключей шифрования
  • расшифровка образа диска
  • извлечение и расшифровка связки ключей

Рассмотрим каждый этап в подробностях.

Флаг автозагрузки

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

EIFT_cmd tools autobootFalse

Ввод устройства в режим DFU

На первом шаге необходимо ввести устройство в режим DFU. Сделать это можно только вручную. Если одна из кнопок устройства не функционирует, см. статью Аппаратный ввод в режим DFU: когда не работают кнопки в дополнительных материалах.

Существует несколько вариантов, но мы рекомендуем такую последовательность:

  • Начальное состояние: телефон должен быть выключен и не подключён к компьютеру.
  • Нажмите кнопку Home (единственную/центральную на лицевой панели), и удерживая её, подключите кабель Lightning. Отпустите Home, когда на экране устройства появится картинка «Подключитесь к iTunes».
  • Одновременно нажмите Home и Sleep/Power (кнопка блокировки на верхнем торце устройства) и удерживайте их 8 секунд (на некоторое время на экране появится логотип Apple).
  • Отпустите кнопку Sleep/Power, но продолжайте удерживать Home ещё 8 секунд

Если всё сделано правильно, экран аппарата останется чёрным, а в iTunes или Finder (в зависимости от используемой версии macOS) телефон появится как iPhone in recovery mode (режим восстановления). Всё готово к следующим шагам, которые уже автоматизированы.

Для устройств Apple TV последовательность отличается; инструкции — в статье Перевод Apple TV 3 (2012-2013), Apple TV 4/HD (2015) и Apple TV 4K (2017) в режим DFU. Apple TV 2 и 3 поколений используют одну и ту же последовательность ввода в DFU.

Сразу после того, как устройство вошло в режим DFU, выполните команду:

EIFT boot

Создание образа пользовательского раздела

Следующая команда создаст побитовый образ пользовательского раздела:

EIFT_cmd ramdisk diskdump -o data.dmg

Примечание: если устройство завершило работу некорректно, либо файловая система повреждена, возможна такая ошибка:

[Error] [!] Data partition is in an unclean state, please run fsck first to fix potential inconsistencies!
Alternatively pass --unclean, to ignore this and proceed with dumping anyways!

В таком случае к команде можно добавить флаг —unclean, чтобы проигнорировать ошибку и создать образ в любом случае.

EIFT_cmd ramdisk diskdump --unclean -o data.dmg

Во время процедуры создания образа данные на устройстве никак не модифицируются.

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

EIFT_cmd ramdisk diskdump --system -o system.dmg

Примечание: если устройство завершило работу некорректно, либо файловая система повреждена, возможна ошибка. В таком случае добавьте к команде флаг —unclean, как это было описано выше.

Получение BFU ключей

Ключи BFU извлекаются независимо от того, известен ли код блокировки экрана. С помощью этих ключей можно расшифровать ограниченное количество данных; они необходимы и для доступа к полному набору ключей шифрования, которые нужны для полной расшифровки данных (см. следующий раздел).

Для извлечения BFU ключей выполните следующую команду:

EIFT_cmd ramdisk dumpkeys -n -o keys_bfu.plist

Получение полного набора ключей шифрования

Для доступа к пользовательским данным необходим полный набор ключей шифрования, без него будет расшифровано только ограниченное число данных (BFU).

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

Примечание: извлечь набор ключей можно проводить, даже если на устройстве произошли какие-то изменения с момента снятия образа диска. Эти изменения никак не повлияют на целостность образа, созданного ранее. Это относится только к keys.plist; у вас уже должен быть набор ключей BFU keys_bfu.plist.

Извлечение файла systembag.kb

Для извлечения системной сумки с ключами (systembag.kb) вам понадобится образ диска (data.dmg) и соответствующие ключи BFU (keys_bfu.plist).

Примечание: на этом этапе можно также использовать и полный набор ключей. Следующая команда извлечёт системную сумку с ключами:

EIFT_cmd hfstool -i data.dmg -p /keybags/systembag.kb -e -o systembag.kb -k keys_bfu.plist --no-passcode

Команда создаст новый файл под именем systembag.kb. Проверьте, что файл расшифрован корректно: он должен начинаться с bplist. На UNIX системах это можно проверить следующей командой:

head -c 6 systembag.kb | hexdump -C

Ожидаемый вывод:

00000000    62 70 6c 69 73 74      |bplist|
00000006

Как вариант, полученный файл можно попытаться открыть в любом plist-редакторе. Если файл открывается, то расшифровка прошла успешно.

Подбор кода блокировки экрана

Если код блокировки экрана неизвестен, на этом этапе его можно попробовать подобрать.

Для подбора кода блокировки экрана вам понадобится системная сумка с ключами (systembag.kb) и BFU ключи (keys_bfu.plist). Следующая команда запустит подбор пароля с параметрами по умолчанию:

EIFT_cmd ramdisk passcode -b systembag.kb -k keys_bfu.plist

Возможно также передать утилите passcode дополнительные аргументы, с помощью параметра —argument

EIFT_cmd ramdisk passcode --argument='-y' (проверяются только 4-значные варианты PIN)
EIFT_cmd ramdisk passcode --argument='-z' (проверяются только 4-значные варианты PIN)

Полный список аргументов утилиты passcode можно увидеть, передав ей параметр ‘-h’

EIFT_cmd ramdisk passcode --argument='-h'

Утилита passcode поддерживает также атаку по словарю. Для этого передайте путь к файлу со словарём через параметр -i, как это показано ниже:

EIFT_cmd ramdisk passcode -i /path/to/dictionary

Получение полного набора ключей шифрования

Для получения полного набора ключей шифрования потребуется всё полученное на предыдущих этапах: системная сумка с ключами (systembag.kb), BFU ключи (keys_bfu.plist) и код блокировки экрана.

Следующая команда извлекает полный набор ключей шифрования:

EIFT_cmd ramdisk dumpkeys -k keys_bfu.plist -b systembag.kb -o keys.plist -p <PASSCODE>

Замените <PASSCODE> на код блокировки экрана. Например, если по блокировки 0000, то команда будет выглядеть следующим образом:

EIFT_cmd ramdisk dumpkeys -k keys_bfu.plist -b systembag.kb -o keys.plist -p 0000

Если пароля на устройстве нет, параметр -p можно опустить.

В результате создастся новый файл keys.plist, содержащий все ключи, необходимые для расшифровки пользовательских данных.

Расшифровка образа диска

Для расшифровки образа диска (data.dmg) потребуется полный набор ключей шифрования (keys.plist). О том, как получить ключи с того же устройства, рассказано в предыдущем разделе.

Чтобы расшифровать образ диска, запустите следующую команду:

EIFT_cmd hfstool -i data.dmg -o data_dec.dmg -k keys.plist -j 16 -d

Примечание: параметр -j устанавливает количество потоков, используемых для расшифровки. На современных компьютерах рекомендуется использовать 16 потоков. Количество потоков можно увеличить или уменьшить в зависимости от вычислительной мощности компьютера.

По завершении расшифровки утилита выдаст отчёт об ошибках (если они есть) и статистику по расшифрованным файлам:

Summary
[.] Took      0 minutes and    0 seconds to unwrap 6107 filekeys [.] Took     0 minutes and    0 seconds to copy dmg
[-] Took      0 minutes and    2 seconds to decrypt files [*] Total files 6133
[*] Decryption succeded on 6107 files [*] Not decrypted 0 files
[*] Not encrypted files 26

Извлечение связки ключей

В связке ключей iOS хранит пароли пользователя. Каждая запись из связки ключей дополнительно зашифрована; для их расшифровки понадобится полный набор ключей шифрования, извлечённый ранее. Следующая команда извлечёт связку ключей из образа диска и расшифрует её содержимое:

EIFT_cmd tools keychain -i data.dmg -k keys.plist -o keychain.xml

Не имеет значения, зашифрованный или расшифрованный образ подаётся на вход команде. Если образ зашифрован, необходимые файлы будут расшифрованы на лету.

В результате работы команды создастся новый файл с именем keychain.xml.

Окончание работы с устройством

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

EIFT_cmd tools autobootTrue

Заключение

Новый способ доступа к данным в устаревших устройствах Apple позволяет сделать с устройствами практически всё, от восстановления кода блокировки экрана до извлечения и расшифровки образа раздела данных и связки ключей. Способ полного извлечения гарантирует целостность и неизменность данных, обеспечивая криминалистическую чистоту исследования.


  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

REFERENCES:

Elcomsoft iOS Forensic Toolkit

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

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

НАШИ НОВОСТИ