12 KiB
Środowisko testowe iOS
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź SUBSCRIPTION PLANS!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów GitHub.
Program Apple Developer
Identyfikacja dostarczania to zbiór kluczy publicznych i prywatnych powiązanych z kontem dewelopera Apple. Aby podpisywać aplikacje, musisz zapłacić 99$/rok, aby zarejestrować się w Programie Dewelopera Apple i uzyskać swoją identyfikację dostarczania. Bez tego nie będziesz mógł uruchamiać aplikacji ze źródłowego kodu na fizycznym urządzeniu. Inną opcją jest użycie urządzenia z jailbreakiem.
Począwszy od Xcode 7.2 Apple udostępnił opcję tworzenia darmowego profilu dostarczania dla rozwoju iOS, który umożliwia pisanie i testowanie aplikacji na prawdziwym iPhone'ie. Przejdź do Xcode --> Preferences --> Accounts --> + (Dodaj nowe ID aplikacji do swoich poświadczeń) --> Kliknij utworzone ID Apple --> Zarządzaj certyfikatami --> + (Apple Development) --> Gotowe
__Następnie, aby uruchomić aplikację na iPhone'ie, musisz najpierw wskazać iPhone'owi, aby zaufał komputerowi. Następnie możesz spróbować uruchomić aplikację na telefonie komórkowym z Xcode, ale pojawi się błąd. Przejdź więc do Ustawienia --> Ogólne --> Profile i zarządzanie urządzeniami --> Wybierz niezaufany profil i kliknij "Zaufaj".
Zauważ, że aplikacje podpisane tym samym certyfikatem podpisu mogą dzielić się zasobami w bezpieczny sposób, takimi jak elementy schowka.
Profile dostarczania są przechowywane w telefonie w /Library/MobileDevice/ProvisioningProfiles
Symulator
{% hint style="info" %} Zauważ, że symulator nie jest tym samym, co emulator. Symulator tylko symuluje zachowanie urządzenia i funkcje, ale ich faktycznie nie używa. {% endhint %}
Symulator
Pierwszą rzeczą, którą musisz wiedzieć, jest to, że przeprowadzenie pentestu wewnątrz symulatora będzie znacznie bardziej ograniczone niż w przypadku urządzenia z jailbreakiem.
Wszystkie narzędzia niezbędne do budowy i obsługi aplikacji iOS są oficjalnie obsługiwane tylko w systemie Mac OS.
Narzędziem de facto firmy Apple do tworzenia/debugowania/instrumentowania aplikacji iOS jest Xcode. Może być używany 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 ze sklepu aplikacji oficjalnego. Inne wersje mogą zawierać złośliwe oprogramowanie.
Pliki symulatora można znaleźć w /Users/<nazwa_użytkownika>/Library/Developer/CoreSimulator/Devices
Aby otworzyć symulator, uruchom Xcode, a następnie kliknij w zakładkę Xcode --> Otwórz narzędzia deweloperskie --> Symulator
__Na poniższym obrazku klikając na "iPod touch [...]" możesz wybrać inne urządzenie do przetestowania:
Aplikacje w symulatorze
Wewnątrz /Users/<nazwa_użytkownika>/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 ustalić, w którym z nich zainstalowana jest aplikacja. Szybkim sposobem na znalezienie poprawnego UID jest uruchomienie aplikacji w symulatorze i wykonanie polecenia:
xcrun simctl list | grep Booted
iPhone 8 (BF5DA4F8-6BBE-4EA0-BA16-7E3AFD16C06C) (Booted)
Gdy już znasz UID, zainstalowane aplikacje można znaleźć w /Users/<nazwa_użytkownika>/Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application
Jednak zaskakująco nie znajdziesz tutaj aplikacji. Musisz uzyskać dostęp do /Users/<nazwa_użytkownika>/Library/Developer/Xcode/DerivedData/{Aplikacja}/Build/Products/Debug-iphonesimulator/
W tym folderze znajdziesz paczkę aplikacji.
Emulator
Corellium to jedyny publicznie dostępny emulator iOS. Jest to rozwiązanie typu enterprise SaaS z modelem licencji na użytkownika i nie oferuje żadnej wersji próbnej.
Jailbreak
Apple ściśle wymaga, aby kod uruchamiany na iPhone'ie był podpisany przez certyfikat wydany przez Apple. Jailbreak to proces aktywnego omijania takich ograniczeń i innych kontroli bezpieczeństwa wprowadzonych przez system operacyjny. Dlatego po zjailbreakowaniu urządzenia, sprawdzanie integralności, które jest odpowiedzialne za sprawdzanie zainstalowanych aplikacji, jest łatane, aby je obejść.
{% hint style="info" %} W przeciwieństwie do Androida, w iOS nie można przełączyć się w tryb "Developer", aby uruchamiać niepodpisany/niezaufany kod na urządzeniu. {% endhint %}
Rootowanie Androida vs. Jailbreak iOS
Chociaż często porównuje się rootowanie na Androidzie i jailbreak na iOS, są to fundamentalnie różne procesy. Rootowanie urządzeń Android może obejmować instalację binarnego pliku su
lub zamianę systemu na zrootowany niestandardowy ROM, co niekoniecznie wymaga wykorzystania podatności, jeśli bootloader jest odblokowany. Flashing niestandardowych ROM-ów polega na zastąpieniu systemu operacyjnego urządzenia po odblokowaniu bootloadera, co czasami wymaga wykorzystania podatności.
W przeciwieństwie do tego, urządzenia iOS nie mogą flashować niestandardowych ROM-ów ze względu na ograniczenie bootloadera do uruchamiania tylko obrazów podpisanych przez Apple. Jailbreak iOS ma na celu obejście zabezpieczeń podpisu kodu Apple, aby uruchamiać niepodpisany kod, co jest utrudnione przez ciągłe ulepszenia zabezpieczeń Apple.
Wyzwania związane z jailbreakiem
Jailbreak iOS staje się coraz trudniejszy, ponieważ Apple szybko łata podatności. Zmniejszenie wersji iOS jest możliwe tylko przez ograniczony czas po wydaniu, co czyni jailbreak kwestią czasową. Urządzenia używane do testów bezpieczeństwa nie powinny być aktualizowane, chyba że ponowne zjailbreakowanie jest gwarantowane.
Aktualizacje iOS są kontrolowane przez mechanizm wyzwania-odpowiedzi (bloki SHSH), który pozwala na instalację tylko odpowiedzi podpisanych przez Apple. Ten mechanizm, znany jako "okno podpisu", ogranicza możliwość przechowywania i późniejszego użycia pakietów OTA firmware. Strona internetowa IPSW Downloads jest źródłem informacji na temat aktualnych okien podpisu.
Rodzaje jailbreaków
- Jailbreaki tethered wymagają połączenia z komputerem przy każdym ponownym uruchomieniu.
- Jailbreaki semi-tethered pozwalają na uruchomienie w trybie bez jailbreaka bez komputera.
- Jailbreaki semi-untethered wymagają ręcznego ponownego zjailbreakowania bez konieczności użycia komputera.
- Jailbreaki untethered oferują trwałe rozwiązanie jailbreak bez konieczności ponownego stosowania.
Narzędzia i zasoby do jailbreaku
Narzędzia do jailbreaku 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 chipem 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 niesie ze sobą ryzyko, a jailbreak powinien być podchodzony ostrożnie.
Korzyści i ryzyka związane z jailbreakiem
Jailbreak usuwa narzucone przez system operacyjny sandboxing, 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 nie zaleca się jailbreaku ze względu na potencjalne ryzyko bezpieczeństwa i niestabilność urządzenia.
Po zjailbreakowaniu
{% content-ref url="basic-ios-testing-operations.md" %} basic-ios-testing-operations.md {% endcontent-ref %}
Wykrywanie jailbreaku
Wiele aplikacji będzie próbować wykryć, czy urządzenie jest zjailbreakowane, i w takim przypadku aplikacja nie zostanie uruchomiona
- Po zjailbreakowaniu iOS zwykle instalowane są pliki i foldery, które można przeszukać, aby sprawdzić, czy urządzenie jest zjailbreakowane.
- Na zjailbreakowanym urządzeniu aplikacje uzyskują dostęp do odczytu/zapisu nowych plików poza sandboxem.
- 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 jailbreaku tutaj.
Możesz spróbować uniknąć tych wykryć, używając ios jailbreak disable
z narzędziem objection.
Ominięcie wykrywania jailbreaku
- Możesz spróbować uniknąć tych wykryć, używając
ios jailbreak disable
z narzędziem objection. - Możesz również zainstalować narzędzie Liberty Lite (https://ryleyangus.com/repo/). Po dodaniu repozytorium, aplikacja powinna pojawić się w zakładce „Wyszukaj”.
Odwołania
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLAN SUBSKRYPCJI!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi trikami hakerskimi, przesyłając PR do HackTricks i HackTricks Cloud github repos.