iOS Pentesting ohne Jailbreak

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

Hauptidee

Anwendungen, die mit der Berechtigung get_task_allow signiert sind, erlauben Drittanbieteranwendungen, eine Funktion namens task_for_pid() mit der Prozess-ID der ursprünglichen Anwendung als Argument auszuführen, um den Task-Port darüber zu erhalten (in der Lage zu sein, ihn zu steuern und auf seinen Speicher zuzugreifen).

Es ist jedoch nicht so einfach, wie nur die IPA zu ziehen, sie mit der Berechtigung neu zu signieren und sie zurück auf dein Gerät zu flashen. Dies liegt an dem FairPlay-Schutz. Wenn sich die Signatur der App ändert, wird der DRM (Digital Rights Management) Schlüssel ungültig und die App funktioniert nicht.

Mit einem alten jailbroken Gerät ist es möglich, die IPA zu installieren, sie mit deinem bevorzugten Tool zu entschlüsseln (wie Iridium oder frida-ios-dump) und sie wieder vom Gerät zu ziehen. Obwohl, wenn möglich, wird empfohlen, einfach den Client für die entschlüsselte IPA zu fragen.

Entschlüsselte IPA erhalten

Von Apple erhalten

  1. Installiere die App, die du pentesten möchtest, auf dem iPhone.
  2. Installiere und starte Apple Configurator auf deinem macos.
  3. Öffne Terminal auf deinem Mac und wechsle zu /Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps. Die IPA wird später in diesem Ordner erscheinen.
  4. Du solltest dein iOS-Gerät sehen. Doppelklicke darauf und klicke dann auf Hinzufügen + → Apps in der oberen Menüleiste.
  5. Nachdem du auf Hinzufügen geklickt hast, wird Configurator die IPA von Apple herunterladen und versuchen, sie auf dein Gerät zu pushen. Wenn du meiner vorherigen Empfehlung gefolgt bist und die IPA bereits installiert hast, wird eine Aufforderung erscheinen, die App neu zu installieren.
  6. Die IPA sollte heruntergeladen werden in /Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps, von wo du sie abrufen kannst.

Siehe https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed für detailliertere Informationen zu diesem Prozess.

Die App entschlüsseln

Um die IPA zu entschlüsseln, werden wir sie installieren. Wenn du jedoch ein altes jailbroken iPhone hast, wird möglicherweise die Version nicht von der Anwendung unterstützt, da normalerweise Apps nur die neuesten Versionen unterstützen.

Um sie zu installieren, entpacke einfach die IPA:

bash
unzip redacted.ipa -d unzipped

Überprüfen Sie die Info.plist auf die minimal unterstützte Version und wenn Ihr Gerät älter ist, ändern Sie den Wert, damit es unterstützt wird.

Zippen Sie die IPA zurück:

bash
cd unzipped
zip -r ../no-min-version.ipa *

Dann installieren Sie die IPA beispielsweise mit:

bash
ideviceinstaller -i no-min-version.ipa -w

Beachten Sie, dass Sie möglicherweise den AppSync Unified tweak von Cydia benötigen, um invalid signature-Fehler zu verhindern.

Sobald installiert, können Sie den Iridium tweak von Cydia verwenden, um die entschlüsselte IPA zu erhalten.

Berechtigungen patchen & neu signieren

Um die Anwendung mit der Berechtigung get-task-allow neu zu signieren, stehen mehrere Tools wie app-signer, codesign und iResign zur Verfügung. app-signer hat eine sehr benutzerfreundliche Oberfläche, die es ermöglicht, eine IPA-Datei sehr einfach neu zu signieren, indem die zu signierende IPA, get-taks-allow und das zu verwendende Zertifikat sowie das Bereitstellungsprofil angegeben werden.

Bezüglich des Zertifikats und der Signierungsprofile bietet Apple kostenlose Entwickler-Signierungsprofile für alle Konten über Xcode an. Erstellen Sie einfach eine App und konfigurieren Sie eine. Konfigurieren Sie dann das iPhone, um den Entwickler-Apps zu vertrauen, indem Sie zu EinstellungenDatenschutz & Sicherheit navigieren und auf Entwicklermodus klicken.

Mit der neu signierten IPA ist es Zeit, sie auf dem Gerät zu installieren, um sie zu pentesten:

bash
ideviceinstaller -i resigned.ipa -w

Entwicklermodus aktivieren (iOS 16+)

Seit iOS 16 hat Apple den Entwicklermodus eingeführt: Jede Binary, die get_task_allow enthält oder mit einem Entwicklungszertifikat signiert ist, wird sich weigern zu starten, bis der Entwicklermodus auf dem Gerät aktiviert ist. Sie können auch Frida/LLDB nicht anhängen, es sei denn, dieses Flag ist aktiviert.

  1. Installieren oder pushen Sie irgendeine entwickler-signierte IPA auf das Telefon.
  2. Navigieren Sie zu Einstellungen → Datenschutz & Sicherheit → Entwicklermodus und aktivieren Sie ihn.
  3. Das Gerät wird neu gestartet; nach Eingabe des Passworts werden Sie aufgefordert, den Entwicklermodus einzuschalten.

Der Entwicklermodus bleibt aktiv, bis Sie ihn deaktivieren oder das Telefon zurücksetzen, sodass dieser Schritt nur einmal pro Gerät durchgeführt werden muss. Apple-Dokumentation erklärt die Sicherheitsimplikationen.

Moderne Sideloading-Optionen

Es gibt jetzt mehrere ausgereifte Möglichkeiten, IPAs zu sideloaden und sie ohne Jailbreak aktuell zu halten:

ToolAnforderungenStärkenEinschränkungen
AltStore 2 / SideStoremacOS/Windows/Linux-Begleitgerät, das die IPA alle 7 Tage mit einem kostenlosen Entwicklerprofil neu signiertAutomatisches Nachladen über Wi-Fi, funktioniert bis iOS 17Computer im selben Netzwerk erforderlich, 3-App-Limit von Apple auferlegt
TrollStore 1/2Gerät mit iOS 14 – 15.4.1, das anfällig für den CoreTrust-Bug istPermanente Signierung (kein 7-Tage-Limit); kein Computer erforderlich, sobald installiertNicht unterstützt auf iOS 15.5+ (Bug gepatcht)

Für routinemäßige Pentests auf aktuellen iOS-Versionen sind Alt/Side-Store in der Regel die praktischste Wahl.

Hooking / dynamische Instrumentierung

Sie können Ihre App genau wie auf einem jailbroken Gerät hooken, sobald sie mit get_task_allow und dem Entwicklermodus aktiviert ist:

bash
# Spawn & attach with objection
objection -g "com.example.target" explore

# Or plain Frida
frida -U -f com.example.target -l my_script.js --no-pause

Neuere Frida-Versionen (>=16) behandeln automatisch die Zeigerautorisierung und andere iOS 17-Minderungen, sodass die meisten vorhandenen Skripte sofort funktionieren.

Automatisierte dynamische Analyse mit MobSF (kein Jailbreak)

MobSF kann eine von einem Entwickler signierte IPA auf einem echten Gerät mit der gleichen Technik (get_task_allow) instrumentieren und bietet eine Web-Benutzeroberfläche mit Dateisystembrowser, Datenverkehrserfassung und Frida-Konsole【】. Der schnellste Weg ist, MobSF in Docker auszuführen und dann Ihr iPhone über USB anzuschließen:

bash
docker pull opensecurity/mobile-security-framework-mobsf:latest
docker run -p 8000:8000 --privileged \
-v /var/run/usbmuxd:/var/run/usbmuxd \
opensecurity/mobile-security-framework-mobsf:latest
# Browse to http://127.0.0.1:8000 and upload your resigned IPA

MobSF wird automatisch die Binärdatei bereitstellen, einen Frida-Server im App-Sandbox aktivieren und einen interaktiven Bericht generieren.

iOS 17 & Lockdown-Modus Hinweise

  • Lockdown-Modus (Einstellungen → Datenschutz & Sicherheit) blockiert den dynamischen Linker daran, nicht signierte oder extern signierte dynamische Bibliotheken zu laden. Wenn Sie Geräte testen, die möglicherweise diesen Modus aktiviert haben, stellen Sie sicher, dass er deaktiviert ist, da sonst Ihre Frida/objection-Sitzungen sofort beendet werden.
  • Pointer Authentication (PAC) wird systemweit auf A12+ Geräten durchgesetzt. Frida ≥16 behandelt PAC-Stripping transparent – halten Sie einfach sowohl frida-server als auch die Python/CLI-Toolchain auf dem neuesten Stand, wenn eine neue Hauptversion von iOS veröffentlicht wird.

Referenzen

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