macOS XPC Connecting Process Check
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)
Όταν μια σύνδεση δημιουργείται σε μια υπηρεσία XPC, ο διακομιστής θα ελέγξει αν η σύνδεση επιτρέπεται. Αυτοί είναι οι έλεγχοι που θα εκτελέσει συνήθως:
Έλεγχος αν η διαδικασία που συνδέεται είναι υπογεγραμμένη με πιστοποιητικό υπογεγραμμένο από την Apple (δίδεται μόνο από την Apple).
Αν αυτό δεν επαληθευτεί, ένας επιτιθέμενος θα μπορούσε να δημιουργήσει ένα ψεύτικο πιστοποιητικό για να ταιριάζει με οποιονδήποτε άλλο έλεγχο.
Έλεγχος αν η διαδικασία που συνδέεται είναι υπογεγραμμένη με το πιστοποιητικό της οργάνωσης (έλεγχος ταυτότητας ομάδας).
Αν αυτό δεν επαληθευτεί, οποιοδήποτε πιστοποιητικό προγραμματιστή από την Apple μπορεί να χρησιμοποιηθεί για υπογραφή και σύνδεση με την υπηρεσία.
Έλεγχος αν η διαδικασία που συνδέεται περιέχει ένα σωστό bundle ID.
Αν αυτό δεν επαληθευτεί, οποιοδήποτε εργαλείο υπογεγραμμένο από την ίδια οργάνωση θα μπορούσε να χρησιμοποιηθεί για αλληλεπίδραση με την υπηρεσία XPC.
(4 ή 5) Έλεγχος αν η διαδικασία που συνδέεται έχει έναν σωστό αριθμό έκδοσης λογισμικού.
Αν αυτό δεν επαληθευτεί, ένας παλιός, ανασφαλής πελάτης, ευάλωτος σε διαδικασία έγχυσης, θα μπορούσε να χρησιμοποιηθεί για σύνδεση με την υπηρεσία XPC ακόμη και με τους άλλους ελέγχους σε εφαρμογή.
(4 ή 5) Έλεγχος αν η διαδικασία που συνδέεται έχει σκληρυμένο χρόνο εκτέλεσης χωρίς επικίνδυνες εξουσιοδοτήσεις (όπως αυτές που επιτρέπουν τη φόρτωση αυθαίρετων βιβλιοθηκών ή τη χρήση μεταβλητών περιβάλλοντος DYLD).
Αν αυτό δεν επαληθευτεί, ο πελάτης μπορεί να είναι ευάλωτος σε έγχυση κώδικα.
Έλεγχος αν η διαδικασία που συνδέεται έχει μια εξουσιοδότηση που της επιτρέπει να συνδεθεί με την υπηρεσία. Αυτό ισχύει για τα δυαδικά αρχεία της Apple.
Η επικύρωση πρέπει να είναι βασισμένη στο audit token του πελάτη που συνδέεται αντί για το ID της διαδικασίας του (PID) καθώς το πρώτο αποτρέπει τις επιθέσεις επαναχρησιμοποίησης PID.
Οι προγραμματιστές σπάνια χρησιμοποιούν την κλήση API audit token καθώς είναι ιδιωτική, οπότε η Apple θα μπορούσε να αλλάξει ανά πάσα στιγμή. Επιπλέον, η χρήση ιδιωτικών API δεν επιτρέπεται σε εφαρμογές του Mac App Store.
Αν η μέθοδος processIdentifier
χρησιμοποιηθεί, μπορεί να είναι ευάλωτη.
xpc_dictionary_get_audit_token
θα πρέπει να χρησιμοποιείται αντί για xpc_connection_get_audit_token
, καθώς η τελευταία θα μπορούσε επίσης να είναι ευάλωτη σε ορισμένες καταστάσεις.
Για περισσότερες πληροφορίες σχετικά με την επίθεση επαναχρησιμοποίησης PID ελέγξτε:
macOS PID ReuseΓια περισσότερες πληροφορίες σχετικά με την επίθεση xpc_connection_get_audit_token
ελέγξτε:
Το Trustcache είναι μια αμυντική μέθοδος που εισήχθη σε μηχανές Apple Silicon που αποθηκεύει μια βάση δεδομένων CDHSAH των δυαδικών αρχείων της Apple, ώστε μόνο οι επιτρεπόμενοι μη τροποποιημένοι δυαδικοί κωδικοί να μπορούν να εκτελούνται. Αυτό αποτρέπει την εκτέλεση υποβαθμισμένων εκδόσεων.
Ο διακομιστής θα υλοποιήσει αυτή την επικύρωση σε μια συνάρτηση που ονομάζεται shouldAcceptNewConnection
.
Το αντικείμενο NSXPCConnection έχει μια ιδιωτική ιδιότητα auditToken
(αυτή που θα έπρεπε να χρησιμοποιείται αλλά μπορεί να αλλάξει) και μια δημόσια ιδιότητα processIdentifier
(αυτή που δεν θα έπρεπε να χρησιμοποιείται).
Η διαδικασία σύνδεσης θα μπορούσε να επαληθευτεί με κάτι σαν:
Αν ένας προγραμματιστής δεν θέλει να ελέγξει την έκδοση του πελάτη, θα μπορούσε τουλάχιστον να ελέγξει ότι ο πελάτης δεν είναι ευάλωτος σε διαδικαστική ένεση:
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)