hacktricks/mobile-pentesting/ios-pentesting/basic-ios-testing-operations.md
2024-02-11 01:46:25 +00:00

13 KiB

Podstawowe operacje testowania iOS

Dowiedz się, jak hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Podsumowanie identyfikacji i dostępu do urządzeń iOS

Identyfikacja UDID urządzenia iOS

Aby jednoznacznie zidentyfikować urządzenie iOS, używany jest 40-znakowy ciąg znaków znany jako UDID. W systemie macOS Catalina lub nowszym można go znaleźć w aplikacji Finder, ponieważ iTunes już nie istnieje. Po podłączeniu urządzenia za pomocą USB i wybraniu go w Finderze, UDID zostaje ujawniony wraz z innymi informacjami po kliknięciu szczegółów pod jego nazwą.

Wersje macOS wcześniejsze niż Catalina umożliwiają odkrycie UDID za pomocą iTunes. Szczegółowe instrukcje można znaleźć tutaj.

Narzędzia wiersza poleceń oferują alternatywne metody pobierania UDID:

  • Za pomocą 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:"
  • Wykorzystanie narzędzia instruments do wyświetlania listy urządzeń:
$ instruments -s devices

Dostęp do powłoki urządzenia

Dostęp SSH jest włączony poprzez zainstalowanie pakietu OpenSSH po jailbreaku, umożliwiając połączenia za pomocą ssh root@<adres_ip_urządzenia>. Ważne jest zmienienie domyślnych haseł (alpine) dla użytkowników root i mobile, aby zabezpieczyć urządzenie.

SSH przez USB staje się konieczny w przypadku braku Wi-Fi, korzystając z 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, szczególnie przydatne do rozwiązywania problemów. Odwrócone powłoki SSH mogą również być ustanawiane w celu zdalnego dostępu z komputera hosta.

Resetowanie zapomnianych haseł

Aby zresetować zapomniane hasło z powrotem do domyślnego (alpine), konieczne jest edytowanie pliku /private/etc/master.passwd. Polega to na zastąpieniu istniejącego skrótu skrótem 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: Proste jest zarchiwizowanie katalogu Data aplikacji za pomocą tar, a następnie przesłanie 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 .

Narzędzia z graficznym interfejsem użytkownika

Korzystanie z iFunbox i iExplorer: Te narzędzia z graficznym interfejsem użytkownika są przydatne do zarządzania plikami na urządzeniach iOS. Jednak począwszy od wersji iOS 8.4, Apple ograniczyło dostęp tych narzędzi do piaskownicy aplikacji, chyba że urządzenie jest jailbroken.

Korzystanie z Objection do zarządzania plikami

Interaktywna powłoka z Objection: Uruchomienie Objection umożliwia dostęp do katalogu Bundle aplikacji. Stąd można nawigować do katalogu Documents aplikacji i zarządzać plikami, w tym pobierać je i przesyłać na urządzenie iOS.

objection --gadget com.apple.mobilesafari explorer
cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
file download <filename>

Pobieranie i wyodrębnianie aplikacji

Pobieranie pliku IPA

Link 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 services asset downloader, które jest zainstalowane 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

Wyodrębnianie binarnego pliku aplikacji

  1. Z pliku IPA: Rozpakuj plik IPA, aby uzyskać dostęp do zdeszyfrowanego binarnego pliku aplikacji.
  2. Z urządzenia z jailbreakiem: Zainstaluj aplikację i wyodrębnij z pamięci zdeszyfrowany binarny plik.

Proces deszyfrowania

Przegląd ręcznego deszyfrowania: Binarne pliki aplikacji iOS są szyfrowane przez Apple za pomocą FairPlay. Aby przeprowadzić inżynierię wsteczną, konieczne jest wyodrębnienie z pamięci zdeszyfrowanego binarnego pliku. Proces deszyfrowania polega na sprawdzeniu flagi PIE, dostosowaniu flag pamięci, zidentyfikowaniu zaszyfrowanej sekcji, a następnie wyodrębnieniu i zastąpieniu tej sekcji jej zdeszyfrowaną formą.

Sprawdzanie i modyfikowanie flagi PIE:

otool -Vh Original_App
python change_macho_flags.py --no-pie Original_App
otool -Vh Hello_World

Identyfikowanie zaszyfrowanej sekcji i wydobywanie pamięci:

Aby zidentyfikować początek i koniec zaszyfrowanej sekcji, użyj polecenia otool, a następnie wydobyj 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 sekcji zaszyfrowanej:

Zastąp zaszyfrowaną sekcję w oryginalnym pliku binarnym aplikacji zdeszyfrowanym zrzutem.

dd bs=1 seek=<starting_address> conv=notrunc if=dump.bin of=Original_App

Finalizowanie Deszyfrowania: Zmodyfikuj metadane binarne, aby wskazywały brak szyfrowania za pomocą narzędzi takich jak MachOView, ustawiając cryptid na 0.

Deszyfrowanie (Automatycznie)

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ć za pomocą localhost na porcie 2222 za pośrednictwem iproxy lub bezpośrednio za pomocą adresu IP i portu urządzenia.

Zainstalowane aplikacje na urządzeniu można wyświetlić za pomocą polecenia:

$ python dump.py -l

Aby wykonać zrzut konkretnej aplikacji, takiej jak Telegram, używane jest poniższe polecenie:

$ python3 dump.py -u "root" -p "<PASSWORD>" ph.telegra.Telegraph

Ten polecenie inicjuje zrzut aplikacji, co skutkuje utworzeniem pliku Telegram.ipa w bieżącym katalogu. Ten proces jest odpowiedni dla urządzeń z jailbreakiem, ponieważ niesygnowane lub fałszywie podpisane aplikacje można ponownie zainstalować za pomocą narzędzi takich jak ios-deploy.

flexdecrypt

Narzędzie flexdecrypt wraz z jego opakowaniem flexdump umożliwiają wyodrębnianie plików IPA z zainstalowanych aplikacji. Polecenia instalacyjne dla flexdecrypt na urządzeniu obejmują pobranie i zainstalowanie pakietu .deb. flexdump można użyć do wyświetlania listy i zrzutu aplikacji, jak pokazano 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 zrootowanego urządzenia do deszyfrowania aplikacji:

bagbak --raw Chrome

r2flutch

r2flutch, wykorzystujący zarówno radare, jak i frida, służy do deszyfrowania i dumpowania aplikacji. Więcej informacji można znaleźć na stronie GitHub.

Instalowanie aplikacji

Sideloading odnosi się do instalowania aplikacji spoza oficjalnego sklepu App Store. Proces ten jest obsługiwany przez demona installd i wymaga, aby aplikacje były podpisane certyfikatem wydanym przez Apple. Zdjęcia IPA podpisane fałszywie można zainstalować na urządzeniach z jailbreakiem za pomocą AppSync.

Narzędzia do Sideloadingu

  • Cydia Impactor: Narzędzie do podpisywania i instalowania plików IPA na iOS oraz plików APK na Androidzie. 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. Przedstawione są polecenia instalacji i przykłady użycia dla ideviceinstaller do instalowania 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 pliku IPA i użycie flagi -m do bezpośredniego uruchomienia aplikacji są częścią procesu.

  • Xcode: Wykorzystaj Xcode do instalowania aplikacji, przechodząc do Window/Devices and Simulators i dodając aplikację do Installed Apps.

Zezwól na instalację aplikacji na urządzeniach innych niż 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 jednak wymaga ponownego podpisania pliku IPA ze względu na sprawdzanie poprawności podpisu.

Uwaga: Ta metoda może nie powieść się, jeśli aplikacja wymaga funkcji dostępnych tylko na nowszych modelach iPada, podczas korzystania z starszego iPhone'a lub iPod touch.

References

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks: