Perfect Acquisition — самый надёжный метод извлечения данных с устройств на iOS из всех, разработанных нашей компанией. Этот способ соответствует всем требованиям цифровой криминалистики: результат полностью повторяем, а при его использовании не изменяется ни один бит файловой системы. Если устройство поддерживает Perfect Acqsuition, то применять нужно именно этот метод — и только его. В данной статье описан весь процесс — от получения дампа данных до расшифровки и монтирования образа для анализа.
Ранее технология Perfect Acquisition была доступна только для 32-битных устройств Apple — от iPhone 3GS до iPhone 5c, но теперь поддерживаются и 64-битные iPhone 6 и iPhone 6 Plus (чип A8), а также iPod Touch 6, iPad Mini 4, iPad Air 2, приставки Apple TV 4 (HD) и колонки HomePod первого поколения. Отметим, что перебор кода блокировки на сопроцессорах SEP в доступном коммерческом продукте появился для этих моделей впервые.
Технологией поддерживаются все версии iOS, начиная с iOS 8.0. Поддержка iOS 12.1.1 и более новых на устройствах с чипами A8 пока находится в экспериментальной стадии; скорость перебора паролей на таких устройствах — несколько минут на каждый пароль.
Внимание: код блокировки может быть установлен только на iPhone 6, iPhone 6 Plus, iPod Touch 6, iPad Mini 4 и iPad Air 2. Приставки Apple TV 4 (HD) и колонки HomePod первого поколения код блокировки экрана не поддерживают, но на них может быть установлена tvOS/audioOS 26, которая также поддерживается методом Perfect Acquisition.
Perfect Acquisition включает следующие этапы:
Примечание: Перед вами — краткое описание; не полноценное руководство, а скорее последовательность действий с примерами команд. Многие важные детали намеренно опущены и будут раскрыты в отдельной, более подробной статье.
В процессе извлечения устройство потребуется загрузить дважды — двумя разными способами. Первая загрузка используется для извлечения критически важной информации из SEP, которая необходима для следующего шага. Эти данные автоматически сохраняются в кэше инструментария, и при последующей загрузке автоматически подставляются при использовании эксплойта SEP, который и предоставит доступ к криптографическим ключам, необходимым для расшифровки пользовательских данных. После второй загрузки открывается возможность запустить восстановление кода блокировки и расшифровки keybag («сумки ключей»), необходимой для физического извлечения данных.
На первом шаге загрузите устройство известным вам образом, подключив его к компьютеру в режиме DFU:
./EIFT_cmd boot -w
После срабатывания эксплойта загрузчика инструментарий определит установленную версию iOS и запросит соответствующую прошивку. Для старого способа извлечения требовалось строгое соответствие; для нового — выберите первый вариант из предложенных. В большинстве случаев он сработает; если нет — попробуйте со вторым вариантом:

Вы можете загрузить ту ОС, которая установлена на устройстве — это режим классического извлечения (без взлома кода блокировки). Для работы механизма Perfect Acquisition, включающего восстановление кода блокировки экрана, выберите первую в списке версию — в данном случае iOS 11.4.1, независимо от того, какая версия установлена (от iOS 8 до iOS 12). В редких случаях можно попробовать другую версию (например, 12.5.7), но обычно это не требуется.
Теперь загрузите Salvietta — так называется мини-ОС нашей разработки, которая будет загружена в Secure Enclave:
./EIFT_cmd ramdisk salviettaboot
После первого запуска salviettaboot отобразится сообщение “Done configuring SEP, please reboot the device to finish SEP exploit!”; iPhone будет перезагружен. Это штатное поведение; так и должно быть. После этого повторите команды boot и salviettaboot — на второй попытке всё сработает.

Когда на экране устройства появится сообщение «Exploited», можно приступать к извлечению диска (раздел данных для HFS, или весь контейнер APFS):
./EIFT_cmd ramdisk diskdump -o data.dmg
Примечание: Убедитесь, что указанного в параметре -o файла на диске не существует. В противном случае процесс завершится с ошибкой.
Обратите внимание на файловую систему устройства — некоторые из последующих команд отличаются для HFS и APFS. Если известна версия iOS, ориентируйтесь на неё: APFS используется начиная с iOS 10.3, HFS — в более ранних версиях. Пример вывода для APFS:
APFS Volumes:
/dev/disk0s1s1 (Donner12H321.N61OS) [NONE]
Snapshot: orig-fs
/dev/disk0s1s2 (Data) [NONE]
/dev/disk0s1s3 (Baseband Data) [NONE]
[INFO] [*] APFS filesystem detected!
Если используется HFS, возможна ошибка о возможном повреждении файловой системы. В таком случае прервите процесс, удалите файл data.dmg и повторите команду с флагом --unclean.
Также (опционально) можно извлечь и системный раздел, если используется HFS (это может быть полезно, если есть подозрение на взлом устройства или вредоносное ПО):
./EIFT_cmd ramdisk diskdump --system -o system.dmg
Примечание: При использовании APFS системный том всегда включается в дамп автоматически.
Начните с извлечения ключей BFU (Before First Unlock), не защищённых паролем. Многие ключи, включая те, что требуются для расшифровки пользовательских данных, хранятся в системной сумке ключей (keybag), которую нужно расшифровать на устройстве, если известен (или был подобран) код блокировки экрана:
./EIFT_cmd ramdisk dumpkeys -n -o keys_bfu.plist
Затем извлеките системный keybag.
./EIFT_cmd fstool -i data.dmg -B systembag.kb -k keys_bfu.plist
Теперь можно приступать к подбору кода блокировки (если он не известен). В настоящий момент поддерживаются только цифровые PIN-коды. Перебор выполняется в Salvietta и реализован полностью в рамках SEP:
./EIFT_cmd ramdisk passcode -b systembag.kb -k keys_bfu.plist
Примечание: Для 4- и 6-значных цифровых кодов длина определяется автоматически. Для других вариантов потребуется указать длину пароля; за информацией обратитесь к полному руководству пользователя.
Скорость перебора — в точности 26.2 пароля в секунду, всё происходит непосредственно на устройстве.

После восстановления кода блокировки извлеките полный набор ключей (нужно будет указать PIN-код):
./EIFT_cmd ramdisk dumpkeys -k keys_bfu.plist -b systembag.kb -o keys.plist -p <PASSCODE>
Пример (PIN-код 123456):
./EIFT_cmd ramdisk dumpkeys -k keys_bfu.plist -b systembag.kb -o keys.plist -p 123456
Если код блокировки не установлен, в указанной команде просто опустите параметр -p; полный набор ключей всё равно нужно будет извлечь.
На этом этапе все действия с физическим устройством завершены. У вас есть все необходимые данные для анализа.
С извлечённым образом можно поступить одним из двух способов. Рекомендуемый — монтирование с помощью EIFT; это работает как для образов HFS, так и APFS. Такой способ обеспечивает удобный доступ к файловой системе и упрощает анализ. Всё, что вам для этого понадобится — только сам EIFT, образ данных и ключи. Способ работает на всех поддерживаемых инструментарием платформах, включая macOS, Linux и Windows (не забудьте установить FUSE: macFUSE в macOS, FUSE в Linux, WinFsp в Windows).
./EIFT_cmd fstool -i data.dmg -k keys.plist --mount
После монтирования вы можете проанализировать данные с помощью стороннего ПО: Magnet AXIOM, Cellebrite Physical Analyzer или бесплатных утилит, таких как iLEAPP.
Наконец, извлеките связку ключей:
./EIFT_cmd tools keychain -i data.dmg -k keys.plist -o keychain.xml
Perfect Acquisition — надёжный и повторяемый процесс извлечения данных из ряда устройств Apple. С его помощью можно получить полный доступ ко всей зашифрованной информации без нарушения целостности данных. Рекомендуем всегда сохранять оригинальные дампы, а любые изменения вносить только в их копии. Обязательно фиксируйте каждый шаг для соблюдения криминалистической чистоты исследования.
Продолжение следует
В следующих публикациях мы подробнее расскажем об эксплойте SEP, который лёг в основу технологии Perfect Acquisition, а также о нашей собственной ОС Salvietta, которая работает в SEP без участия SEPOS от Apple. Мы поговорим и о некоторых дополнительных сценариях — например, об извлечении данных из устройств, заблокированных после 10 неудачных попыток разблокировки.
Elcomsoft iOS Forensic Toolkit – специализированный инструмент для проведения криминалистического анализа устройств, работающих под управлением Apple iOS. Для анализа доступна вся пользовательская и системная информация, а также зашифрованные данные из системного хранилища (связка ключей).