mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-19 01:24:50 +00:00
150 lines
12 KiB
Markdown
150 lines
12 KiB
Markdown
# Środowisko testowe iOS
|
|
|
|
<details>
|
|
|
|
<summary><strong>Nauka hakowania 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ź [**PLANY SUBSKRYPCYJNE**](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) na GitHubie.
|
|
|
|
</details>
|
|
|
|
## 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 urządzeniu mobilnym z Xcode**, ale pojawi się błąd. Przejdź do _Ustawienia_ --> _Ogólne_ --> _Profile i Zarządzanie Urządzeniami_ --> Wybierz niezaufany profil i kliknij "**Zaufaj**".
|
|
|
|
Zauważ, że **aplikacje podpisane tym samym certyfikatem podpisującym mogą dzielić zasoby w bezpieczny sposób, 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 niezbędne 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 z **oficjalnego sklepu z aplikacjami**. 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ładkę _Xcode_ --> _Otwórz narzędzia deweloperskie_ --> _Symulator_\
|
|
\_\_Na poniższym obrazie, klikając w "iPod touch \[...]" możesz wybrać inne urządzenie do testowania:
|
|
|
|
![](<../../.gitbook/assets/image (267).png>)
|
|
|
|
![](<../../.gitbook/assets/image (517).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 zainstalowano aplikację**. Szybkim sposobem **znalezienia poprawnego UID** jest uruchomienie aplikacji w symulatorze i wykonanie:
|
|
```bash
|
|
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/`
|
|
|
|
I w tym folderze możesz **znaleźć pakiet 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 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 łatane, więc jest **omijane**.
|
|
|
|
{% 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 wykorzystywania 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 ominię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](https://ipsw.me) 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 użycia 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 zastosowania.
|
|
|
|
### 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?](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.
|
|
|
|
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**, pozwalając aplikacjom na 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](basic-ios-testing-operations.md)
|
|
{% endcontent-ref %}
|
|
|
|
### **Wykrywanie Jailbreaków**
|
|
|
|
**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 **zazwyczaj 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**](https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/jailbreak-detection-methods/)**.**
|
|
|
|
Możesz spróbować uniknąć tych wykryć za pomocą `ios jailbreak disable` z **objection**
|
|
|
|
## **Unikanie Wykrycia Jailbreaków**
|
|
|
|
* 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”
|
|
|
|
## Referencje
|
|
|
|
* [https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/](https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/)
|
|
|
|
<details>
|
|
|
|
<summary><strong>Dowiedz się, jak 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ź [**PLANY SUBSKRYPCYJNE**](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) github repos.
|
|
|
|
</details>
|