iOS Testing Environment
Reading time: 6 minutes
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
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) --> Done
__Потім, щоб запустити ваш додаток на вашому iPhone, спочатку потрібно вказати iPhone довіряти комп'ютеру. Потім ви можете спробувати запустити додаток на мобільному з Xcode, але з'явиться помилка. Тож перейдіть до Settings --> General --> Profiles and Device Management --> Виберіть ненадійний профіль і натисніть "Trust".
Зверніть увагу, що додатки, підписані одним і тим же сертифікатом підпису, можуть безпечно ділитися ресурсами, такими як елементи ключового сховища.
Профілі provisioning зберігаються всередині телефону в /Library/MobileDevice/ProvisioningProfiles
Simulator
note
Зверніть увагу, що симулятор не є емулятором. Симулятор просто імітує поведінку пристрою та функції, але насправді їх не використовує.
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)
Якщо ви знаєте 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-рішення з ліцензійною моделлю на користувача і не пропонує жодної пробної ліцензії.
Необхідність джейлбрейку
Перегляньте цей блог про те, як провести pentest iOS-додатку на не джейлбрейкнутому пристрої: https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed
Джейлбрейк
Apple суворо вимагає, щоб код, що виконується на iPhone, був підписаний сертифікатом, виданим Apple. Джейлбрейк - це процес активного обходу таких обмежень та інших заходів безпеки, встановлених ОС. Тому, як тільки пристрій джейлбрейкнуто, перевірка цілісності, яка відповідає за перевірку встановлених додатків, патчується, тому вона обходиться.
note
На відміну від Android, ви не можете перейти в "Режим розробника" в iOS, щоб запустити непідписаний/недовірений код на пристрої.
Рутинг Android vs. Джейлбрейк iOS
Хоча їх часто порівнюють, рутинг на Android і джейлбрейк на iOS є принципово різними процесами. Рутинг Android-пристроїв може включати встановлення бінарного файлу su
або заміна системи на рутований кастомний ROM, що не обов'язково вимагає експлойтів, якщо завантажувач розблоковано. Флешинг кастомних 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. Однак для звичайних користувачів джейлбрейк не рекомендується через потенційні ризики безпеки та нестабільність пристрою.
Після джейлбрейку
Виявлення джейлбрейку
Кілька додатків намагатимуться виявити, чи мобільний пристрій джейлбрейкнуто, і в такому випадку додаток не запуститься
- Після джейлбрейку на iOS файли та папки зазвичай встановлюються, їх можна шукати, щоб визначити, чи пристрій джейлбрейкнуто.
- У джейлбрейкнутому пристрої додатки отримують доступ на читання/запис до нових файлів поза пісочницею.
- Деякі виклики API поведуться інакше.
- Наявність служби OpenSSH.
- Виклик
/bin/sh
поверне 1 замість 0.
Більше інформації про те, як виявити джейлбрейк тут.
Ви можете спробувати уникнути цього виявлення, використовуючи objection's ios jailbreak disable
Обхід виявлення джейлбрейку
- Ви можете спробувати уникнути цього виявлення, використовуючи objection's
ios jailbreak disable
- Ви також можете встановити інструмент Liberty Lite (https://ryleyangus.com/repo/). Після додавання репозиторію додаток має з'явитися на вкладці «Пошук»
Посилання
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.