mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
119 lines
8.6 KiB
Markdown
119 lines
8.6 KiB
Markdown
# iOS Pentesting ohne Jailbreak
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|
||
|
||
## 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](https://apps.apple.com/au/app/apple-configurator/id1037126344?mt=12) 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](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 `Einstellungen` → `Datenschutz & 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](https://developer.apple.com/documentation/xcode/enabling-developer-mode-on-a-device) erklärt die Sicherheitsimplikationen.
|
||
|
||
### Moderne Sideloading-Optionen
|
||
|
||
Es gibt jetzt mehrere ausgereifte Möglichkeiten, IPAs zu sideloaden und sie ohne Jailbreak aktuell zu halten:
|
||
|
||
| Tool | Anforderungen | Stärken | Einschränkungen |
|
||
|------|--------------|-----------|-------------|
|
||
| **AltStore 2 / SideStore** | macOS/Windows/Linux-Begleitgerät, das die IPA alle 7 Tage mit einem kostenlosen Entwicklerprofil neu signiert | Automatisches Nachladen über Wi-Fi, funktioniert bis iOS 17 | Computer im selben Netzwerk erforderlich, 3-App-Limit von Apple auferlegt |
|
||
| **TrollStore 1/2** | Gerät mit iOS 14 – 15.4.1, das anfällig für den CoreTrust-Bug ist | *Permanente* Signierung (kein 7-Tage-Limit); kein Computer erforderlich, sobald installiert | Nicht 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](https://mobsf.github.io/Mobile-Security-Framework-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
|
||
|
||
- [https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed](https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed)
|
||
- Apple Entwicklerdokumentation – Aktivieren des Entwicklermodus auf einem Gerät: <https://developer.apple.com/documentation/xcode/enabling-developer-mode-on-a-device>
|
||
- Mobile Security Framework (MobSF): <https://mobsf.github.io/Mobile-Security-Framework-MobSF/>
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|