iOS App Extensions
Reading time: 3 minutes
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)
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.
App-Erweiterungen verbessern die Funktionalität von Apps, indem sie es ihnen ermöglichen, mit anderen Apps oder dem System zu interagieren und benutzerdefinierte Funktionen oder Inhalte bereitzustellen. Diese Erweiterungen umfassen:
- Custom Keyboard: Bietet eine einzigartige Tastatur für alle Apps und ersetzt die standardmäßige iOS-Tastatur.
- Share: Ermöglicht das Teilen in sozialen Netzwerken oder direkt mit anderen.
- Today (Widgets): Liefert Inhalte oder führt Aufgaben schnell aus der Heute-Ansicht des Benachrichtigungszentrums aus.
Wenn ein Benutzer mit diesen Erweiterungen interagiert, wie z.B. beim Teilen von Text aus einer Host-App, verarbeitet die Erweiterung diese Eingabe in ihrem Kontext und nutzt die geteilten Informationen, um ihre Aufgabe auszuführen, wie in der Dokumentation von Apple beschrieben.
Sicherheitsüberlegungen
Wichtige Sicherheitsaspekte umfassen:
- Erweiterungen und ihre enthaltenen Apps kommunizieren über Interprozesskommunikation, nicht direkt.
- Das Today-Widget ist einzigartig, da es seine App über eine spezifische Methode öffnen kann.
- Der Zugriff auf gemeinsame Daten ist innerhalb eines privaten Containers erlaubt, aber der direkte Zugriff ist eingeschränkt.
- Bestimmte APIs, einschließlich HealthKit, sind für App-Erweiterungen tabu, die auch keine lang laufenden Aufgaben starten oder auf die Kamera oder das Mikrofon zugreifen können, außer bei iMessage-Erweiterungen.
Statische Analyse
Identifizierung von App-Erweiterungen
Um App-Erweiterungen im Quellcode zu finden, suchen Sie nach NSExtensionPointIdentifier
in Xcode oder überprüfen Sie das App-Bundle auf .appex
-Dateien, die Erweiterungen anzeigen. Ohne Quellcode verwenden Sie grep oder SSH, um diese Identifikatoren im App-Bundle zu finden.
Unterstützte Datentypen
Überprüfen Sie die Info.plist
-Datei einer Erweiterung auf NSExtensionActivationRule
, um unterstützte Datentypen zu identifizieren. Diese Einrichtung stellt sicher, dass nur kompatible Datentypen die Erweiterung in Host-Apps auslösen.
Datenfreigabe
Die Datenfreigabe zwischen einer App und ihrer Erweiterung erfordert einen gemeinsamen Container, der über "App-Gruppen" eingerichtet und über NSUserDefaults
zugegriffen wird. Dieser gemeinsame Raum ist notwendig für Hintergrundübertragungen, die von Erweiterungen initiiert werden.
Einschränkung von Erweiterungen
Apps können bestimmte Erweiterungstypen, insbesondere benutzerdefinierte Tastaturen, einschränken, um sicherzustellen, dass die Verarbeitung sensibler Daten mit den Sicherheitsprotokollen übereinstimmt.
Dynamische Analyse
Die dynamische Analyse umfasst:
- Überprüfung gemeinsamer Elemente: Hook in
NSExtensionContext - inputItems
, um geteilte Datentypen und Ursprünge zu sehen. - Identifizierung von Erweiterungen: Entdecken Sie, welche Erweiterungen Ihre Daten verarbeiten, indem Sie interne Mechanismen wie
NSXPCConnection
beobachten.
Tools wie frida-trace
können helfen, die zugrunde liegenden Prozesse zu verstehen, insbesondere für diejenigen, die an den technischen Details der Interprozesskommunikation interessiert sind.
References
- https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/
- https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0072/
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)
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.