Статьи

Обхід перевірки версії iOS і валідації сертифікату

Деякі iOS-додатки перевіряють версію операційної системи на пристрої. Нещодавно, під час тестування однієї програми, я як раз і зіткнувся з подібною перевіркою. Якщо версія iOS була нижче 7.1, додаток не встановлювалося, і випадали помилка.

Автор: Vikram Kulkarni

Деякі iOS-додатки перевіряють версію операційної системи на пристрої. Нещодавно, під час тестування однієї програми, я як раз і зіткнувся з подібною перевіркою. Якщо версія iOS була нижче 7.1, додаток не встановлювалося, і випадали помилка.

У цій статті будуть розглянуті наступні теми:

  • Зміна версії iOS в файлі SystemVersion.plist.
  • Зміна версії в plist-файлі, що знаходяться в пакеті програми.
  • Використання утиліти «iOS-ssl-Kill switch» для обходу валідації сертифіката.

Зміна версії iOS в файлі SystemVersion.plist

Версія iOS може бути змінена (на джейлбрейковом пристрої) в два простих кроки за допомогою зміни відповідного значення в файлі SystemVersion.plist:

  1. Підключаємося до джейлбрейковому пристрою по протоколу SSH (або використовуємо ifile, доступний в cydia) для перегляду вмісту системної директорії.
  2. Змінюємо значення 'ProductVersion' у файлі '/System/Library/CoreServices/SystemVersion.plist'.

plist'

Малюнок 1: Вміст файлу SystemVersion.plist

Цей трюк дозволяє змінити значення, що відображається в розділі 'Settings / General / about'. Однак метод спрацює лише для тих додатків, які перевіряють версію в файлі SystemVersion.plist. Якщо після зміни версії, додаток все одно відмовляється працювати, використовуйте другий метод.

Зміна версії в plist-файлі, що знаходяться в пакеті додатки

Другий метод, що дозволяє змінити версію, складається з трьох простих кроків:

  1. Перейменовуємо файлу ipa в .zip і розпаковуємо архів.
  2. Змінюємо значення 'minimum ios version' у файлі info.plist, який зазвичай знаходиться в папці \ Payload \ appname.app.
  3. Пакуємо архів і перейменовуємо його назад в ipa. [Примітка: деякі додатки перевіряють значення 'minimum ios version' в інших plist-файлах, що знаходяться в пакеті].

[Примітка: деякі додатки перевіряють значення 'minimum ios version' в інших plist-файлах, що знаходяться в пакеті]

Малюнок 2: Вміст файлу info.plist

Після зміни plist-файлів порушується підпис пакета. Для вирішення цієї проблеми, необхідно зареєструвати IPA за допомогою утиліти з цієї статті .

Деякі додатки перевіряють версію iOS під час установки. Коли користувач встановлює додаток за допомогою iTunes або xcode, використовуючи IPA, відбувається перевірка версії iOS, запущеної на пристрої, і якщо версія нижче, ніж потрібно, з'являється помилка.

Коли користувач встановлює додаток за допомогою iTunes або xcode, використовуючи IPA, відбувається перевірка версії iOS, запущеної на пристрої, і якщо версія нижче, ніж потрібно, з'являється помилка

Малюнок 3: Помилка, що виникає при установці додатка через xcode

Подібна перевірка також обходиться в кілька кроків:

  1. Перейменовуємо файл .ipa в .zip і витягаємо папку .app.
  2. Копіюємо папку .app туди, де встановлені iOS додатки (/ root / application) за допомогою будь-якого SFTP-клієнта (наприклад, WinSCP).
  3. Підключаємося до пристрою через SSH, заходимо в папку, де встановлений IPA, а потім ставимо права на запуск у папки .app (chmod -R 755 або chmod -R 777). Альтернативний спосіб - натиснути правою кнопкою миші на папці .app в WinSCP і змінити властивості директорії, встановивши відповідні права.
  4. Після перезапуску iOS пристрої додаток буде успішно встановлено.

Після перезапуску iOS пристрої додаток буде успішно встановлено

Малюнок 4: Встановлення нових прав для директорії

Обхід валідації сертифікату

Деякі додатки перевіряють сертифікат для запобігання проксіфікаціі трафіку за допомогою утиліт кшталт Burp. Зазвичай в бінарному файлі додатки намертво зашитий клієнтський сертифікат. Сервер перевіряє цей сертифікат, і якщо валідація закінчується невдало, виникає помилка. Більш докладно про це можна почитати в іншій моїй статті в співавторстві зі Стівом Керн.

Іноді буває важко витягти сертифікат з програми і встановити його всередину проксі. Альтернатива - використовувати утиліту ios-ssl-kill-switch. ios-ssl-kill-switch чіпляється до Secure Transport API (найнижчий рівень) і відключає перевірку сертифіката. Більшість перевірок використовують NSURLConnection на більш високому рівні. Більше подробиць можна дізнатися тут .

Перевірка сертифіката обходиться в кілька кроків:

  1. встановлюємо утиліту kill-ssl-switch .
  2. Всі залежні пакети повинні бути встановлені заздалегідь.
  3. Перезапускаємо пристрій або перезапустіть SpringBoard за допомогою наступної команди 'killall -HUP SpringBoard'.
  4. Встановлюємо опцію Disable Certificate Validation в розділі 'Settings / SSL Kill Switch'.
  5. Перезапускаємо додаток, після чого трафік повинен перехоплюватися успішно.

Прив'язка сертифіката (Certificate pinning) обходиться шляхом подцепленний до API, що виконує валідацію сертифікату, і постійного повернення «істини» при перевірці. Для вирішення цього завдання цілком підійде фреймворк Mobilesubstrate. Існує кілька інших корисних утиліт для відключення прив'язки, наприклад 'Trustme' і 'Snoop-it'.

Малюнок 5: Відключення перевірки сертифіката в SSL Kill Switch

Новости

Как создать фото из видео
Кризис заставляет искать дополнительные источники дохода. Одним из таких источников может стать торговля на валютном рынке Форекс. Но чтобы не потерять свои деньги необходимо работать с надежным брокером.

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

Как оформить диск малыш от рождения до года из фото и видео
Оформить диск "Малыш от рождения до года" из фото и видео можно совершенно разными способами! Кто-то для достижения данной цели идет на шоу-таланты, кто-то пользуется услугами профессионалов, а кто-то