hacktricks/mobile-pentesting/ios-pentesting/ios-testing-environment.md

150 lines
12 KiB
Markdown
Raw Normal View History

2024-02-11 01:46:25 +00:00
# Środowisko testowe iOS
2022-04-28 16:01:33 +00:00
<details>
2024-02-11 01:46:25 +00:00
<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>
2022-04-28 16:01:33 +00:00
2024-02-11 01:46:25 +00:00
Inne sposoby wsparcia HackTricks:
2024-01-03 10:43:38 +00:00
2024-02-11 01:46:25 +00:00
* 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**.
2022-04-28 16:01:33 +00:00
</details>
2024-02-11 01:46:25 +00:00
## Program Apple Developer
2021-05-14 22:25:03 +00:00
2024-02-11 01:46:25 +00:00
**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**.
2021-05-14 22:25:03 +00:00
2024-02-11 01:46:25 +00:00
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**".
2021-05-14 22:25:03 +00:00
2024-02-11 01:46:25 +00:00
Zauważ, że **aplikacje podpisane tym samym certyfikatem podpisu mogą dzielić się zasobami w bezpieczny sposób, takimi jak elementy schowka**.
2021-05-14 22:25:03 +00:00
2024-02-11 01:46:25 +00:00
Profile dostarczania są przechowywane w telefonie w **`/Library/MobileDevice/ProvisioningProfiles`**
2021-05-14 22:25:03 +00:00
2024-02-11 01:46:25 +00:00
## **Symulator**
{% hint style="info" %}
2024-02-11 01:46:25 +00:00
Zauważ, że **symulator nie jest tym samym, co emulator**. Symulator tylko symuluje zachowanie urządzenia i funkcje, ale ich faktycznie nie używa.
{% endhint %}
2024-02-11 01:46:25 +00:00
### **Symulator**
2024-02-11 01:46:25 +00:00
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**.
2024-02-11 01:46:25 +00:00
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.
2024-02-11 01:46:25 +00:00
Pliki symulatora można znaleźć w `/Users/<nazwa_użytkownika>/Library/Developer/CoreSimulator/Devices`
2024-02-11 01:46:25 +00:00
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>)
2024-02-11 01:46:25 +00:00
### Aplikacje w symulatorze
2024-02-11 01:46:25 +00:00
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
2024-02-11 01:46:25 +00:00
iPhone 8 (BF5DA4F8-6BBE-4EA0-BA16-7E3AFD16C06C) (Booted)
```
2024-02-11 01:46:25 +00:00
Gdy już znasz UID, zainstalowane aplikacje można znaleźć w `/Users/<nazwa_użytkownika>/Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application`
2024-02-11 01:46:25 +00:00
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/`
2024-02-11 01:46:25 +00:00
W tym folderze **znajdziesz paczkę aplikacji**.
## Emulator
2024-02-11 01:46:25 +00:00
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.
2024-02-11 01:46:25 +00:00
## Jailbreak
2024-02-11 01:46:25 +00:00
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" %}
2024-02-11 01:46:25 +00:00
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 %}
2024-02-11 01:46:25 +00:00
### Rootowanie Androida vs. Jailbreak iOS
2024-02-11 01:46:25 +00:00
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.
2024-02-11 01:46:25 +00:00
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.
2024-02-11 01:46:25 +00:00
### Wyzwania związane z jailbreakiem
2024-02-11 01:46:25 +00:00
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.
2024-02-11 01:46:25 +00:00
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.
2024-02-11 01:46:25 +00:00
### Rodzaje jailbreaków
2024-02-11 01:46:25 +00:00
- **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.
2024-02-11 01:46:25 +00:00
### Narzędzia i zasoby do jailbreaku
2024-02-11 01:46:25 +00:00
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:
2024-02-11 01:46:25 +00:00
- [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.
2024-02-11 01:46:25 +00:00
Modyfikowanie urządzenia niesie ze sobą ryzyko, a jailbreak powinien być podchodzony ostrożnie.
2024-02-11 01:46:25 +00:00
### Korzyści i ryzyka związane z jailbreakiem
2024-02-11 01:46:25 +00:00
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.
2024-02-11 01:46:25 +00:00
### **Po zjailbreakowaniu**
{% content-ref url="basic-ios-testing-operations.md" %}
[basic-ios-testing-operations.md](basic-ios-testing-operations.md)
{% endcontent-ref %}
2024-02-11 01:46:25 +00:00
### **Wykrywanie jailbreaku**
2024-02-11 01:46:25 +00:00
**Wiele aplikacji będzie próbować wykryć, czy urządzenie jest zjailbreakowane, i w takim przypadku aplikacja nie zostanie uruchomiona**
2024-02-11 01:46:25 +00:00
* 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
2024-02-11 01:46:25 +00:00
**Więcej informacji na temat wykrywania jailbreaku** [**tutaj**](https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/jailbreak-detection-methods/)**.**
2021-05-19 16:11:33 +00:00
2024-02-11 01:46:25 +00:00
Możesz spróbować uniknąć tych wykryć, używając `ios jailbreak disable` z **narzędziem objection**.
2022-04-05 21:52:22 +00:00
2024-02-11 01:46:25 +00:00
## **Ominięcie wykrywania jailbreaku**
2022-04-05 21:52:22 +00:00
2024-02-11 01:46:25 +00:00
* 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”.
2022-04-28 16:01:33 +00:00
2024-02-11 01:46:25 +00:00
## Odwołania
2024-02-08 03:08:28 +00:00
* [https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/](https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/)
2022-04-28 16:01:33 +00:00
<details>
2024-02-11 01:46:25 +00:00
<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>
2022-04-28 16:01:33 +00:00
2024-02-11 01:46:25 +00:00
Inne sposoby wsparcia HackTricks:
2024-01-03 10:43:38 +00:00
2024-02-11 01:46:25 +00:00
* 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.
2022-04-28 16:01:33 +00:00
</details>