macOS Installers Abuse
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)
Ένα πακέτο εγκατάστασης macOS (γνωστό και ως αρχείο .pkg
) είναι μια μορφή αρχείου που χρησιμοποιείται από το macOS για να διανέμει λογισμικό. Αυτά τα αρχεία είναι σαν ένα κουτί που περιέχει τα πάντα που χρειάζεται ένα κομμάτι λογισμικού για να εγκατασταθεί και να λειτουργήσει σωστά.
Το αρχείο πακέτου είναι ένα αρχείο που περιέχει μια ιεραρχία αρχείων και καταλόγων που θα εγκατασταθούν στον στόχο υπολογιστή. Μπορεί επίσης να περιλαμβάνει σενάρια για την εκτέλεση εργασιών πριν και μετά την εγκατάσταση, όπως η ρύθμιση αρχείων διαμόρφωσης ή η καθαριότητα παλαιών εκδόσεων του λογισμικού.
Distribution (xml): Προσαρμογές (τίτλος, κείμενο καλωσορίσματος…) και έλεγχοι σεναρίων/εγκατάστασης
PackageInfo (xml): Πληροφορίες, απαιτήσεις εγκατάστασης, τοποθεσία εγκατάστασης, διαδρομές προς σενάρια προς εκτέλεση
Bill of materials (bom): Λίστα αρχείων προς εγκατάσταση, ενημέρωση ή αφαίρεση με δικαιώματα αρχείων
Payload (CPIO archive gzip compresses): Αρχεία προς εγκατάσταση στην install-location
από το PackageInfo
Scripts (CPIO archive gzip compressed): Σενάρια προ και μετά την εγκατάσταση και περισσότερους πόρους που εξάγονται σε έναν προσωρινό κατάλογο για εκτέλεση.
In order to visualize the contents of the installer without decompressing it manually you can also use the free tool Suspicious Package.
DMG αρχεία, ή Apple Disk Images, είναι μια μορφή αρχείου που χρησιμοποιείται από το macOS της Apple για εικόνες δίσκων. Ένα αρχείο DMG είναι ουσιαστικά μια mountable disk image (περιέχει το δικό του σύστημα αρχείων) που περιέχει ακατέργωστα δεδομένα μπλοκ που συνήθως είναι συμπιεσμένα και μερικές φορές κρυπτογραφημένα. Όταν ανοίγετε ένα αρχείο DMG, το macOS το τοποθετεί σαν να ήταν φυσικός δίσκος, επιτρέποντάς σας να έχετε πρόσβαση στα περιεχόμενά του.
Note that .dmg
installers support so many formats that in the past some of them containing vulnerabilities were abused to obtain kernel code execution.
Η ιεραρχία ενός αρχείου DMG μπορεί να είναι διαφορετική ανάλογα με το περιεχόμενο. Ωστόσο, για τα DMG εφαρμογών, συνήθως ακολουθεί αυτή τη δομή:
Top Level: Αυτό είναι η ρίζα της εικόνας δίσκου. Συνήθως περιέχει την εφαρμογή και πιθανώς έναν σύνδεσμο προς τον φάκελο Εφαρμογών.
Application (.app): Αυτή είναι η πραγματική εφαρμογή. Στο macOS, μια εφαρμογή είναι συνήθως ένα πακέτο που περιέχει πολλά μεμονωμένα αρχεία και φακέλους που συνθέτουν την εφαρμογή.
Applications Link: Αυτός είναι ένας συντομευμένος σύνδεσμος προς τον φάκελο Εφαρμογών στο macOS. Ο σκοπός αυτού είναι να διευκολύνει την εγκατάσταση της εφαρμογής. Μπορείτε να σύρετε το αρχείο .app σε αυτή τη συντόμευση για να εγκαταστήσετε την εφαρμογή.
Εάν ένα σενάριο προ ή μετά την εγκατάσταση εκτελείται για παράδειγμα από /var/tmp/Installerutil
, και ο επιτιθέμενος μπορούσε να ελέγξει αυτό το σενάριο, θα μπορούσε να κλιμακώσει τα δικαιώματα όποτε εκτελείται. Ή ένα άλλο παρόμοιο παράδειγμα:
Αυτή είναι μια δημόσια συνάρτηση που αρκετοί εγκαταστάτες και ενημερωτές θα καλέσουν για να εκτελέσουν κάτι ως root. Αυτή η συνάρτηση δέχεται την διαδρομή του αρχείου που θα εκτελεστεί ως παράμετρο, ωστόσο, εάν ένας επιτιθέμενος μπορούσε να τροποποιήσει αυτό το αρχείο, θα ήταν σε θέση να καταχραστεί την εκτέλεσή του με root για να κλιμακώσει τα δικαιώματα.
For more info check this talk: https://www.youtube.com/watch?v=lTOItyjTTkw
Αν ένας εγκαταστάτης γράφει στο /tmp/fixedname/bla/bla
, είναι δυνατόν να δημιουργηθεί μια τοποθέτηση πάνω από το /tmp/fixedname
χωρίς ιδιοκτήτες, ώστε να μπορείτε να τροποποιήσετε οποιοδήποτε αρχείο κατά τη διάρκεια της εγκατάστασης για να εκμεταλλευτείτε τη διαδικασία εγκατάστασης.
Ένα παράδειγμα αυτού είναι το CVE-2021-26089 που κατάφερε να επικαλύψει ένα περιοδικό σενάριο για να αποκτήσει εκτέλεση ως root. Για περισσότερες πληροφορίες ρίξτε μια ματιά στην ομιλία: OBTS v4.0: "Mount(ain) of Bugs" - Csaba Fitzl
Είναι δυνατόν να δημιουργηθεί απλά ένα .pkg
αρχείο με προ και μετά-εγκατάστασης σενάρια χωρίς κανένα πραγματικό payload εκτός από το κακόβουλο λογισμικό μέσα στα σενάρια.
Είναι δυνατόν να προστεθούν <script>
ετικέτες στο αρχείο xml διανομής του πακέτου και αυτός ο κώδικας θα εκτελείται και μπορεί να εκτελεί εντολές χρησιμοποιώντας system.run
:
Κακόβουλος εγκαταστάτης που χρησιμοποιεί ένα σενάριο και κώδικα JS μέσα στο dist.xml
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)