iOS Podstawowe operacje testowe
Tip
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)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.
Podsumowanie identyfikacji i dostępu do urządzeń iOS
Identyfikacja UDID urządzenia iOS
Do jednoznacznej identyfikacji urządzenia iOS używa się 40-cyfrowego ciągu znanego jako UDID. W macOS Catalina lub nowszym można go znaleźć w Finder app, ponieważ iTunes nie jest już dostępny. Po podłączeniu urządzenia przez USB i wybraniu go w Finder app, UDID urządzenia jest widoczne wraz z innymi informacjami po kliknięciu szczegółów pod jego nazwą.
W wersjach macOS wcześniejszych niż Catalina, iTunes ułatwia znalezienie UDID. Szczegółowe instrukcje można znaleźć tutaj.
Narzędzia w wierszu poleceń oferują alternatywne metody pobierania UDID:
- Użycie narzędzia I/O Registry Explorer
ioreg:
$ ioreg -p IOUSB -l | grep "USB Serial"
- Używanie
ideviceinstallerna macOS (i Linux):
$ brew install ideviceinstaller
$ idevice_id -l
- Użycie
system_profiler:
$ system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p;/iPhone/,/Serial/p;/iPod/,/Serial/p' | grep "Serial Number:"
- Użycie
instrumentsdo wylistowania urządzeń:
$ instruments -s devices
Dostęp do powłoki urządzenia
SSH access jest możliwy po zainstalowaniu OpenSSH package po jailbreaku, umożliwiając połączenia przez 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 over USB staje się konieczne przy braku Wi‑Fi, używając iproxy do mapowania portów urządzenia dla połączeń SSH. Ta konfiguracja umożliwia SSH przez USB, uruchamiając:
$ iproxy 2222 22
$ ssh -p 2222 root@localhost
Aplikacje shell na urządzeniu, takie jak NewTerm 2, ułatwiają bezpośrednią interakcję z urządzeniem, szczególnie przydatną przy rozwiązywaniu problemów. Reverse SSH shells można również ustanowić, aby uzyskać zdalny dostęp z komputera hosta.
Resetowanie zapomnianych haseł
Aby zresetować zapomniane hasło do wartości domyślnej (alpine), należy edytować plik /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
Przenoszenie plików danych aplikacji
Archiwizacja i pobieranie przez SSH i SCP: Łatwo jest spakować katalog Data aplikacji przy użyciu tar, a następnie przesłać go za pomocą scp. Poniższe polecenie archiwizuje katalog Data do pliku .tgz, który następnie jest pobierany z urządzenia:
tar czvf /tmp/data.tgz /private/var/mobile/Containers/Data/Application/8C8E7EB0-BC9B-435B-8EF8-8F5560EB0693
exit
scp -P 2222 root@localhost:/tmp/data.tgz .
Graficzne narzędzia interfejsu użytkownika
Korzystanie z iFunbox i iExplorer: Te narzędzia GUI są przydatne do zarządzania plikami na urządzeniach iOS. Jednak począwszy od iOS 8.4 Apple ograniczył dostęp tych narzędzi do application sandbox, chyba że urządzenie jest jailbroken.
Korzystanie z Objection do zarządzania plikami
Interaktywny shell z Objection: Uruchomienie objection daje dostęp do katalogu Bundle aplikacji. Stąd możesz przejść do katalogu Documents aplikacji i zarządzać plikami, w tym pobierać je i przesyłać na i z urządzenia iOS.
objection --gadget com.apple.mobilesafari explorer
cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
file download <filename>
Pozyskiwanie i wyodrębnianie aplikacji
Pobieranie pliku IPA
Link dystrybucji Over-The-Air (OTA): Aplikacje dystrybuowane do testów przez OTA można pobrać za pomocą narzędzia ITMS services asset downloader, które instalowane jest przez npm i służy do zapisania pliku IPA lokalnie.
npm install -g itms-services
itms-services -u "itms-services://?action=download-manifest&url=https://s3-ap-southeast-1.amazonaws.com/test-uat/manifest.plist" -o - > out.ipa
Pozyskiwanie binarki aplikacji
- From an IPA: Rozpakuj IPA, aby uzyskać dostęp do zdeszyfrowanej binarki aplikacji.
- From a Jailbroken Device: Zainstaluj aplikację i wyodrębnij z pamięci zdeszyfrowaną binarkę.
Proces deszyfrowania
Manual Decryption Overview: Binarki aplikacji iOS są szyfrowane przez Apple przy użyciu FairPlay. Aby przeprowadzić analizę wsteczną, trzeba zrzucić (dump) z pamięci zdeszyfrowaną binarkę. Proces deszyfrowania obejmuje sprawdzenie flagi PIE, dostosowanie flag pamięci, zidentyfikowanie zaszyfrowanej sekcji, a następnie zrzucenie i zastąpienie tej sekcji jej zdeszyfrowaną wersją.
Checking and Modifying PIE Flag:
otool -Vh Original_App
python change_macho_flags.py --no-pie Original_App
otool -Vh Hello_World
Identyfikacja zaszyfrowanej sekcji i zrzut pamięci:
Określ adresy początkowy i końcowy zaszyfrowanej sekcji za pomocą otool i zrzutuj pamięć z jailbroken device przy użyciu gdb.
otool -l Original_App | grep -A 4 LC_ENCRYPTION_INFO
dump memory dump.bin 0x8000 0x10a4000
Nadpisywanie zaszyfrowanej sekcji:
Zastąp zaszyfrowaną sekcję w oryginalnym pliku binarnym aplikacji zdezaszyfrowanym zrzutem.
dd bs=1 seek=<starting_address> conv=notrunc if=dump.bin of=Original_App
Finalizacja odszyfrowania: Zmodyfikuj metadane binarki, aby wskazywały brak szyfrowania, używając narzędzi takich jak MachOView, ustawiając cryptid na 0.
Odszyfrowywanie (automatycznie)
frida-ios-dump
Narzędzie frida-ios-dump służy do automatycznego odszyfrowywania i wyodrębniania aplikacji z urządzeń iOS. Najpierw trzeba skonfigurować dump.py, aby połączyć się z urządzeniem iOS — można to zrobić przez localhost na porcie 2222 za pomocą iproxy lub bezpośrednio przez adres IP i port urządzenia.
Zainstalowane na urządzeniu aplikacje można wyświetlić poleceniem:
$ python dump.py -l
Aby wykonać dump konkretnej aplikacji, takiej jak Telegram, użyj następującego polecenia:
$ python3 dump.py -u "root" -p "<PASSWORD>" ph.telegra.Telegraph
To polecenie inicjuje dump aplikacji, powodując utworzenie pliku Telegram.ipa w bieżącym katalogu. Ten proces jest odpowiedni dla jailbroken devices, ponieważ unsigned lub fake-signed apps można ponownie zainstalować przy użyciu narzędzi takich jak ios-deploy.
frida-ipa-extract
Ekstraktor IPA oparty na Frida dla jailbroken devices; używa USB Frida sessions oraz opcjonalnego SSH/SFTP do szybszych pobrań.
- Wymagania: Python 3.9+,
frida,paramiko, jailbroken device z frida-server (OpenSSH w trybie SSH). - Konfiguracja:
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
- Użycie:
python extract.py -U -f com.example.app -o MyApp.ipa
python extract.py -U -f com.example.app -o MyApp.ipa --sandbox --no-resume
python extract.py -H 192.168.100.32 -P 2222 -u root -p password -f com.example.app
- Flagi:
-f <bundle>uruchamia/dołącza (lub--piddla PID);-oustawia nazwę wyjścia.-Uużywa USB;-H/-P/-u/-potwiera tunel SSH dofrida-server27042 i pobiera przez SFTP (można łączyć z-U).--sandboxzrzuca sandbox;--no-resumeutrzymuje aplikację w stanie zawieszenia, aby uniknąć crashów i ponownych prób realizowanych przez proces systemowy, jeśli sesja zostanie przerwana. - Rozwiązywanie problemów:
Frida attach timed out→ użyj-flub--no-resume;script has been destroyed→--no-resumelub transfer przez SSH;No running apps found→ uruchom lub spawn aplikację.
flexdecrypt
Narzędzie flexdecrypt, wraz ze swoim wrapperem flexdump, umożliwia wyodrębnianie plików IPA z zainstalowanych aplikacji. Polecenia instalacyjne dla flexdecrypt na urządzeniu obejmują pobranie i zainstalowanie pakietu .deb. flexdump może być użyty do listowania i zrzucania aplikacji, jak pokazano w poleceniach poniżej:
apt install zip unzip
wget https://gist.githubusercontent.com/defparam/71d67ee738341559c35c684d659d40ac/raw/30c7612262f1faf7871ba8e32fbe29c0f3ef9e27/flexdump -P /usr/local/bin; chmod +x /usr/local/bin/flexdump
flexdump list
flexdump dump Twitter.app
bagbak
bagbak, kolejne narzędzie oparte na Frida, wymaga jailbroken device do odszyfrowania aplikacji:
bagbak --raw Chrome
r2flutch
r2flutch, wykorzystujący zarówno radare jak i frida, służy do odszyfrowywania i dumpowania aplikacji. Więcej informacji znajduje się na jego GitHub page.
Instalacja aplikacji
Sideloading odnosi się do instalowania 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 Jailbroken mogą to obejść za pomocą AppSync, umożliwiając instalację fake-signed IPA packages.
Sideloading Tools
-
Cydia Impactor: Narzędzie do podpisywania i instalowania plików IPA na iOS oraz APK na Android. Poradniki i rozwiązywanie problemów dostępne są na yalujailbreak.net.
-
libimobiledevice: Biblioteka dla Linux i macOS do komunikacji z urządzeniami iOS. Zawiera polecenia instalacyjne oraz przykłady użycia ideviceinstaller do instalacji aplikacji przez USB.
-
ipainstaller: Narzędzie wiersza poleceń umożliwiające bezpośrednią instalację aplikacji na urządzeniach iOS.
-
ios-deploy: Dla użytkowników macOS, ios-deploy instaluje aplikacje iOS z poziomu linii poleceń. Proces obejmuje rozpakowanie IPA oraz użycie flagi
-mdo bezpośredniego uruchomienia aplikacji. -
Xcode: Użyj Xcode, aby zainstalować aplikacje, przechodząc do Window/Devices and Simulators i dodając aplikację do Installed Apps.
Allow Application Installation on Non-iPad Devices
Aby zainstalować aplikacje przeznaczone dla iPada na iPhone lub iPod touch, wartość UIDeviceFamily w pliku Info.plist musi zostać zmieniona na 1. Ta modyfikacja jednak wymaga ponownego podpisania pliku IPA z powodu mechanizmów walidacji podpisu.
Uwaga: Metoda ta może nie zadziałać, jeśli aplikacja wymaga funkcji dostępnych tylko w nowszych modelach iPad podczas instalacji na starszym iPhone lub iPod touch.
Referencje
- https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0052/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0053/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0054/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0056/
- frida-ipa-extract
Tip
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)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.


