macOS PID Reuse
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 του macOS ελέγχει τη διαδικασία που καλείται με βάση το PID και όχι με το audit token, είναι ευάλωτη σε επίθεση επαναχρησιμοποίησης PID. Αυτή η επίθεση βασίζεται σε μια συνθήκη αγώνα όπου μια εκμετάλλευση θα στείλει μηνύματα στην υπηρεσία XPC καταχρώντας τη λειτουργικότητα και μόλις μετά από αυτό, εκτελώντας posix_spawn(NULL, target_binary, NULL, &attr, target_argv, environ)
με το επιτρεπόμενο δυαδικό αρχείο.
Αυτή η συνάρτηση θα κάνει το επιτρεπόμενο δυαδικό αρχείο να κατέχει το PID αλλά το κακόβουλο μήνυμα XPC θα έχει σταλεί ακριβώς πριν. Έτσι, αν η υπηρεσία XPC χρησιμοποιεί το PID για να πιστοποιήσει τον αποστολέα και το ελέγξει ΜΕΤΑ την εκτέλεση του posix_spawn
, θα νομίζει ότι προέρχεται από μια εξουσιοδοτημένη διαδικασία.
Αν βρείτε τη συνάρτηση shouldAcceptNewConnection
ή μια συνάρτηση που καλείται από αυτή καλώντας processIdentifier
και όχι auditToken
. Είναι πολύ πιθανό να σημαίνει ότι επαληθεύει το PID της διαδικασίας και όχι το audit token.
Όπως για παράδειγμα σε αυτή την εικόνα (παρμένη από την αναφορά):
Ελέγξτε αυτό το παράδειγμα εκμετάλλευσης (και πάλι, παρμένο από την αναφορά) για να δείτε τα 2 μέρη της εκμετάλλευσης:
Ένα που δημιουργεί αρκετούς κλώνους
Κάθε κλώνος θα στείλει το payload στην υπηρεσία XPC ενώ εκτελεί posix_spawn
αμέσως μετά την αποστολή του μηνύματος.
Για να λειτουργήσει η εκμετάλλευση είναι σημαντικό να export`` ``
OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES
ή να το βάλετε μέσα στην εκμετάλλευση:
Πρώτη επιλογή χρησιμοποιώντας NSTasks
και επιχείρημα για να εκκινήσει τα παιδιά για να εκμεταλλευτεί το RC
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)