Мы разработали принципиально новый способ разблокировки и извлечения данных, поддерживающий большинство устройств Apple, не оборудованных сопроцессором безопасности Secure Enclave. Для устаревших устройств, оборудованных 32-разрядными процессорами, стал доступен вариант разблокировки устройства с последующим полным физическим извлечением всех данных.
Новый метод используется в iOS Forensic Toolkit 8 для Mac и совместим со следующими устройствами независимо от версии iOS, под управлением которой они работают (за исключением самых первых iOS 1 и 2):
Обратите внимание: установка эксплойта на iPhone 4s (а также некоторых моделей iPad и одной из модификаций Apple TV 3) поддерживается посредством дополнительного аппаратного модуля, использование которого описано в соответствующей статье.
Для извлечения данных и подбора кода блокировки экрана мы разработали новый метод полного извлечения. Этот метод – лучший способ получить данные с устройств, не оборудованных аппаратным сопроцессором безопасности Secure Enclave. Он идеально подходит для криминалистического анализа, так как гарантированно не вносит никаких изменений в данные устройства и имеет ряд преимуществ по сравнению с другими методами.
Процедура извлечения состоит из нескольких этапов:
Рассмотрим каждый этап в подробностях.
При исследовании устройства iOS Forensic Toolkit первое, что необходимо сделать — это установить в загрузчике специальный флаг, благодаря которому при случайной перезагрузке устройство не станет загружать iOS, а запустится в режиме восстановления. Это помогает сохранить криминалистическую чистоту исследования в случае ошибок при вводе в режим DFU. Для этого достаточно загрузить устройство в режиме Recovery, после чего выполнить в терминале iOS Forensic Toolkit со следующим параметром:
EIFT_cmd tools autobootFalse
На первом шаге необходимо ввести устройство в режим DFU. Сделать это можно только вручную. Если одна из кнопок устройства не функционирует, см. статью Аппаратный ввод в режим DFU: когда не работают кнопки в дополнительных материалах.
Существует несколько вариантов, но мы рекомендуем такую последовательность:
Если всё сделано правильно, экран аппарата останется чёрным, а в 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 ключей выполните следующую команду:
EIFT_cmd ramdisk dumpkeys -n -o keys_bfu.plist
Для доступа к пользовательским данным необходим полный набор ключей шифрования, без него будет расшифровано только ограниченное число данных (BFU).
Важно: следующие действия необходимо выполнять на том же устройстве, с которого был снят образ диска.
Примечание: извлечь набор ключей можно проводить, даже если на устройстве произошли какие-то изменения с момента снятия образа диска. Эти изменения никак не повлияют на целостность образа, созданного ранее. Это относится только к keys.plist; у вас уже должен быть набор ключей BFU keys_bfu.plist.
Для извлечения системной сумки с ключами (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 позволяет сделать с устройствами практически всё, от восстановления кода блокировки экрана до извлечения и расшифровки образа раздела данных и связки ключей. Способ полного извлечения гарантирует целостность и неизменность данных, обеспечивая криминалистическую чистоту исследования.
Elcomsoft iOS Forensic Toolkit – специализированный инструмент для проведения криминалистического анализа устройств, работающих под управлением Apple iOS. Для анализа доступна вся пользовательская и системная информация, а также зашифрованные данные из системного хранилища (связка ключей).