iOS Testing Environment

Support HackTricks

Apple Developer Program

Provisioning identity - це колекція публічних та приватних ключів, які асоційовані з обліковим записом розробника Apple. Щоб підписувати додатки, вам потрібно сплатити 99$/рік для реєстрації в Apple Developer Program, щоб отримати вашу provisioning identity. Без цього ви не зможете запускати програми з вихідного коду на фізичному пристрої. Інший варіант - використовувати jailbroken device.

Починаючи з Xcode 7.2, Apple надала можливість створити безкоштовний профіль розробки iOS, який дозволяє писати та тестувати ваш додаток на реальному iPhone. Перейдіть до Xcode --> Preferences --> Accounts --> + (Додати новий Appli ID з вашими обліковими даними) --> Натисніть на створений Apple ID --> Manage Certificates --> + (Apple Development) --> Готово __Тоді, щоб запустити ваш додаток на iPhone, спочатку потрібно вказати iPhone довіряти комп'ютеру. Потім ви можете спробувати запустити додаток на мобільному з Xcode, але з'явиться помилка. Тож перейдіть до Settings --> General --> Profiles and Device Management --> Виберіть ненадійний профіль і натисніть "Довіряти".

Зверніть увагу, що додатки, підписані одним і тим же сертифікатом підпису, можуть безпечно ділитися ресурсами, такими як елементи ключового сховища.

Профілі provisioning зберігаються всередині телефону в /Library/MobileDevice/ProvisioningProfiles

Simulator

Зверніть увагу, що симулятор не є тим же, що й емулятор. Симулятор просто імітує поведінку пристрою та функції, але насправді їх не використовує.

Simulator

Перше, що вам потрібно знати, це те, що виконання pentest всередині симулятора буде набагато більш обмеженим, ніж виконання на jailbroken device.

Усі інструменти, необхідні для створення та підтримки iOS додатка, офіційно підтримуються лише на Mac OS. Дефакто інструмент Apple для створення/налагодження/інструментування iOS додатків - це Xcode. Його можна використовувати для завантаження інших компонентів, таких як симулятори та різні версії SDK, необхідні для створення та тестування вашого додатка. Рекомендується завантажити Xcode з офіційного магазину додатків. Інші версії можуть містити шкідливе ПЗ.

Файли симулятора можна знайти в /Users/<username>/Library/Developer/CoreSimulator/Devices

Щоб відкрити симулятор, запустіть Xcode, потім натисніть на Xcode tab --> Open Developer tools --> Simulator __На наступному зображенні, натискаючи на "iPod touch [...]", ви можете вибрати інший пристрій для тестування:

Applications in the Simulator

Всередині /Users/<username>/Library/Developer/CoreSimulator/Devices ви можете знайти всі встановлені симулятори. Якщо ви хочете отримати доступ до файлів програми, створеної всередині одного з емуляторів, може бути важко дізнатися, в якому з них встановлено додаток. Швидкий спосіб знайти правильний UID - виконати додаток у симуляторі та виконати:

xcrun simctl list | grep Booted
iPhone 8 (BF5DA4F8-6BBE-4EA0-BA16-7E3AFD16C06C) (Booted)

Once you know the UID the apps installed within it can be found in /Users/<username>/Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application

However, surprisingly you won't find the application here. You need to access /Users/<username>/Library/Developer/Xcode/DerivedData/{Application}/Build/Products/Debug-iphonesimulator/

And in this folder you can find the package of the application.

Емулятор

Corellium є єдиним публічно доступним емулятором iOS. Це корпоративне SaaS-рішення з ліцензійною моделлю на користувача і не пропонує жодної пробної ліцензії.

Джейлбрейк

Apple суворо вимагає, щоб код, що виконується на iPhone, був підписаний сертифікатом, виданим Apple. Джейлбрейк — це процес активного обходу таких обмежень та інших заходів безпеки, встановлених ОС. Тому, як тільки пристрій зламано, перевірка цілісності, яка відповідає за перевірку встановлених додатків, патчується, тому вона обходиться.

На відміну від Android, ви не можете перейти в "Режим розробника" в iOS, щоб запустити непідписаний/недовірений код на пристрої.

Android Rooting vs. iOS Jailbreaking

Хоча їх часто порівнюють, rooting на Android і jailbreaking на iOS є принципово різними процесами. Rooting Android-пристроїв може включати встановлення бінарного файлу su або заміна системи на кастомний ROM з root-доступом, що не обов'язково вимагає експлойтів, якщо завантажувач розблоковано. Флешинг кастомних ROM замінює ОС пристрою після розблокування завантажувача, іноді вимагаючи експлойт.

На відміну від цього, пристрої iOS не можуть флешити кастомні ROM через обмеження завантажувача, який дозволяє завантажувати лише образи, підписані Apple. Джейлбрейк iOS має на меті обійти захист підписування коду Apple, щоб запустити непідписаний код, процес, ускладнений постійними покращеннями безпеки Apple.

Виклики Джейлбрейку

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

Оновлення iOS контролюються механізмом виклику-відповіді (SHSH blobs), що дозволяє встановлення лише для підписаних Apple відповідей. Цей механізм, відомий як "вікно підпису", обмежує можливість зберігати та пізніше використовувати OTA пакети прошивки. Веб-сайт IPSW Downloads є ресурсом для перевірки поточних вікон підпису.

Види Джейлбрейку

  • Tethered джейлбрейки вимагають підключення комп'ютера для кожного перезавантаження.

  • Semi-tethered джейлбрейки дозволяють завантаження в режимі без джейлбрейку без комп'ютера.

  • Semi-untethered джейлбрейки вимагають ручного повторного джейлбрейку без потреби в комп'ютері.

  • Untethered джейлбрейки пропонують постійне рішення для джейлбрейку без необхідності повторного застосування.

Інструменти та ресурси для Джейлбрейку

Інструменти для джейлбрейку варіюються в залежності від версії iOS та пристрою. Ресурси, такі як Can I Jailbreak?, The iPhone Wiki та Reddit Jailbreak надають актуальну інформацію. Приклади включають:

  • Checkra1n для пристроїв з чіпами A7-A11.

  • Palera1n для пристроїв Checkm8 (A8-A11) на iOS 15.0-16.5.

  • Unc0ver для версій iOS до 14.8.

Модифікація вашого пристрою несе ризики, і до джейлбрейку слід підходити з обережністю.

Переваги та ризики Джейлбрейку

Джейлбрейк усуває накладене ОС пісочницю, дозволяючи додаткам отримувати доступ до всієї файлової системи. Ця свобода дозволяє встановлювати непідтверджені додатки та отримувати доступ до більшої кількості API. Однак для звичайних користувачів джейлбрейк не рекомендується через потенційні ризики безпеки та нестабільність пристрою.

Після Джейлбрейку

Виявлення Джейлбрейку

Кілька додатків намагатимуться виявити, чи пристрій зламано, і в такому випадку додаток не запуститься

  • Після джейлбрейку на iOS файли та папки зазвичай встановлюються, їх можна шукати, щоб визначити, чи пристрій зламано.

  • На зламаному пристрої додатки отримують доступ на читання/запис до нових файлів поза пісочницею.

  • Деякі API виклики будуть поводитися інакше.

  • Наявність служби OpenSSH.

  • Виклик /bin/sh поверне 1 замість 0.

Більше інформації про те, як виявити джейлбрейк тут.

Ви можете спробувати уникнути цього виявлення, використовуючи objection's ios jailbreak disable

Обхід Виявлення Джейлбрейку

  • Ви можете спробувати уникнути цього виявлення, використовуючи objection's ios jailbreak disable

  • Ви також можете встановити інструмент Liberty Lite (https://ryleyangus.com/repo/). Після додавання репозиторію, додаток повинен з'явитися на вкладці «Пошук».

Посилання

Support HackTricks

Last updated