iOS Pentesting without Jailbreak
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Основна ідея
Застосунки, підписані з правом get_task_allow
, дозволяють стороннім застосункам виконувати функцію task_for_pid()
з ідентифікатором процесу початкового застосунку як аргумент, щоб отримати порт завдання над ним (мати можливість контролювати його та отримувати доступ до його пам'яті).
Однак це не так просто, як просто витягти IPA, повторно підписати його з правом і завантажити назад на ваш пристрій. Це пов'язано з захистом FairPlay. Коли підпис змінюється, ключ DRM (управління цифровими правами) анулюється, і застосунок не працюватиме.
З старим джейлбрейкнутим пристроєм можливо встановити IPA, дешифрувати його за допомогою вашого улюбленого інструменту (такого як Iridium або frida-ios-dump) і витягти його з пристрою. Хоча, якщо це можливо, рекомендується просто запитати у клієнта дешифрований IPA.
Отримати дешифрований IPA
Отримати його від Apple
- Встановіть застосунок для тестування на iPhone
- Встановіть і запустіть Apple Configurator на вашому macos
- Відкрийте
Terminal
на вашому Mac і перейдіть до/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps
. IPA з'явиться в цій папці пізніше. - Ви повинні побачити свій iOS пристрій. Двічі клацніть на ньому, а потім натисніть Додати + → Застосунки у верхньому меню.
- Після натискання Додати, Configurator завантажить IPA з Apple і спробує надіслати його на ваш пристрій. Якщо ви раніше виконали мою рекомендацію і вже встановили IPA, з'явиться запит на повторну установку застосунку.
- IPA має бути завантажено в
/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps
, звідки ви можете його забрати.
Перевірте https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed для отримання більш детальної інформації про цей процес.
Дешифрування застосунку
Щоб дешифрувати IPA, ми збираємося його встановити. Однак, якщо у вас старий джейлбрейкнутій iPhone, можливо, його версія не буде підтримуватися застосунком, оскільки зазвичай застосунки підтримують лише останні версії.
Отже, щоб його встановити, просто розпакуйте IPA:
unzip redacted.ipa -d unzipped
Перевірте Info.plist
на наявність мінімально підтримуваної версії, і якщо ваш пристрій старіший за цю версію, змініть значення, щоб воно було підтримуваним.
Знову запакуйте IPA:
cd unzipped
zip -r ../no-min-version.ipa *
Потім встановіть IPA, наприклад, за допомогою:
ideviceinstaller -i no-min-version.ipa -w
Зверніть увагу, що вам може знадобитися AppSync Unified tweak з Cydia, щоб запобігти будь-яким помилкам invalid signature
.
Після встановлення ви можете використовувати Iridium tweak з Cydia, щоб отримати розшифрований IPA.
Патчинг прав та повторне підписання
Щоб повторно підписати додаток з правом get-task-allow
, доступно кілька інструментів, таких як app-signer
, codesign
та iResign
. app-signer
має дуже зручний інтерфейс, який дозволяє дуже легко повторно підписати файл IPA, вказуючи IPA для повторного підписання, додати get-task-allow
та сертифікат і профіль провізії, які потрібно використовувати.
Щодо сертифіката та профілів підписання, Apple пропонує безкоштовні профілі підписання для розробників для всіх облікових записів через Xcode. Просто створіть додаток і налаштуйте один. Потім налаштуйте iPhone, щоб довіряти додаткам розробника, перейшовши в Settings
→ Privacy & Security
, і натисніть на Developer Mode
.
З повторно підписаним IPA настав час встановити його на пристрій для тестування:
ideviceinstaller -i resigned.ipa -w
Увімкнення режиму розробника (iOS 16+)
Оскільки в iOS 16 Apple представила Режим розробника: будь-який бінарний файл, який містить get_task_allow
або підписаний сертифікатом розробника, відмовиться запускатися, поки режим розробника не буде увімкнено на пристрої. Ви також не зможете підключити Frida/LLDB, якщо цей прапорець не увімкнено.
- Встановіть або надішліть будь-який підписаний розробником IPA на телефон.
- Перейдіть до Налаштування → Конфіденційність та безпека → Режим розробника і увімкніть його.
- Пристрій перезавантажиться; після введення коду доступу вам буде запропоновано Увімкнути режим розробника.
Режим розробника залишається активним, поки ви його не вимкнете або не скинете телефон, тому цей крок потрібно виконати лише один раз для кожного пристрою. Документація Apple пояснює наслідки для безпеки.
Сучасні варіанти побічної установки
Тепер існує кілька зрілих способів побічної установки та підтримки підписаних IPA в актуальному стані без джейлбрейка:
Інструмент | Вимоги | Переваги | Обмеження |
---|---|---|---|
AltStore 2 / SideStore | macOS/Windows/Linux компаньйон, який повторно підписує IPA кожні 7 днів з безкоштовним профілем розробника | Автоматичне перезавантаження через Wi-Fi, працює до iOS 17 | Потрібен комп'ютер в тій же мережі, обмеження на 3 додатки, накладене Apple |
TrollStore 1/2 | Пристрій на iOS 14 – 15.4.1, вразливий до помилки CoreTrust | Постійне підписування (без обмеження на 7 днів); комп'ютер не потрібен після установки | Не підтримується на iOS 15.5+ (помилка виправлена) |
Для рутинних пентестів на сучасних версіях iOS Alt/Side-Store зазвичай є найпрактичнішим вибором.
Хукінг / динамічна інструментація
Ви можете підключити свій додаток точно так само, як на джейлбрейкнутому пристрої, як тільки він підписаний з get_task_allow
і режим розробника увімкнено:
# Spawn & attach with objection
objection -g "com.example.target" explore
# Or plain Frida
frida -U -f com.example.target -l my_script.js --no-pause
Останні версії Frida (>=16) автоматично обробляють автентифікацію вказівників та інші пом'якшення iOS 17, тому більшість існуючих скриптів працюють без додаткових налаштувань.
Автоматизований динамічний аналіз з MobSF (без джейлбрейка)
MobSF може інструментувати IPA, підписаний розробником, на реальному пристрої, використовуючи ту ж техніку (get_task_allow
), і надає веб-інтерфейс з браузером файлової системи, захопленням трафіку та консоллю Frida【】. Найшвидший спосіб - запустити MobSF у Docker, а потім підключити ваш iPhone через USB:
docker pull opensecurity/mobile-security-framework-mobsf:latest
docker run -p 8000:8000 --privileged \
-v /var/run/usbmuxd:/var/run/usbmuxd \
opensecurity/mobile-security-framework-mobsf:latest
# Browse to http://127.0.0.1:8000 and upload your resigned IPA
MobSF автоматично розгорне бінарний файл, увімкне сервер Frida всередині пісочниці додатку та згенерує інтерактивний звіт.
iOS 17 та застереження режиму блокування
- Режим блокування (Налаштування → Конфіденційність та безпека) блокує динамічний зв'язувач від завантаження непідписаних або зовнішньо підписаних динамічних бібліотек. При тестуванні пристроїв, на яких може бути увімкнено цей режим, переконайтеся, що він вимкнений, інакше ваші сесії Frida/objection завершаться негайно.
- Аутентифікація вказівників (PAC) застосовується на всіх пристроях A12+. Frida ≥16 прозоро обробляє видалення PAC — просто підтримуйте актуальними як frida-server, так і Python/CLI інструменти, коли виходить нова основна версія iOS.
Посилання
- https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed
- Документація для розробників Apple – Увімкнення режиму розробника на пристрої: https://developer.apple.com/documentation/xcode/enabling-developer-mode-on-a-device
- Mobile Security Framework (MobSF): https://mobsf.github.io/Mobile-Security-Framework-MobSF/
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.