iOS Testing Environment

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Apple Developer Program

Tożsamość provisioningowa to zbiór kluczy publicznych i prywatnych, które są powiązane z kontem dewelopera Apple. Aby podpisywać aplikacje, musisz zapłacić 99$/rok, aby zarejestrować się w Apple Developer Program i 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 możliwość 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 podpisu mogą dzielić zasoby w bezpieczny sposób, takie jak elementy keychain.

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

Symulator

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 pentestów 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 folderze /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ć, w którym z nich aplikacja jest zainstalowana. Szybkim sposobem na znalezienie poprawnego UID jest uruchomienie aplikacji w symulatorze i wykonanie:

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

Once you know the UID the apps installed within it can be found in /Users/<username>/Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application

Jednak, zaskakująco, 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 jest jedynym publicznie dostępnym emulatorem iOS. Jest to rozwiązanie SaaS dla przedsiębiorstw z modelem licencji na użytkownika i nie oferuje żadnej licencji próbnej.

Jailbeaking

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

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

Android Rooting vs. iOS Jailbreaking

Chociaż często porównywane, rootowanie 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 zrootowany niestandardowy ROM, co niekoniecznie wymaga exploitów, jeśli bootloader jest odblokowany. Flashing custom ROMs wymienia system operacyjny urządzenia po odblokowaniu bootloadera, czasami wymagając exploita.

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

Jailbreaking Challenges

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 jailbreakowanie jest kwestią czasową. Urządzenia używane do testów bezpieczeństwa nie powinny być aktualizowane, chyba że ponowne jailbreakowanie jest gwarantowane.

Aktualizacje iOS są kontrolowane przez mechanizm wyzwań i odpowiedzi (SHSH blobs), pozwalając 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.

Jailbreak Varieties

  • Tethered jailbreaks wymagają połączenia z komputerem przy każdym ponownym uruchomieniu.

  • Semi-tethered jailbreaks pozwalają na uruchomienie w trybie nie-jailbroken bez komputera.

  • Semi-untethered jailbreaks wymagają ręcznego ponownego jailbreakowania bez potrzeby użycia komputera.

  • Untethered jailbreaks oferują trwałe rozwiązanie jailbreak bez potrzeby ponownej aplikacji.

Jailbreaking Tools and Resources

Narzędzia do jailbreakowania 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 obejmują:

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

Modyfikacja urządzenia wiąże się z ryzykiem, a jailbreakowanie powinno być podejmowane z ostrożnością.

Jailbreaking Benefits and Risks

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

After Jailbreaking

iOS Basic Testing Operations

Jailbreak Detection

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

  • Po jailbreakowaniu iOS pliki i foldery są zazwyczaj instalowane, które można przeszukać, aby ustalić, czy urządzenie jest jailbreakowane.

  • W jailbreakowanym urządzeniu 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 jailbreakowania tutaj.

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

Jailbreak Detection Bypass

  • 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'.

References

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Last updated