iOS Testing Environment

Reading time: 7 minutes

tip

Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Wsparcie HackTricks

Apple Developer Program

Tożsamość provisioningowa to zbiór kluczy publicznych i prywatnych, które są powiązane z kontem dewelopera Apple. Aby podpisać aplikacje, musisz zapłacić 99$/rok za rejestrację w Apple Developer Program, aby uzyskać swoją tożsamość provisioningową. Bez tego nie będziesz mógł uruchomić aplikacji z kodu źródłowego na fizycznym urządzeniu. Inną opcją jest użycie urządzenia z jailbreakiem.

Od Xcode 7.2 Apple wprowadziło opcję stworzenia darmowego profilu provisioningowego do rozwoju iOS, który pozwala na pisanie i testowanie aplikacji na prawdziwym iPhonie. Przejdź do Xcode --> Preferences --> Accounts --> + (Dodaj nowe Apple ID z twoimi danymi) --> Kliknij na utworzone Apple ID --> Zarządzaj certyfikatami --> + (Apple Development) --> Gotowe
__Następnie, aby uruchomić aplikację na swoim iPhonie, musisz najpierw wskazać iPhone'owi, aby zaufał komputerowi. Potem możesz spróbować uruchomić aplikację na urządzeniu mobilnym z Xcode, ale pojawi się błąd. Przejdź do Ustawienia --> Ogólne --> Profile i zarządzanie urządzeniami --> Wybierz nieufny profil i kliknij "Zaufaj".

Zauważ, że aplikacje podpisane tym samym certyfikatem podpisującym mogą dzielić zasoby w bezpieczny sposób, takie jak elementy keychain.

Profile provisioningowe są przechowywane w telefonie w /Library/MobileDevice/ProvisioningProfiles

Symulator

note

Zauważ, że symulator nie jest tym samym co emulator. Symulator jedynie symuluje zachowanie urządzenia i funkcje, ale ich faktycznie nie używa.

Symulator

Pierwszą rzeczą, którą musisz wiedzieć, jest to, że przeprowadzanie pentestu w symulatorze będzie znacznie bardziej ograniczone niż robienie tego na urządzeniu z jailbreakiem.

Wszystkie narzędzia potrzebne do budowy i wsparcia aplikacji iOS są oficjalnie wspierane tylko na Mac OS.
De facto narzędziem Apple do tworzenia/debugowania/instrumentowania aplikacji iOS jest Xcode. Może być używane do pobierania innych komponentów, takich jak symulatory i różne wersje SDK wymagane do budowy i testowania twojej aplikacji.
Zaleca się pobranie Xcode z oficjalnego sklepu z aplikacjami. Inne wersje mogą zawierać złośliwe oprogramowanie.

Pliki symulatora można znaleźć w /Users/<username>/Library/Developer/CoreSimulator/Devices

Aby otworzyć symulator, uruchom Xcode, a następnie kliknij w zakładkę Xcode --> Otwórz narzędzia dewelopera --> Symulator
__Na poniższym obrazku klikając w "iPod touch [...]" możesz wybrać inne urządzenie do testowania:

Aplikacje w Symulatorze

W /Users/<username>/Library/Developer/CoreSimulator/Devices możesz znaleźć wszystkie zainstalowane symulatory. Jeśli chcesz uzyskać dostęp do plików aplikacji utworzonej w jednym z emulatorów, może być trudno wiedzieć, na którym z nich aplikacja jest zainstalowana. Szybkim sposobem na znalezienie poprawnego UID jest uruchomienie aplikacji w symulatorze i wykonanie:

bash
xcrun simctl list | grep Booted
iPhone 8 (BF5DA4F8-6BBE-4EA0-BA16-7E3AFD16C06C) (Booted)

Gdy znasz UID, aplikacje zainstalowane w jego obrębie można znaleźć w /Users/<username>/Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application

Jednak, co zaskakujące, nie znajdziesz aplikacji tutaj. Musisz uzyskać dostęp do /Users/<username>/Library/Developer/Xcode/DerivedData/{Application}/Build/Products/Debug-iphonesimulator/

A w tym folderze możesz znaleźć pakiet aplikacji.

Emulator

Corellium to jedyny publicznie dostępny emulator iOS. Jest to rozwiązanie SaaS dla przedsiębiorstw z modelem licencji na użytkownika i nie oferuje żadnej licencji próbnej.

Nie potrzebujesz jailbreaka

Sprawdź ten post na blogu na temat testowania aplikacji iOS na urządzeniu bez jailbreaka: https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed

Jailbreaking

Apple ściśle wymaga, aby kod działający na iPhonie był podpisany certyfikatem wydanym przez Apple. Jailbreaking to proces aktywnego omijania takich ograniczeń i innych zabezpieczeń wprowadzonych przez system operacyjny. Dlatego, gdy urządzenie jest jailbreakowane, sprawdzenie integralności, które odpowiada za kontrolowanie instalacji aplikacji, jest poprawiane, więc jest omijane.

note

W przeciwieństwie do Androida, nie możesz przełączyć się na "Tryb dewelopera" w iOS, aby uruchomić niesigned/niezaufany kod na urządzeniu.

Rooting Androida vs. Jailbreaking iOS

Chociaż często porównywane, rooting na Androidzie i jailbreaking na iOS to zasadniczo różne procesy. Rootowanie urządzeń z Androidem może obejmować instalację binarnego pliku su lub wymianę systemu na dostosowane ROM-y z rootem, co niekoniecznie wymaga exploitów, jeśli bootloader jest odblokowany. Flashing custom ROMs zastępuje system operacyjny urządzenia po odblokowaniu bootloadera, czasami wymagając exploita.

W przeciwieństwie do tego, urządzenia iOS nie mogą flashować dostosowanych ROM-ów z powodu ograniczenia bootloadera do uruchamiania tylko obrazów podpisanych przez Apple. Jailbreaking iOS ma na celu ominięcie zabezpieczeń podpisywania kodu Apple, aby uruchomić niesigned kod, proces skomplikowany przez ciągłe ulepszenia zabezpieczeń Apple.

Wyzwania związane z Jailbreakingiem

Jailbreaking iOS staje się coraz trudniejszy, ponieważ Apple szybko łata luki. Downgrade iOS jest możliwy tylko przez ograniczony czas po wydaniu, co sprawia, że jailbreak jest kwestią czasową. Urządzenia używane do testów bezpieczeństwa nie powinny być aktualizowane, chyba że ponowny jailbreak jest gwarantowany.

Aktualizacje iOS są kontrolowane przez mechanizm wyzwań i odpowiedzi (SHSH blobs), pozwalający na instalację tylko dla odpowiedzi podpisanych przez Apple. Ten mechanizm, znany jako "okno podpisywania", ogranicza możliwość przechowywania i późniejszego używania pakietów firmware OTA. Strona IPSW Downloads jest zasobem do sprawdzania aktualnych okien podpisywania.

Rodzaje Jailbreaków

  • Jailbreak tethered wymaga połączenia z komputerem przy każdym ponownym uruchomieniu.
  • Jailbreak semi-tethered pozwala na uruchomienie w trybie bez jailbreaka bez komputera.
  • Jailbreak semi-untethered wymaga ręcznego ponownego jailbreaka bez potrzeby korzystania z komputera.
  • Jailbreak untethered oferuje trwałe rozwiązanie jailbreakowe bez potrzeby ponownej aplikacji.

Narzędzia i zasoby do Jailbreakingu

Narzędzia do jailbreakingu różnią się w zależności od wersji iOS i urządzenia. Zasoby takie jak Can I Jailbreak?, The iPhone Wiki i Reddit Jailbreak dostarczają aktualnych informacji. Przykłady to:

  • Checkra1n dla urządzeń z chipami A7-A11.
  • Palera1n dla urządzeń Checkm8 (A8-A11) na iOS 15.0-16.5.
  • Unc0ver dla wersji iOS do 14.8.

Modyfikowanie urządzenia wiąże się z ryzykiem, a jailbreak powinien być traktowany z ostrożnością.

Korzyści i ryzyka związane z Jailbreakingiem

Jailbreaking usuwa piaskownicę narzuconą przez system operacyjny, umożliwiając aplikacjom dostęp do całego systemu plików. Ta swoboda pozwala na instalację niezatwierdzonych aplikacji i dostęp do większej liczby interfejsów API. Jednak dla zwykłych użytkowników, jailbreak nie jest zalecany z powodu potencjalnych zagrożeń bezpieczeństwa i niestabilności urządzenia.

Po Jailbreaku

{{#ref}} basic-ios-testing-operations.md {{#endref}}

Wykrywanie Jailbreaka

Kilka aplikacji spróbuje wykryć, czy urządzenie mobilne jest jailbreakowane, a w takim przypadku aplikacja nie będzie działać

  • Po jailbreaku w iOS pliki i foldery są zazwyczaj instalowane, które można przeszukać, aby ustalić, czy urządzenie jest jailbreakowane.
  • W urządzeniu z jailbreakiem aplikacje uzyskują dostęp do odczytu/zapisu do nowych plików poza piaskownicą.
  • Niektóre wywołania API **będą zachowywać się inaczej.
  • Obecność usługi OpenSSH.
  • Wywołanie /bin/sh zwróci 1 zamiast 0.

Więcej informacji na temat wykrywania jailbreaka tutaj.

Możesz spróbować uniknąć tych wykryć, używając objection's ios jailbreak disable

Obejście wykrywania jailbreaka

  • Możesz spróbować uniknąć tych wykryć, używając objection's ios jailbreak disable
  • Możesz również zainstalować narzędzie Liberty Lite (https://ryleyangus.com/repo/). Po dodaniu repo, aplikacja powinna pojawić się w zakładce 'Szukaj'

Referencje

tip

Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Wsparcie HackTricks