iOS Testing Environment

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Програма розробника Apple

Ідентифікаційний ключ - це колекція публічних та приватних ключів, які пов'язані з обліковим записом розробника Apple. Для підпису додатків вам потрібно заплатити 99 доларів на рік для реєстрації в Програмі розробника Apple, щоб отримати свій ідентифікаційний ключ. Без цього ви не зможете запускати додатки з вихідного коду на фізичному пристрої. Інша опція - використовувати пристрій з виправленою прошивкою.

Починаючи з Xcode 7.2, Apple надав можливість створити безкоштовний профіль розробки iOS, який дозволяє писати та тестувати ваш додаток на справжньому iPhone. Перейдіть до Xcode --> Preferences --> Accounts --> + (Додати новий ідентифікатор програми до ваших облікових даних) --> Клацніть на створений ідентифікатор програми Apple --> Керування сертифікатами --> + (Розробка Apple) --> Готово __Потім, щоб запустити ваш додаток на iPhone, спочатку потрібно вказати iPhone довіру комп'ютеру. Потім ви можете спробувати запустити додаток на мобільному з Xcode, але з'явиться помилка. Тому перейдіть до Налаштування --> Загальні --> Профілі та управління пристроями --> Виберіть ненадійний профіль та клацніть "Довіра".

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

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

Симулятор

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

Симулятор

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

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

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

Щоб відкрити симулятор, запустіть Xcode, потім натисніть на вкладку Xcode --> Відкрити інструменти розробника --> Симулятор __На наступному зображенні, клацнувши на "iPod touch [...]" ви можете вибрати інший пристрій для тестування:

Додатки в симуляторі

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

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

Після того, як ви знаєте UID, додатки, встановлені всередині нього, можна знайти в /Users/<username>/Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application

Проте, дивно, ви не знайдете додаток тут. Вам потрібно отримати доступ до /Users/<username>/Library/Developer/Xcode/DerivedData/{Application}/Build/Products/Debug-iphonesimulator/

І в цій папці ви можете знайти пакет додатка.

Емулятор

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

Джейлбрейкінг

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

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

Рутинг Android проти Джейлбрейкінгу iOS

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

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

Виклики Джейлбрейкінгу

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

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

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

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

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

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

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

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

Інструменти для джейлбрейкінгу відрізняються за версією 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. Однак для звичайних користувачів джейлбрейкінг не рекомендується через потенційні ризики безпеки та нестабільність пристрою.

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

pageiOS Basic Testing Operations

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

Декілька додатків спробують виявити, чи є мобільний пристрій джейлбрейкнутим, і в такому випадку додаток не запуститься

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

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

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

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

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

Додаткова інформація про виявлення джейлбрейкінгу тут.

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

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

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

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

Посилання

Last updated