Как повторно установить сертификат джейлбрейка iOS 10.2 Yalu автоматически без помощи компьютера – IT-HERE.RU

Как повторно установить сертификат джейлбрейка iOS 10.2 Yalu автоматически без помощи компьютера - IT-HERE.RU Сертификаты

Ipa файл

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

Мы можем попробовать перехватить трафик запущенного приложения и использовать разного рода инструменты, но для полноценного анализа желательно иметь IPA файл — аналог APK файла для Android. Чем ближе к оригинальному, тем лучше.

Находим IPA файл. Получить IPA файл можно несколькими способами:

  • Использовать приложения для управления устройством с компьютера (например, iTunes или Apple Configurator 2). Они скачивают приложения из App Store, а потом заливают на девайс. Но можно поймать момент, когда файл уже скачан на компьютер из App Store, но еще не залит на девайс, и скопировать его.

  • Установить приложение из App Store, а потом сдампить (например, через frida-ios-dump). Этот способ сработает только с джейлбрейкнутым девайсом, и в данном случае будут отсутствовать файлы с мета-информацией для App Store.

  • Использовать сайты с IPA файлами. Но там вы, скорее всего, найдете уже неоригинальный файл и исследовать его на безопасность будет не так интересно, но все еще полезно для использования.

Как получить IPA файл с помощью Apple Configurator 2:

Динамическая инструментализация (dynamic insrtumentation)

Вот основные инструменты динамической инструментализации:

Эти инструменты помогают разбирать приложения в режиме выполнения: смотреть память приложения, используемые ресурсы, локальные хранилища, базы данных, Keychain, тестировать джейлбрейк и SSL пиннинг.

Посмотрим на пример простого обхода джейлбрейка с помощью Frida. Мы уже разобрали реализацию одного из вариантов обнаружения джейлбрейка в приложении DVIA-v2, но на самом деле для его обхода нам достаточно информации из class-dump. В приложении есть класс JailbreakDetection и метод isJailbroken, который возвращает значение типа boolean.

Попробуем заменить возвращаемое значение с помощью кода для Frida:

if (ObjC.available) {
  var hook = ObjC.classes.JailbreakDetection["isJailbroken"];
  console.log("registering hook");

  Interceptor.attach(hook.implementation, {
    onLeave: function(retval) {
      console.log("replacing return value");
      retval.replace(ptr("0x0"));
    }
  });
}

Cкрипт проверяет доступность API для Objective-C (ObjC.available), ищет метод isJailbroken класса JailbreakDetection и регистрирует его для перехвата. На выходе из метода заменяем возвращаемое значение на 0 (false), что в данном случае будет означать то, что девайс не джейлбрейкнут.

Обход простого обнаружения джейлбрейка с помощью Frida
Обход простого обнаружения джейлбрейка с помощью Frida

Такие простые вещи обходятся любым готовым инструментом. Если готовый инструмент не подходит, то придется написать свой скрипт. 

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

const pathes = [
  "/Applications/Cydia.app",
  "/Library/MobileSubstrate/MobileSubstrate.dylib",
  "/bin/bash",
  "/usr/sbin/sshd",
  "/etc/apt",
  "/private/var/lib/apt/"
];

var fileExistsAtPathHook = ObjC.classes.NSFileManager["- fileExistsAtPath:"];

Interceptor.attach(fileExistsAtPathHook.implementation, {
  onEnter: function(args) {
    this.bypass = false;
    var path = ObjC.Object(args[2]).toString();
    for (var i = 0; i < pathes.length; i  ) {
      if (path.includes(pathes[i])) {
        this.bypass = true;
        console.log("fileExistsAtPath bypass: "   path);
        break;
      }
    };
  },
  onLeave: function(retval) {
    if (this.bypass) {
      console.log("fileExistsAtPath bypassed");
      retval.replace(ptr("0x0"));
     }
   }
});

var canOpenURLHook = ObjC.classes.UIApplication["- canOpenURL:"];

Interceptor.attach(canOpenURLHook.implementation, {
  onEnter: function(args) {
    this.bypass = false;
    var url = ObjC.Object(args[2]).toString();
    if (url.includes("cydia")) {
      this.bypass = true;
      console.log("canOpenURLHook bypass: "   url);
    }
  },
  onLeave: function(retval) {
    if (this.bypass) {
      console.log("canOpenURLHook bypassed");
      retval.replace(ptr("0x0"));
    }
  }
});

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

Про сертификаты:  Чем отличаются открытый и закрытый ключи ЭЦП?

Также на джейбрейкнутом девайсе можно попробовать обойти Touch ID с использованием Objection и команды “ios ui biometrics_bypass”.

Пример тестирования обхода Touch ID
Пример тестирования обхода Touch ID

Это пример использования готового скрипта, но написать такой код самостоятельно тоже можно: мы просто запустили похожий скрипт, используя инструмент с вшитым набором скриптов. Подкладываем неправильный отпечаток и перехватываем его. Операционная система отвечает, что доступа нет, но complete hook заканчивается, и нам удается пройти аутентификацию в приложении. Можно ознакомиться с кодом приложения тут.

Теперь рассмотрим Cycript. Этот инструмент по функциональности похож на предыдущие, но также может помочь связать элементы UI с кодом. 

Допустим, что в приложении есть кнопка, и нам нужно понять, какой метод в коде вызывается при ее нажатии. Мы подключаемся к приложению, смотрим, какие кнопки есть в этом UI, находим его по какому-то лейблу и смотрим, какой у него целевой объект (target):

cy# var buttons = choose(UIButton)
cy# buttons[8].titleLabel.text
@"Jailbreak Test 1"
cy# buttons[8].allTargets
[NSSet setWithArray:@[#"<DVIA_v2.JailbreakDetectionViewController: 0x1058308f0>"]]]
cy# buttons[8].allControlEvents
64
cy# target=[buttons[8].allTargets anyObject]
#"<DVIA_v2.JailbreakDetectionViewController: 0x1058308f0>"
cy# [buttons[0] actionsForTarget:target forControlEvent:UIControlEventTouchUpInside]
@["jailbreakTest1Tapped:"]

Рассмотрим подробнее, что же тут происходит:

  1. Выбираем все объекты класса UIButton.

  2. Находим нужную нам кнопку по надписи на ней (см. titleLabel).

  3. Находим, что является целевым объектом для действия по данной кнопке (см.   allTargets). Получаем класс JailbreakDetectionViewController.

  4. Смотрим, какие типы действий может обрабатывать данная кнопка (см. allControlEvents). Выясняем, что кнопка умеет обрабатывать нажатие, UIControlEventTouchUpInside (UIControlEventTouchUpInside = 1 <<  6 = 64).

  5. Вызываем метод actionsForTarget с известными нам данными и получаем имя метода: jailbreakTest1Tapped.

При нажатии на кнопку “Jailbreak Test 1” происходит вызов метода jailbreakTest1Tapped класса JailbreakDetectionViewController. Так мы можем соединить элементы интерфейса с соответствующим кодом и заниматься реверсом этих частей приложения.

Как проверить, сколько проработает джейлбрейк ios 9.3.3 на iphone (7 или 365 дней) | яблык

24 июля нынешнего года команда китайских разработчиков Pangu Team выпустила утилиту, позволяющую выполнить джейлбрейк iOS 9.3.3 и более ранних версий ОС. Установка приложения для джейлбрейка требует инсталляции соответствующего сертификата, срок действия которого варьируется от семи дней до одного года.

Как проверить, сколько проработает джейлбрейк iOS 9.3.3 на iPhone (7 или 365 дней)

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

1. Загрузите из Cydia и установите бесплатное приложение iFile.

2. Запустите приложение и откройте папку /var/MobileDevice/ProvisioningProfiles.

Как проверить, сколько проработает джейлбрейк iOS 9.3.3 на iPhone (7 или 365 дней)

3. В текстовом редакторе откройте файл сертификата.

Как проверить, сколько проработает джейлбрейк iOS 9.3.3 на iPhone (7 или 365 дней)

4. Найдите строку <key>ExpirationDate</key>. В ней указана конечная дата действия сертификата. Если в дате фигурирует 2021 год, значит, сертификат действует в течение 365 дней. Если нет, срок действия сертификата – 7 дней.

Как проверить, сколько проработает джейлбрейк iOS 9.3.3 на iPhone (7 или 365 дней)

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

Про сертификаты:  Установка программы-криптопровайдера ViPNet CSP :: Руководство по использованию сервиса "1С-Отчетность" в 1С:Бухгалтерии 8

Как проверить, сколько проработает джейлбрейк iOS 9.3.3 на iPhone (7 или 365 дней)

Смотрите также:

Локальная аутентификация

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

Есть разные варианты локальной аутентификации:

Подготовка окружения

Для начала нужно подготовить окружение. 

Вот что для этого необходимо:

  • Компьютер-хост. В идеале это должен быть MacOS, потому что с другой операционной системой возникнут сложности с установкой и запуском специализированного ПО.

  • Джейлбрейкнутый тестовый девайс с желаемой версией iOS. iOS симулятор, который поставляется в комплекте с Xcode, не подойдет, так как он предназначен для запуска приложений, собранных под x86 архитектуру. Релизные версии приложений, предназначенные для запуска на реальном девайсе, собираются под ARM. Поэтому приложения, загруженные из Apple App Store, не получится запустить в симуляторе iOS.

  • Сеть Wi-Fi, которая разрешает трафик от клиента к клиенту (или подход SSH через USB).

  • Перехватывающий прокси (Burp Suite, Charles, mitmproxy и т.д.).

Это набор максимум: на самом деле можно работать и не на MacOS, и не на джейлбрейкнутом устройстве, но будут дополнительные сложности: отсутствие нужных инструментов, необходимость переподписывать приложение с использованием сертификата разработчика и т.д.

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

Краткая инструкция выглядит так:

  1. Найти подходящее тестовое устройство и сделать резервную копию.

  2. Проверить, что для установленной версии iOS есть джейлбрейк.

  3. Выбрать подходящий вариант (по этой ссылке можете почитать про сравнение между Tethered/Untethered).

  4. Джейлбрейкнуть, следуя инструкции к выбранному способу: например,  Checkra1n или Unc0ver.

Если хотите узнать подробно о том, как работают джейлбрейки, почитайте статью с техническим анализом эксплойта для checkm8 от Digital Security. Там много интересных подробностей.

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

Вот некоторые полезные приложения:

Прокси. Следующий обязательный шаг — это настройка прокси для перехвата трафика приложения на устройстве. 

Логика этого процесса аналогична настройке перехвата для браузера:

Полезные ссылки

В статье мы поверхностно рассмотрели инструменты и подходы, используемые при анализе мобильных приложений. Материал основан на подходах и рекомендация из  OWASP Mobile Security Testing Guide — это подробное руководство по тестированию безопасности мобильных приложений под iOS и Android.

Практические примеры я взял из Damn Vulnerable iOS App (DVIA-v2) — одного из тестовых приложений, на котором можно оттачивать навыки и экспериментировать.

Также для закрепления материала из статьи советую посмотреть GimmeFlag — iOS приложение с простыми CTF-like заданиями на статический анализ. Для решения заданий достаточно минимального набора инструментов, наличие iOS девайса (как и Mac OS) не требуется.

Про сертификаты:  О плановой замене сертификата ключа проверки электронной подписи криптографического сервера НРД

Смотрите похожее

iOS

Установка и запуск

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

Первая проблема, с которой мы сталкиваемся, — установка. Для пользователей есть один официальный способ это сделать — App Store. Для организаций существуют разные enterprise-решения, которые могут распространять приложение внутри компании в обход AppStore на девайсах, в которых уже включены MDM и т.д.

Нам это не нужно, поэтому попробуем поставить приложение (например, AppSync Unified), которое позволит устанавливать неподписанные файлы, файлы с невалидной подписью или с возможностью переподписать файл. 

Самый простой вариант для этой задачи — Xcode (Window — Devices and Simulators) или Cydia Impactor (но в связи с последними изменениями от Apple у меня он не работает, вот тут есть информация про ошибки).

Пример установки приложения через Xcode (Window — Devices and Simulators)
Пример установки приложения через Xcode (Window — Devices and Simulators)

Также неподписанное приложение можно установить, используя  специальное приложение на девайсе. Например, через Filza: загрузить IPA на девайс (например, через SFTP), найти IPA файл и нажать “Install”.

Установка приложения с использованием Filza
Установка приложения с использованием Filza

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

Пример предупреждения о джейлбрейке
Пример предупреждения о джейлбрейке

Один из простых способов обхода подобных предупреждений — использование специальных приложений (например, Liberty Lite), но это сработает только в случае простых механизмов обнаружения. Более сложные способы разберем в этой статье в разделе про инструменты динамической инструментализации.

Как повторно подписать сертификат джейлбрейка ios 10.2 yaluавтоматически посредством extenderinstaller

Шаг 1: Откройте Cydia и перейдите на вкладку Sources.

Шаг 2: Нажмите Edit => Add и добавьте репозиторий repo.incendo.ws.

Шаг 3: Найдите в добавленном репозитории Extender Installer и установите.

Как повторно установить сертификат джейлбрейка iOS 10.2 Yalu автоматически без помощи компьютера - IT-HERE.RU

Шаг 4: После перезагрузки устройства запустите приложение Extender с домашнего экрана.

Как повторно установить сертификат джейлбрейка iOS 10.2 Yalu автоматически без помощи компьютера - IT-HERE.RU

Шаг 5: Перейдите на вкладку More и убедитесь, что вы вошли со своим Apple ID. Если нет, выполните вход, нажав на кнопку Sign и указав необходимые данные. Хотя они отправляются только в Apple, рекомендуем создать временный Apple ID.

Как повторно установить сертификат джейлбрейка iOS 10.2 Yalu автоматически без помощи компьютера - IT-HERE.RU

Шаг 6: Затем вы увидите опцию ‘Re-sign Application When’ на вкладке More. Она позволяет выбрать, когда будет осуществляться автоматическая подпись приложений.

Пожалуй, это все, что вам необходимо для успешной установки Extender Installer и автоматического подписания джейлбрейка Yalu наряду с остальными приложениями. Во вкладке Installed («Загруженные») доступен список полезной нагрузки, которую вы установили на устройство, а также дата последнего подписания. Как только джейлбрейк Yalu или другое приложение переподпишется автоматически, вы получите уведомление об этом.

На сегодняшний день не существует джейлбрейка Yalu для iOS 10.3.1, iOS 10.3 и iOS 10.2.1. Однако команда Pangu продемонстрировала собственный джейлбрейк iOS 10.3.1 на технологической конференции в Китае. Стоит надеяться на скорый выход джейлбрейка Pangu для iOS 10.3.1.

В случае возникновения любых вопросов пишите нам в комментариях!

Оцените статью
Мой сертификат
Добавить комментарий