mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-20 10:03:51 +00:00
149 lines
12 KiB
Markdown
149 lines
12 KiB
Markdown
# Środowisko testowe iOS
|
|
|
|
<details>
|
|
|
|
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Inne sposoby wsparcia HackTricks:
|
|
|
|
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
|
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
|
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) **i** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **repozytoriów GitHub**.
|
|
|
|
</details>
|
|
|
|
## 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:
|
|
|
|
![](<../../.gitbook/assets/image (457).png>)
|
|
|
|
![](<../../.gitbook/assets/image (458).png>)
|
|
|
|
### 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:
|
|
```bash
|
|
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](https://ipsw.me) 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?](https://canijailbreak.com), [The iPhone Wiki](https://www.theiphonewiki.com) i [Reddit Jailbreak](https://www.reddit.com/r/jailbreak/) dostarczają aktualnych informacji. Przykłady to:
|
|
|
|
- [Checkra1n](https://checkra.in/) dla urządzeń z chipem A7-A11.
|
|
- [Palera1n](https://palera.in/) dla urządzeń Checkm8 (A8-A11) na iOS 15.0-16.5.
|
|
- [Unc0ver](https://unc0ver.dev/) 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](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**](https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/jailbreak-detection-methods/)**.**
|
|
|
|
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
|
|
* [https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/](https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/)
|
|
|
|
<details>
|
|
|
|
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Inne sposoby wsparcia HackTricks:
|
|
|
|
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
|
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
|
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
* **Podziel się swoimi trikami hakerskimi, przesyłając PR do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
|
|
</details>
|