Перед вами — пятая часть серии Perfect Acquisition о технологии «идеального извлечения». Если вы пропустили предыдущие части, рекомендуем ознакомиться с ними — в них описано, как мы пришли к «идеальному» извлечению. Сегодня же мы расскажем о том, как эта технология работает в случаях, когда на устройстве вместо файловой системы HFS установлена APFS.
Предыдущие статьи из серии:
В предыдущих статьях мы описали внутреннее устройство iOS и представили концепцию идеального получения. С тех пор мы постоянно работали над устранением ограничений и расширением возможностей технологии с целью поддержки большего количества устройств, реализуя наше видение инструментов и методов криминалистического анализа.
В этой статье мы расскажем, как нам удалось преодолеть одно из из двух серьёзных ограничений технологии, добавив поддержку файловой системы APFS. Если вы знаете, как работали ранние версии iOS, необходимость поддержки APFS может показаться неочевидной: «идеальное извлечение» в текущем виде поддерживает только 32-разрядные устройства без SEP; при этом ни одного 32-разрядного iPhone, который использовал бы APFS, просто не существует. Единственное известное нам устройство Apple, которое использует APFS, но не имеет SEP — это самая первая модель часов Apple Watch, так называемые «Series 0», или S0.
Технология Perfect Acquisition работает со следующими устройствами:
На данный момент технология не поддерживает iPhone 2G, iPhone 3G, iPod Touch 1 и iPod Touch 2. Возможно, это когда-нибудь изменится.
Следующие устройства поддерживаются целиком и полностью:
Оригинальные часы под названием “Apple Watch” стали первой моделью умных часов от Apple. Устройство было выпущено в четырёх версиях: Apple Watch, Apple Watch Sport, Apple Watch Hermès и Apple Watch Edition. Внутреннее обозначение этих моделей было таким: Watch1,1 и Watch1,2; все версии поставлялись с watchOS 1.0, получив обновления до watchOS 4.3.2 включительно.
Не путайте первую модель часов Apple с линейкой “Apple Watch Series 1” (внутренний идентификатор Watch2,6 и Watch2,7), которая являлась вторым поколением часов и работала на том же чипе, который впоследствии был использован в часах Series 2. В профессиональных кругах оригинальная модель Apple Watch известна как “Apple Watch Series 0”, «нулевая модель» или “S0.” С потребительской точки зрения эта модель не представляет интереса, но с точки зрения криминалистики это бесценный клад: часы синхронизируются с iPhone, но при этом уровень их безопасности намного ниже, чем у iPhone, к которому они привязаны. Часы S0 работают на 32-разрядном чипе ARMv7k, у которого нет встроенного сопроцессора SEP, и при этом есть файловая система APFS (по крайней мере, в поздних версиях ОС).
Таким образом, эта древняя модель стала идеальным вариантом для изучения механизмов шифрования APFS — без необходимости вытаскивать ключи из SEP. Использовав часы S0, нам удалось заметно продвинуться в реализации поддержки APFS, что позволило нам добавить поддержку расшифровки и анализа данных из образов iOS/WatchOS с файловой системой APFS.
Поскольку технология Perfect Acquisition работает на очень низком уровне и требует глубокого понимания взаимодействия всех компонентов, превращение одной попытки ввода ключа в множество оказалось задачей элементарной. Именно поэтому мы реализовали и поддержку перебора код-пароля для Apple Watch S0.
К слову, Apple Watch не поддерживают сложные буквенно-цифровые пароли, а длина цифрового кода блокировки строго ограничена — максимум 10 цифр на современных моделях.
При скорости перебора 26 кодов в секунду (непосредственно на устройстве), время взлома кодов разной длины составляет примерно:
Длина | Время |
4 цифры | 6 минут |
5 цифр | 1 час |
6 цифр | 10 часов |
7 цифр | 5 дней |
8 цифр | 1.5 месяца |
9 цифр | 15 месяцев |
10 цифр | 12 лет |
С другой стороны, как часто вам встречались часы хотя бы с 6-значным паролем? До сих пор подавляющее большинство пользователей устанавливает на часы пароли из 4 цифр даже на свежих моделях часов.
С точки зрения пользователя между извлечением HFS и APFS посредством Perfect Acquisition много общего и мало различий. Большая часть команд не изменилась.
Шаг 1) Загрузите EIFT ramdisk:
./EIFT_cmd boot -w
Шаг 2) Снимите образ диска:
./EIFT_cmd ramdisk diskdump -o data.dmg
Шаг 3) Извлеките ключи BFU:
./EIFT_cmd ramdisk dumpkeys -n -o keys_bfu.plist
У вас на руках — идеальный образ. Теперь этот образ останется доступным даже если само устройство будет сброшено. Тем не менее, вам понадобится извлечь ищё один набор ключей — из того же самого устройства.
Шаг 4) Извлеките системную сумку ключей (system keybag):
./EIFT_cmd apfstool -i data.dmg -p /keybags/systembag.kb -e -o systembag.kb -k keys_bfu.plist --no-passcode
В старых версиях watchOS использовалась файловая система HFS. В этом случае вместо apfstool
укажите hfstool
— и это единственное различие в командах:
./EIFT_cmd hfstool -i data.dmg -p /keybags/systembag.kb -e -o systembag.kb -k keys_bfu.plist --no-passcode
К нашему сожалению, Apple не предлагает полных образов прошивок IPSW для часов Apple Watch, так что нам не удалось понизить прошивку и проверить работу так же, как мы это делаем для каждой версии iOS с официальной поддержкой нашими инструментами.
Команда diskdump
в EIFT отобразит эту информацию. Либо выполните команду:
./EIFT_cmd info
Пример работы:
[INFO] Commandline args: ramdisk diskdump -o data.dmg
[INFO] Got device:
Mode: [ramdisk]
CPID: 7002
BDID: 4
KernelVersionBooted: xnu-4570.70.24~1
PlatformUUID: <PUUID>
ProductType: Watch1,2
udid: <UUID>
Mounts:
[RW] (hfs) /dev/md0 -> /
[RW] (devfs) devfs -> /dev
APFS Volumes:
/dev/disk0s1s1 (Bahar13S661.N28aOS) [NONE]
Snapshot: com.apple.os.update-740A86696B3644B57CC6DE4400FB720F0C55620E
/dev/disk0s1s2 (Data) [NONE]
[INFO] [*] APFS filesystem detected!
[INFO] Writing dump to 'data.dmg'
[INFO] Dumping full disk! (APFS)
Обращайте внимание на строки вида [INFO] [*] APFS filesystem detected!
и списки контейнеров APFS. Если же APFS нигде не упоминается, то файловая система — HFS.
Шаг 5) Подберите код блокировки (если он неизвестен):
./EIFT_cmd ramdisk passcode -b systembag.kb -k keys_bfu.plist
Шаг 6) Извлеките полный набор ключей:
./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
, полный набор ключей для расшифровки.
Поздравляем — процесс «идеального извлечения» завершён. Само устройство вам больше не понадобится; у вас на руках — полный набор информации для расшифровки всех данных.
По меркам специалистов компьютерной криминалистики файловая система APFS считается относительно новой. В отличие от HFS+, которая существует почти 30 лет, APFS появилась в iOS только в конце 2017 года и с тех пор несколько раз менялась — причём некоторые изменения нарушали обратную совместимость.
К сожалению, насколько нам известно, ни один коммерческий инструмент для цифровой криминалистики не поддерживает работу с «сырыми» дампами APFS из iOS (они немного отличаются от дампов macOS, не основанных на Apple Silicon). Даже если удаётся расшифровать такой дамп (что само по себе сложнее, чем с HFS), готовых решений для дальнейшего анализа данных всё равно не существует.
Что досадно, ведь APFS — настоящая находка для экспертов: она поддерживает транзакции и механизм «copy-on-write», что позволяет восстанавливать недавно удалённые файлы, а иногда отслеживать историю последних изменений.
Тем не менее, пока не появятся полноценные инструменты с поддержкой APFS, доступ к данным всё равно нужен, и его нужно как-то получить. Поэтому мы разработали поддержку APFS на основе FUSE и включили его в состав EIFT. Он позволяет монтировать извлечённый так же, как самый обычный USB-накопитель, и работает на macOS, Linux и Windows (через macFUSE, FUSE и WinFSP соответственно).
Для монтирования образа:
./EIFT_cmd apfstool -i data.dmg -k keys.plist --mount
Можно монтировать и образы HFS (довольно полезно, особенно в Windows):
./EIFT_cmd hfstool -i data.dmg -k keys.plist --mount
Точка монтирования всегда доступна только для чтения (и изменить это невозможно), что соответствует стандартам судебной экспертизы. Расшифровка файлов происходит «на лету» с использованием полного набора ранее извлечённых ключей.
Также вы можете извлечь связку ключей:
./EIFT_cmd tools keychain -i data.dmg -k keys.plist -o keychain.xml
В этой статье мы представили Perfect APFS Acquisition — важное расширение методики «идеального извлечения» Perfect Acquisition, которое устраняет одно из оставшихся ограничений и добавляет поддержку Apple Watch S0.
Мы кратко рассказали об особенностях устройства S0 и файловой системы APFS, а также привели пошаговые инструкции, которые помогут с извлечением данных из этого уникального устройства.
Сама эта функция довольно давно реализована в EIFT, но ранее мы не объявляли о ней официально из-за того, что часы S0 крайне редко встречаются в реальной практике. Для чего мы делаем это сейчас? Мы готовим к выпуску обновление, которое устранит последнее оставшееся ограничение — поддержку перебора кодов блокировки внутри SEP.
Следите за нашими новостями — впереди ещё много интересного!
Elcomsoft iOS Forensic Toolkit – специализированный инструмент для проведения криминалистического анализа устройств, работающих под управлением Apple iOS. Для анализа доступна вся пользовательская и системная информация, а также зашифрованные данные из системного хранилища (связка ключей).