iOS Testing Environment
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
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 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 podpisu mogą dzielić zasoby w bezpieczny sposób, takie jak elementy keychain.
Profile provisioningowe są przechowywane w telefonie w /Library/MobileDevice/ProvisioningProfiles
Zauważ, że symulator nie jest tym samym co emulator. Symulator jedynie symuluje zachowanie urządzenia i funkcje, ale ich faktycznie nie używa.
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/instrumentacji 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:
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 zainstalowano aplikację. Szybkim sposobem na znalezienie poprawnego UID jest uruchomienie aplikacji w symulatorze i wykonanie:
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.
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.
Sprawdź ten wpis na blogu o tym, jak przeprowadzić pentesting aplikacji iOS na urządzeniu bez jailbreaka: https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed
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.
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 wymienia 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 obejście zabezpieczeń podpisywania kodu Apple, aby uruchomić niesigned kod, co jest skomplikowane przez ciągłe ulepszenia zabezpieczeń Apple.
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ą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 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 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 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 jailbreak powinien być podejmowany ostrożnie.
Jailbreaking usuwa piaskownicę narzuconą przez system operacyjny, umożliwiając aplikacjom dostęp do całego systemu plików. Ta swoboda umożliwia 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.
Kilka aplikacji spróbuje wykryć, czy urządzenie mobilne jest jailbreakowane, a w takim przypadku aplikacja nie uruchomi się
Po jailbreaku w iOS pliki i foldery są zazwyczaj instalowane, można je 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
.
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'.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)