
Привет, хабровчане! С вами на связи пентестер из компании Xilant - Ян.
В прошлой статье мы нескучно рассмотрели как получить джейлбрейк (JB) с рутом на некоторых устройствах iOS с чипом A11. Как я уже озвучил в первой части, рут на устройстве нам нужен для пентеста. А причин для рута было несколько:
Во-первых, нам нужен аналог adb, как в Android, для “удалённого” доступа на устройство.
Нужна возможность дампить расшифрованные IPA и бинарников приложений для последующего реверс-инжиниринга.
Доступ к системным процессам и файловой систему для быстрого обхода встроенных средств защиты приложения, таких как SSL-Pinning.
Установка пентест утилит Frida, Objection, SSL Killswitch и другие.
Дисклеймер: информация, представленная в данной статье, предназначена исключительно для образовательных целей и использования в рамках легальных тестов на проникновение.
И ещё. Стандартным менеджером пакетов является Sileo, который должен устанавливаться автоматически вместе с джейлбрейком. Поэтому крайне не рекомендуется устанавливать Sileo сайдлоадингом и прочими методами, скачивая IPA из интернета. Даже по поиску Google! Осторожно: много мошеннических сайтов с опасными фальшивками!
И я понимаю, что не все пентестеры среди вас, и многим просто интересно, как поставить тот или иной твик, или просто жить без ограничений Apple-ларька. Поэтому поспешу вас порадовать бонусной статьёй после праздников, в которой я расскажу про очень простой ЖБ Dopamine и рассмотрим прикольные апликухи вроде Return Youtube Dislike Button. Отмечайтесь в комментах кому интересно!
Разъяснил и по безопасности пояснил. Тогда снова к делу, дамы и господа!
Установка OpenSSH
Ищем и находим openssh пакет в Sileo.

Внимание! После установки openssh автоматически запускается и порт 22 вашего устройства будет открыт и виден в сети!

Поэтому - правильно, товарищ, выключаем Wi-Fi и думаем в первую очередь о своей драгоценной пятой точке: меняем дефолтные пароли. А как же подключиться без Wi-Fi, скажете вы. Подключиться можно и через любой оригинальный Apple USB кабель и MacOS. Но необходимо кое-что установить:
Установите менеджера пакетов brew на MacOS (сорри бро бат ноу виндовз хиер). Бу, не бойся - это всего лишь опенсорсные пакеты не поддерживаемые Apple!
На хосте MacOS:
brew install usbmuxdЗапускаем проксю с перенаправлением:
iproxy 2222 22 &Ваш iOS уже подключен через кабель, разблокирован (авто-блокировка отключена в установках) и ждёт ssh соединения:
ssh -p 2222 mobile@localhost
И по-факту, мы в Darwin-дистрибутиве Unix (видите тот милый значок процентика? ?).
Дефолтные креды девственного джейлбрейка: mobile:alpine и root:alpine.
%sudo -l
[meow] password for mobile:
User mobile may run the following commands on iPad:
(ALL) ALL
Система говорит нам, что можно выполнять любые действия от имени root пользователем mobile. Поэтому и на mobile и на root необходимо сменить пароли командой: passwd. Вот теперь можно ssh и через Wi-Fi баловаться.
Поздравляю - вы получили полный доступ к своему устройству!

Установка Frida и Objection
Двигаемся дальше. Теперь надо заняться установкой базовых утилит для хука к системным процессам и файлам. Как ими пользоваться расскажу в третьей части.
Во-первых, добавить в Sileo источник Фриды: https://build.frida.re. После чего он должен появиться в репозиториях.

Затем, устанавливаем Frida из источника и Frida-сервер будет запускаться автоматически!
Проверить установку можно через ssh:
~ root# ps aux | grep frida
root [...] /usr/sbin/frida-server
Далее можно пойти на страницу билдов Frida-клиентов и подобрать клиент (актуальный - 17.5.2), который соответствует версии сервака, который вы установили из Sileo.
Или пристегните ремни, сейчас мы будем даунгрейдить Frida для того, чтобы запускать Objection.

Frida - это не только женщина-художник с вах-бровями, а известный дебагер в мире мобильного пентеста, но вот про Objection не все знают.
Objection — это фреймворк для динамического анализа мобильных приложений на базе Frida с целью оценки безопасности. Это сильно упрощает базовые действия над iOS, такие как обход стандартных пиннингов, дамп памяти и прочее. Если результат можно получить одной командой в Objection, то мы так и сделаем, потому что ценим наше время и время заказчика.
Проблема в том, что Objection написан для Frida версии 16.7.19, а актуальная версия в Sileo 17.5.2. Поэтому необходим даунгрейд Frida на устройстве iOS иначе клиент Objection к ней не сможет присоединиться и выдаст ошибку.
Сначала создаем баш-скрипт frida_update.sh со следующим содержанием: ссылка на гит.
Сохраняем как frida_update.sh и заливаем на взломаный iOS девайс:
scp -P 2222 ./frida_update.sh root@localhost:/tmp
Затем, на самом устройстве запускаем апдейт (нужен интернет):
./frida_update.sh 16.7.19
Если вдруг выйдет более новая версия, то также можно на нее перейти.
Перезагружаем устройство. Заново активируем JB: palera1n -f
Теперь на MacOS установите frida клиент для 16.7.19 и проверьте:
frida --version
16.7.19
Есть контакт? Теперь ищем приложение и подключаемся:

Запускаем Objection на MacOS по идентификатору гаджета (приложения):
objection -h 127.0.0.1 -p 2222 -g ph.telegra.Telegraph explore
По приколу можно сделать дамп keychain Телеграма (своего!), а вдруг пароль забыли:

Более подробную инструкцию по Objection ищи на Wiki или дождись следующей части.
Теперь ты - почти iOS хакер!
Установка NewTerm
Какой же хакер без терминала скажете вы. Вот мой ответ: установите NewTerm через Sileo.

И, voilà! У вас в руках полноценное переносное устройство с терминалом, подрубаем через Bluetooth клаву и наслаждаемся:

Установка SSL-KILL-SWITCH-3
Хитрые разрабы пытаются спрятать от нас свой траффик от перехвата (как перехватить с помощью Burp) и используют так называемый SSL Pinning. А если разраб не только хитрый, но и ленивый, то велика вероятность, что он будет использовать стандартные средства защиты.
Пока не буду вникать в детали, но большинство пиннингов поможет обойти SSLkillSwitch3.
Но тут на понадобится скачать пакет установщика:
moe.misty.sslkillswitch3_1.4+rootful_iphoneos-arm.deb
И чтобы его установить необходимо в Sileo загрузить dpkg.

Также установите PreferenceLoader из репозитория (добавить также как и репозиторий фриды ранее) https://ellekit.space/.
Теперь закидываем пакет на устройство и устанавливаем:
dpkg -i moe.misty.sslkillswitch3_1.4+rootful_iphoneos-arm.deb
Должна появиться в Настройках iOS новая вкладка: SSL Kill Switch

Теперь можно попытаться перехватить траффик в Burp.
Выводы
Мы рассмотрели, как получить шелл на iOS после джейлбрейка и как поставить основные утилиты.
Теперь можно хукать процессы и читать любые файлы - ведь у нас есть root доступ. И даже можно дампануть ключи.
В следующей части мы рассмотрим прикладной хакинг iOS приложений на примере обучалки DVIA2.
Всех жду!