iOS Basic Testing Operations
Tip
Lernen & üben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Summary of iOS Device Identification and Access
Identifying the UDID of an iOS Device
Zur eindeutigen Identifikation eines iOS-Geräts wird eine 40-stellige Sequenz verwendet, die als UDID bezeichnet wird. Unter macOS Catalina oder neuer ist diese in der Finder app zu finden, da iTunes nicht mehr vorhanden ist. Das Gerät zeigt nach dem Anschließen per USB und Auswahl im Finder seine UDID zusammen mit weiteren Informationen an, wenn man die Details unter seinem Namen aufruft.
Für macOS-Versionen vor Catalina erleichtert iTunes das Auffinden der UDID. Ausführliche Anweisungen finden Sie hier.
Kommandozeilen-Tools bieten alternative Methoden zum Abrufen der UDID:
- Verwendung des I/O Registry Explorer tool
ioreg:
$ ioreg -p IOUSB -l | grep "USB Serial"
- Verwendung von
ideviceinstallerfü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äte-Shell
SSH access wird durch die Installation des OpenSSH package nach dem jailbreak aktiviert, und ermöglicht Verbindungen über ssh root@<device_ip_address>. Es ist wichtig, die Standardpasswörter (alpine) der Benutzer root und mobile zu ändern, um das Gerät zu sichern.
SSH over USB wird notwendig, wenn kein Wi‑Fi verfügbar ist, und nutzt iproxy, um Geräte-Ports für SSH-Verbindungen zu mappen. Diese Einrichtung ermöglicht SSH access über USB durch Ausführen:
$ iproxy 2222 22
$ ssh -p 2222 root@localhost
On-device shell applications, like NewTerm 2, erleichtern die direkte Interaktion mit dem Gerät und sind besonders nützlich zur Fehlerbehebung. Reverse SSH shells können auch eingerichtet werden, um Remote-Zugriff vom Host-Computer aus zu ermöglichen.
Zurücksetzen vergessener Passwörter
Um ein vergessenes Passwort auf den Standard (alpine) zurückzusetzen, muss die Datei /private/etc/master.passwd bearbeitet werden. Dabei wird der bestehende Hash durch den Hash für alpine neben den Einträgen der Benutzer root und mobile ersetzt.
Techniken zur Datenübertragung
Übertragen von App-Daten-Dateien
Archiving and Retrieval via SSH and SCP: Es ist einfach, das Data-Verzeichnis der Anwendung mit tar zu archivieren und anschließend mit scp zu übertragen. Der folgende Befehl archiviert das Data-Verzeichnis in eine .tgz-Datei, die dann vom Gerät gezogen 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 .
Graphische Benutzeroberflächen-Tools
Using iFunbox and iExplorer: Diese GUI-Tools sind nützlich, um Dateien auf iOS-Geräten zu verwalten. Allerdings hat Apple ab iOS 8.4 den Zugriff dieser Tools auf die application sandbox eingeschränkt, es sei denn, das Gerät ist jailbroken.
Verwendung von Objection für die Dateiverwaltung
Interaktive Shell mit Objection: Das Starten von objection verschafft Zugriff auf das Bundle directory einer App. Von hier aus können Sie in das Documents directory der App navigieren und Dateien verwalten, einschließlich Herunter- und Hochladen von und auf das iOS-Gerät.
objection --gadget com.apple.mobilesafari explorer
cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
file download <filename>
Beschaffung und Extraktion von Apps
Beschaffung der IPA-Datei
Over-The-Air (OTA) Distribution Link: Für Tests per OTA verteilte Apps können mit dem ITMS services asset downloader tool heruntergeladen werden, das über npm installiert wird und zum lokalen Speichern der IPA-Datei verwendet wird.
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
- From an IPA: Entpacke die IPA, um auf das decrypted app binary zuzugreifen.
- From a Jailbroken Device: Installiere die App und extrahiere das decrypted binary aus dem memory.
Entschlüsselungsprozess
Übersicht der manuellen Entschlüsselung: iOS-App-Binärdateien werden von Apple mit FairPlay verschlüsselt. Zum Reverse-Engineering muss das decrypted binary aus dem memory gedumpt werden. Der Entschlüsselungsprozess umfasst das Überprüfen des PIE flag, das Anpassen von memory flags, das Identifizieren des verschlüsselten Abschnitts und anschließend das Dumpen und Ersetzen dieses Abschnitts durch seine decrypted Form.
Überprüfen und Ändern des PIE Flag:
otool -Vh Original_App
python change_macho_flags.py --no-pie Original_App
otool -Vh Hello_World
Ermittlung des verschlüsselten Abschnitts und Auslesen des Speichers:
Bestimme die Start- und Endadressen des verschlüsselten Abschnitts mit otool und lese den Speicher vom jailbroken device mit gdb aus.
otool -l Original_App | grep -A 4 LC_ENCRYPTION_INFO
dump memory dump.bin 0x8000 0x10a4000
Überschreiben der Encrypted Section:
Ersetze die Encrypted Section im originalen app binary durch den decrypted dump.
dd bs=1 seek=<starting_address> conv=notrunc if=dump.bin of=Original_App
Entschlüsselung abschließen: Ändere die Metadaten der Binary, um das Fehlen von Verschlüsselung anzuzeigen, z. B. mit MachOView, und setze cryptid auf 0.
Entschlüsselung (automatisch)
frida-ios-dump
Das frida-ios-dump Tool wird verwendet, um Apps von iOS-Geräten automatisch zu entschlüsseln und zu extrahieren. Zuerst muss dump.py so konfiguriert werden, dass es eine Verbindung zum iOS-Gerät herstellt — entweder über localhost auf Port 2222 mittels iproxy oder direkt über die IP-Adresse und den Port des Geräts.
Die auf dem Gerät installierten Apps können mit folgendem Befehl aufgelistet werden:
$ python dump.py -l
Um eine bestimmte App (z. B. Telegram) zu dumpen, wird der folgende Befehl verwendet:
$ python3 dump.py -u "root" -p "<PASSWORD>" ph.telegra.Telegraph
Dieser Befehl startet den App-Dump und erzeugt eine Telegram.ipa-Datei im aktuellen Verzeichnis. Dieser Vorgang ist für jailbroken devices geeignet, da unsigned oder fake-signed apps mit Tools wie ios-deploy neu installiert werden können.
frida-ipa-extract
Frida-basierter IPA-Extractor für jailbroken devices; verwendet USB Frida-Sitzungen und optional SSH/SFTP für schnellere pulls.
- Anforderungen: Python 3.9+,
frida,paramiko, jailbroken device mit frida-server (OpenSSH für SSH-Modus). - Einrichtung:
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
- Verwendung:
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
- Flags:
-f <bundle>startet/ hängt an (oder--pidfür PID);-olegt den Ausgabename fest.-Uverwendet USB;-H/-P/-u/-pöffnet einen SSH-Tunnel zufrida-server27042 und zieht via SFTP (kann mit-Ukombiniert werden).--sandboxerstellt einen Dump der Sandbox;--no-resumehält die App angehalten, um Abstürze und Neustarts durch einen Systemprozess zu vermeiden, falls die Sitzung abbricht. - Fehlerbehebung:
Frida attach timed out→ use-for--no-resume;script has been destroyed→--no-resumeor SSH transfer;No running apps found→ starten oder die App spawnen.
flexdecrypt
The flexdecrypt tool, along with its wrapper flexdump, allows for the extraction of IPA files from installed applications. Installation commands for flexdecrypt on the device include downloading and installing the .deb package. flexdump can be used to list and dump apps, as shown in the commands below:
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 Frida-basiertes Tool, erfordert ein jailbroken device für die App-Entschlüsselung:
bagbak --raw Chrome
r2flutch
r2flutch, das sowohl radare als auch frida nutzt, dient zur App-Entschlüsselung und zum Dumping. Mehr Informationen finden sich auf der GitHub page.
Apps installieren
Sideloading bezeichnet die Installation von Anwendungen außerhalb des offiziellen App Store. Dieser Prozess wird vom installd daemon gesteuert und erfordert, dass Apps mit einem von Apple ausgestellten Zertifikat signiert sind. Jailbroken devices können dies mithilfe von AppSync umgehen, wodurch die Installation von gefälscht signierten IPA-Paketen möglich wird.
Sideloading Tools
-
Cydia Impactor: Ein Tool zum Signieren und Installieren von IPA-Dateien auf iOS und APK-Dateien auf Android. Anleitungen und Troubleshooting sind auf yalujailbreak.net zu finden.
-
libimobiledevice: Eine Bibliothek für Linux und macOS zur Kommunikation mit iOS-Geräten. Installationsbefehle und Anwendungsbeispiele für ideviceinstaller werden bereitgestellt, um Apps über USB zu installieren.
-
ipainstaller: Dieses Kommandozeilen-Tool erlaubt die direkte Installation von Apps auf iOS-Geräten.
-
ios-deploy: Für macOS-Nutzer installiert ios-deploy iOS-Apps von der Kommandozeile. Das Entpacken der IPA und die Verwendung des
-mFlags für den direkten App-Start gehören zum Prozess. -
Xcode: Verwende Xcode, um Apps zu installieren, indem du zu Window/Devices and Simulators gehst und die App zu Installed Apps hinzufügst.
Allow Application Installation on Non-iPad Devices
Um iPad-spezifische Anwendungen auf iPhone- oder iPod touch-Geräten zu installieren, muss der UIDeviceFamily-Wert in der Info.plist-Datei auf 1 geändert werden. Diese Änderung erfordert jedoch ein erneutes Signieren der IPA-Datei aufgrund der Prüfungen zur Signaturvalidierung.
Note: Diese Methode kann fehlschlagen, wenn die Anwendung Fähigkeiten verlangt, die exklusiv für neuere iPad-Modelle sind, während ein älteres iPhone oder iPod touch verwendet wird.
Referenzen
- 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
Lernen & üben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.


