hacktricks/mobile-pentesting/ios-pentesting/basic-ios-testing-operations.md
2024-02-10 15:36:32 +00:00

13 KiB

iOS Grundlegende Testoperationen

Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Zusammenfassung der Identifizierung und des Zugriffs auf iOS-Geräte

Ermitteln der UDID eines iOS-Geräts

Um ein iOS-Gerät eindeutig zu identifizieren, wird eine 40-stellige Sequenz namens UDID verwendet. Unter macOS Catalina oder neuer kann dies in der Finder-App gefunden werden, da iTunes nicht mehr vorhanden ist. Das Gerät zeigt seine UDID zusammen mit anderen Informationen an, wenn die Details unter seinem Namen angeklickt werden, nachdem es über USB verbunden und im Finder ausgewählt wurde.

Für Versionen von macOS vor Catalina ermöglicht iTunes die Ermittlung der UDID. Detaillierte Anweisungen finden Sie hier.

Befehlszeilentools bieten alternative Methoden zum Abrufen der UDID an:

  • Verwendung des I/O Registry Explorer-Tools ioreg:
$ ioreg -p IOUSB -l | grep "USB Serial"
  • Verwendung von ideviceinstaller für macOS (und Linux):
$ brew install ideviceinstaller
$ idevice_id -l
  • Verwendung von system_profiler:
$ system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p;/iPhone/,/Serial/p;/iPod/,/Serial/p' | grep "Serial Number:"
  • Verwendung von instruments, um Geräte aufzulisten:
$ instruments -s devices

Zugriff auf die Geräteshell

Der SSH-Zugriff wird durch die Installation des OpenSSH-Pakets nach dem Jailbreak aktiviert, was Verbindungen über ssh root@<Geräte_IP-Adresse> ermöglicht. Es ist wichtig, die Standardpasswörter (alpine) für die Benutzer root und mobile zu ändern, um das Gerät abzusichern.

SSH über USB wird erforderlich, wenn kein WLAN verfügbar ist. Hierbei wird iproxy verwendet, um die Geräteports für SSH-Verbindungen zu mappen. Diese Konfiguration ermöglicht den SSH-Zugriff über USB, indem folgender Befehl ausgeführt wird:

$ iproxy 2222 22
$ ssh -p 2222 root@localhost

On-Device-Shell-Anwendungen, wie NewTerm 2, erleichtern die direkte Geräteinteraktion und sind besonders nützlich für Fehlerbehebung. Reverse SSH-Shells können auch für den Remote-Zugriff vom Host-Computer aus eingerichtet werden.

Zurücksetzen vergessener Passwörter

Um ein vergessenes Passwort auf den Standardwert (alpine) zurückzusetzen, ist es erforderlich, die Datei /private/etc/master.passwd zu bearbeiten. Dabei wird der vorhandene Hash durch den Hash für alpine neben den Einträgen für die Benutzer root und mobile ersetzt.

Datenübertragungstechniken

Übertragung von App-Datendateien

Archivierung und Abruf über SSH und SCP: Es ist einfach, das Data-Verzeichnis der Anwendung mit tar zu archivieren und dann mit scp zu übertragen. Der folgende Befehl archiviert das Data-Verzeichnis in eine .tgz-Datei, die dann vom Gerät abgerufen wird:

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 .

Grafische Benutzeroberflächen-Tools

Verwendung von iFunbox und iExplorer: Diese GUI-Tools sind nützlich für die Verwaltung von Dateien auf iOS-Geräten. Ab iOS 8.4 hat Apple jedoch den Zugriff auf das Anwendungssandbox dieser Tools eingeschränkt, es sei denn, das Gerät ist gejailbreakt.

Verwendung von Objection für die Dateiverwaltung

Interaktive Shell mit Objection: Das Starten von Objection ermöglicht den Zugriff auf das Bundle-Verzeichnis einer App. Von hier aus können Sie zum Dokumentenverzeichnis der App navigieren und Dateien verwalten, einschließlich des Herunter- und Hochladens von Dateien auf und von dem iOS-Gerät.

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

Erhalten und Extrahieren von Apps

Erwerben der IPA-Datei

Over-The-Air (OTA) Vertriebslink: Apps, die über OTA zum Testen verteilt werden, können mithilfe des ITMS Services Asset Downloader-Tools heruntergeladen werden. Dieses Tool wird über npm installiert und verwendet, um die IPA-Datei lokal zu speichern.

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

Extrahieren der App-Binärdatei

  1. Aus einer IPA: Entpacken Sie die IPA-Datei, um auf die entschlüsselte App-Binärdatei zuzugreifen.
  2. Von einem gejailbreakten Gerät: Installieren Sie die App und extrahieren Sie die entschlüsselte Binärdatei aus dem Speicher.

Entschlüsselungsprozess

Übersicht der manuellen Entschlüsselung: iOS-App-Binärdateien werden von Apple mit FairPlay verschlüsselt. Um sie zu reverse-engineeren, muss die entschlüsselte Binärdatei aus dem Speicher extrahiert werden. Der Entschlüsselungsprozess umfasst das Überprüfen der PIE-Flagge, das Anpassen der Speicherflags, das Identifizieren des verschlüsselten Abschnitts und das Dumpen und Ersetzen dieses Abschnitts durch seine entschlüsselte Form.

Überprüfen und Ändern der PIE-Flagge:

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

Identifizierung des verschlüsselten Abschnitts und Speicherdump:

Bestimmen Sie die Start- und Endadressen des verschlüsselten Abschnitts mit otool und dumpen Sie den Speicher des jailbroken Geräts mit gdb.

otool -l Original_App | grep -A 4 LC_ENCRYPTION_INFO
dump memory dump.bin 0x8000 0x10a4000

Überschreiben des verschlüsselten Abschnitts:

Ersetzen Sie den verschlüsselten Abschnitt in der Original-App-Binärdatei durch den entschlüsselten Dump.

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

Abschließende Entschlüsselung: Ändern Sie die Metadaten der Binärdatei mit Tools wie MachOView, um das Fehlen einer Verschlüsselung anzuzeigen, indem Sie cryptid auf 0 setzen.

Entschlüsselung (automatisch)

frida-ios-dump

Das Tool frida-ios-dump wird verwendet, um Apps automatisch von iOS-Geräten zu entschlüsseln und zu extrahieren. Zunächst muss dump.py so konfiguriert werden, dass es eine Verbindung zum iOS-Gerät herstellt. Dies kann über localhost auf Port 2222 über iproxy oder direkt über die IP-Adresse und den Port des Geräts erfolgen.

Mit dem Befehl können die auf dem Gerät installierten Anwendungen aufgelistet werden:

$ python dump.py -l

Um eine bestimmte App wie Telegram zu dumpen, wird der folgende Befehl verwendet:

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

Dieser Befehl initiiert das App-Dumpen und führt zur Erstellung einer Telegram.ipa-Datei im aktuellen Verzeichnis. Dieser Vorgang ist für gejailbreakte Geräte geeignet, da nicht signierte oder gefälscht signierte Apps mithilfe von Tools wie ios-deploy erneut installiert werden können.

flexdecrypt

Das Tool flexdecrypt ermöglicht zusammen mit seinem Wrapper flexdump das Extrahieren von IPA-Dateien aus installierten Anwendungen. Installationsbefehle für flexdecrypt auf dem Gerät beinhalten das Herunterladen und Installieren des .deb-Pakets. flexdump kann verwendet werden, um Apps aufzulisten und zu dumpen, wie in den folgenden Befehlen gezeigt:

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, ein weiteres auf Frida basierendes Tool, erfordert ein gejailbreaktes Gerät zur App-Entschlüsselung:

bagbak --raw Chrome

r2flutch

r2flutch, das sowohl radare als auch frida nutzt, dient zur Entschlüsselung und Dumping von Apps. Weitere Informationen finden Sie auf der GitHub-Seite.

Installation von Apps

Sideloading bezieht sich auf die Installation von Anwendungen außerhalb des offiziellen App Stores. Dieser Vorgang wird vom installd-Daemon durchgeführt und erfordert, dass Apps mit einem von Apple ausgestellten Zertifikat signiert sind. Mit einem jailbroken Gerät kann dies durch AppSync umgangen werden, was die Installation von gefälscht signierten IPA-Paketen ermöglicht.

Sideloading-Tools

  • Cydia Impactor: Ein Tool zum Signieren und Installieren von IPA-Dateien auf iOS und APK-Dateien auf Android. Anleitungen und Fehlerbehebung finden Sie auf yalujailbreak.net.

  • libimobiledevice: Eine Bibliothek für Linux und macOS zur Kommunikation mit iOS-Geräten. Installationsbefehle und Beispiele für die Verwendung von ideviceinstaller werden für die Installation von Apps über USB bereitgestellt.

  • ipainstaller: Dieses Befehlszeilentool ermöglicht die direkte Installation von Apps auf iOS-Geräten.

  • ios-deploy: Für macOS-Benutzer installiert ios-deploy iOS-Apps über die Befehlszeile. Das Entpacken der IPA-Datei und die Verwendung des -m-Flags für den direkten Start der App gehören zum Prozess.

  • Xcode: Verwenden Sie Xcode, um Apps zu installieren, indem Sie zu Window/Devices and Simulators navigieren und die App zu Installed Apps hinzufügen.

Installation von iPad-Anwendungen auf Nicht-iPad-Geräten ermöglichen

Um iPad-spezifische Anwendungen auf iPhone- oder iPod touch-Geräten zu installieren, muss der Wert UIDeviceFamily in der Info.plist-Datei auf 1 geändert werden. Diese Änderung erfordert jedoch das erneute Signieren der IPA-Datei aufgrund von Signaturvalidierungsprüfungen.

Hinweis: Diese Methode kann fehlschlagen, wenn die Anwendung Funktionen erfordert, die exklusiv für neuere iPad-Modelle reserviert sind, während ein älteres iPhone oder iPod touch verwendet wird.

Referenzen

Lernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen: