10 KiB
Środowisko testowe iOS
Zacznij od zera i zostań ekspertem w hakowaniu AWS dzięki 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ź PLANY SUBSKRYPCYJNE!
- 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 na GitHubie.
Program dla Deweloperów Apple
Tożsamość weryfikacyjna to zbiór kluczy publicznych i prywatnych powiązanych z kontem dewelopera Apple. Aby podpisywać aplikacje, musisz zapłacić 99 dolarów/rok za rejestrację w Programie Deweloperskim Apple, aby uzyskać swoją tożsamość weryfikacyjną. Bez tego nie będziesz mógł uruchamiać aplikacji ze źródła na fizycznym urządzeniu. Inną opcją jest użycie urządzenia z jailbreakiem.
Począwszy od Xcode 7.2 Apple udostępnił opcję tworzenia bezpłatnego profilu weryfikacyjnego dla deweloperów iOS, który pozwala pisać i testować aplikację na prawdziwym iPhone'ie. Przejdź do Xcode --> Preferencje --> Konta --> + (Dodaj nowe ID aplikacji do swoich danych uwierzytelniających) --> Kliknij utworzone ID Apple --> Zarządzaj certyfikatami --> + (Rozwój Apple) --> Gotowe
__Następnie, aby uruchomić aplikację na swoim iPhone'ie, musisz najpierw wskazać iPhone'owi, aby zaufał komputerowi. Następnie możesz spróbować uruchomić aplikację na telefonie z Xcode, ale pojawi się błąd. Przejdź więc do Ustawienia --> Ogólne --> Profile i zarządzanie urządzeniem --> Wybierz niezaufany profil i kliknij "Zaufaj".
Zauważ, że aplikacje podpisane tym samym certyfikatem podpisującym mogą dzielić zasoby w sposób bezpieczny, takie jak elementy schowka.
Profile weryfikacyjne są przechowywane w telefonie w /Library/MobileDevice/ProvisioningProfiles
Symulator
{% hint style="info" %} Zauważ, że symulator nie jest tym samym co emulator. Symulator jedynie symuluje zachowanie urządzenia i funkcje, ale faktycznie ich nie używa. {% endhint %}
Symulator
Pierwszą rzeczą, którą musisz wiedzieć, jest to, że przeprowadzenie testu penetracyjnego wewnątrz symulatora będzie znacznie bardziej ograniczone niż w przypadku urządzenia z jailbreakiem.
Wszystkie narzędzia wymagane do budowy i obsługi aplikacji iOS są oficjalnie obsługiwane tylko w systemie Mac OS.
Narzędziem Apple do tworzenia/debugowania/instrumentowania aplikacji iOS jest Xcode. Można go użyć do pobrania innych komponentów, takich jak symulatory i różne wersje SDK 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, następnie kliknij w Zakładka Xcode --> Otwórz narzędzia deweloperskie --> Symulator
__Na poniższym obrazie, klikając w "iPod touch [...]" możesz wybrać inne urządzenie do testowania:
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 znalezienia poprawnego UID jest uruchomienie aplikacji w symulatorze i wykonanie:
xcrun simctl list | grep Booted
iPhone 8 (BF5DA4F8-6BBE-4EA0-BA16-7E3AFD16C06C) (Booted)
Gdy już znasz UID, aplikacje zainstalowane w nim można znaleźć w /Users/<username>/Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application
Jednakże zaskakująco aplikacji nie znajdziesz tutaj. Musisz uzyskać dostęp do /Users/<username>/Library/Developer/Xcode/DerivedData/{Application}/Build/Products/Debug-iphonesimulator/
W tym folderze można znaleźć pakiet aplikacji.
Emulator
Corellium to jedyny publicznie dostępny emulator iOS. Jest to rozwiązanie typu enterprise SaaS z modelem licencjonowania na użytkownika i nie oferuje żadnej licencji próbnej.
Jailbreaking
Apple ściśle wymaga, aby kod uruchamiany na iPhone'ie był podpisany certyfikatem wydanym przez Apple. Jailbreaking 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 obejścia.
{% hint style="info" %} W przeciwieństwie do Androida, w iOS nie można przełączyć się w tryb "Developer Mode" aby uruchamiać niepodpisany/niezaufany kod na urządzeniu. {% endhint %}
Rootowanie Androida vs. Jailbreaking iOS
Mimo częstego porównywania, rootowanie na Androidzie i jailbreaking na iOS to fundamentalnie różne procesy. Rootowanie urządzeń z Androidem może wymagać zainstalowania binariów su
lub zastąpienia systemu spersonalizowanym ROM-em z rootem, co niekoniecznie wymaga wykorzystania exploitów, jeśli bootloader jest odblokowany. Instalowanie spersonalizowanych ROM-ów zastępuje system operacyjny urządzenia po odblokowaniu bootloadera, czasami wymagając exploitu.
W przeciwieństwie do tego, urządzenia z iOS nie mogą instalować spersonalizowanych ROM-ów ze względu na ograniczenie bootloadera do uruchamiania tylko obrazów podpisanych przez Apple. Jailbreaking iOS ma na celu obejście zabezpieczeń podpisu kodu Apple'a w celu uruchamiania niepodpisanego kodu, proces ten jest utrudniony przez ciągłe ulepszenia zabezpieczeń Apple'a.
Wyzwania związane z Jailbreakingiem
Jailbreaking iOS staje się coraz trudniejsze, ponieważ Apple szybko łata podatności. Zmniejszenie wersji iOS jest możliwe tylko przez ograniczony czas po wydaniu, co sprawia, że jailbreaking jest 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 wyzwań i odpowiedzi (bloki SHSH), pozwalający na instalację tylko odpowiedzi podpisanych przez Apple. Ten mechanizm, znany jako "okno podpisu", ogranicza możliwość przechowywania i późniejszego używania pakietów OTA firmware. Strona IPSW Downloads website jest źródłem do sprawdzania aktualnych okien podpisów.
Rodzaje Jailbreaków
- Jailbreaki związane z komputerem wymagają połączenia z komputerem przy każdym ponownym uruchomieniu.
- Jailbreaki pół-związane z komputerem pozwalają na uruchomienie w trybie bez jailbreaka bez konieczności podłączenia do komputera.
- Jailbreaki pół-niepowiązane z komputerem wymagają ręcznego ponownego zjailbreakowania bez konieczności użycia komputera.
- Jailbreaki niepowiązane z komputerem oferują trwałe rozwiązanie jailbreaka bez konieczności ponownego stosowania.
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 chipem 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 niesie ze sobą ryzyko, dlatego jailbreaking należy traktować ostrożnie.
Korzyści i Ryzyka Jailbreakingu
Jailbreaking usuwa narzucone przez system operacyjny izolowanie, 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, jailbreaking nie jest zalecany ze względu na potencjalne ryzyka 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
Kilka aplikacji spróbuje wykryć, czy urządzenie mobilne jest zjailbreakowane, a w takim przypadku aplikacja nie będzie działać
- Po zjailbreakowaniu urządzenia z iOS zwykle instalowane są pliki i foldery, które można przeszukać, aby określić, czy urządzenie jest zjailbreakowane.
- Na zjailbreakowanym urządzeniu aplikacje uzyskują dostęp do odczytu/zapisu 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 jailbreakingu tutaj.
Możesz spróbować uniknąć tych wykryć za pomocą ios jailbreak disable
z objection
Unikanie Wykrycia Jailbreaku
- Możesz spróbować uniknąć tych wykryć za pomocą
ios jailbreak disable
z objection - Możesz także zainstalować narzędzie Liberty Lite (https://ryleyangus.com/repo/). Po dodaniu repozytorium, aplikacja powinna pojawić się w zakładce „Wyszukaj”