mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
121 lines
8.4 KiB
Markdown
121 lines
8.4 KiB
Markdown
# iOS Pentesting without Jailbreak
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|
||
|
||
## Główna idea
|
||
|
||
Aplikacje podpisane z **uprawnieniem `get_task_allow`** pozwalają aplikacjom stron trzecich uruchomić funkcję **`task_for_pid()`** z identyfikatorem procesu początkowej aplikacji jako argument, aby uzyskać port zadania nad nią (móc ją kontrolować i uzyskać dostęp do jej pamięci).
|
||
|
||
Jednak nie jest to tak proste, jak po prostu pobranie IPA, ponowne podpisanie go z uprawnieniem i wgranie z powrotem na urządzenie. Dzieje się tak z powodu ochrony FairPlay. Gdy podpis aplikacji się zmienia, klucz DRM (Digital Rights Management) jest **unieważniony i aplikacja nie będzie działać**.
|
||
|
||
Na starym urządzeniu z jailbreakiem możliwe jest zainstalowanie IPA, **odszyfrowanie go za pomocą ulubionego narzędzia** (takiego jak Iridium lub frida-ios-dump) i pobranie go z powrotem z urządzenia. Chociaż, jeśli to możliwe, zaleca się po prostu poprosić klienta o odszyfrowane IPA.
|
||
|
||
|
||
## Uzyskanie odszyfrowanego IPA
|
||
|
||
### Pobierz to od Apple
|
||
|
||
1. Zainstaluj aplikację do testowania na iPhonie
|
||
2. Zainstaluj i uruchom [Apple Configurator](https://apps.apple.com/au/app/apple-configurator/id1037126344?mt=12) na swoim macos
|
||
3. Otwórz `Terminal` na swoim Macu i przejdź do `/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps`. IPA pojawi się w tym folderze później.
|
||
4. Powinieneś zobaczyć swoje urządzenie iOS. Kliknij dwukrotnie na nie, a następnie kliknij Dodaj + → Aplikacje z górnego paska menu.
|
||
5. Po kliknięciu Dodaj, Configurator pobierze IPA z Apple i spróbuje wgrać go na twoje urządzenie. Jeśli wcześniej postępowałeś zgodnie z moją rekomendacją i już zainstalowałeś IPA, pojawi się komunikat z prośbą o ponowną instalację aplikacji.
|
||
6. IPA powinno być pobrane w `/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps`, skąd możesz je pobrać.
|
||
|
||
Sprawdź [https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed](https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed) po więcej szczegółowych informacji na temat tego procesu.
|
||
|
||
|
||
### Odszyfrowanie aplikacji
|
||
|
||
Aby odszyfrować IPA, zamierzamy je zainstalować. Jednak jeśli masz starego iPhone'a z jailbreakiem, potencjalnie jego wersja nie będzie wspierana przez aplikację, ponieważ zazwyczaj aplikacje wspierają tylko najnowsze wersje.
|
||
|
||
Aby je zainstalować, po prostu rozpakuj IPA:
|
||
```bash
|
||
unzip redacted.ipa -d unzipped
|
||
```
|
||
Sprawdź `Info.plist` pod kątem minimalnej obsługiwanej wersji, a jeśli twoje urządzenie jest starsze, zmień wartość, aby była obsługiwana.
|
||
|
||
Spakuj ponownie IPA:
|
||
```bash
|
||
cd unzipped
|
||
zip -r ../no-min-version.ipa *
|
||
```
|
||
Następnie zainstaluj IPA na przykład za pomocą:
|
||
```bash
|
||
ideviceinstaller -i no-min-version.ipa -w
|
||
```
|
||
Zauważ, że możesz potrzebować **AppSync Unified tweak** z Cydii, aby zapobiec błędom `invalid signature`.
|
||
|
||
Po zainstalowaniu możesz użyć **Iridium tweak** z Cydii, aby uzyskać odszyfrowany plik IPA.
|
||
|
||
|
||
### Patch entitlements & re-sign
|
||
|
||
Aby ponownie podpisać aplikację z uprawnieniem `get-task-allow`, dostępnych jest kilka narzędzi, takich jak `app-signer`, `codesign` i `iResign`. `app-signer` ma bardzo przyjazny interfejs, który pozwala bardzo łatwo podpisać plik IPA, wskazując plik IPA do ponownego podpisania, aby **ustawić `get-task-allow`** oraz certyfikat i profil provisioningowy do użycia.
|
||
|
||
Jeśli chodzi o certyfikaty i profile podpisywania, Apple oferuje **darmowe profile podpisywania dla deweloperów** dla wszystkich kont przez Xcode. Po prostu stwórz aplikację i skonfiguruj jeden. Następnie skonfiguruj **iPhone, aby ufał aplikacjom dewelopera**, przechodząc do `Ustawienia` → `Prywatność i bezpieczeństwo`, a następnie kliknij na `Tryb dewelopera`.
|
||
|
||
Z ponownie podpisanym plikiem IPA nadszedł czas, aby zainstalować go na urządzeniu, aby przeprowadzić pentesting:
|
||
```bash
|
||
ideviceinstaller -i resigned.ipa -w
|
||
```
|
||
---
|
||
|
||
### Włącz tryb dewelopera (iOS 16+)
|
||
|
||
Od iOS 16 Apple wprowadziło **Tryb Dewelopera**: każdy binarny plik, który zawiera `get_task_allow` *lub* jest podpisany certyfikatem deweloperskim, odmówi uruchomienia, dopóki Tryb Dewelopera nie zostanie włączony na urządzeniu. Nie będziesz również mógł dołączyć Frida/LLDB, chyba że ten flag jest włączony.
|
||
|
||
1. Zainstaluj lub wgraj **dowolny** podpisany przez dewelopera plik IPA na telefon.
|
||
2. Przejdź do **Ustawienia → Prywatność i bezpieczeństwo → Tryb dewelopera** i włącz go.
|
||
3. Urządzenie zrestartuje się; po wprowadzeniu kodu dostępu zostaniesz poproszony o **Włączenie** Trybu Dewelopera.
|
||
|
||
Tryb Dewelopera pozostaje aktywny, dopóki go nie wyłączysz lub nie wyczyścisz telefonu, więc ten krok należy wykonać tylko raz na urządzenie. [Dokumentacja Apple](https://developer.apple.com/documentation/xcode/enabling-developer-mode-on-a-device) wyjaśnia implikacje bezpieczeństwa.
|
||
|
||
### Nowoczesne opcje sideloadingu
|
||
|
||
Obecnie istnieje kilka dojrzałych sposobów na sideloading i utrzymywanie podpisanych plików IPA na bieżąco bez jailbreaka:
|
||
|
||
| Narzędzie | Wymagania | Mocne strony | Ograniczenia |
|
||
|-----------|-----------|--------------|--------------|
|
||
| **AltStore 2 / SideStore** | macOS/Windows/Linux jako towarzysz, który podpisuje IPA co 7 dni za pomocą darmowego profilu dewelopera | Automatyczne przeładowanie przez Wi-Fi, działa do iOS 17 | Wymaga komputera w tej samej sieci, limit 3 aplikacji narzucony przez Apple |
|
||
| **TrollStore 1/2** | Urządzenie na iOS 14 – 15.4.1 podatne na błąd CoreTrust | *Permanentne* podpisywanie (brak limitu 7 dni); nie wymaga komputera po zainstalowaniu | Nieobsługiwane na iOS 15.5+ (błąd naprawiony) |
|
||
|
||
Dla rutynowych testów pentestingowych na aktualnych wersjach iOS Alt/Side-Store są zazwyczaj najbardziej praktycznym wyborem.
|
||
|
||
### Hooking / dynamiczna instrumentacja
|
||
|
||
Możesz podłączyć swoją aplikację dokładnie tak, jak na urządzeniu z jailbreakiem, gdy jest podpisana z `get_task_allow` **i** Tryb Dewelopera jest włączony:
|
||
```bash
|
||
# 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
|
||
```
|
||
Najnowsze wydania Frida (>=16) automatycznie obsługują uwierzytelnianie wskaźników i inne środki zaradcze iOS 17, więc większość istniejących skryptów działa od razu.
|
||
|
||
### Zautomatyzowana analiza dynamiczna z MobSF (bez jailbreak)
|
||
|
||
[MobSF](https://mobsf.github.io/Mobile-Security-Framework-MobSF/) może instrumentować IPA podpisane przez dewelopera na prawdziwym urządzeniu, używając tej samej techniki (`get_task_allow`) i zapewnia interfejs webowy z przeglądarką systemu plików, przechwytywaniem ruchu i konsolą Frida【†L2-L3】. Najszybszym sposobem jest uruchomienie MobSF w Dockerze, a następnie podłączenie iPhone'a przez 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 automatycznie wdroży binarny plik, włączy serwer Frida w sandboxie aplikacji i wygeneruje interaktywny raport.
|
||
|
||
### iOS 17 i uwagi dotyczące trybu blokady
|
||
|
||
* **Tryb blokady** (Ustawienia → Prywatność i bezpieczeństwo) blokuje dynamiczny linker przed ładowaniem niesygnowanych lub zewnętrznie sygnowanych bibliotek dynamicznych. Podczas testowania urządzeń, które mogą mieć włączony ten tryb, upewnij się, że jest **wyłączony**, inaczej sesje Frida/objection zakończą się natychmiast.
|
||
* Uwierzytelnianie wskaźników (PAC) jest egzekwowane w całym systemie na urządzeniach A12 i nowszych. Frida ≥16 transparentnie obsługuje usuwanie PAC — wystarczy, że będziesz na bieżąco aktualizować zarówno *frida-server*, jak i zestaw narzędzi Python/CLI, gdy pojawi się nowa główna wersja iOS.
|
||
|
||
## Odniesienia
|
||
|
||
- [https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed](https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed)
|
||
- Dokumentacja dewelopera Apple – Włączanie trybu dewelopera na urządzeniu: <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}}
|