О совершении джейлбрейка с каждым днём задумывается всё больше пользователей, но поскольку это «взлом чистой воды» многие опасаются его делать. Стоит отметить, что после джейлбрейка устройство получает много новых возможностей, вызывая интерес у пользователей. Jailbreak имеет как преимущества, так и недостатки, ознакомившись с которыми можно сделать вывод, стоит ли взламывать свой гаджет.

Что такое джейлбрейк

Джейлбрейк - процедура взлома операционной системой iOS, позволяющая пользователю получить несанкционированный доступ к файловой системе устройств Apple. Совершается jailbreak посредством выявления уязвимостей системы безопасности Apple, благодаря чему пользователь получает доступ к ранее недоступным системным файлам. После джейлбрейка владелец гаджета под управлением iOS может управлять содержимым файловой системы и устанавливать различные программы из сторонних магазинов приложений, помимо основного от Apple (App Store). Пользователям «взломанных» iPhone и iPad, как и ранее, доступны все функции устройства, включая iTunes и App Store.

Одной из основных функций jailbreak является возможность модификации функций iOS, а также индивидуализация интерфейса iPhone или iPad.

Для чего нужен на айфон или айпад

Воспользовавшись джейлбрейком, пользователь получает ещё один дополнительный магазин приложений Cydia, содержащий те приложения, которые в App Store или iTunes отсутствуют. Учитывая то, что благодаря jailbreak появляется возможность модифицировать iOS, то именно в Cydia содержатся все те приложения, которые помогут настроить операционную систему по вкусу пользователя. Также в Cydia огромное количество бесплатных приложений, которые в App Store распространяются платно. Стоит отметить, что все бесплатные программы из Cydia (в народе «твики»), являются всего лишь копиями лицензионных приложений, которые в большинстве случаев платные.

Преимущества

  1. Дополнительный магазин приложений Cydia. Большинство пользователей Apple решаются совершить джейлбрейк только ради Cydia, которая предоставляет возможность скачивать бесплатно приложения, распространяемые в App Store платно.
  2. Настройка интерфейса и функционала iOS на свой вкус. Джейлбрейк позволяет изменить внешний вид и содержание операционной системы, посредством скачивания специализированных приложений из Cydia.
  3. Скрытые возможности Apple устройств и доступ к файловой системе. Джейлбрейк позволит пользователям не только воспользоваться скрытыми возможностями iOS, но и получить доступ к файловой системе, что даст возможность контролировать операционную систему и изменять исходные коды.

Недостатки

  1. Возможные проблемы со скачанными приложениями. Поскольку твики из Cydia не являются лицензионными приложениями, а лишь копиями, то и проблем со стабильностью их работы встречаются чаще, а также их использование может привести к вылету лицензионных приложений, которые ранее работали стабильно.
  2. Разные твики - разные проблемы. После установки или же удаления любого твика, скачанного из Cydia, в системе остаётся системный кеш твика (мусор), который навсегда останется на устройстве, а также замечены случаи несовместимости твиков, из-за чего они не работают.
  3. Проблемы с обновлением iOS. Во взломанном устройстве невозможно обновить iOS, а при выходе обновления джейлбрейк всегда слетает, из-за чего все скачанные твики из Cydia и изменения интерфейса удаляются.
  4. Лишение тех. поддержки разработчиков и гарантии Apple. При необходимости ремонта устройства пользователю придётся избавиться от джейлбрейка, а если понадобится воспользоваться гарантией - в сервисном центре откажут в обслуживании.
  5. Безопасность Apple устройств с джейлбрейком. Взлом гаджета подвергнет его к заражению вирусами, впоследствии чего могут быть утрачены персональные данные, в числе которых информация о платёжных возможностях (реквизиты банковской карты).
  6. Уменьшена автономность работы батареи. Операционная система iOS закрыта не просто так, ведь разработчики компании Apple оптимизируют уровень нагрузки на системное железо, чтобы сбалансировать расход энергии аккумулятора и максимально увеличить автономность батареи.
  7. Потеря качества связи. Многими пользователями было замечено, что джейлбрейк может повлиять на качество связи во время звонков. Проявляются эти проблемы частым прерыванием связи, а иногда даже искажение голоса абонента.

Типы jailbreak

Непривязанный jailbreak совершается один раз и работает до момента выхода следующей перепрошивки. В основе этого типа джейлбрейка находятся уязвимости, которые дают возможность получить доступ к файловой системе во время каждой загрузки гаджета без любого другого вмешательства.

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

Инструкция по установке

С помощью компьютера

Для совершения джейлбрейка пользователю нужно скачать бесплатный софт Pangu 9. Прежде чем начать процесс взлома необходимо:

  • Обновить iTunes на компьютере до последней версии.
  • Создать резервную копию данных через iTunes или iCloud.
  • Отключить защиту экрана паролем и Touch ID (Настройки > Touch ID и пароль).
  • Отключить функцию «Найти iPhone» (Настройки > iCloud > Найти iPhone).
  • Активировать Авиарежим в Пункте Управления.

Как сделать джейлбрейк - пошаговое руководство

После последующей перезагрузки гаджета процесс джейлбрейка будет успешно завершён, о чём сообщит надпись «Jailbreak completed».

Без помощи компьютера

  1. Откройте эту инструкцию в браузере Safari на своём iPhone, iPad или iPod touch.
  2. Перейдите по ссылке itms-services://?action=download-manifest&url=https://www.iclarified.com/jailbreak/pangu-pp/jailbreak.plist и нажмите «Установить».
  3. Дождитесь загрузки и установки приложения PP, необходимого для выполнения джейлбрейка.
  4. Перейдите в меню «Настройки» > «Основные» > «Управление устройством».
  5. Выберите появившийся там профиль разработчика и в открывшемся окне нажмите «Доверять».
  6. Запустите ранее установленное приложение PP.
  7. Согласитесь принимать уведомления.
  8. Нажмите на круг, расположенный в центре экрана и заблокируйте устройство, нажав кнопку «Питание».
  9. Дождитесь перезагрузки устройства, после чего запустите Cydia для проверки установки джейлбрейка.

На входящие уведомления во время установки джейлбрейка не реагируйте.

После всех выполненных действий джейлбрейк установлен, причём без использования компьютера и данных об учётной записи Apple ID.

Основные твики, ради которых стоит совершить Jailbreak

Как удалить на айфон или айпад

На сегодняшний день существует специальный инструмент, благодаря которому можно удалить джейлбрейк, при этом сбросив все настройки до заводских и не используя никакие перепрошивки.

Прежде, чем приступить к удалению джейлбрейка необходимо совершить ряд действий, а именно:

  • Создать резервную копию через iTunes, iCloud.
  • Подключить устройство к интернету (оптимально по Wi-Fi).
  • Зарядить устройство минимум на 20%.
  • Вставить SIM-карту.
  • Убедиться, что устройство привязано к вашему Apple ID функцией «Найти iPhone» (если включена).

Инструкция

  • Сначала нужно зайти в Cydia.
  • Зайти в репозиторий BigBoss, который установлен по умолчанию и найти приложение Cydia Impactor.
  • Далее нужно установить Cydia Impactor.
  • После успешной установки, Cydia Impactor появится на рабочем столе устройства и его нужно запустить.
  • После открытия Cydia Impactor на экране отобразится текст на английском, под которым требуется нажать на кнопку «delete all data and unjailbreak device».
  • Дальше нужно нажать на кнопку «Delete all», после чего и начнётся процедура удаления джейлбрейка. Во время удаления ни в коем случае нельзя ничего нажимать, а просто подождите около 10 минут.
  • После завершения удаления устройство самостоятельно перезагрузится и его нужно будет заново активировать.

Возможные проблемы и пути их решения

Проблемы с джейлбрейком встречаются очень часто, но и решения их совсем несложные.

Ошибка Error 0A (зависает на 45%)

Эта ошибка появляется во время совершения джейлбрейка, тогда как утилита зависает на 45-50%. Для решения проблемы нужно подключить своё устройство к компьютеру, открыть iTunes (должен быть свежей версии) и найти своё гаджет в списке. Далее зайти в «Резервные копии» и снять флажок с пункта «Зашифровать резервную копию iPhone». После проделанных действий нужно повторить попытку совершения джейлбрейка.

Кнопка «Старт» серая

Если кнопка «Start» серого цвета и не кликабельная - это означает, что Pangu 9 не разрешает начинать джейлбрейк устройства. Чтобы кнопка «Старт» стала кликабельной необходимо отключить устройство от компьютера и установить последнюю версию iTunes и попробовать снова. Если установлена последняя версия iTunes, но кнопка «Start» всё равно серая - попробуйте запустить iTunes от имени администратора или переподключиться к интернету.

Иконка Cydia не появилась

Очень часто случается так, что процедура джейлбрейка прошла успешно и без ошибок, но на экране устройства не появился магазин приложений Cydia. Объясняется это тем, что утилите Pangu вовремя не был разрешён доступ к «Фото». Для решения проблемы стоит лишь заново взломать устройство, разрешив доступ к «Фото» приложению Pangu вручную. Сделав это, на экране гаджета гарантировано появится Cydia.

Не запускается Cydia

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

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

Всем привет! Сегодня мы расскажем вам – как узнать стоит ли джейлбрейк в вашем iPhone, планшете iPad или плеере iPod touch. Тема очень важная, особенно для тех, кто планирует покупку Айфона. Ране мы немного рассказывали о , решили немного развить тему и объяснить немного подробней.

Существует два вида джейла:

  • Отвязанный джейлбрейк

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

Узнаем – стоит ли отвязанный джейлбрейк

Самый распространенный вид джейла – это отвязанный Jailbreak. Отвязанный джейл отличается от привязанного тем, что после перезагрузки устройства, Айфон, Айпад или Айпод нормально загружается и все приложения работают. Определить стоит ли такой джейлбрейк можно несколькими способами:

Стандартный способ распознавания джейлбрейка

Основные признаки сделанного джейлбрейка - Cydia и сторонние приграммы и утилиты

В основном любой джейлбрек распознается по наличию установленной сторонней программы – . Если среди значков на одном из рабочих экранов вы обнаружите приложение Cydia, то знайте – что джелбрейк стоит точно. Вместе с Сидией, среди приложений иногда можно встретить распространенный файловый менеджер iFile или уже (старое название Installer), которые ставились из Cydia.

Существуют хитрые продавцы телефонов iPhone (особенно б/у) умудряются прятать признаки джейла, после чего продают залоченный iPhone мало-разбирающемуся покупателю, выдавая его за . В основном такие люди наводят визуальный марафет, пряча приложение Cydia (могут припрятать и другие сторонние приложения вроде iFile или Installous).

Если вы нашли Cydia в своем iPhone или iPad, то джейлбрейк имеется

Степень спрятанности зависит от наличия знаний по теме, некоторые прячут Cydia в или делают иконки невидимыми при помощи специальных твиков (к примеру ). Для поиска спрятанной Cydia, иногда, можно воспользоваться – вводим Cydia в строке поискам смотрим результаты, главное чтобы в настройках поиска (Настройки – Основные – Поиск Spotlight) стояла галочка – В программах.

Более разбирающиеся специалисты, при выполнении джейлбрейка, программу Cydia даже не устанавливают, соответственно узнать стоит ли джейлбрейк, при помощи найденной Cydia, не получится. Остается ставить iFunBox.

iFunBox знает – стоит джейлбрейк или нет

Есть еще один способ как можно узнать установлен джейл или нет. Ставим программу в свой компьютер. Подключаем свой iPhone, iPad или iPod к компу.

Программа iFunBox знает что такое джейлбрейк

Программа iFunBox поможет нам узнать сделан ли джейлбрейк, для этого переходим в раздел iFunbox Classic и смотрим:

  • Если в самом конце названия устройства в скобках указано – (Jailed), то в устройстве джейлбрейка нет.
  • Если надписи (Jailed) в конце названия нету – в таком iPhone джейлбрейк сделан.

Что у нас получается. На изображении выше 3 устройства, из них лишь в iPod touch 5 джейлбрейк не сделан. Как мы видим в iPhone 2G и iPad 2 джейл установлен.

Распознаем привязанный джейлбрейк

Наличие установленного привязанного джейлбрейка определить очень просто, для этого достаточно свой iPhone, iPad или iPod. Если после включения устройство продолжает нормально работать, то привязанного джейла нет, для убедительности после загрузки проверьте работу браузера Safari.

Ели телефон, планшет или плеер после перезагрузки на запускается, горит яблоко, то в нем стоит привязанный джейл.

Некоторые модели устройств с процессорами A4, установленной утилитой SemiTether и привязанным джейлбрейком после перезагрузки могут включаться, но не будут работать некоторые приложения – , Cydia, почтовое приложение .

С признаками привязанного и полу привязанного джела вроде разобрались.

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

Вопрос этики

Начнем с того, что операция эта является неофициальной и не поддерживается Apple, а это означает, что после ее проведения пользователь снимается с гарантийного обслуживания в результате нарушения Уже на этом этапе стоит задуматься, готовы ли вы к подобному повороту. Взвешенное решение можно принять, только хорошо понимая, что такое джейлбрейк и какие возможности он открывает.

Что дает джейлбрейк пользователям?

Это операция, проводимая на устройствах с операционной системой IOS и открывающая доступ к их файловой системе. В результате у владельцев техники Apple существенно расширяются возможности ее использования, так как в систему можно производить запись твиков, тем, приложений, в том числе из сторонних источников (без джейлбрейка это невозможно). Таким образом, плюсы данной модификации в следующем:

  • возможность использования приложений с ПК;
  • возможность установки программного обеспечения не только с AppStore, но и из других источников (например, с помощью Cydia);
  • возможность SSH-доступа к "яблочному" устройству (в том числе позволяет осуществить отвязку от оператора).

Виды джейлбрейка

Заманчивые перспективы, не так ли? Прежде чем рассказывать о том, как сделать джейлбрейк на устройстве, нужно отметить, что существует два типа таких операций:

  1. Непривязанный джейлбрейк. Внесенные изменения сохраняются после перезагрузки, аппарат нормально перезагружается без дополнительной помощи.
  2. Привязанный джейлбрейк требует регулярного повторения процедуры после каждой перезагрузки устройства (без этого аппарат неспособен работать). Так как необходимо каждый раз подключать телефон к ПК, такой вид операции назвали "привязанным".

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

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

Джейлбрейк для IOS 7: инструкция

Далее мы рассмотрим, последней версии IOS 7, который сделала доступным команда Evad3rs. Нужно отдать ей должное, ведь предложенная процедура взлома "яблочного" устройства настолько проста, что окажется под силу даже самым неопытным пользователям.

Итак, выделите 10 минут вашего свободного времени для реализации следующих пяти шагов:

  1. Проведите бэкап устройства. Резервная копия делается через iTunes либо iCloud.
  2. Отключите цифровой пароль, а также Touch ID.
  3. Скачайте соответствующую утилиту (официальный сайт разработчика Evad3rs).
  4. Запустите мастер джейлбрейка, предварительно подключив к компьютеру iPhone/iPad/iPod. Для запуска откройте архив и нажмите на кнопку (она одна).
  5. Ожидайте, пока будет производиться установка джейлбрейка на ваше устройство.
  6. На заключительном этапе установки на вашем аппарате появится иконка, на которую следует нажать. После перезагрузки на рабочем столе вы увидите появившуюся иконку Cydia. Процесс закончен.

Вот такая незамысловатая процедура джейлбрейка. Она доступна для всех устройств Apple, начиная с версии 7.0.0 и заканчивая 7.0.4. Однако при всей ее простоте и привлекательности торопиться не стоит. Хотя бы потому, что Cydia пока не готов предложить пользователям оптимизированные под IOS 7 твики.

Почему стоит отказаться от джейлбрейка

Что такое джейлбрейк для вашего устройства: друг или враг? Существует немало противников данной процедуры, в том числе и сам Apple (что неудивительно). Какие же доводы могут заставить отказаться от данного рода модификации? Вот их список:

  • снижается уровень безопасности, что может стать причиной кражи личной информации и проникновения вирусных, шпионских программ;
  • возможны зависания сторонних программ, сбои в ОС устройства;
  • сокращение времени работы аппарата от одного заряда батареи;
  • ошибки или отказ работы фирменных услуг Apple;
  • перебои в передаче данных (задержка по времени или искажение информации);
  • отказ в работе устройства при установке обновлений для IOS;
  • лишение возможности технического и гарантийного обслуживания устройств после их несанкционированной модификации.

Такой внушительный список разнообразных опасностей заставляет задуматься о том, так ли нужен джейлбрейк или лучше обойтись без него. Теперь, когда вы знаете, что такое джейлбрейк, можете решить это для себя сами. В любом случае не стоит проводить операцию необдуманно, чтобы потом не жалеть о последствиях. Оцените все "за" и "против" и примите взвешенное решение.

«Джейлбрейкнутое» устройство Apple - это не только новые возможности, но и дополнительные проблемы с безопасностью самого устройства и работающих на нем приложений. Сегодня мы поговорим о том, что такое джейлбрейк, как он работает и каковы его последствия для системы безопасности.

Что такое jailbreak?

Итак, jailbreak - это специальная программа для снятия некоторых ограничений безопасности системы посредством эксплойтов. Со временем данное определение четко закрепилось за взломом устройств от компании Apple: iPod, iPad, Apple TV, iPhone. Такое название было дано в связи с основной его целью - взломом песочницы, но песочница эта настолько хорошая, что ее прозвали тюрьмой (jail). Для устройств под управлением ОС Android почти аналогичный процесс называется root’ованием, что связано с конечной целью - работой от пользователя root. Необходимо также не путать эти термины с понятием unlock, под которым подразумевается отвязка оператора сотовой связи, установленного с покупкой телефона. И стоит понимать, что jailbreak зависит от hardware и software: эксплойты, лежащие в его основе, могут использовать особенности как железа, так и программных составляющих. Так что наличие jailbreak под какое-то устройство X с OC Y не означает его работоспособность на устройстве Z с ОС Y или устройстве X с ОС K.

При этом сами jailbreak’и бывают двух типов:

  • tethered (привязанный);
  • untethered (непривязанный).

Привязанный означает, что после перезагрузки такого устройства JB пропадает, а в случае непривязанного останется в силе, что гораздо удобнее.

Why?

Я бы выделил три основные категории людей, кому вообще нужен jailbreak: разработчики, обычные пользователи и исследователи ИБ.
Первым - чтобы узнавать, что крутится под капотом iOS, использовать ее скрытые возможности и как можно лучше оптимизировать свое приложение (порой и задействовать private API). Вторым - для того, чтобы использовать tweak’и (как правило, написанные первыми). Tweak - это небольшая программка, которая вносит какое-либо изменение в работу iOS для улучшения юзабилити. Это может быть новый набор иконок, вставка новых подсказок в SpringBoard или запоминание пароля для App Store - в общем, все, что кажется удобным и полезным со стороны пользователя, но не реализовано Apple. И наконец, исследователи безопасности нуждаются в джейлбрейке для копания в самой ОС и всем, что там крутится. Самый распространенный сценарий - это анализ защищенности мобильного приложения для iOS. Если ты не в курсе, то все iOS-приложения из App Store защищены DRM и получить расшифрованное приложение можно только в runtime. Данная операция пока возможна только на джейлбрейкнутом устройстве. Да, еще можно было бы сюда добавить госслужбы для шпионажа и атаки неугодных стран и ее лидеров. Например, Обаме его служба безопасности уже запретила использовать iPhone. Существует мнение, что в связи с высоким интересом военных к jailbreak может полностью исчезнуть публичный jailbreak: зачем выкладывать что-то бесплатно, когда тебе готовы отсыпать кучи зелени...

Сама Apple, конечно, относится к jailbreak негативно и предупреждает об этом своих пользователей. Это и очевидно, ведь в закрытую ОС сторонние люди вносят изменения и для сохранения этих изменений нарушают работу системы безопасности ОС - патчат и хучат определенные участки кода. Что, естественно, ведет к нарушению стабильности работы OC - это стоит иметь в виду, когда ты делаешь jailbreak.

Jailbreak - угроза безопасности

JB отключает большинство механизмов безопасности ОС, в связи с этим появляется угроза заражения устройства вредоносным ПО. Это может быть как случайно скачанное вредоносное ПО из Cydia (его там никто не проверяет), так и целенаправленная атака в духе ZitMo, SpitMo, CitMo. Если ты думаешь, что таких проектов не существует, то ты ошибаешься. Есть проект iPhone-Espionage , который включает в себя такой функционал, как:

  • keylogger;
  • захват снимков экрана;
  • перенаправление SMS;
  • запись микрофона;
  • отправка GPS-координат.

С позиции комьюнити это, наоборот, яркое и широко обсуждаемое событие, которое не обходят стороной даже такие издания, как Forbes. У разработчиков JB даже есть собственная конференция Worldwide jailbreak con , где они делятся информацией друг с другом. А по данным saurik (создателя Cydia - магазина нелегальных приложений для iOS), на 2 марта 2013 года в мире существовало 23 миллиона джейлбрейкнутых устройств.

Как бы то ни было, весь процесс создания jailbreak со стороны напоминает игру в кошки-мышки между Apple и разработчиками. Одни закрывают уязвимости и вносят новые механизмы безопасности в ОС, а другие ждут релизов и тестируют свои детища.


Security in iOS

Хватит прелюдий, начнем погружение в техническую составляющую jailbreak. Давай немного познакомимся с механизмами безопасности iOS, которые встают на пути JB.

  • Code Signing. Приложения после проверки компанией Apple становятся защищены DRM (используется сертификат X.509v3). Так что на устройстве могут выполняться только подписанные компанией Apple приложения.
  • Sandboxing (Seatbelt). Каждое приложение, которое ставится из App Store, работает в своей песочнице. Оно имеет собственную рабочую директорию /var/mobile/Applications/ , дальше которой ничего не видит. Да и других процессов это тоже касается, так что приложение понятия не имеет, кто еще существует в системе. Из более тонких моментов можно выделить отсутствие прямого доступа к железу устройства и невозможность динамически генерировать код (JIT), исключением является только Safari.
  • Разделение привилегий. Каждое приложение запущено с ограниченными правами под пользователем mobile и имеет ряд entitlements.

Понятное дело, так как в процессе JB приходится эксплуатировать баги повреждения памяти, появляется и необходимость обойти различные механизмы безопасности, нацеленные на затруднение эксплуатации таких уязвимостей. Среди них stack cookie, DEP, ASLR, KASLR и еще ряд других, которые даже не имеют специальных названий. На этом мы не будем останавливаться: это нам никак не поможет детектировать JB на устройстве и, в общем, выходит за рамки данной статьи.

Немного истории и цифр

  • 29 июня 2007 года компания Apple презентовала новый телефон iPhone со своей операционной системой iOS 1.0. Спустя 11 дней ОС была взломана.
  • Jailbreak’и: PwnageTool, redsn0w, purplera1n, Spirit, JailbreakMe, Absinthe, evasi0n.
  • Основные лица: iPhone Dev Team, Chronic Dev Team, George Hotz, comex, pod2g, evad3rs и, конечно, saurik.
  • Привязанный JB делали меньше, чем за неделю, за исключением версии 3.0, где Apple внесла все текущие средства безопасности (чуть меньше 100 дней).
  • Непривязанный выходит гораздо реже, и на его взлом тратится больше времени, причем если сравнивать с привязанным, то время увеличилось в среднем в 7–8 раз.

Жизнь после JB

Приступим к нашей основной теме. Чтобы разобраться, как задетектить, имеет устройство JB или нет, нужно понимать, что JB сделал, изменил, оставил после себя. Итак, ты поставил JB - какие новые грани открылись перед тобой?

  1. Запуск неподписанных приложений. Теперь можно ставить приложения из Cydia и других сторонних репозиториев. Там обычно лежат различные системные приложения, tweak’и, которые не прошли (и никогда не пройдут) проверку Apple - из-за того, что они либо используют private-функции, либо вообще требуют JB для своей полноценной работы. Но поскольку данное ПО никак не проверяется, среди него может быть и вредоносное - об этом не стоит забывать. Особенно вкупе с тем, что JB отключил большинство механизмов защиты. Основной эффект: Cydia и другие неразрешенные Apple приложения.
  2. Возможность доступа к ФС. Появляется доступ для взаимодействия с файловой системой, например по SSH. Становится возможным поход по всем директориям системы, копирование/редактирование/скачивание/загрузка любого файла в системе. Основной эффект: появление новых файлов, изменение стандартных файлов.
  3. Обход ограничений sandbox. Sandbox теперь, по сути, не работает, как и ряд других механизмов безопасности (например, проверка подписи кода), и любое приложение в системе уже может видеть не только свою директорию, но и все файлы в системе. Основной эффект: возможность обращаться к тому, к чему раньше не могли обратиться.

На этих эффектах мы и будем играть - детектить JB!


Последствия JB

Последствие 1: изменения в ФС

/dev/disk0s1 / hfs ro 0 1 /dev/disk0s2 /private/var hfs rw,nosuid,nodev 0 2

/dev/disk0s1 / hfs rw 0 1 /dev/disk0s2 /private/var hfs rw 0 2

После установки JB изменяется /etc/fstab . Директория / становится доступной на запись, а у директории /private/var пропадают биты nosuid, nodev.

Последствие 2: дополнительные утилиты

По умолчанию на iOS-устройстве отсутствует unix shell. Оно и понятно, Apple не закладывала в свои устройства возможность работы с ними из консоли. В связи с этим JB ставит различные полезные программки для упрощения своей установки. В итоге на устройстве появляется куча новых утилит, среди которых утилиты для работы JB, файлы самого JB, различные Bundle, Cydia (как правило, но не обязательно), Mobile Substrate и так далее. Часть из этих новинок можно увидеть в измененном /var/mobile/Library/Caches/com.apple.mobile.installation.plist .

Последствие 3: перерасположение папок

Приложения из App Store ставятся в /var/mobile/Applications , а из Cydia - в /Applications . В связи с тем, что системная директория (/) имеет значительно меньший размер, чем пользовательская (/private/var), и приложения из Cydiа ставятся в системную директорию, возникает проблема с доступным местом. Для ее решения с нужных директорий делают символическую ссылку на пользовательскую директорию, где места предостаточно. В итоге метод имеет следующую формулу: /var/stash + symbolic links. То же самое делается и для /Library/Ringtones , /Library/Wallpaper , /usr/include , /usr/lib/pam , /usr/libexec , /usr/share .


Последствие 4: поломанная песочница

Данные изменения происходят очень низко, на бинарном уровне, и они нам не особо пригодятся, но не сказать о них нельзя. Во-первых, JB патчит Apple Mobile File Integrity Daemon, который отвечает за проверку подписей. Во-вторых, вносит изменения в само ядро:

// Выключаем MAC для процессов security.mac.proc_enforce=0 // Выключаем MAC для Vnode security.mac.vnode_enforce=0

  • появление новых файлов/директорий;
  • измененные свойства;
  • измененное поведение.

Detection

Кто-то может задаться вопросом: зачем мне как разработчику iPhone-приложений проверять, на каком устройстве запущена моя программа? Вопрос хороший и логичный.

Во-первых, чтобы снизить риски для самого пользователя. Если ты разрабатываешь какое-то критичное мобильное приложение, допустим для мобильного банкинга, то в связи с возможностью выполнения на таком устройстве вредоносного ПО ты можешь либо запретить запуск своего приложения, либо ограничить некоторый доступный функционал, например запретить денежные переводы или ограничить их верхним пределом. Я видел такие подходы в российских приложениях для мобильного банкинга. Также это часто используют MDM (Mobile device management) системы.

Во-вторых, не допустить обход ограничений, внесенных в код. Ограничения на клиенте - это зло.

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

Какое-то время назад, а именно с iOS 4.0 до 4.2.1, существовала специальная функция в MDM API от Apple для определения JB. Но просуществовала она недолго - меньше шести месяцев. Причины исключения данной функции Apple не комментировала. По одной из версий, данная функция была опасна и сама могла привести к JB-атаке.

Обнаружение JB: новые файлы.

  1. Можно обратиться к файлам от Cydia (например, /Applications/Cydia.app/) или URI-схеме cydia:// , которая появляется с ней. Данный метод очень часто встречается, но нужно иметь в виду, что Cydia - это всего лишь bundle и она может не входить в JB или быть удалена. Вот взять, например, последний JB от evad3rs для iOS 7. У них нет Cydia, но есть китайский App Store Taig.
  2. Можно пытаться обращаться просто к любым заранее известным файлам за пределы песочницы, будь то /bin/bash , /Application/Preferences.app/General.plist или /Applications/MobileMail.app .
  3. Естественно, файлы от jailbreak не могут остаться без внимания - например, /private/var/stash . Их очень много, и их можно сначала определить по дате модификации в системе.
  4. Существуют и более экзотические способы, как, например, SSH loopback connection - обращение на 127.0.0.1 порт 22, поскольку обычно для взаимодействия с устройством пользователи ставят на него SSH.

Для обращения к URI-схеме можно использовать Objective-C-функцию openURL, а для работы с файлами как Obj-C-функции (BOOL)fileExistsAtPath:(NSString*)path), так и классические С-функции (fopen(), stat() или access()).

Обнаружение JB: изменение свойств

Порой для запутывания можно обращаться не к самим файлам, а к их свойствам:

  • правам доступа на запись;
  • размеру /etc/fstab ;
  • обнаруживаем символические ссылки на /var/stash с:/Applications /Library/Ringtones /Library/Wallpaper /usr/arm-apple-darwin9 /usr/include /usr/libexec /usr/share

Тут все просто, как и в предыдущем пункте. Опять же можно использовать как Obj-C-функции из класса NSFileManager, так и стандартные С типа statfs(), stat().

Обнаружение JB: измененное поведение или целостность Sandbox

Sandbox запрещает приложениям из App Store использовать такие функции, как fork(), popen(), или любую другую C функцию для создания дочернего процесса на устройстве за пределами jail. Так что пытаемся вызвать эти функции и смотрим результат. Или можно выполнить вызов system(), который вернет 0 в случае, если sandbox работает, и 1 - если jailbreak. Это связано с тем, что на устройстве с JB будет присутствовать /bin/sh . Еще более изощренный способ - это использовать dyld imagecount() и dyld get image_name() для просмотра, какие dylibs сейчас загружены, - после JB есть своя специфика. При этом данный метод достаточно сложно пропатчить.

Обходы обнаружения JB

Если можно обнаружить детект, то можно обнаружить и процесс детектирования. А потом его нужным способом изменить:). Можно выделить три основных способа:

  1. Редактирование бинарного файла. Патчим сам код, данные в бинарнике. Например, если приложение определяет наличие JB по присутствию файла /Applications/Cydia.app/ , то можно прямо в бинарнике исправить Cydia на Fydia, и такой файл в системе уже не найдется, и проверка провалится. Также можно патчить ARM-код, например условный переход на безусловный. Патчинг инструкций в ARM упрощает и то, что в нем все инструкции имеют фиксированную длину.
  2. Использование MobileSubstrate для хукинга Objective-C-функций. Если проверка реализована на Obj-C, то ее можно очень легко перехватить в runtime и вернуть нужное нам значение. Для примера можно посмотреть проект xCon , который как раз так и работает. В общем, можно посмотреть имена методов в классах на наличие таких, как JailbreakDetect, isJailbreak и так далее, затем пишем tweak, и защита пройдена.
  3. Игры во время выполнения программы (GDB, Cycript). Если проверка реализована как часть другой функции, то полностью заменить ее так просто мы не можем. Тут придется играть с GDB. В общем, ничего нового в этом способе нет по сравнению с Linux-платформой.

Помимо знания, что применять, нужно еще знать, как правильно это применять. Здесь хотелось бы дать несколько советов по защите iOS-приложения.

  1. Используй антиотладочные техники. Это хорошо всем известная функция ptrace(PTDENY ATTACH, 0, 0, 0) и флаг P_TRACED.
  2. Используй техники anti hooking. В iOS детектировать hook можно с помощью dladdr() вызова и Dlinfo структуры. А еще лучше критичные фрагменты кода (проверки безопасности, jailbreak detect) в виде inline функций с помощью _attribute_((always inline)).
  3. Обфусцируй свой код и данные. Специфика Objective-C в том, что он хранит много метаинформации о классах, функциях, переменных и так далее. Если в других компилируемых языках, как правило, это символы и они не попадают в финальную сборку, то тут все на виду, и это просто сказка для реверс-инженера - логика сразу понятна. Так что перед выпуском в релиз можно переименовывать имена классов и методов. Что касается критичных данных, то их надо шифровать или динамически генерировать.
  4. Если ты пытаешься определить наличие JB, то используй не одну технику, а несколько.

При этом старайся все security-проверки равномерно распределять по коду, а не проводить только при старте программы. И используй С для критичных функций и функций безопасности - таким образом информация о них не будет отображаться в _objc сегментах.


Для защиты от пиратства приложений можно проверять целостность собственных файлов. Например, целостность исполняемого файла - у всех взломанных/расшифрованных приложений LCENCRYPTION INFO = 0, так как его расшифровывают. Или еще, как вариант, проверять файлы метаданных: iTunesMetadata.plist, SC_Info, Code Signing, Info.plist.

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

INFO

В статье перечислены далеко не все способы детектирования JB на устройстве, но по аналогии ты можешь находить свои и усовершенствовать существующие методы.

Цепочка загрузки iOS

Во-первых, существует три режима загрузки iOS: normal boot, DFU (device firmware upgrade) mode и recovery mode. Последние два, если не вдаваться в детали, необходимы для восстановления ОС в определенное состояние. Для обновления ОС через iTunes используется recovery mode. А на приведенном рисунке проиллюстрированы этапы при normal boot.

Во-вторых, при normal boot компоненты системы загружаются в такой последовательности: Bootrom -> LLB -> iBoot -> Kernel -> System Software -> Apps.

На каждом этапе происходит проверка подписи компонента. Атаковать эту цепочку можно на любом из этапов, и чем раньше это будет сделано, тем лучше, так как на более ранних этапах работает меньшее количество механизмов безопасности, которые необходимо будет обойти, и чем ближе к началу, тем ближе к железу. А закрытие уязвимости в hardware-составляющей требует от производителя произвести замену самого железа, то есть время жизни такой уязвимости - до выхода следующей версии устройства.

Выявляем случаи несанкционированного доступа к системе

Прежде чем приступить к собственно защите устройства под iOS, проверьте, не имеют ли уже злоумышленники несанкционированный доступ для сбора данных. Обычно для этого злоумышленник совершает так называемый джейлбрейк: обходит параметры безопасности устройства и может в фоновом режиме управлять всем смартфоном, устанавливать приложения и перехватывать данные. Выявить факт джейлбрейка можно с помощью определенных инструментов безопасности, сканирующих систему на предмет вмешательства. Рекомендуем приложение от Lookout, которое кроме джейлбрейка также проверяет, какой версией iOS вы пользуетесь. Если инструмент Lookout бьет тревогу, вам нужно пойти на радикальные меры: полностью переустановить систему. Только таким образом можно со стопроцентной гарантией избавить систему от шпионов. И если вы создали резервную копию ОС, в таком случае лучше ее не разворачивать, за исключением локального бэкапа, хранящегося на домашнем компьютере: шифрование защищает от злоумышленников, которые, возможно, имеют доступ к Apple ID пользователя.

Чтобы полностью удалить данные с устройства, перейдите в меню «Настройки | Основные | Сброс» и выберите «Стереть». После перезагрузки устройство откатится к заводским настройкам. Выберите настройку iPhone как нового. Чтобы в дальнейшем иметь возможность создавать защищенные резервные копии, сохраняйте данные на домашнем компьютере с помощью iTunes или используйте безопасную USB-флешку для iPhone, например, iXpand от SanDisk.

Разоблачаем подозрительных сборщиков данных

Помимо джейлбрейка существует еще один метод, который применяют подозрительные компании, чтобы добраться до зашифрованных данных, хранящихся на устройствах iOS. Компании обычно используют так называемый профиль конфигурации, чтобы снабдить свои устройства собственным программным обеспечением и настройками. Права, которые предоставляет такой профиль администратору, сравнимы с правами, которые дает джейлбрейк. Apple тоже использует такой сертификат, например, для установки программ, находящихся на стадии бета-тестирования. Но если для джейлбрейка достаточно кликнуть по фишинговой ссылке, то для установки профиля конфигурации нужно активное участие пользователя. Когда веб-сайту или программе нужно настроить профиль, от пользователя требуется ввести код устройства под iOS и подтвердить установку. Поэтому злоумышленники пытаются просто-напросто убедить пользователя это сделать, применяя методы социальной инженерии: например, выводится предупреждение о не существующем на самом деле вирусе, который якобы будет удален при установке некоего программного обеспечения.

Чтобы определить, установлен ли уже такой профиль на устройстве, откройте меню «Настройки | Основные» и в пункте «Профили» посмотрите все активные профили конфигурации . Если какой-то из них вам не знаком, откройте его и нажмите «Подробнее». В следующем окне вы увидите, к чему у профиля есть доступ. Если вы сомневаетесь в определении параметров, лучше на всякий случай стереть всю запись, нажав в просмотре профиля «Удалить профиль».