iOS Testing Environment
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.
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, 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.
Począwszy od Xcode 7.2, Apple udostępnił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 ze swoimi 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
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, które są wymagane do budowy i testowania 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ć, na 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.
No Jailbreak needed
Sprawdź ten post na blogu o tym, jak przeprowadzić pentesting aplikacji iOS na urządzeniu bez jailbreaka:
iOS Pentesting withuot Jailbreak
Jailbreaking
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 kontrolowanie instalacji aplikacji, jest łatane, więc jest obejście.
note
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, 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 zrootowany niestandardowy ROM, 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ć 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 jailbreak 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ą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.
Jailbreak Varieties
- Tethered jailbreaks wymagają połączenia z komputerem przy każdym ponownym uruchomieniu.
- Semi-tethered jailbreaks pozwalają na uruchomienie w trybie bez jailbreaka bez komputera.
- Semi-untethered jailbreaks wymagają ręcznego ponownego jailbreakowania bez potrzeby korzystania z 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.
Modyfikowanie urządzenia wiąże się z ryzykiem, a jailbreak powinien być traktowany 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 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.
After Jailbreaking
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 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
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 'Search'
References
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.