Контакты

Как узнать, существует ли джейлбрейк или разлочка для вашего iPhone, iPod Touch или iPad? Что такое джейлбрейк? Инструкция по проведению джейлбрейка. Возможности и риски процедуры Как узнать стоит ли jailbreak на iphone

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

Раньше все продвинутые пользователи iPhone и iPad ждали выхода взлома новой версии, чтобы расширить возможности своих аппаратов. Сейчас многие почти забыли о том, что джейлбрейк еще существует.

Мне удалось вспомнить о взломе iOS в 2018 году. Делюсь мнением и тезисами по этому поводу.

1. Apple закрыла почти все дыры

Во времена iOS 7-9 джейлбрейк выходил быстро и регулярно. Хакеры успевали выпускать утилиты для актуальных версий iOS, в случае неудачи можно было восстановить прошивку и попробовать снова.

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

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

Джейлбрейк iOS 11 вышел лишь через 4 месяца после официального релиза системы. Так много времени на взлом хакеры не тратили очень давно.

2. Разработчики потеряли интерес к джейлбрейку

Создатель Cydia и один из «отцов» джейлбрейка Джей Фримен (Saurik ) неоднократно заявлял, что не видит дальнейшего смыла в развитии сообщества.

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

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

До сих пор не оптимизированы под iOS несколько главных репозиториев, что не позволяет размещать в них твики и скачивать расширения.

3. Твики для iOS 11 нужно переписывать

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

Даже самые простые дополнения, которые без модификации работали с iOS 7 до iOS 10 в одиннадцатой версии мобильной системы Apple не поддерживаются или работают с ошибками.

До сих пор не удалось адаптироваться один из главных твиков – Activator . Это не только серьезное самостоятельное расширение, твик нужен для установки и запуска многих других дополнений.

4. Твики для iOS 11 нельзя покупать

По непонятным причинам Saurik не обновляет систему защиты Cydia, которая нужна для покупки платных твиков. Сейчас можно лишь загрузить купленный ранее твик, если его адаптировали под iOS 11.

Можно ли будет покупать платные расширения для iOS 11 в будущем – остается загадкой.

В таких условиях разработчики не заинтересованы в создании новых расширений и адаптации старых.

5. Большинство игр и приложений перешли на freemium и подписку

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

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

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

6. В iOS в текущем виде практически нечего менять или добавлять

Apple давно переняла большинство полезных и нужных фишек из мира джейлбрейка. Даже новые жесты управления iPhone X тоже частично подсмотрены из твиков.

Уже в iOS 10 многие замечали, что Apple больше не нуждается в мире джейлбрейка.

Оставшиеся полезные дополнения либо слишком мелкие, чтобы побудить пользователей делать взлом, либо не работают в iOS 11.

7. Джейлбрейк iOS 11 полупривязный

Это значит, что после перезагрузки iPhone нужно будет повторять процедуру взлома. С одной стороны это достаточно просто: нужно лишь запустить приложение и нажать на кнопку, но с другой – программу для джейлбрейка нужно подписывать через компьютер.

Для тех, кто не оплачивает $99 в год в качестве разработчика iOS, придется переподписывать (переустанавливать) утилиту Electra каждую неделю. Через 7 дней приложение для взлома перестанет запускаться на iPhone.

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

7. Джейлбрейк iOS 11 очень глючный

За пару недель не самого активного тестирования iPhone с джейлбрейком в моих руках зависал 4 раза. Я не помню подобного со времен Cydia на iPhone первого поколения.

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

Что из твиков работает?

По счастливой случайности у меня оказался iPhone 7 Plus с подходящей для джейлбрейка версией iOS.

Я прошерстил весь каталог твиков, нашел старые любимые расширения, но большинство из них до сих пор не работают с iOS 11.

Установить можно лишь твики из категории «свистелки-перделки», мелкие косметические дополнения. Никаких многооконных режимов на iPhone с iPad, никаких концептуальных изменений интерфейса, никаких продвинутых средств автоматизации, никаких антикражек и защитных приложений (почти все они завязаны на Activator).

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

Самое интересное, что удалось найти – твик для , но устанавливать его нужно вручную.

В Cydia непривычно скучно и пусто.

Существует множество заблуждений о джейлбрейке, многие из которых приходится слышать из года в год. Что из этого правда? Приводит ли джейлбрейк к аннулированию гарантии на iPhone и iPad? Насколько сложно сделать джейлбрейк? Есть ли вообще смысл его делать?

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

Джейлбрейк лишает гарантии

Джейлбрейк делается не навсегда. Если вы хотите обратиться в гарантийный отдел, просто используйте Cydia Impactor , чтобы стереть все следы джейлбрейка, либо восстановите iOS «с нуля» через iTunes. После этого Apple не узнает, было ли ваше устройство когда-либо взломано.

Джейлбрейк снижает производительность

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

Джейлбрейк делает iPhone менее защищённым

Опять-таки, вам нужно следить за тем, какие программные разработки вы устанавливаете. Точно так же джейлбрейк может сделать ваш смартфон более защищенным. В частности, разработчики джейлбрейка выпускали обновления с исправлением ошибок в iOS раньше, чем это делала сама Apple. Если вы будете держаться подальше от подозрительных репозиториев, пиратства, сомнительных твиков и не откроете ОС, установив OpenSSH или AFC2, – вы будете в полной безопасности.

Джейлбрейк запрещен

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

Джейлбрейк для темных личностей

Некоторые считают, что джейлбрейк – это что-то подозрительное, чем занимаются странные личности в темных подворотнях. Но ведь это глупо. Джейлбрейк делают абсолютно разные люди: профессионалы и начинающие, родители, дети, знаменитости и музыканты. Джастин Бибер однажды пользовался iPhone с джейлбрейком.

Джейлбрейк – это сложно

Джейлбрейк вашего iPhone, iPad или iPod touch займёт меньше времени, чем вы тратите на приготовление утреннего кофе. Поверьте – это очень легко, и каждый без проблем может его сделать.

Джейлбрейк не бесплатный

Джейлбрейк не может быть платным. В интернете можно найти множество обучающих статей и роликов. Если вам предлагают заплатить – вас просто обманывают.

Джейлбрейк сокращает время автономной работы

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

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

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

Джейлбрейк больше не нужен

Можете ли вы установить тему оформления на iPhone с заводской прошивкой? Или запустить видео поверх другого приложения? А может быть Apple разрешает ускорить невозможно медленную анимацию iOS? Можете ли вы получить доступ к файловой системе iPhone? Или записать скринкаст на своем iPhone? Можете ли вы настроить переключатели в Пункте управления? Нет. А ведь всё это можно сделать при помощи джейлбрейк-твиков из Cydia.

А как относитесь к джейлбрейку вы? Слышали ли вы ещё какие-либо мифы? Поделитесь с нами в комментариях!

«Джейлбрейкнутое» устройство 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-составляющей требует от производителя произвести замену самого железа, то есть время жизни такой уязвимости - до выхода следующей версии устройства.

Не так давно команда хакеров Pangu выпустила утилиту, которая позволяет сделать джейлбрейк любого девайса на iOS 8. И главное отличие джейлбрейка iOS 8 от предыдущих версий заключается в шумихе вокруг него. А точнее, в её отсутствии. Я решил разобраться и понять, стоит ли сейчас делать джейлбрейк или iOS-девайсы уже хороши и без него?

Зачем мы делали джейлбрейк раньше? По трём причинам:

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

Увеличение функциональности

Виджеты, возможность быстро включать или выключать Wi-Fi, Bluetooth и остальное, расширения и меню шаринга в любых приложениях - всё это уже есть в iOS. Может ли теперь джейлбрейк дать что-то полезное? Может. Не секрет, что в iOS 7 и 8 Apple многое взяла из твиков в Cydia. Многое, но не всё.

К примеру, твик SwypeSelection , с помощью которого можно управлять курсором, водя по клавиатуре. Удобно? Ещё как. Или всем известное приложение Flux , которое делает цвет экрана более мягким и менее раздражающим для глаз. А для владельцев устройств с Touch ID есть BioLockdown - твик, который позволяет защищать любое приложение своим отпечатком пальца.

Крутые твики по-прежнему есть. Вопрос лишь в том, готовы ли вы мириться с нестабильностью их работы и стоят ли они этого? Я думаю, что нет.

Изменение внешнего вида

Темы и иконки в Cydia всегда казались мне ужасными. Я бы мог посоветовать их тому, кто до сих пор ненавидит изменившийся дизайн iOS, однако таких людей уже нет. Это как со стеной «ВКонтакте», помните? Покричали-покричали и успокоились. Вы можете поиграться с темами и паками иконок лишь в том случае, если любите эксперименты. К примеру, такие, как Aeternum, который меняет внешний вид iOS, делая его похожим на интерфейс Apple Watch.

Проблема лишь в том, что если вы используете гаджет для работы, то придётся изучать новый внешний вид и прививать новые привычки. Чем это чревато? Придётся потратить время, и не факт, что изменения вам понравятся. Я давным-давно запомнил, где и что находится в iOS, и запоминать по новой совсем не хочется.

Бесплатные приложения

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

  • отсутствие обновлений через App Store;
  • нестабильная работа;
  • отсутствие модерации (непонятно, что могли запихнуть во взломанное приложение).

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

Я не вижу смысла в джейлбрейке. Ни взломанные приложения, ни «красивые» темы, ни твики, дающие дополнительную функциональность не могут склонить меня в его сторону, хотя до iOS 7 я им пользовался.

А вы делали джейлбрейк?

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

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

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

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

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

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

Понравилась статья? Поделитесь ей