iOS Custom URI Handlers / Deeplinks / Custom Schemes
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Οι προσαρμοσμένες διευθύνσεις URL επιτρέπουν στις εφαρμογές να επικοινωνούν χρησιμοποιώντας ένα προσαρμοσμένο πρωτόκολλο, όπως αναφέρεται στην Apple Developer Documentation. Αυτές οι διευθύνσεις πρέπει να δηλώνονται από την εφαρμογή, η οποία στη συνέχεια χειρίζεται τις εισερχόμενες διευθύνσεις URL σύμφωνα με αυτές τις διευθύνσεις. Είναι κρίσιμο να επικυρώνετε όλους τους παραμέτρους URL και να απορρίπτετε οποιεσδήποτε κακώς διαμορφωμένες διευθύνσεις URL για να αποτρέψετε επιθέσεις μέσω αυτού του διαύλου.
Δίνεται ένα παράδειγμα όπου η URI myapp://hostname?data=123876123
καλεί μια συγκεκριμένη ενέργεια εφαρμογής. Μια αναφερόμενη ευπάθεια ήταν στην εφαρμογή Skype Mobile, η οποία επέτρεπε μη επιτρεπόμενες ενέργειες κλήσεων μέσω του πρωτοκόλλου skype://
. Οι καταχωρημένες διευθύνσεις μπορούν να βρεθούν στο Info.plist
της εφαρμογής κάτω από CFBundleURLTypes
. Οι κακόβουλες εφαρμογές μπορούν να εκμεταλλευτούν αυτό επανακαταχωρώντας URIs για να παγιδεύσουν ευαίσθητες πληροφορίες.
Από το iOS 9.0, για να ελέγξετε αν μια εφαρμογή είναι διαθέσιμη, το canOpenURL:
απαιτεί να δηλώνονται οι διευθύνσεις URL στο Info.plist
κάτω από LSApplicationQueriesSchemes
. Αυτό περιορίζει τις διευθύνσεις που μπορεί να ερωτήσει μια εφαρμογή σε 50, ενισχύοντας την ιδιωτικότητα αποτρέποντας την καταμέτρηση εφαρμογών.
Οι προγραμματιστές θα πρέπει να εξετάσουν συγκεκριμένες μεθόδους στον πηγαίο κώδικα για να κατανοήσουν την κατασκευή και την επικύρωση των διαδρομών URL, όπως application:didFinishLaunchingWithOptions:
και application:openURL:options:
. Για παράδειγμα, το Telegram χρησιμοποιεί διάφορες μεθόδους για το άνοιγμα των URL:
Μέθοδοι όπως το openURL:options:completionHandler:
είναι κρίσιμες για το άνοιγμα URL για αλληλεπίδραση με άλλες εφαρμογές. Η αναγνώριση της χρήσης τέτοιων μεθόδων στον πηγαίο κώδικα της εφαρμογής είναι το κλειδί για την κατανόηση των εξωτερικών επικοινωνιών.
Οι παρωχημένες μέθοδοι που χειρίζονται το άνοιγμα URL, όπως το application:handleOpenURL:
και το openURL:
, θα πρέπει να αναγνωρίζονται και να εξετάζονται για τις επιπτώσεις στην ασφάλεια.
Το fuzzing URL schemes μπορεί να εντοπίσει σφάλματα διαφθοράς μνήμης. Εργαλεία όπως το Frida μπορούν να αυτοματοποιήσουν αυτή τη διαδικασία ανοίγοντας URL με ποικιλία payloads για να παρακολουθούν για κρασαρίσματα, όπως φαίνεται από τη χειραγώγηση των URL στην εφαρμογή iGoat-Swift:
Σύμφωνα με αυτή την ανάρτηση, κακόβουλες εφαρμογές θα μπορούσαν να καταχωρήσουν τα προσαρμοσμένα schemes άλλων εφαρμογών, στη συνέχεια η κακόβουλη εφαρμογή μπορεί να ανοίξει έναν περιηγητή που έχει όλα τα cookies της εφαρμογής Safari με ASWebAuthenticationSession.
Με τον περιηγητή, η κακόβουλη εφαρμογή μπορεί να φορτώσει μια ιστοσελίδα ελεγχόμενη από τον επιτιθέμενο και το TCC θα ζητήσει από τον κινητό χρήστη άδειες για να ανοίξει αυτή την εφαρμογή. Στη συνέχεια, η κακόβουλη ιστοσελίδα θα μπορούσε να ανακατευθύνει σε μια σελίδα θύματος, για παράδειγμα σε μια ροή OAuth με την παράμετρο prompt=none
. Αν ο χρήστης ήταν ήδη συνδεδεμένος στη ροή OAuth, η ροή OAuth θα στείλει το μυστικό πίσω στην εφαρμογή θύμα χρησιμοποιώντας το προσαρμοσμένο scheme της εφαρμογής θύματος.
Ωστόσο, επειδή η κακόβουλη εφαρμογή το έχει επίσης καταχωρήσει και επειδή ο χρησιμοποιούμενος περιηγητής είναι μέσα στην κακόβουλη εφαρμογή, το προσαρμοσμένο scheme θα διαχειριστεί σε αυτή την περίπτωση από την κακόβουλη εφαρμογή, η οποία θα είναι σε θέση να κλέψει το OAuth token.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)