Статьи

 Что такое сheckm8?

В октябре 2019 года появилась новость о некотором компьютерном энтузиасте под ником axi0mX, который опубликовал в свободном доступе эксплойт, позволяющий получить права суперпользователя на всех устройствах Apple, выпущенных в период с 2011 по 2017 год. Особенностью этого эксплойта является тот факт, что уязвимость, на которой он основан, нельзя исправить программно (в виде обновления ПО или перепрошивки устройства), так как брешь кроется в неперезаписываемой (read-only) памяти устройства. Следовательно, все iOS-устройства с данной уязвимостью, будут подвержены ей всегда, вне зависимости от версии прошивки.

 Что возможно реализовать, используя сheckm8 как основу?

Создание checkm8 открыло множество новых перспектив. Стало реальным осуществление запуска яблочного смартфона с кастомной версией операционной системы, копирования всех его данных и отката устройства на предыдущие версии. В теории на устройстве можно даже запустить Linux или Android. Более того, появился доступ к отладочному режиму процессора — теперь можно настраивать его работу на аппаратном уровне через интерфейс JTAG с помощью специального кабеля. По умолчанию настройки такого рода могут быть только на специальных версиях устройств для разработчиков, так как в них присутствует особая метка, проверив которую, система дает доступ к JTAG-отладке. С помощью сheckm8 можно установить упомянутую метку и на обычном устройстве. Наконец, сheckm8 послужил отправной точкой для создания полупривязанного джейлбрейка, который подходит для любого из уязвимых устройств, независимо от установленной версии iOS. В ноябре 2019 года разработчик из Италии, Лука Тодеско, представил миру checkra1n, но обо всем по порядку.

 Что уже получилось осуществить?

На данный момент с использованием эксплойта сheckm8 реализованы следующие возможности:

  • создание физического образа SecureROM (bootrom), первого этапа загрузки устройства;
  • предоставление доступа к аппаратным функциям шифрования и дешифровки данных с использованием встроенных ключей GID/UID;
  • предыдущий пункт, в свою очередь, дает возможность расшифровки ключей для файлов прошивки iOS;
  • включение отладочного интерфейса JTAG (для работы с ним необходимо дополнительное оборудование и ПО);
  • осуществление загрузки устройства с отображением на экране журнала событий (только для iPhone X);
  • загрузка образов файлов img4 (iBSS/LLB), исполняемых после первоначальной загрузки устройства (SecureROM), как в DFU-режиме с примененным эксплойтом, так и с отключенной проверкой сигнатур. 

Специалистами компании «Оксиджен Софтвер» реализована собственная утилита, которая  обладает функцией получения полного доступа к файловой системе и данным Keychain широкого модельного ряда яблочных устройств:  iPhone 6 (iOS 12.4.4 – 12.4.8), iPhone 6s, iPhone 6s Plus, iPhone SE (1st gen) (iOS 12.4 – 13.6), iPhone 7, iPhone 7 Plus, iPhone 8, iPhone 8 Plus и iPhone X (iOS 13.0 – 13.6), iPad (5th gen) (iOS 12.4 – 13.6), iPad Pro и iPad (6th gen) (iOS 13.0 – 13.6). Извлечение необходимой информации происходит путем автоматического применения уязвимости checkm8. Также данный инструмент работает и с iOS-устройствами с предварительно установленным Jailbreak.

 Чем ограничен сheckm8?

Несмотря на все свои сильные стороны, checkm8  имеет определенные ограничения по применению. Во-первых, уязвимость может эксплуатироваться только в оперативной (энергозависимой) памяти. То есть после выключения или перезагрузки исследуемого устройства, оно запустится в обычном режиме, и эксплойт/Jailbreak нужно будет применять заново. Во-вторых, используя checkm8, невозможно реализовать обход либо быстрый перебор пароля, так как обработка его или биометрических данных и связанное с ними шифрование реализованы в отдельном процессоре (secure enclave processor), на который эксплойт не оказывает никакого влияния. Но checkm8 при всех его достоинствах и недостатках открыл дорогу к созданию сheckra1n. Давайте подробнее поговорим о том, что это такое.

 Что такое сheckra1n? 

Сheckra1n — это полупривязанный Jailbreak, основанный на эксплойте checkm8. По сути, разработчики checkra1n, используя доступ к исполнению своего кода на первом этапе загрузки iOS (эту возможность и дает checkm8), изменили всю ее последующую цепочку и саму операционную систему таким образом, что после её загрузки мы получаем root-доступ к файловой системе гаджета и исполнению любого неподписанного кода.

 Поддержка устройств и версий iOS на практике

Наши специалисты внимательно изучили список официально поддерживаемых устройств на сайте сheckra1n и пришли к выводу, что данный Jailbreak может также поддерживаться другими устройствами, основываясь на модели их чипсетов (колонка №3 в таблице ниже).

 

 

 Как установить checkra1n и использовать его (macOS)?

  • скачайте необходимую для вашего устройства версию checkra1n с официального сайта;
  • запустите скачанный .dmg файл двойным кликом;
  • в открывшемся окне перенесите иконку checkra1n в папку Applications.

 Как установить checkra1n и запустить его в режиме графического интерфейса (GUI mode)?

Для запуска и установки checkra1n в режиме графического интерфейса:

  • перейдите в папку Applications (Программы) на macOS;
  • правой кнопкой мыши нажмите на иконку checkra1n, и в выпадающем меню нажмите «Открыть» ;
  • если появилось подобное окно, нажмите «Открыть» ;

  • если приложение не открылось, запустите снова, так же правой кнопкой мыши, либо двойным кликом;
  • подключите устройство, дождитесь пока оно определится и нажмите «Start»;
  • нажмите  «Next» : устройство будет переведено в режим восстановления (recovery mode);

  • нажмите «Start» и переведите устройство в режим DFU, следуя инструкциям (зажмите вместе клавишу питания и кнопку «Домой» на телефоне, затем отпустите клавишу питания, но удерживайте кнопку «Домой»);

 

  • в том случае, если эксплойт не сработает, нажмите «Retry» и пробуйте снова;
  • дождитесь завершения установки;

  • после завершения установки приложение checkra1n будет добавлено на домашний экран исследуемого устройства. 

 Примечание: если устройство зависло в режиме DFU (черный экран) либо на этапе внесения изменений в ядро системы (отображается бегущий текст лога на экране устройства), необходимо одновременно зажать клавишу питания и кнопку «Домой» (либо кнопку уменьшения громкости) для перезагрузки устройства.

 Как запустить checkra1n в режиме командной строки (CLI mode) на macOS?

  • для запуска checkra1n в консольном режиме запустите приложение «Терминал» на macOS;
  • переноите файл «checkra1n.app» в папку «Applications» на macOS;
  • в командную строку терминала введите следующие команды:

 

 

  • запустится консольная версия checkra1n,  ожидающая подключения устройства в DFU-режиме, после чего автоматически установится jailbreak.

Важные отличия в функционале консольного и графического режимов

при запуске checkra1n в консольном режиме отсутствует проверка модели устройства и версии iOS, то есть не определяется, являются ли они официально поддерживаемыми. Практика показала, что любая версия checkra1n устанавливается на устройства с iOS 13.2.3 - 13.3.1 из консольного режима.

Важные отличия в версиях релизов checkra1n

  • при установке версий checkra1n 0.9.6, 0.9.7 и 0.9.8  на устройства с версией iOS 13.2.3 - 13.3.1, после перезагрузки гаджета включается режим ограничения передачи данных по USB (USB Restricted Mode), пока устройство не будет разблокировано; включение данного режима не дает checkra1n закончить установку, соединение SSH работать не будет;
  • иногда, при установке checkra1n 0.9.7, USB Restricted Mode включается и на более ранней версии iOS — 12.4 (причины и зависимости на данный момент не установлены);
  • при работе с более ранними версиями checkra1n (от 0.9 до 0.9.5), не зависимо от версии iOS, USB Restricted Mode не активируется, следовательно эти версии checkra1n можно устанавливать без разблокировки устройства, получив доступ к соединению SSH;
  • при установке версий checkra1n 0.9.6, 0.9.7 и 0.9.8  на смартфоны с уже активированным режимом USB Restricted Mode, вне зависимости от версии iOS, режим ограничения передачи данных по USB включится после перезагрузки устройства, установка checkra1n не будет закончена.

Что и когда можно извлечь из устройства?

  • если неизвестен пароль и активирован USB Restricted Mode;

Если после установки checkra1n и загрузки устройства включился USB Restricted Mode (появилось уведомление на экране телефона, как на скриншоте ниже), то извлечь из него ничего не получится.  Необходимо перезагрузить устройство и попробовать заново (используя checkra1n от 0.9 до 0.9.5).

 

 

  • если неизвестен пароль и не активирован USB Restricted Mode;

Когда пароль нам неизвестен, то предпочтительно использовать checkra1n от 0.9 до 0.9.5. Если USB Restricted Mode не включен, в таком случае возможно  проведение «Before First Unlock» извлечения и получение части данных (часть файлов, часть Keychain)

  • если пароль от устройства известен.

В данном случае USB Restricted Mode не имеет значения, извлечение производится на разблокированном устройстве и открывается доступ вообще ко всем данным, хранящимся на нем, включая данные секретного хранилища Keychain.

Следы использования checkra1n

Если при работе с checkra1n, вы устанавливали приложение Cydia, для удаления явных следов использования checkra1n необходимо воспользоваться сторонней инструкцией. В том случае, если Cydia не использовалась, достаточно просто перезагрузить устройство.

Но стоит учитывать, что после окончательной перезагрузки устройства, иконка checkra1n может исчезнуть не сразу. После осуществления приведенных действий и удаления явных следов использования checkra1n, в файловой системе устройства могут оставаться файлы, относящиеся к checkra1n, но в директориях недоступных без Jailbreak.

Версии checkra1n для Windows и Linux

С выходом checkra1n 0.9.8 стала доступна его официальная версия для ПК на платформе Linux. Чтобы использовать Linux-версию необходимо:

  • скачать требуемую версию сборки с официального сайта;
  • открыть приложение «Terminal» в Linux;
  • в консоль приложения необходимо ввести следующие команды:

 

 

  

Для установки checkra1n из ПК на Windows официальной версии Jailbreak пока что представлено не было, но есть неофициальное решение (основано на запуске Hackintosh). Дополнительное решение существует и для Linux (основано на запуске виртуальной машины macOS на виртуальной машине Linux), но оно также неофициально.

Вывод:

Можно ли сказать, что checkm8 стал новым мессией для Jailbreak-сообщества? Определенно да. Прошло много времени с тех пор, как был выпущен предыдущий эксплойт bootrom для широкой публики. Именно благодаря checkm8 был разработан Jailbreak, обладающий широким спектром использования. А что вы думаете по этому поводу?