iOS Testing Environment
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ідентифікатор надання - це набір публічних і приватних ключів, які пов'язані з обліковим записом розробника Apple. Щоб підписувати додатки, вам потрібно сплатити 99$/рік для реєстрації в Apple Developer Program, щоб отримати свій ідентифікатор надання. Без цього ви не зможете запускати програми з вихідного коду на фізичному пристрої. Інший варіант - використовувати пристрій з джейлбрейком.
Починаючи з Xcode 7.2, Apple надала можливість створювати безкоштовний профіль надання для розробки iOS, який дозволяє писати та тестувати вашу програму на реальному iPhone. Перейдіть до Xcode --> Preferences --> Accounts --> + (Додати новий Appli ID з вашими обліковими даними) --> Натисніть на створений Apple ID --> Управління сертифікатами --> + (Apple Development) --> Готово __Потім, щоб запустити вашу програму на iPhone, спочатку потрібно вказати iPhone довіряти комп'ютеру. Потім ви можете спробувати запустити програму на мобільному з Xcode, але з'явиться помилка. Тож перейдіть до Settings --> General --> Profiles and Device Management --> Виберіть ненадійний профіль і натисніть "Довіряти".
Зверніть увагу, що додатки, підписані одним і тим же сертифікатом підпису, можуть безпечно ділитися ресурсами, такими як елементи ключа.
Профілі надання зберігаються всередині телефону в /Library/MobileDevice/ProvisioningProfiles
Зверніть увагу, що симулятор не є тим же, що й емулятор. Симулятор просто імітує поведінку пристрою та функції, але насправді їх не використовує.
Перше, що вам потрібно знати, це те, що виконання пентесту всередині симулятора буде набагато більш обмеженим, ніж виконання його на пристрої з джейлбрейком.
Усі інструменти, необхідні для створення та підтримки програми iOS, офіційно підтримуються лише на Mac OS. Фактичним інструментом Apple для створення/налагодження/інструментування iOS-додатків є Xcode. Його можна використовувати для завантаження інших компонентів, таких як симулятори та різні версії SDK, необхідні для створення та тестування вашої програми. Рекомендується завантажити Xcode з офіційного магазину додатків. Інші версії можуть містити шкідливе ПЗ.
Файли симулятора можна знайти в /Users/<username>/Library/Developer/CoreSimulator/Devices
Щоб відкрити симулятор, запустіть Xcode, потім натисніть на Xcode tab --> Open Developer tools --> Simulator __На наступному зображенні, натискаючи на "iPod touch [...]", ви можете вибрати інший пристрій для тестування:
Всередині /Users/<username>/Library/Developer/CoreSimulator/Devices
ви можете знайти всі встановлені симулятори. Якщо ви хочете отримати доступ до файлів програми, створеної всередині одного з емуляторів, може бути важко дізнатися, в якому з них встановлено додаток. Швидкий спосіб знайти правильний UID - виконати додаток у симуляторі та виконати:
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-рішення з моделлю ліцензування на користувача і не пропонує жодної пробної ліцензії.
Перегляньте цей блог про те, як провести pentest iOS-додатку на не джейлбрейкнутому пристрої: https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed
Apple суворо вимагає, щоб код, що виконується на iPhone, був підписаний сертифікатом, виданим Apple. Джейлбрейк — це процес активного обходу таких обмежень та інших заходів безпеки, встановлених ОС. Тому, як тільки пристрій джейлбрейкнуто, перевірка цілісності, яка відповідає за перевірку встановлених додатків, патчується, тому вона обходиться.
На відміну від Android, ви не можете перейти в "Режим розробника" в iOS, щоб запустити непідписаний/недовірений код на пристрої.
Хоча їх часто порівнюють, rooting на Android і джейлбрейк на 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/). Після додавання репозиторію, додаток має з'явитися на вкладці «Пошук».
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)