Was macht Sicherheitsanalyse von iOS-Apps mit Objection?
Wann verwenden
Verwenden Sie diesen Skill bei:
- Laufzeit-Sicherheitsbewertungen von iOS-Anwendungen während autorisierter Penetrationstests
- Prüfung des iOS Keychain, Dateisystems und Speichers auf sensible Datenlecks
- Umgehen Client-seitiger Sicherheitskontrollen (SSL-Pinning, Jailbreak-Erkennung) während Sicherheitstests
- Bewertung des iOS-App-Verhaltens zur Laufzeit ohne Zugriff auf den Quellcode
Verwenden Sie diesen Skill nicht auf Produktionsgeräten ohne ausdrückliche Genehmigung – Objection ändert das Laufzeitverhalten der App und kann Sicherheitsüberwachungen auslösen.
Voraussetzungen
- Python 3.10+ mit pip
- Objection installiert:
pip install objection - Frida installiert:
pip install frida-tools - Ziel-iOS-Gerät (jailbroken mit Frida-Server oder nicht-jailbroken mit neu verpacktem IPA)
- Für nicht-jailbroken:
objection patchipa, um Frida Gadget in das IPA zu injizieren - macOS empfohlen für iOS-Tests (Xcode, ideviceinstaller)
- USB-Verbindung zum Zielgerät oder Netzwerk-Frida-Server
Arbeitsablauf
Schritt 1: Testumgebung vorbereiten
Für jailbroken Geräte:
# Frida-Server auf dem Gerät über Cydia/Sileo installieren
# SSH zum Gerät und Frida-Server starten
ssh root@<device_ip> "/usr/sbin/frida-server -D"
# Frida-Konnektivität prüfen
frida-ps -U # Prozesse auf USB-verbundenem Gerät auflisten
Für nicht-jailbroken Geräte (autorisierter Test):
# IPA mit Frida Gadget patchen
objection patchipa --source target.ipa --codesign-signature "Apple Development: [email protected]"
# Gepathtes IPA installieren
ideviceinstaller -i target-patched.ipa
Schritt 2: Objection an die Ziel-App anhängen
# An laufende App per Bundle-ID anhängen
objection --gadget "com.target.app" explore
# Oder die App frisch starten
objection --gadget "com.target.app" explore --startup-command "ios hooking list classes"
Nach dem Anhängen bietet Objection ein interaktives REPL zur Laufzeiterkundung.
Schritt 3: Datenspeichersicherheit bewerten (MASVS-STORAGE)
# iOS Keychain-Einträge dumpen, die für die App zugänglich sind
ios keychain dump
# Dateien im App-Sandbox auflisten
ios plist cat Info.plist
env # App-Umgebungspfade anzeigen
# NSUserDefaults auf sensible Daten prüfen
ios nsuserdefaults get
# SQLite-Datenbanken auflisten
sqlite connect app_data.db
sqlite execute query "SELECT * FROM credentials"
# Auf sensible Daten in der Zwischenablage prüfen
ios pasteboard monitor
Schritt 4: Netzwerksicherheit bewerten (MASVS-NETWORK)
# SSL/TLS-Zertifikat-Pinning deaktivieren
ios sslpinning disable
# Überprüfen, ob das Pinning umgangen wurde, indem der Datenverkehr im Burp Suite Proxy beobachtet wird
# Netzwerkbezogene Klassenmethodenaufrufe überwachen
ios hooking watch class NSURLSession
ios hooking watch class NSURLConnection
Schritt 5: Authentifizierung und Autorisierung prüfen (MASVS-AUTH)
# Alle Objective-C-Klassen auflisten
ios hooking list classes
# Nach authentifizierungsbezogenen Klassen suchen
ios hooking search classes Auth
ios hooking search classes Login
ios hooking search classes Token
# Authentifizierungsmethoden hooken, um Parameter zu beobachten
ios hooking watch method "+[AuthManager validateToken:]" --dump-args --dump-return
# Biometrische Authentifizierungsaufrufe überwachen
ios hooking watch class LAContext
Schritt 6: Binäre Schutzmaßnahmen bewerten (MASVS-RESILIENCE)
# Jailbreak-Erkennungsimplementierung prüfen
ios jailbreak disable
# Jailbreak-Erkennungsumgehung simulieren
ios jailbreak simulate
# Geladene Frameworks und Bibliotheken auflisten
memory list modules
# Speicher nach sensiblen Zeichenketten durchsuchen
memory search "password" --string
memory search "api_key" --string
memory search "Bearer" --string
# Bestimmte Speicherbereiche dumpen
memory dump all dump_output/
Schritt 7: Plattforminteraktion prüfen (MASVS-PLATFORM)
# Vom App registrierte URL-Schemata auflisten
ios info binary
ios bundles list_frameworks
# URL-Schemata-Handler hooken
ios hooking watch method "-[AppDelegate application:openURL:options:]" --dump-args
# Zwischenablagezugriff überwachen
ios pasteboard monitor
# Auf benutzerdefinierte Tastatureinschränkungen prüfen
ios hooking search classes UITextField
Schlüsselkonzepte
| Begriff | Definition |
|---|---|
| Objection | Runtime-Mobil-Explorationstoolkit, das auf Frida aufbaut und vorgefertigte Skripte für gängige Sicherheitstestaufgaben bietet |
| Frida Gadget | In den App-Prozess injizierte Shared Library, die Frida-Instrumentierung ohne Jailbreak ermöglicht |
| Keychain | Sicheres iOS-Anmeldeinformationsspeichersystem; Objection kann Einträge dumpen, die für die Ziel-App-Zugriffsgruppe zugänglich sind |
| SSL-Pinning-Umgehung | Laufzeitmodifikation der Zertifikatsüberprüfungslogik, um Proxy-Abfangen von HTTPS-Verkehr zu ermöglichen |
| Method Hooking | Abfangen von Objective-C/Swift-Methodenaufrufen zur Laufzeit, um Argumente, Rückgabewerte zu beobachten und das Verhalten zu ändern |
Werkzeuge und Systeme
- Objection: Hochrangiges Frida-gestütztes Mobil-Sicherheitsexplorationstoolkit mit vorgefertigten Befehlen
- Frida: Dynamisches Instrumentierungs-Framework, das JavaScript-Injection in native App-Prozesse ermöglicht
- Frida-tools: CLI-Dienstprogramme für Frida, einschließlich frida-ps, frida-trace und frida-discover
- ideviceinstaller: Plattformübergreifendes Tool zur Installation/Verwaltung von iOS-Apps über USB
- Burp Suite: HTTP-Proxy zum Abfangen von Datenverkehr nach Umgehung des SSL-Pinnings
Häufige Fallstricke
- App stürzt beim Anhängen ab: Einige Apps implementieren Frida-Erkennung. Verwenden Sie
--startup-command, um Anti-Frida-Prüfungen früh im App-Lebenszyklus zu hooken. - Keychain-Zugriffsbereich: Objection kann nur Keychain-Einträge innerhalb der Zugriffsgruppe der App dumpen. System-Keychain-Einträge erfordern separate Jailbreak-Tools.
- Swift-Namens-Mangling: Swift-Methodennamen werden zur Laufzeit gemangled. Verwenden Sie
ios hooking list classesmit grep, um demanglete Namen zu finden. - Nicht persistente Änderungen: Alle Objection-Modifikationen sind nur zur Laufzeit aktiv und werden beim Neustart der App zurückgesetzt. Dokumentieren Sie Ergebnisse sofort.