iPhone 5c был последним смартфоном Apple, основанным на 32-битном процессоре. В то же время это — знаковая модель, получившая широкую известность после инцидента в Сан-Бернардино. Пять лет назад взлом 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: поддерживаются только версии до 8.1 включительно. Второй недостаток — низкая скорость перебора: порядка шести секунд на попытку, 17 часов на взлом четырехзначного PIN-кода.

Еще одной попыткой стало решение за авторством Сергея Скоробогатова. В своем проекте «Анализ безопасности Apple iPhone 5c» Сергей продемонстрировал атаку, позволяющую подобрать код блокировки iPhone 5c. У метода, предложенного Сергеем, также есть недостатки. Во-первых, телефон потребуется разобрать, что не каждому по силам. Второй недостаток тот же, что и у IP-BOX: скорость перебора не превышает одного пароля в пять секунд. Сам Сергей утверждает, что взломать четырехзначный код доступа можно примерно за сутки, а перебор шестизначного 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 (кнопка блокировки на верхнем торце устройства) и удерживаем их в течение восьми секунд (на некоторое время на экране появится логотип Apple).
  • Отпускаем кнопку Sleep/Power, но продолжаем удерживать Home еще восемь секунд.

Если все сделано правильно, экран аппарата останется черным, а в 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».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Оставить мнение