From d03df88f877177081f777b0e87a7dd8912483708 Mon Sep 17 00:00:00 2001 From: Translator Date: Fri, 11 Jul 2025 06:08:24 +0000 Subject: [PATCH] Translated ['src/mobile-pentesting/ios-pentesting/ios-pentesting-without --- .../ios-pentesting-without-jailbreak.md | 71 +++++++++++++++---- 1 file changed, 59 insertions(+), 12 deletions(-) diff --git a/src/mobile-pentesting/ios-pentesting/ios-pentesting-without-jailbreak.md b/src/mobile-pentesting/ios-pentesting/ios-pentesting-without-jailbreak.md index b4f44cfe6..75c309edc 100644 --- a/src/mobile-pentesting/ios-pentesting/ios-pentesting-without-jailbreak.md +++ b/src/mobile-pentesting/ios-pentesting/ios-pentesting-without-jailbreak.md @@ -4,25 +4,27 @@ ## Główna idea -Aplikacje podpisane z **uprawnieniem `get_task_allow`** pozwalają aplikacjom innych firm na uruchomienie funkcji **`task_for_pid()`** z identyfikatorem procesu początkowej aplikacji jako argumentem, aby uzyskać port zadania nad nią (móc ją kontrolować i uzyskać dostęp do jej pamięci). +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 z Apple +### 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. +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 w górnym pasku menu. -5. Po kliknięciu Dodaj, Configurator pobierze IPA z Apple i spróbuje wgrać je 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. +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. @@ -53,21 +55,66 @@ Aby ponownie podpisać aplikację z uprawnieniem `get-task-allow`, dostępnych j 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ć testy penetracyjne: +Z ponownie podpisanym plikiem IPA nadszedł czas, aby zainstalować go na urządzeniu, aby przeprowadzić pentesting: ```bash ideviceinstaller -i resigned.ipa -w ``` -### Hook +--- -Możesz łatwo podłączyć swoją aplikację, używając powszechnych narzędzi, takich jak frida i objection: +### 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 dewelopera, 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** IPA podpisany przez dewelopera 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 aktualnych IPA z ponownym podpisywaniem bez jailbreaka: + +| Narzędzie | Wymagania | Mocne strony | Ograniczenia | +|-----------|-----------|--------------|--------------| +| **AltStore 2 / SideStore** | macOS/Windows/Linux jako towarzysz, który ponownie podpisuje IPA co 7 dni z darmowym profilem 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); brak komputera wymagany po zainstalowaniu | Nieobsługiwane na iOS 15.5+ (błąd naprawiony) | + +Dla rutynowych pentestów 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 -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 ``` +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 jailbreaka) + +[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【turn6view0†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 narzędzia 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: +- Mobile Security Framework (MobSF): {{#include ../../banners/hacktricks-training.md}}