iOS Pentesting without Jailbreak

Reading time: 5 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

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).

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

  1. Zainstaluj aplikację do testowania na iPhonie.
  2. Zainstaluj i uruchom Apple Configurator 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.
  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 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 UstawieniaPrywatność 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:

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:

bash
objection -g [your app bundle ID] explore

Odniesienia

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