image

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

Какие вопросы рассмотрим:

  1. Выбор устройства: эмулятор VS симулятор VS реальный девайс, на что обращать внимание при выборе;
  2. Jailbreak: зачем нужен, разновидности, как сделать Jailbreak-устройство;
  3. Арсенал пентестера: что мы устанавливаем, и зачем это нужно.

Выбираем устройство


Эмуляторы | Симуляторы | Реальное устройство.
В чем разница, и что лучше подходит для наших целей


Начнем с определений эмулятора и симулятора и разберемся, чем они отличаются.

Эмулятор — ПО, имитирующее поведение iOS на вашем ПК именно с аппаратной точки зрения. То есть эмулируемая система будет вести себя точно так же, как и оригинальная.

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

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

  • Звонкам
  • SMS
  • NFC
  • Bluetooth
  • GPS

И самым главным минусом является то, что это SaaS-решение, доступное только по персональной лицензии, стоимость которой за пару месяцев сопоставима с ценой реального б/у устройства.

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

Критерии выбора реального устройства


В первую очередь, нам нужно устройство, на котором можно будет сделать Jailbreak. Тут я немного забегу вперед и скажу, что для этой процедуры мы будем использовать checkra1n. Для Jailbreak'а с помощью checkra1n подходят следующие устройства:



При этом надо иметь в виду, что:

  • Устройства на процессорах A11 имеют ограниченную поддержку: во время использования такого устройства с Jailbreak'ом придется отказаться от использования Touch/Face ID, в противном случае Jailbreak работать не будет
  • Каждый iPhone актуален для наших целей в течение примерно 6 лет с момента выпуска модели (поддерживает новые версии iOS, не глючит, поддерживает заряд на приемлемом уровне)
  • checkra1n пока что не поддерживает версии iOS 15+, пруф — pangu8.com/ios-15-1-jailbreak/#checkrain

Отталкиваясь от этих вводных, идем в онлайн/оффлайн магазин за б/у устройством.




Jailbreak


Зачем нужен Jailbreak


Jailbreak — операция, которая позволяет открыть доступ к файловой системе устройства и получить root-права. Осуществление Jailbreak'а основано на эксплуатации уязвимостей, найденных в iOS. Больше об используемых уязвимостях можно узнать тут.

Возможности, которые открывает Jailbreak, помимо доступа к ФС:

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

В контексте пентеста нас интересует прежде всего возможность установки сторонних приложений и полный доступ к ФС.

Разновидности Jailbreak


Всего есть четыре вида Jailbreak'ов:



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

checkra1n является полупривязанным Jailbreak'ом, его можно установить и с macOS, и с Windows, и с Linux. Кроме того, checkra1n поддерживает устройства на iOS до 14.8 включительно, в отличие от unc0ver (iOS 11.0 — 14.3) — поэтому выбор пал на него.

Делаем Jailbreak с помощью checkra1n


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

Как подобрать тулзу для Jailbreak'а
Например, подберем альтернативный способ сделать Jailbreak для iPhone 6s с iOS 14.7.1.

  • Идем на этот сайт
  • Выбираем тип устройства, модель, версию iOS и кликаем «Find Jailbreak for me»:

  • Получаем тул, с помощью которого можно сделать Jailbreak:




Мы рассмотрим процесс установки с macOS. Если у ваc под рукой ноутбук с Windows, то для установки checkra1n нужно будет создать загрузочную флешку (подробная инструкция находится тут). Если же у вас Linux, то процесс будет похожим (подробную инструкцию можно найти здесь).

В качестве устройства используется чистый iPhone 8 с iOS 14.6.

  1. Скачиваем checkra1n с официального сайта и устанавливаем:

  2. Соединяем iPhone и Mac через USB, запускаем Checkra1n, видим, что наш iPhone распознается, но не поддерживается для Jailbreak'а:

  3. Чтобы решить эту проблему, идем в Options и устанавливаем галочки для пунктов «Allow untested iOS/iPadOS/tvOS versions» и «Skip A11 BPR check»

  4. После этого Checkra1n позволит сделать Jailbreak, жмем Start, в окошке с предупреждением жмем OK:




  5. Получаем информацию о переводе в DFU для Jailbreak'а, жмем Next

  6. Видим инструкцию действий для перевода iPhone в DFU mode: Start → Удерживаем одновременно кнопку блокировки и уменьшения громкости (примерно 4 секунды) → Отпускаем кнопку блокировки и оставляем зажатой только кнопку уменьшения громкости (примерно 10 секунд)



    На iPhone более ранних моделей (iPhone 6 — iPhone 7 Plus, где кнопка Home не сенсорная), комбинация клавиш будет другая, об этом написано в инструкции.
  7. Если все сделано правильно, то на экране iPhone мы увидим, как бутится Checkra1n, а на экране компьютера — процесс установки

  8. После завершения установки нажимаем Done, на экране запущенного айфона видим установленные Checkra1n и пакетный менеджер Cydia





    * Иногда пакетный менеджер Cydia не устанавливается автоматически. Если иконка не появилась в течение 1-2 минут после Jailbreak'a, но значок checkra1n есть, нужно тапнуть по иконке checkra1n и оттуда установить Cydia вручную:


Итак, теперь у нас есть устройство с Jailbreak'ом, и самое время перейти к установке ПО, которое понадобится нам во время пентеста.




Арсенал пентестера


SSH


Зачем нужен: для возможности подключения к нашему iPhone по SSH.
Как установить:

Вариант №1:

  • Устанавливаем через Cydia пакет «OpenSSH»
  • Проверяем, что все работает: смотрим в Настройках локальный IP-адрес нашего устройства и пробуем подключиться по ssh со стандартными логином и паролем (root:alpine)*


Вариант №2:

  • Устанавливаем через Cydia пакет «SSH Toggle and Port» → после установки перезагружаем SpringBoard.
  • Теперь в Настройках iPhone в разделе с приложениями можно увидеть установленный твик и зайти в него для настройки и активации SSH.


  • После настройки и активации проверяем работоспособность так же, как и в варианте №1.

* В обоих случаях стоит помнить о том, что сохранение дефолтных данных для входа далеко не лучшая практика и стоит поменять пароль для пользователя root.

Frida


Зачем нужен: динамический анализ тестируемого приложения, дает возможность инжектиться в процессы.
Как установить:

  • Заходим в Cydia → Источники → Правка → Добавить → Вводим адрес репозитория Frida (https://build.frida.re)




  • Если установка прошла успешно, то в доступных репозиториях увидим репозиторий Frida.


  • Переходим в Поиск → набираем Frida → выбираем пакет (просто Frida, не 32-bit devices или A12+ devices) и устанавливаем.




  • Проверяем, что все работает: на компьютере (удобнее всего создать отдельное виртуальное окружение для работы с iOS-устройствами, например, через mkvirtualenv) устанавливаем через pip следующие пакеты: frida, frida-tools. ВАЖНО: убеждаемся, что версия Frida-пакета совпадает с версией Frida на iPhone, в данном примере это версия 15.0.15. Если версии разные, то Frida работать не будет, также стоит иметь в виду, что обновляется Frida довольно часто.


  • Соединяем iPhone и компьютер через Lightning, в консоли выполняем команду frida-ps -U, она выводит список запущенных процессов на устройстве. Если вывод примерно похож на тот, что показан ниже, Frida успешно установлена и готова к дальнейшей работе. В отличие от работы с Android-устройствами, на iOS Frida-server будет всегда запущен по умолчанию, включать руками его не нужно.



Grapefruit


Зачем нужен: осуществляет сбор базовой информации о тестируемом приложении, устанавливается на компьютер. Помогает составить Attack Surface приложения (базовая информация, диплинки, Environments и т.д.) в удобном GUI-формате.
Как установить:

  • Репозиторий утилиты: github.com/ChiChou/grapefruit
  • Для работы Grapefruit необходима установленная на iOS-устройстве Frida.
  • Устанавливаем Grapefruit через npm: npm install -g igf
  • Запускаем из командной строки: igf → переходим в браузер на localhost:31337 → выбираем тестируемое приложение



Liberty Lite


Зачем нужен: блокирует механизм обнаружения Jailbreak.
Как установить:

  • По аналогии с репозиторием Frida добавляем репозиторий: ryleyangus.com/repo


  • Находим пакет Liberty Lite → Изменить → Установить → перезапускаем SpringBoard


  • Проверяем, что все работает: идем в Настройки → Liberty (будет в самом низу) → видим то же, что и на картинке ниже.



A-Bypass


Зачем нужен: еще один твик для блокировки обнаружения джейлбрейка (от приложения к приложению какие-то твики могут не работать, поэтому чем больше у нас вариантов в арсенале на устройстве, тем лучше).
Как установить:

  • Добавляем репозиторий Merona: repo.co.kr


  • Находим A-Bypass → Изменить → Установить → перезагружаем устройство*.



    * После перезагрузки устройства Jailbreak слетит и нужно будет повторить процедуру по его установке. После повторной установки все твики вернутся на место и будут работать.
  • Проверяем, что все установилось: идем в Настройки и видим иконку A-Bypass.



SSL Kill Switch 2


Зачем нужен: помогает обойти SSL-pinning и запрет на проксирование траффика тестируемого приложения.

Как установить:

  • Переходим в репозиторий утилиты (https://github.com/nabla-c0d3/ssl-kill-switch2) → releases → забираем ссылку на .deb пакет (на момент написания статьи — github.com/nabla-c0d3/ssl-kill-switch2/releases/download/0.14/com.nablac0d3.sslkillswitch2_0.14.deb)
  • Проверяем через Cydia следующие зависимости: Debian Packager, Cydia Substrate, PreferenceLoader. Если не установлены, то устанавливаем
  • Подключаемся к устройству по ssh и скачиваем пакет через wget

  • Устанавливаем пакет через dpkg


  • Перезагружаем SpringBoard через командную строку: killall -HUP SpringBoard
  • Проверяем, что все работает: идем в Настройки → SSL Kill Switch 2 (будет в самом низу) → видим то же, что и на картинке ниже


Filza File Manager


Зачем нужен: работа с файлами на устройстве.
Как установить:

  • В Cydia находим пакет Filza File Manager → Установить

  • Проверяем, что все установилось: на рабочем экране появится иконка Filza


Сертификат BurpSuite


Зачем нужен: для перехвата HTTP-траффика с целью последующего анализа.
Как установить:

  • В BurpSuite добавляем новый Proxy Listener: Proxy → Options → Proxy Listeners → Add.
    Указываем номер порта (в данном примере 9090) и отмечаем «All Interfaces»


  • На iOS-устройстве идем в Настройки → выбираем Wi-Fi точку, к которой подключены наше устройство и компьютер с BurpSuite → Настройка прокси → Вручную → указываем локальный IP-адрес компьютера и порт Listener'а, который мы указали на предыдущем шаге


  • Открываем Safari или любой другой веб-браузер и переходим по адресу http://burpsuite. Если пунктом ранее вы указали все правильно, то откроется страница с которой можно будет скачать сертификат по кнопке «CA Certificate»


  • После скачивания профиля отправляемся в Настройки → Профиль загружен → Установить





    В некоторых случаях после установки необходимо перейти в Настройки → Основные → Об этом устройстве → Доверие сертификатам и активировать полное доверие установленному сертификату





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

Комментарии (0)