12 KiB
iOS Podstawowe Operacje Testowe
{% hint style="success" %}
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)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się sztuczkami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.
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
:
$ ioreg -p IOUSB -l | grep "USB Serial"
- Używanie
ideviceinstaller
dla macOS (i Linux):
$ brew install ideviceinstaller
$ idevice_id -l
- Wykorzystanie
system_profiler
:
$ system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p;/iPhone/,/Serial/p;/iPod/,/Serial/p' | grep "Serial Number:"
- Używanie
instruments
do wylistowania urządzeń:
$ instruments -s devices
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:
$ iproxy 2222 22
$ ssh -p 2222 root@localhost
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:
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 .
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.
objection --gadget com.apple.mobilesafari explorer
cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
file download <filename>
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.
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
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:
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ątku i końca zaszyfrowanej sekcji za pomocą otool
i zrzutuj pamięć z urządzenia z jailbreakiem za pomocą 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 zdekodowanym zrzutem.
dd bs=1 seek=<starting_address> conv=notrunc if=dump.bin of=Original_App
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:
$ python dump.py -l
Aby zrzucić konkretną aplikację, taką jak Telegram, używa się następującego polecenia:
$ python3 dump.py -u "root" -p "<PASSWORD>" ph.telegra.Telegraph
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:
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, inne narzędzie oparte na Frida, wymaga urządzenia z jailbreakiem do deszyfrowania aplikacji:
bagbak --raw Chrome
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
- 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/
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.