iOS Basic Testing Operations
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP:
HackTricks Training GCP Red Team Expert (GRTE)
Podsumowanie Identyfikacji i Dostępu do Urządzeń iOS
Identyfikacja UDID Urządzenia iOS
Aby unikalnie zidentyfikować urządzenie iOS, używa się 40-cyfrowej sekwencji znanej jako UDID. W systemie macOS Catalina lub nowszym można to znaleźć w aplikacji Finder, ponieważ iTunes nie jest już obecny. Urządzenie, po podłączeniu przez USB i wybraniu w Finderze, ujawnia swój UDID wśród innych informacji, gdy kliknie się na szczegóły pod jego nazwą.
Dla wersji macOS przed Catalina, iTunes ułatwia odkrycie UDID. Szczegółowe instrukcje można znaleźć tutaj.
Narzędzia wiersza poleceń oferują alternatywne metody uzyskiwania UDID:
Używając narzędzia I/O Registry Explorer
ioreg
:
Używanie
ideviceinstaller
dla macOS (i Linux):
Wykorzystanie
system_profiler
:
Używanie
instruments
do wylistowania urządzeń:
Dostęp do powłoki urządzenia
Dostęp SSH jest włączony poprzez zainstalowanie pakietu OpenSSH po jailbreaku, co umożliwia połączenia za pomocą ssh root@<device_ip_address>
. Ważne jest, aby zmienić domyślne hasła (alpine
) dla użytkowników root
i mobile
, aby zabezpieczyć urządzenie.
SSH przez USB staje się konieczne w przypadku braku Wi-Fi, używając iproxy
do mapowania portów urządzenia dla połączeń SSH. Ta konfiguracja umożliwia dostęp SSH przez USB, uruchamiając:
Aplikacje powłoki na urządzeniu, takie jak NewTerm 2, ułatwiają bezpośrednią interakcję z urządzeniem, co jest szczególnie przydatne w przypadku rozwiązywania problemów. Powłoki Reverse SSH mogą być również ustanawiane w celu zdalnego dostępu z komputera hosta.
Resetowanie Zapomnianych Haseł
Aby zresetować zapomniane hasło do domyślnego (alpine
), konieczna jest edycja pliku /private/etc/master.passwd
. Polega to na zastąpieniu istniejącego hasha hashem dla alpine
obok wpisów użytkowników root
i mobile
.
Techniki Transferu Danych
Transferowanie Plików Danych Aplikacji
Archiwizacja i Pobieranie za pomocą SSH i SCP: Łatwo jest zarchiwizować katalog Danych aplikacji za pomocą tar
, a następnie przenieść go za pomocą scp
. Poniższe polecenie archiwizuje katalog Danych do pliku .tgz, który jest następnie pobierany z urządzenia:
Narzędzia interfejsu graficznego
Używanie iFunbox i iExplorer: Te narzędzia GUI są przydatne do zarządzania plikami na urządzeniach iOS. Jednak od iOS 8.4 Apple ograniczyło dostęp tych narzędzi do piaskownicy aplikacji, chyba że urządzenie jest jailbreakowane.
Używanie Objection do zarządzania plikami
Interaktywna powłoka z Objection: Uruchomienie objection zapewnia dostęp do katalogu Bundle aplikacji. Stąd można przejść do katalogu Dokumenty aplikacji i zarządzać plikami, w tym pobierać i przesyłać je na i z urządzenia iOS.
Uzyskiwanie i Ekstrakcja Aplikacji
Pozyskiwanie Pliku IPA
Link do Dystrybucji Over-The-Air (OTA): Aplikacje dystrybuowane do testów za pomocą OTA można pobrać za pomocą narzędzia do pobierania zasobów ITMS, które jest instalowane za pomocą npm i służy do zapisywania pliku IPA lokalnie.
Ekstrakcja binarnego pliku aplikacji
Z pliku IPA: Rozpakuj plik IPA, aby uzyskać dostęp do odszyfrowanego binarnego pliku aplikacji.
Z urządzenia z jailbreakiem: Zainstaluj aplikację i wyodrębnij odszyfrowany plik binarny z pamięci.
Proces odszyfrowania
Przegląd ręcznego odszyfrowania: Binarne pliki aplikacji iOS są szyfrowane przez Apple za pomocą FairPlay. Aby przeprowadzić inżynierię wsteczną, należy zrzucić odszyfrowany plik binarny z pamięci. Proces odszyfrowania obejmuje sprawdzenie flagi PIE, dostosowanie flag pamięci, zidentyfikowanie zaszyfrowanej sekcji, a następnie zrzucenie i zastąpienie tej sekcji jej odszyfrowaną formą.
Sprawdzanie i modyfikowanie flagi PIE:
Identyfikacja zaszyfrowanej sekcji i zrzut pamięci:
Określ adresy początku i końca zaszyfrowanej sekcji za pomocą otool
i zrzutuj pamięć z urządzenia z jailbreakiem za pomocą gdb.
Nadpisywanie Zaszyfrowanej Sekcji:
Zastąp zaszyfrowaną sekcję w oryginalnym pliku binarnym aplikacji zdekodowanym zrzutem.
Finalizing Decryption: Zmodyfikuj metadane binariów, aby wskazać na brak szyfrowania, używając narzędzi takich jak MachOView, ustawiając cryptid
na 0.
Decryption (Automatically)
frida-ios-dump
Narzędzie frida-ios-dump jest używane do automatycznego deszyfrowania i ekstrakcji aplikacji z urządzeń iOS. Na początku należy skonfigurować dump.py
, aby połączyć się z urządzeniem iOS, co można zrobić przez localhost na porcie 2222 za pomocą iproxy lub bezpośrednio przez adres IP urządzenia i port.
Aplikacje zainstalowane na urządzeniu można wylistować za pomocą polecenia:
Aby zrzucić konkretną aplikację, taką jak Telegram, używa się następującego polecenia:
To polecenie inicjuje zrzut aplikacji, co skutkuje utworzeniem pliku Telegram.ipa
w bieżącym katalogu. Proces ten jest odpowiedni dla urządzeń z jailbreakiem, ponieważ aplikacje bez podpisu lub fałszywie podpisane mogą być ponownie zainstalowane za pomocą narzędzi takich jak ios-deploy.
flexdecrypt
Narzędzie flexdecrypt, wraz ze swoim wrapperem flexdump, umożliwia ekstrakcję plików IPA z zainstalowanych aplikacji. Komendy instalacyjne dla flexdecrypt na urządzeniu obejmują pobranie i zainstalowanie pakietu .deb
. flexdump może być używane do wylistowania i zrzutu aplikacji, jak pokazano w poniższych komendach:
bagbak
bagbak, inne narzędzie oparte na Frida, wymaga urządzenia z jailbreakiem do deszyfrowania aplikacji:
r2flutch
r2flutch, wykorzystując zarówno radare, jak i frida, służy do deszyfrowania i zrzucania aplikacji. Więcej informacji można znaleźć na jego stronie GitHub.
Instalacja aplikacji
Sideloading odnosi się do instalacji aplikacji poza oficjalnym App Store. Proces ten jest obsługiwany przez installd daemon i wymaga, aby aplikacje były podpisane certyfikatem wydanym przez Apple. Urządzenia z jailbreakiem mogą to obejść za pomocą AppSync, co umożliwia instalację fałszywie podpisanych pakietów IPA.
Narzędzia do Sideloadingu
Cydia Impactor: Narzędzie do podpisywania i instalowania plików IPA na iOS oraz plików APK na Androida. Przewodniki i rozwiązywanie problemów można znaleźć na yalujailbreak.net.
libimobiledevice: Biblioteka dla systemów Linux i macOS do komunikacji z urządzeniami iOS. Komendy instalacyjne i przykłady użycia dla ideviceinstaller są dostarczane w celu instalacji aplikacji przez USB.
ipainstaller: To narzędzie wiersza poleceń umożliwia bezpośrednią instalację aplikacji na urządzeniach iOS.
ios-deploy: Dla użytkowników macOS, ios-deploy instaluje aplikacje iOS z wiersza poleceń. Rozpakowanie IPA i użycie flagi
-m
do bezpośredniego uruchomienia aplikacji są częścią procesu.Xcode: Wykorzystaj Xcode do instalacji aplikacji, przechodząc do Window/Devices and Simulators i dodając aplikację do Installed Apps.
Zezwól na instalację aplikacji na urządzeniach nie-iPad
Aby zainstalować aplikacje specyficzne dla iPada na urządzeniach iPhone lub iPod touch, wartość UIDeviceFamily w pliku Info.plist musi zostać zmieniona na 1. Ta modyfikacja wymaga jednak ponownego podpisania pliku IPA z powodu kontroli walidacji podpisu.
Uwaga: Ta metoda może nie zadziałać, jeśli aplikacja wymaga funkcji zarezerwowanych dla nowszych modeli iPada, podczas korzystania ze starszego iPhone'a lub iPoda touch.
References
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Last updated