macOS Installers Abuse
Βασικές Πληροφορίες Pkg
Ένα πακέτο εγκατάστασης macOS (επίσης γνωστό ως αρχείο .pkg
) είναι ένα μορφότυπο αρχείου που χρησιμοποιείται από το macOS για τη διανομή λογισμικού. Αυτά τα αρχεία είναι σαν ένα κουτί που περιέχει ό,τι χρειάζεται ένα κομμάτι λογισμικού για να εγκατασταθεί και να λειτουργήσει σωστά.
Το ίδιο το αρχείο πακέτου είναι ένα αρχείο αρχειοθήκης που κρατά μια ιεραρχία αρχείων και καταλόγων που θα εγκατασταθούν στον υπολογιστή-στόχο. Μπορεί επίσης να περιλαμβάνει σενάρια για να εκτελέσει εργασίες πριν και μετά την εγκατάσταση, όπως η ρύθμιση αρχείων διαμόρφωσης ή η καθαρισμός παλαιότερων εκδόσεων του λογισμικοϋ.
Ιεραρχία
Διανομή (xml): Προσαρμογές (τίτλος, κείμενο καλωσορίσματος...) και ελέγχοι σεναρίου/εγκατάστασης
PackageInfo (xml): Πληροφορίες, απαιτήσεις εγκατάστασης, τοποθεσία εγκατάστασης, διαδρομές για τα σενάρια που θα τρέξουν
Λογαριασμός υλικών (bom): Λίστα αρχείων για εγκατάσταση, ενημέρωση ή αφαίρεση με δικαιώματα αρχείου
Φορτίο (CPIO αρχείο gzip συμπιεσμένο): Αρχεία για εγκατάσταση στην
τοποθεσία-εγκατάστασης
από το PackageInfoΣενάρια (CPIO αρχείο gzip συμπιεσμένο): Προεγκατάσταση και μεταεγκατάσταση σεναρίων και περισσότεροι πόροι εξάγονται σε έναν προσωρινό κατάλογο για εκτέλεση.
Αποσυμπίεση
Για να οπτικοποιήσετε τα περιεχόμενα του εγκαταστάτη χωρίς να το αποσυμπιέσετε χειροκίνητα, μπορείτε επίσης να χρησιμοποιήσετε το δωρεάν εργαλείο Suspicious Package.
Βασικές Πληροφορίες DMG
Τα αρχεία DMG, ή Apple Disk Images, είναι ένα μορφή αρχείου που χρησιμοποιείται από το macOS της Apple για εικόνες δίσκου. Ένα αρχείο DMG είναι ουσιαστικά μια εικόνα δίσκου που μπορεί να τοποθετηθεί (περιέχει το δικό του σύστημα αρχείων) που περιέχει ωμά δεδομένα των τετραγωνικών τύπων συμπιεσμένα και μερικές φορές κρυπτογραφημένα. Όταν ανοίγετε ένα αρχείο DMG, το macOS τοποθετεί το ως να ήταν φυσικός δίσκος, επιτρέποντάς σας να έχετε πρόσβαση στα περιεχόμενά του.
Σημειώστε ότι οι εγκαταστάτες .dmg
υποστηρίζουν τόσα πολλά μορφές ώστε στο παρελθόν μερικοί από αυτούς που περιείχαν ευπάθειες καταχρηστικά χρησιμοποιήθηκαν για να αποκτηθεί εκτέλεση κώδικα πυρήνα.
Ιεραρχία
Η ιεραρχία ενός αρχείου DMG μπορεί να είναι διαφορετική ανάλογα με το περιεχόμενο. Ωστόσο, για τα DMG εφαρμογών, συνήθως ακολουθεί αυτή τη δομή:
Κορυφαίο Επίπεδο: Αυτό είναι το ριζικό επίπεδο της εικόνας δίσκου. Συνήθως περιέχει την εφαρμογή και πιθανώς ένα σύνδεσμο προς τον φάκελο Εφαρμογές.
Εφαρμογή (.app): Αυτή είναι η πραγματική εφαρμογή. Στο macOS, μια εφαρμογή είναι τυπικά ένα πακέτο που περιέχει πολλά μεμονωμένα αρχεία και φακέλους που αποτελούν την εφαρμογή.
Σύνδεσμος Εφαρμογών: Αυτός είναι ένας συντομευμένος τρόπος προς τον φάκελο Εφαρμογές στο macOS. Ο σκοπός αυτού είναι να σας διευκολύνει στην εγκατάσταση της εφαρμογής. Μπορείτε να σύρετε το αρχείο .app σε αυτόν το συντόμευση για να εγκαταστήσετε την εφαρμογή.
Ανύψωση προνομίων μέσω κατάχρησης pkg
Εκτέλεση από δημόσιους καταλόγους
Αν ένα σενάριο πριν ή μετά την εγκατάσταση εκτελείται για παράδειγμα από το /var/tmp/Installerutil
, και ένας επιτιθέμενος μπορεί να ελέγχει αυτό το σενάριο για να αναβαθμίσει τα προνόμια κάθε φορά που εκτελείται. Ή ένα άλλο παρόμοιο παράδειγμα:
AuthorizationExecuteWithPrivileges
Αυτή είναι μια δημόσια συνάρτηση που πολλοί εγκαταστάτες και ενημερωτές θα καλέσουν για να εκτελέσουν κάτι ως ριζικό χρήστη. Αυτή η συνάρτηση δέχεται τη διαδρομή του αρχείου που θα εκτελεστεί ως παράμετρο, ωστόσο, αν ένας επιτιθέμενος μπορεί να τροποποιήσει αυτό το αρχείο, θα μπορεί να καταχραστεί την εκτέλεσή του με ρίζι για να αναβαθμίσει τα προνόμια.
Εκτέλεση με την τοποθέτηση σε σημείο πρόσβασης
Εάν ένα πρόγραμμα εγκατάστασης γράφει στο /tmp/fixedname/bla/bla
, είναι δυνατόν να δημιουργηθεί ένα σημείο πρόσβασης πάνω στο /tmp/fixedname
χωρίς κάτοχους, έτσι ώστε να μπορείτε να τροποποιήσετε οποιοδήποτε αρχείο κατά τη διάρκεια της εγκατάστασης για να καταχραστείτε τη διαδικασία εγκατάστασης.
Ένα παράδειγμα αυτού είναι το CVE-2021-26089 το οποίο κατάφερε να αντικαταστήσει ένα περιοδικό script για να εκτελέσει ως root. Για περισσότερες πληροφορίες ανατρέξτε στην ομιλία: OBTS v4.0: "Mount(ain) of Bugs" - Csaba Fitzl
pkg ως κακόβουλο λογισμικό
Κενό Φορτίο
Είναι δυνατόν απλά να δημιουργήσετε ένα αρχείο .pkg
με προεγκατεστημένα και μετα-εγκατάστασης scripts χωρίς κανένα φορτίο.
JS στο Distribution xml
Είναι δυνατόν να προσθέσετε <script>
tags στο αρχείο distribution xml του πακέτου και αυτός ο κώδικας θα εκτελεστεί και μπορεί να εκτελέσει εντολές χρησιμοποιώντας system.run
:
Αναφορές
Last updated