mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/mobile-pentesting/ios-pentesting/ios-pentesting-without
This commit is contained in:
parent
1dc01ee590
commit
d03df88f87
@ -4,25 +4,27 @@
|
||||
|
||||
## Główna idea
|
||||
|
||||
Aplikacje podpisane z **uprawnieniem `get_task_allow`** pozwalają aplikacjom innych firm na uruchomienie funkcji **`task_for_pid()`** z identyfikatorem procesu początkowej aplikacji jako argumentem, aby uzyskać port zadania nad nią (móc ją kontrolować i uzyskać dostęp do jej pamięci).
|
||||
Aplikacje podpisane z **uprawnieniem `get_task_allow`** pozwalają aplikacjom stron trzecich uruchomić funkcję **`task_for_pid()`** z identyfikatorem procesu początkowej aplikacji jako argument, aby uzyskać port zadania nad nią (móc ją kontrolować i uzyskać dostęp do jej pamięci).
|
||||
|
||||
Jednak nie jest to tak proste, jak po prostu pobranie IPA, ponowne podpisanie go z uprawnieniem i wgranie z powrotem na urządzenie. Dzieje się tak z powodu ochrony FairPlay. Gdy podpis aplikacji się zmienia, klucz DRM (Digital Rights Management) jest **unieważniony i aplikacja nie będzie działać**.
|
||||
|
||||
Na starym urządzeniu z jailbreakiem możliwe jest zainstalowanie IPA, **odszyfrowanie go za pomocą ulubionego narzędzia** (takiego jak Iridium lub frida-ios-dump) i pobranie go z powrotem z urządzenia. Chociaż, jeśli to możliwe, zaleca się po prostu poprosić klienta o odszyfrowane IPA.
|
||||
|
||||
|
||||
## Uzyskanie odszyfrowanego IPA
|
||||
|
||||
### Pobierz z Apple
|
||||
### Pobierz to od Apple
|
||||
|
||||
1. Zainstaluj aplikację do testowania na iPhonie.
|
||||
2. Zainstaluj i uruchom [Apple Configurator](https://apps.apple.com/au/app/apple-configurator/id1037126344?mt=12) na swoim macos.
|
||||
1. Zainstaluj aplikację do testowania na iPhonie
|
||||
2. Zainstaluj i uruchom [Apple Configurator](https://apps.apple.com/au/app/apple-configurator/id1037126344?mt=12) na swoim macos
|
||||
3. Otwórz `Terminal` na swoim Macu i przejdź do `/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps`. IPA pojawi się w tym folderze później.
|
||||
4. Powinieneś zobaczyć swoje urządzenie iOS. Kliknij dwukrotnie na nie, a następnie kliknij Dodaj + → Aplikacje w górnym pasku menu.
|
||||
5. Po kliknięciu Dodaj, Configurator pobierze IPA z Apple i spróbuje wgrać je na twoje urządzenie. Jeśli wcześniej postępowałeś zgodnie z moją rekomendacją i już zainstalowałeś IPA, pojawi się komunikat z prośbą o ponowną instalację aplikacji.
|
||||
4. Powinieneś zobaczyć swoje urządzenie iOS. Kliknij dwukrotnie na nie, a następnie kliknij Dodaj + → Aplikacje z górnego paska menu.
|
||||
5. Po kliknięciu Dodaj, Configurator pobierze IPA z Apple i spróbuje wgrać go na twoje urządzenie. Jeśli wcześniej postępowałeś zgodnie z moją rekomendacją i już zainstalowałeś IPA, pojawi się komunikat z prośbą o ponowną instalację aplikacji.
|
||||
6. IPA powinno być pobrane w `/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps`, skąd możesz je pobrać.
|
||||
|
||||
Sprawdź [https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed](https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed) po więcej szczegółowych informacji na temat tego procesu.
|
||||
|
||||
|
||||
### Odszyfrowanie aplikacji
|
||||
|
||||
Aby odszyfrować IPA, zamierzamy je zainstalować. Jednak jeśli masz starego iPhone'a z jailbreakiem, potencjalnie jego wersja nie będzie wspierana przez aplikację, ponieważ zazwyczaj aplikacje wspierają tylko najnowsze wersje.
|
||||
@ -53,21 +55,66 @@ Aby ponownie podpisać aplikację z uprawnieniem `get-task-allow`, dostępnych j
|
||||
|
||||
Jeśli chodzi o certyfikaty i profile podpisywania, Apple oferuje **darmowe profile podpisywania dla deweloperów** dla wszystkich kont przez Xcode. Po prostu stwórz aplikację i skonfiguruj jeden. Następnie skonfiguruj **iPhone, aby ufał aplikacjom dewelopera**, przechodząc do `Ustawienia` → `Prywatność i bezpieczeństwo`, a następnie kliknij na `Tryb dewelopera`.
|
||||
|
||||
|
||||
Z ponownie podpisanym plikiem IPA nadszedł czas, aby zainstalować go na urządzeniu, aby przeprowadzić testy penetracyjne:
|
||||
Z ponownie podpisanym plikiem IPA nadszedł czas, aby zainstalować go na urządzeniu, aby przeprowadzić pentesting:
|
||||
```bash
|
||||
ideviceinstaller -i resigned.ipa -w
|
||||
```
|
||||
### Hook
|
||||
---
|
||||
|
||||
Możesz łatwo podłączyć swoją aplikację, używając powszechnych narzędzi, takich jak frida i objection:
|
||||
### Włącz tryb dewelopera (iOS 16+)
|
||||
|
||||
Od iOS 16 Apple wprowadziło **Tryb Dewelopera**: każdy binarny plik, który zawiera `get_task_allow` *lub* jest podpisany certyfikatem dewelopera, odmówi uruchomienia, dopóki Tryb Dewelopera nie zostanie włączony na urządzeniu. Nie będziesz również mógł dołączyć Frida/LLDB, chyba że ten flag jest włączony.
|
||||
|
||||
1. Zainstaluj lub wgraj **dowolny** IPA podpisany przez dewelopera na telefon.
|
||||
2. Przejdź do **Ustawienia → Prywatność i bezpieczeństwo → Tryb dewelopera** i włącz go.
|
||||
3. Urządzenie zrestartuje się; po wprowadzeniu kodu dostępu zostaniesz poproszony o **Włączenie** Trybu Dewelopera.
|
||||
|
||||
Tryb Dewelopera pozostaje aktywny, dopóki go nie wyłączysz lub nie wyczyścisz telefonu, więc ten krok należy wykonać tylko raz na urządzenie. [Dokumentacja Apple](https://developer.apple.com/documentation/xcode/enabling-developer-mode-on-a-device) wyjaśnia implikacje bezpieczeństwa.
|
||||
|
||||
### Nowoczesne opcje sideloadingu
|
||||
|
||||
Obecnie istnieje kilka dojrzałych sposobów na sideloading i utrzymywanie aktualnych IPA z ponownym podpisywaniem bez jailbreaka:
|
||||
|
||||
| Narzędzie | Wymagania | Mocne strony | Ograniczenia |
|
||||
|-----------|-----------|--------------|--------------|
|
||||
| **AltStore 2 / SideStore** | macOS/Windows/Linux jako towarzysz, który ponownie podpisuje IPA co 7 dni z darmowym profilem dewelopera | Automatyczne przeładowanie przez Wi-Fi, działa do iOS 17 | Wymaga komputera w tej samej sieci, limit 3 aplikacji narzucony przez Apple |
|
||||
| **TrollStore 1/2** | Urządzenie na iOS 14 – 15.4.1 podatne na błąd CoreTrust | *Permanentne* podpisywanie (brak limitu 7 dni); brak komputera wymagany po zainstalowaniu | Nieobsługiwane na iOS 15.5+ (błąd naprawiony) |
|
||||
|
||||
Dla rutynowych pentestów na aktualnych wersjach iOS Alt/Side-Store są zazwyczaj najbardziej praktycznym wyborem.
|
||||
|
||||
### Hooking / dynamiczna instrumentacja
|
||||
|
||||
Możesz podłączyć swoją aplikację dokładnie tak, jak na urządzeniu z jailbreakiem, gdy jest podpisana z `get_task_allow` **i** Tryb Dewelopera jest włączony:
|
||||
```bash
|
||||
objection -g [your app bundle ID] explore
|
||||
# Spawn & attach with objection
|
||||
objection -g "com.example.target" explore
|
||||
|
||||
# Or plain Frida
|
||||
frida -U -f com.example.target -l my_script.js --no-pause
|
||||
```
|
||||
Najnowsze wydania Frida (>=16) automatycznie obsługują uwierzytelnianie wskaźników i inne środki zaradcze iOS 17, więc większość istniejących skryptów działa od razu.
|
||||
|
||||
### Zautomatyzowana analiza dynamiczna z MobSF (bez jailbreaka)
|
||||
|
||||
[MobSF](https://mobsf.github.io/Mobile-Security-Framework-MobSF/) może instrumentować IPA podpisane przez dewelopera na prawdziwym urządzeniu, używając tej samej techniki (`get_task_allow`) i zapewnia interfejs webowy z przeglądarką systemu plików, przechwytywaniem ruchu i konsolą Frida【turn6view0†L2-L3】. Najszybszym sposobem jest uruchomienie MobSF w Dockerze, a następnie podłączenie iPhone'a przez USB:
|
||||
```bash
|
||||
docker pull opensecurity/mobile-security-framework-mobsf:latest
|
||||
docker run -p 8000:8000 --privileged \
|
||||
-v /var/run/usbmuxd:/var/run/usbmuxd \
|
||||
opensecurity/mobile-security-framework-mobsf:latest
|
||||
# Browse to http://127.0.0.1:8000 and upload your resigned IPA
|
||||
```
|
||||
MobSF automatycznie wdroży binarny plik, włączy serwer Frida w sandboxie aplikacji i wygeneruje interaktywny raport.
|
||||
|
||||
### iOS 17 i uwagi dotyczące trybu blokady
|
||||
|
||||
* **Tryb blokady** (Ustawienia → Prywatność i bezpieczeństwo) blokuje dynamiczny linker przed ładowaniem niesygnowanych lub zewnętrznie sygnowanych bibliotek dynamicznych. Podczas testowania urządzeń, które mogą mieć włączony ten tryb, upewnij się, że jest **wyłączony**, inaczej sesje Frida/objection zakończą się natychmiast.
|
||||
* Uwierzytelnianie wskaźników (PAC) jest egzekwowane w całym systemie na urządzeniach A12 i nowszych. Frida ≥16 transparentnie obsługuje usuwanie PAC — wystarczy, że będziesz na bieżąco aktualizować zarówno *frida-server*, jak i narzędzia Python/CLI, gdy pojawi się nowa główna wersja iOS.
|
||||
|
||||
## Odniesienia
|
||||
|
||||
- [https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed](https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed)
|
||||
|
||||
- Dokumentacja dewelopera Apple – Włączanie trybu dewelopera na urządzeniu: <https://developer.apple.com/documentation/xcode/enabling-developer-mode-on-a-device>
|
||||
- Mobile Security Framework (MobSF): <https://mobsf.github.io/Mobile-Security-Framework-MobSF/>
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user