Translated ['src/mobile-pentesting/ios-pentesting/ios-pentesting-without

This commit is contained in:
Translator 2025-07-11 06:08:05 +00:00
parent 28fb243f87
commit ff65adba62

View File

@ -2,17 +2,16 @@
{{#include ../../banners/hacktricks-training.md}}
## Основна ідея
Застосунки, підписані з **правом `get_task_allow`**, дозволяють стороннім застосункам виконувати функцію **`task_for_pid()`** з ідентифікатором процесу початкового застосунку як аргумент, щоб отримати порт завдання над ним (мати можливість контролювати його та отримувати доступ до його пам'яті).
Однак це не так просто, як просто витягти IPA, повторно підписати його з правом і завантажити назад на ваш пристрій. Це пов'язано з захистом FairPlay. Коли підпис змінюється, ключ DRM (управління цифровими правами) **стає недійсним, і застосунок не працюватиме**.
З старим джейлбрейкнутим пристроєм можна встановити IPA, **розшифрувати його за допомогою вашого улюбленого інструменту** (такого як Iridium або frida-ios-dump) і витягти його з пристрою. Хоча, якщо це можливо, рекомендується просто запитати у клієнта розшифрований IPA.
З старим джейлбрейкнутим пристроєм можна встановити IPA, **декодувати його за допомогою вашого улюбленого інструменту** (такого як Iridium або frida-ios-dump) і витягти його з пристрою. Хоча, якщо це можливо, рекомендується просто запитати у клієнта декодований IPA.
## Отримати розшифрований IPA
## Отримати декодований IPA
### Отримати його від Apple
@ -26,9 +25,9 @@
Перевірте [https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed](https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed) для отримання більш детальної інформації про цей процес.
### Розшифрування застосунку
### Декодування застосунку
Щоб розшифрувати IPA, ми збираємося його встановити. Однак, якщо у вас старий джейлбрейкнутій iPhone, можливо, його версія не буде підтримуватися застосунком, оскільки зазвичай застосунки підтримують лише останні версії.
Щоб декодувати IPA, ми збираємося його встановити. Однак, якщо у вас старий джейлбрейкнутій iPhone, можливо, його версія не буде підтримуватися застосунком, оскільки зазвичай застосунки підтримують лише останні версії.
Отже, щоб його встановити, просто розпакуйте IPA:
```bash
@ -52,25 +51,70 @@ ideviceinstaller -i no-min-version.ipa -w
### Патчинг прав та повторне підписання
Щоб повторно підписати додаток з правом `get-task-allow`, доступно кілька інструментів, таких як `app-signer`, `codesign` та `iResign`. `app-signer` має дуже зручний інтерфейс, який дозволяє дуже легко повторно підписати файл IPA, вказуючи IPA для повторного підписання, **додати `get-taks-allow`** та сертифікат і профіль для використання.
Щоб повторно підписати додаток з правом `get-task-allow`, доступно кілька інструментів, таких як `app-signer`, `codesign` та `iResign`. `app-signer` має дуже зручний інтерфейс, який дозволяє дуже легко повторно підписати файл IPA, вказуючи IPA для повторного підписання, **додати `get-task-allow`** та сертифікат і профіль провізії для використання.
Щодо сертифіката та профілів підписання, Apple пропонує **безкоштовні профілі підписання для розробників** для всіх облікових записів через Xcode. Просто створіть додаток і налаштуйте один. Потім налаштуйте **iPhone, щоб довіряти додаткам розробника**, перейшовши в `Налаштування``Конфіденційність та безпека`, і натисніть на `Режим розробника`.
Щодо сертифіката та профілів підписання, Apple пропонує **безкоштовні профілі підписання для розробників** для всіх облікових записів через Xcode. Просто створіть додаток і налаштуйте один. Потім налаштуйте **iPhone для довіри до додатків розробника**, перейшовши в `Налаштування``Конфіденційність та безпека`, і натисніть на `Режим розробника`.
З повторно підписаним IPA настав час встановити його на пристрій для тестування:
З повторно підписаним IPA настав час встановити його на пристрій для пентестування:
```bash
ideviceinstaller -i resigned.ipa -w
```
### Hook
---
Ви можете легко підключити свій додаток, використовуючи загальні інструменти, такі як frida та objection:
### Увімкнення режиму розробника (iOS 16+)
Оскільки в iOS 16 Apple представила **Режим розробника**: будь-який бінарний файл, який містить `get_task_allow` *або* підписаний сертифікатом розробника, відмовиться запускатися, поки режим розробника не буде увімкнено на пристрої. Ви також не зможете підключити Frida/LLDB, якщо цей прапорець не увімкнено.
1. Встановіть або надішліть **будь-який** підписаний розробником IPA на телефон.
2. Перейдіть до **Налаштування → Конфіденційність і безпека → Режим розробника** і увімкніть його.
3. Пристрій перезавантажиться; після введення коду доступу вам буде запропоновано **Увімкнути** режим розробника.
Режим розробника залишається активним, поки ви його не вимкнете або не скинете телефон, тому цей крок потрібно виконати лише один раз для кожного пристрою. [Документація Apple](https://developer.apple.com/documentation/xcode/enabling-developer-mode-on-a-device) пояснює наслідки для безпеки.
### Сучасні варіанти побічної установки
Тепер існує кілька зрілих способів побічної установки та підтримки підписаних 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` **і** режим розробника увімкнено:
```bash
objection -g [your app bundle ID] explore
# 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](https://mobsf.github.io/Mobile-Security-Framework-MobSF/) може інструментувати IPA з підписом розробника на реальному пристрої, використовуючи ту ж техніку (`get_task_allow`), і надає веб-інтерфейс з браузером файлової системи, захопленням трафіку та консоллю Frida【turn6view0†L2-L3】. Найшвидший спосіб - запустити MobSF у Docker, а потім підключити ваш iPhone через USB:
```bash
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](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/>
{{#include ../../banners/hacktricks-training.md}}