iOS Pentesting without Jailbreak
Reading time: 7 minutes
tip
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.
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 z Apple
- Zainstaluj aplikację do testowania na iPhonie.
- Zainstaluj i uruchom Apple Configurator na swoim macos.
- 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. - Powinieneś zobaczyć swoje urządzenie iOS. Kliknij dwukrotnie na nie, a następnie kliknij Dodaj + → Aplikacje z górnego paska menu.
- 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.
- 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 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:
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:
cd unzipped
zip -r ../no-min-version.ipa *
Następnie zainstaluj IPA na przykład za pomocą:
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:
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.
- Zainstaluj lub wgraj dowolny podpisany przez dewelopera IPA na telefon.
- Przejdź do Ustawienia → Prywatność i bezpieczeństwo → Tryb dewelopera i włącz go.
- 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 wyjaśnia implikacje bezpieczeństwa.
Nowoczesne opcje sideloadingu
Obecnie istnieje kilka dojrzałych sposobów na sideloading i utrzymywanie podpisanych 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 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:
# 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 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【】. Najszybszym sposobem jest uruchomienie MobSF w Dockerze, a następnie podłączenie iPhone'a przez 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 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+. 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
- 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/
tip
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.