В конце прошлого года специалист Google Project Zero опубликовал эксплоит для уязвимости, присутствующей во всех версиях iOS 10 и 11 вплоть до 11.1.2. На горизонте замаячила соблазнительная возможность джейлбрейка. Насколько оправдались ожидания любителей взлома устройств? Чем грозит существование уязвимости (и работоспособных джейлбрейков) обычным пользователям и чем она может быть полезна для хакеров? Попробуем разобраться.
 

При чем здесь Google?

В сообществе джейлбрейкеров в последние годы дела обстоят неважно. Во многом это связано не с тем, что свежие версии операционных систем как-то особенно безопасны, а с тем, какие деньги платят компании за найденные ошибки. Новые уязвимости найти очень и очень непросто, а когда их находят — чаще всего продают самой Apple или охотникам за уязвимостями. Соблазн заработать 50–100 тысяч долларов велик, и редко какие уязвимости становятся достоянием общественности.

И вот на сцене появляется Google — злейший друг Apple. Да, Apple платит огромные деньги за возможность хранить данные iCloud на серверах Google (напомним, iCloud — это управляемая Apple комбинация облачных серверов, принадлежащих Google, Microsoft, Amazon и AT&T), и да, Google выпускает свой софт для устройств под управлением iOS — но это ничуть не мешает компании публиковать информацию об уязвимостях, найденных в лаборатории Google Project Zero.

Последняя найденная уязвимость (о ней мы уже рассказывали) также обнаружена сотрудником лаборатории Google Йеном Биром. Уязвимость, названная tfp0 (производное от task_for_pid(0)), позволила исследователю написать готовый код для эскалации привилегий во всех версиях iOS 10, некоторых версиях macOS и iOS 11.0–11.1.2.

Google сообщила об уязвимости в Apple, Apple выпустила обновление iOS 11.2, которое закрыло уязвимость. Впоследствии информация о ней и готовый исходный код были опубликованы.

Такой ход со стороны Google был встречен неоднозначно как простыми пользователями, так и сообществом джейлбрейкеров. Многие пользователи посчитали, что Google перегибает палку; эта точка зрения не лишена оснований, особенно если вспомнить, что сведения об уязвимостях в ОС Microsoft сотрудники Google Project Zero публиковали еще до того, как Microsoft успевала выпустить заплатки.

Следует ли багхантерам публиковать информацию о найденных уязвимостях до выпуска заплаток?

Загрузка ... Загрузка ...

Неоднозначно приняли эту новость и участники сообщества джейлбрейкеров. Так, некоторые команды разработчиков выпустили свои версии джейлбрейков, просто использовав готовый код — даже не попытавшись интегрировать Cydia (доступную в виде исходных кодов). Джей Фримен (saurik) в интервью высказался откровенно негативно как о желающих поскорее выпустить сырые джейлбрейки на основе готового кода (получите и распишитесь!), так и о разработчиках, критикующих Cydia.

Тем не менее какими бы они ни были, но джейлбрейки есть. Давай посмотрим, как их устанавливать и чем они отличаются между собой. Но прежде — внимательно подготовимся к процедуре взлома.

 

Подготовка к джейлбрейку

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

Итак, что нужно проделать перед тем, как пытаться взломать устройство?

Просто создай свежую резервную копию данных при помощи iTunes. Обязательно задай пароль на резервную копию: даже если ты из тех, кому «нечего скрывать», наличие пароля на бэкапе позволит тебе восстановить все данные — в том числе и сохраненные пароли из связки ключей keychain, как на текущее устройство, так и на другой iPhone или iPad. А вот если ты пароль не установишь, то все ключи и пароли будут зашифрованы при помощи аппаратного ключа, в результате чего восстановить такую резервную копию в полном объеме ты сможешь только на тот же самый телефон или планшет, с которого создавал резервную копию. Если что-то пойдет не так, ты всегда сможешь восстановить телефон из бэкапа практически в том же виде, как и до джейлбрейка.

А вот сохранить блобы SHSH2 тебе, к сожалению, не удастся: Apple прекратила подписывать все прошивки, для которых доступны джейлбрейки. Исключение — старый iPhone 5 или 5c, для которого доступна (и до сих пор подписывается) iOS 10.3.3.

 

Установка

Все новые джейлбрейки, основанные на обнаруженной в Google Project Zero уязвимости, устанавливаются совершенно одинаково. Впрочем, и уже существующие джейлбрейки Yalu устанавливаются точно так же. Перечень шагов простой.

  1. Скачиваем IPA-файл джейлбрейка (ссылки — ниже) и приложение Cydia Impactor.
  2. Подключаем iPhone к компьютеру и устанавливаем доверительные отношения, подтвердив запрос «Trust this computer?» (обрати внимание: для iOS 11 на этом этапе потребуется ввести пароль блокировки устройства; для iOS 10 пароль не требуется).
  3. Запускаем Cydia Impactor и перетаскиваем на него IPA-файл джейлбрейка.


  4. Cydia Impactor запросит Apple ID и пароль. Вводим Apple ID и пароль от любой активной учетной записи Apple (кстати, запросто можно использовать новый, только что созданный аккаунт).


  5. IPA-файл будет подписан (сертификат действует всего семь дней!) и загружен в устройство. На этом еще не все; для того чтобы запустить файл, тебе нужно будет подтвердить, что ты доверяешь цифровой подписи.

  6. Чтобы подтвердить доверенность цифровой подписи, которой ты подписал IPA-файл в момент его загрузки на устройство, зайди в настройки Settings → General → Profiles → Profiles & Device management (если в системе установлен русский язык, то «Настройки → Основные → Профили» или «Профили и управление устройством»).



    Обрати внимание: для того чтобы подтвердить доверенный статус сертификата, тебе придется разрешить телефону выйти в интернет (как минимум — установить соединение с сервером ppq.apple.com). Подробно процедура описана здесь.

  7. Только после этого ты сможешь наконец запустить сам джейлбрейк. Если все пройдет успешно, телефон будет взломан и ты получишь доступ к файловой системе устройства.

Дальнейшее будет зависеть от конкретного джейлбрейка. Наличие (и возможность работы) Cydia, поддержка Cydia Substrate, возможность внедрения кода, обход защиты от запуска неподписанных приложений — все эти вещи могут присутствовать, а могут и не присутствовать в разных утилитах.

Общее для всех джейлбрейков — это ограниченное время их работы. После каждой перезагрузки устройства тебе придется заново запускать утилиту джейлбрейка на самом устройстве, а раз в семь дней — повторять весь процесс заново из-за того, что срок действия цифрового сертификата закончится. Исключение — наличие зарегистрированного аккаунта для разработчиков или корпоративного аккаунта с соответствующим Apple ID; впрочем, использовать такие аккаунты для подписи джейлбрейка — дело достаточно рискованное.

 

Утилиты для взлома iOS 10–11.1.2

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

  • h3lix (iOS 10.0–10.3.3, 32-bit);
  • Meridian (iOS 10.0–10.3.3, 64-bit);
  • g0blin (iOS 10.3.x, 64-bit, A7–A9 only);
  • LiberIOS (iOS 11.0–11.1.2);
  • Electra (iOS 11.0–11.1.2).

h3lix: iOS 10 для 32-разрядных устройств

h3lix — типичный представитель нового поколения джейлбрейков. Он поддерживает все 32-битные устройства, работающие под управлением всех версий iOS 10. Сюда входят iPhone 5, 5c, а также 32-битные iPad и iPod Touch. Разработчики включили в состав джейлбрейка Cydia, так что трудностей с установкой неподписанных приложений не возникает. Особых проблем с этим джейлбрейком мы не обнаружили, поэтому можем рекомендовать его для любых 32-разрядных устройств на всех версиях iOS 10.

Meridian: iOS 10 для 64-битных устройств

Джейлбрейк Meridian поможет взломать 64-разрядные устройства (iPhone 5s — iPhone X, а также планшеты iPad соответствующих поколений), работающие на любой версии iOS. В нашем тестировании данный джейлбрейк оказался исключительно капризным, так что, если твой телефон работает на iOS 10.2.1 или более старой, лучше используй Yalu или Saigon. Cydia есть в комплекте; для того чтобы магазин приложений заработал, не забудь нажать extract dpkg сразу после джейлбрейка.

g0blin: iOS 10.3.x, 64-бит, только для устройств на A7–A9

Особняком в теплой компании джейлбрейков стоит утилита g0blin, которая может взломать ограниченное число комбинаций устройств и версий iOS. В частности, поддерживаются модели от iPhone 5s до iPhone 7/Plus включительно, а также планшеты iPad, укомплектованные процессорами поколений A7, A8 и A9. Ограничены и поддерживаемые версии iOS: джейлбрейк работает только на iOS 10.3–10.3.3.

Для чего нужен такой узкоспециализированный джейлбрейк, если есть h3lix? G0blin работает чуть более стабильно, он лучше совместим с теми устройствами и версиями iOS, которые в нем поддерживаются. В первую версию (RC1) джейлбрейка входят сервис SSH (dropbear); во вторую (RC2) SSH не включен, и OpenSSH нужно устанавливать отдельно из Cydia.

iOS 11.0–11.2: LiberIOS и Electra

Для iOS 11 существует по крайней мере два готовых джейлбрейка: LiberIOS и Electra. Оба джейлбрейка используют один и тот же код, однако подходы разработчиков отличаются.

Так, разработчик LiberIOS крайне негативно относится к Cydia. Cydia не включена (и не будет включена) в состав утилиты, и использовать джейлбрейк можно разве что в чисто исследовательских целях.

А вот разработчик Electra включил в состав джейлбрейка как сервис SSH, так и магазин приложений Cydia. Именно этот джейлбрейк мы рекомендуем к использованию.

По какой еще причине джейлбрейк стал проблемой только в последние годы?

Загрузка ... Загрузка ...
 

Особенности джейлбрейка iOS 11

В утилитах для взлома iOS 11 применяется новый подход, названный KPP-less. KPP (Kernel Patch Protection) — механизм проверки целостности ядра, впервые использованный Apple в iOS 9. Этот механизм проверяет целостность ядра системы как в процессе загрузки, так и во время работы. Особенность механизма KPP в том, что очередная проверка может быть проведена в случайный момент времени. Если ты взломаешь устройство, а фоновая служба KPP обнаружит изменения в ядре системы — телефон просто перезагрузится. KPP был разработан Apple в первую очередь для защиты от джейлбрейка, но и против зловредного кода он тоже может помочь (по крайней мере в теории).

В классических джейлбрейках механизм KPP старались отключить. Этот подход назвали KPP bypass; именно он используется в джейлбрейках Pangu и Yalu.

В джейлбрейках iOS 11, основанных на новой уязвимости, разработчики решили обойти KPP другим способом. Теперь вместо того, чтобы модифицировать ядро, джейлбрейк модифицирует другие части системы — те, которые не проверяются механизмом KPP. Да, ничто не мешает Apple добавить проверку и этих областей файловой системы в очередном обновлении iOS — но ведь речь идет о «здесь и сейчас»!

Какие недостатки у нового способа? Он требует серьезной переделки Cydia Substrate, который полагается на отсутствие проверок KPP. На сегодняшний день единственный джейлбрейк, реализовавший поддержку Cydia на iOS 11, — Electra.

Если тебя заинтересовал механизм KPP и способы, которыми его обходят разработчики утилит для джейлбрейка, — тебе сюда: How Kernel Patch Protection Works and How Hackers Bypass KPP.

 

Возможность отката

Имей в виду: установка джейлбрейка в систему может оказаться необратимой. Это не значит, что ты не сможешь восстановить устройство через iTunes или сбросить его к заводским настройкам. Впрочем, попробуем разобраться, что произойдет в том и другом случае.

Допустим, ты установил джейлбрейк на телефон с iOS 11.1.2. Через какое-то время накопившиеся в результате экспериментов ошибки привели к проблемам, мешающим пользоваться устройством. Какие у тебя есть варианты?

Во-первых, ты можешь попробовать сбросить телефон к заводским настройкам. Твои данные будут удалены, но следы джейлбрейка (а возможно — и некоторых твиков) все равно могут остаться в системе, приводя к дальнейшей нестабильности ее работы и делая невозможной корректную установку ОТА-обновлений. Таким образом, сброс к заводским настройкам может помочь, но не когда накопились серьезные проблемы.

Для устройств Apple всегда можно использовать восстановление устройства через iTunes. В этом случае скачается последняя версия iOS в виде полной прошивки, которая и будет установлена в телефон.

А если ты не собираешься устанавливать последнюю версию iOS, для которой может и не существовать джейлбрейка? Если ты хочешь остаться на той самой версии, на которую ты ставил джейл?

Перед тем как обсуждать возможные варианты, вкратце напомним, как работает обновление (или переустановка) iOS. Для того чтобы iPhone смог установить прошивку, ему потребуется связаться с сервером Apple и получить цифровую подпись. Эта цифровая подпись будет действительна только для конкретного экземпляра устройства и только для конкретной версии iOS.

Как видишь, здесь все карты в руках у Apple. Если сервер компании откажется подписывать ту или иную версию прошивки, установить ее в свой телефон или планшет ты не сможешь. Если говорить об iOS 11, Apple давно прекратила подписывать последнюю версию 11.1.2, для которой работает джейлбрейк. Таким образом, при помощи штатных средств ты сможешь восстановить телефон только на текущую (иногда и предпоследнюю) версию iOS, которую Apple подписывает в настоящий момент.

Если бы Apple сейчас подписывала iOS 11.1.2, то ты смог бы сохранить блобы SHSH2 по инструкции с 4PDA или одной из многочисленных подобных инструкций. Используя блобы SHSH2, ты смог бы в любой момент в будущем восстановить свой iPhone на эту версию системы. Увы, но сохранение блобов возможно лишь в момент, когда Apple еще подписывает нужную версию iOS.

И тем не менее, выход есть! Вместо блобов SHSH2 ты можешь попробовать сохранить снапшот корневой файловой системы APFS сразу после джейлбрейка. В случае с джейлом Electra нужный снапшот корневой файловой системы создается в процессе взлома устройства. Восстановив образ APFS после джейлбрейка, ты сможешь откатиться к заведомо работоспособной копии системы.

Как именно это делается, что за «образ APFS» и где он создается?

Пользователи, незнакомые с особенностями реализации файловой системы Apple (APFS), полагают, что снапшот — это что-то вроде файла, который сохраняется в каком-то каталоге. Это не так. Ближайшей аналогией снапшоту APFS является «образ восстановления» Windows, найти который можно в панели «Защита системы».

Вот как работает Electra в своей релизной версии (информация непосредственно от Coolstar, разработчика джейлбрейка Electra):

  1. Перед тем как взломать устройство, Electra проверит состояние файловой системы устройства (если был установлен другой джейлбрейк или множество твиков, проверка не будет пройдена).
  2. Если файловая система окажется в «достаточно чистом» состоянии (джейлбрейк устанавливается на чистую систему, или была установлена одна из предварительных сборок Electra — без твиков, модифицирующих системный раздел), будет создан снапшот корневой файловой системы APFS.
  3. Если же был установлен другой джейлбрейк или обнаружены другие потенциально опасные модификации файловой системы, Electra запросит подтверждение на продолжение процедуры взлома.

Отлично, снапшот создан! А как восстановить чистую ОС из этого образа, а заодно удалить «хвосты», оставшиеся от джейлбрейка? На этом месте я вынужден притормозить: нужный инструмент (его название — SemiRestore11) пока не готов, но Coolstar обещает выпустить его в ближайшее время.

В будущем ты сможешь воспользоваться этой утилитой, но с одной оговоркой: восстановлен будет снапшот по состоянию на момент «сразу после взлома», то есть модификации файловой системы, сделанные во время установки джейлбрейка, не будут восстановлены.

Чтобы полностью удалить следы джейлбрейка, тебе нужно будет сбросить устройство к заводским настройкам (Reset → Erase all Contents and Settings). При сбросе будут удалены все данные из /var, и ты получишь чистую версию системы (iOS 11.0–11.1.2).

На данный момент нужно просто ждать. Пользоваться старыми версиями SemiRestore или неизвестно какими утилитами, найденными неизвестно где, категорически не рекомендуется.

 

Чем это может грозить

Наличие уязвимости, позволяющей получить права суперпользователя, — это серьезно. Но так ли страшна данная уязвимость в iOS для обычного пользователя?

Давай посмотрим. Для того чтобы воспользоваться уязвимостью и взломать устройство, нужно приложить сознательные усилия, проделать ряд нетривиальных телодвижений и вообще — разблокировать телефон и установить доверенное соединение с компьютером. Для установления доверенного соединения в iOS 11 потребуется не только разблокировать телефон, но и ввести пароль блокировки. А если известен пароль блокировки, то безо всяких уязвимостей можно создать резервную копию телефона (включая все пароли из браузера — например, пароли от социальных сетей туда, скорее всего, попадут); если же резервная копия была защищена паролем, то его можно сбросить буквально в пару кликов. При помощи пароля блокировки можно сбросить или изменить пароль от iCloud, заблокировать или удалить данные со всех устройств, зарегистрированных в той же учетной записи Apple; наконец, можно легко отвязать телефон от iCloud, не зная пароля от Apple ID. Все это мы уже описывали в статье «Что можно сделать с iPhone, зная пасскод. Как сливают данные, уводят iCloud и блокируют остальные устройства».

Так какую дополнительную опасность представляет собой найденная уязвимость? Если говорить об обычном пользователе, то, пожалуй, никакой. Более того: обычный пользователь, скорее всего, никогда с ней не столкнется: все приложения в App Store модерируются, и программу, эксплуатирующую данную уязвимость, туда не пропустят.

Джейлбрейком может воспользоваться полиция для того, чтобы извлечь дополнительную информацию из устройства (физическое извлечение данных, к примеру, при помощи Elcomsoft iOS Forensic Toolkit). Проделать это можешь и ты, но есть ли в этом смысл? Если сравнивать с тем, что можно извлечь из обычной резервной копии (с паролем), то физическое извлечение данных даст доступ к скачанным сообщениям электронной почты, системным логам и подробной истории местоположения устройства. Можно получить доступ к песочницам приложений — например, проанализировать переписку в Telegram, WhatsApp или Facebook Messenger. Можно просмотреть временные файлы браузера. Для полиции, безусловно, полезная информация, но нужно ли это тебе? Если учесть, что полезных твиков для iOS 11 практически нет (а полезность старых в новой версии ОС под большим вопросом), то джейлбрейк iOS 11 становится уделом энтузиастов-разработчиков, специалистов по безопасности и полиции.

WWW

Если тебя заинтересовала тема джейлбрейков свежих версий iOS — добро пожаловать на следующие ресурсы:

  • Jailbreak update: a summary of current tools. Здесь подробно разобраны особенности реализации последних KPP-less джейлбрейков; обсуждаются проблемы Cydia Substrate и независимого решения Substitute.

  • Electra jailbreak for iOS 11.0–11.1.2. В этой статье описаны особенности конкретного джейлбрейка — Electra, интересного целым рядом особенностей (KPP-less, поддержка Cydia, снапшот APFS).

После прочтения статьи тебе захотелось сделать джейлбрейк?

Загрузка ... Загрузка ...
 

Заключение

Мы рассмотрели ряд утилит для джейлбрейка смартфонов и планшетов, работающих под управлением iOS 10 и 11 (до версии 11.1.2). История их появления вызывает противоречивые чувства. Правильно ли поступает Google, публикуя информацию об уязвимостях и выкладывая, по сути, готовый код для взлома устройств? У меня не сложилось окончательного мнения по этому поводу.

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    2 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии