Тот самый 5c. Как мы создали софтверный метод вскрытия знаменитого iPhone 5c

iPhone 5c стал последним смартфоном от Apple, основанном на 32-битном процессоре. В то же время iPhone 5c – знаковая модель, получившая широкую известность после инцидента в Сан-Бернардино. Пять лет назад взлом iPhone 5c террориста из Сан-Бернардино стал камнем преткновения и причиной жаркого спора между Apple и ФБР. Сегодня же взломать такой аппарат можно быстро и достаточно просто.

Чем интересен iPhone 5c, по любым меркам – серьёзно устаревший телефон? Как минимум, двумя вещами. С технической точки зрения это – последняя модель iPhone, в которой нет сопроцессора Secure Enclave, что позволяет получить полный доступ к его содержимому, включая все без исключения ключи шифрования. Взлом iPhone этой модели – по сути, последняя оставшаяся возможность покопаться во внутренностях подсистемы безопасности iOS, которая в более новых моделях становится недоступной из-за аппаратной защиты.

Но интересна эта модель не только с технической, но и с политической точки зрения. Именно эта модель стала камнем преткновения и точкой столкновения интересов Apple и Федерального бюро расследований.

 

Историческая справка

Являясь, по сути, проходной бюджетной моделью, iPhone 5c стал печально известным после террористической атаки в Сан-Бернардино в декабре 2015 года. Принадлежавший работодателю стрелка телефон этой модели оказался заблокирован неизвестным ни самому работодателю, ни спецслужбам паролем из четырёх цифр. Более того, устройство было настроено на уничтожение всех данных после десяти неудачных попыток подобрать пароль. Судорожные метания привели к поспешным поступкам. Работодатель террориста изменил пароль от iCloud, что привело к невозможности создания свежей резервной копии в облаке. Работа спецслужб застопорилась; для извлечения информации из телефона был нужен код блокировки.

Технических средств для взлома таких устройств в те годы не существовало. Федеральное бюро расследований потребовало, чтобы в Apple создали программное обеспечение, которое позволило бы ФБР разблокировать iPhone 5c террориста. В Apple отказались создавать такое программное обеспечение (хотя чисто технически могли это сделать, не напрягаясь). Было назначено судебное слушание. Однако за день до него обвинение потребовало отсрочки, заявив о существовании третьей стороны, способной помочь в разблокировке. Ещё через несколько дней было объявлено, что ФБР удалось разблокировать аппарат. Слушание не состоялось, иск был отозван.

До сих пор официально неизвестно, каким методом воспользовалось ФБР для получения пароля и кто его разработал. Однако нам известна примерная сумма, уплаченная за взлом устройства: директор ФБР Джеймс Коми сообщил в интервью, что взлом телефона обошёлся ФБР более чем в 1,3 миллиона долларов. Впрочем, имя подрядчика так и не обнародовали. Некоторые анонимные источники утверждают, что подрядчикам была израильская компания Cellebrite, которая не опровергла, но и не подтвердила этот факт. Однако The Washington Post сообщила, что, по словам очередных анонимных «людей, знакомых с вопросом», ФБР заплатило «профессиональным хакерам», которые использовали неопубликованную уязвимость в программном обеспечении iPhone.

 

Альтернативы

У предложенного нами способа взлома iPhone 5c есть несколько альтернатив. В первую очередь, конечно же, нужно упомянуть сугубо коммерческие продукты и сервисы компании Cellebrite. Эти решения доступны исключительно правоохранительным органам, причём не каждой страны, а их стоимость составляет десятки тысяч долларов.

В своё время перебирать коды блокировки можно было при помощи аппаратного «чёрного ящика» IP-BOX и его клонов. Основной недостаток всех этих устройств в том, что они не работают с современными версиями iOS: поддерживаются только версии iOS до iOS 8.1 включительно. Второй недостаток – низкая скорость перебора: порядка 6 секунд на попытку, 17 часов на взлом четырехзначного PIN-кода.

Ещё одной попыткой стало решение за авторством Сергея Скоробогатова. В своём проекте «Анализ безопасности Apple iPhone 5c» Сергей продемонстрировал атаку, позволяющую подобрать код блокировки iPhone 5c. У метода, предложенного Сергеем, также есть недостатки. Во-первых, телефон потребуется разобрать, что не каждому по силам. Второй недостаток тот же, что и у IP-BOX: скорость перебора не превышает одного пароля в 5 секунд. Сам Сергей утверждает, что взломать четырехзначный код доступа можно примерно за сутки, а перебор шестизначного PIN-кода и вовсе бессмыслен.

 

Как это работает

Мы создали чисто программный метод, позволяющий запустить перебор паролей непосредственно на самом устройстве. Отвёртка и паяльник для этого не нужны; достаточно простого кабеля Lightning. Наш метод базируется на хорошо изученном эксплоите checkm8, который, впрочем, непригоден для запуска атаки на пароль в чистом виде. В настоящий момент мы реализовали атаку только с компьютеров Mac.

Процесс взлома iPhone 5c выглядит следующим образом.

Для начала нам нужно загрузить на устройство свой собственный кастомный ramdisk. Именно с него осуществляется перебор пароля. Загрузка кастомной (неподписанной) прошивки стала возможной благодаря BootROM эксплойту checkm8. Для загрузки устройства и отключения всех проверок выполняем следующие шаги.

 

Шаг 1. Переводим телефон в режим DFU

На первом шаге необходимо ввести устройство в режим DFU. Сделать это можно только вручную; никакой команды, которая могла бы это сделать, не существует. Для iPhone 5c обнаружено несколько вариантов перехода в нужный режим. Например, такой.

При использовании Elcomsoft iOS Forensic Toolkit будут выданы интерактивные инструкции.

Довольно простой нам кажется следующая последовательность.

Начальное состояние: телефон должен быть выключен и не подключён к компьютеру.

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

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

Всё готово к следующим шагам.

 

Шаг 2. Эксплоит DFU

На этом шаге проводим загрузку в режим pwned DFU по методу, который используется в эксплойте checkm8. Этот эксплоит интересен тем, что использует аппаратную уязвимость в загрузчике BootROM, которая не может быть исправлена обновлением прошивки. На устройствах с Secure Enclave (все 64-битные модели iPhone начиная с iPhone 5s) таким образом можно сделать джейлбрейк, но запустить быстрый перебор паролей не удастся: Secure Enclave ограничит скорость перебора на аппаратном уровне. А вот iPhone 5c – идеальный кандидат: аппаратного сопроцессора безопасности нет, можно делать практически что угодно.

Вопрос: зачем в таком случае взламывать код блокировки? Не проще ли сразу извлечь из телефона данные? Увы, без кода блокировки извлечь получится очень ограниченное количество информации. Основной массив данных будет зашифрован, а ключ вычисляется на основе кода блокировки, который вводит пользователь после загрузки устройства. При этом и вынести перебор за пределы iPhone тоже нельзя; проверка кода блокировки и вычисление ключей шифрования должна проводиться процессором самого устройства.

Однако продолжим. В результате работы эксплоита мы попадаем в режим, известный под неофициальным названием pwned DFU. Это всё ещё режим DFU (то есть, система не загружена), но у нас появился доступ к системным файлам (таким образом можно установить джейлбрейк checkra1n) и к Ramdisk устройства.

Нас сейчас интересует именно Ramdisk. Для запуска атаки на код блокировки нам нужно запустить наш собственный код. Однако для запуска неподписанного приложения одного лишь эксплоита мало, так как мы должны пропатчить проверку подписи на каждом этапе загрузки, а именно в файлах из прошивки iBSS, iBEC и kernelcache.

 

Шаг 3. Отключаем проверки подписи

На этом шаге мы патчим проверку подписи в iBSS. В iBEC же патчится не только проверка подписи, но и устанавливаются следующие параметры загрузки:

boot-args: "rd=md0 -v amfi=0xff cs_enforcement_disable=1"

Благодаря этим параметрам мы получаем verbose boot и отключаем проверку подписи у ядра.

Для загрузки устройства нужен ещё один файл – DeviceTree. Он представляет собой иерархическое описание аппаратных устройств, которые затем будет использовать ядро. Этот файл патчить не нужно.

Источник: xakep.ru

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *