macOS Installers Abuse

Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (Ειδικός Red Team AWS του HackTricks)!

Άλλοι τρόποι υποστήριξης του HackTricks:

Βασικές Πληροφορίες Pkg

Ένα πακέτο εγκατάστασης macOS (επίσης γνωστό ως αρχείο .pkg) είναι ένα μορφότυπο αρχείου που χρησιμοποιείται από το macOS για τη διανομή λογισμικού. Αυτά τα αρχεία είναι σαν ένα κουτί που περιέχει ό,τι χρειάζεται ένα κομμάτι λογισμικού για να εγκατασταθεί και να λειτουργήσει σωστά.

Το ίδιο το αρχείο πακέτου είναι ένα αρχείο αρχειοθήκης που κρατά μια ιεραρχία αρχείων και καταλόγων που θα εγκατασταθούν στον υπολογιστή-στόχο. Μπορεί επίσης να περιλαμβάνει σενάρια για να εκτελέσει εργασίες πριν και μετά την εγκατάσταση, όπως η ρύθμιση αρχείων διαμόρφωσης ή η καθαρισμός παλαιότερων εκδόσεων του λογισμικοϋ.

Ιεραρχία

  • Διανομή (xml): Προσαρμογές (τίτλος, κείμενο καλωσορίσματος...) και ελέγχοι σεναρίου/εγκατάστασης

  • PackageInfo (xml): Πληροφορίες, απαιτήσεις εγκατάστασης, τοποθεσία εγκατάστασης, διαδρομές για τα σενάρια που θα τρέξουν

  • Λογαριασμός υλικών (bom): Λίστα αρχείων για εγκατάσταση, ενημέρωση ή αφαίρεση με δικαιώματα αρχείου

  • Φορτίο (CPIO αρχείο gzip συμπιεσμένο): Αρχεία για εγκατάσταση στην τοποθεσία-εγκατάστασης από το PackageInfo

  • Σενάρια (CPIO αρχείο gzip συμπιεσμένο): Προεγκατάσταση και μεταεγκατάσταση σεναρίων και περισσότεροι πόροι εξάγονται σε έναν προσωρινό κατάλογο για εκτέλεση.

Αποσυμπίεση

# Tool to directly get the files inside a package
pkgutil —expand "/path/to/package.pkg" "/path/to/out/dir"

# Get the files ina. more manual way
mkdir -p "/path/to/out/dir"
cd "/path/to/out/dir"
xar -xf "/path/to/package.pkg"

# Decompress also the CPIO gzip compressed ones
cat Scripts | gzip -dc | cpio -i
cpio -i < Scripts

Για να οπτικοποιήσετε τα περιεχόμενα του εγκαταστάτη χωρίς να το αποσυμπιέσετε χειροκίνητα, μπορείτε επίσης να χρησιμοποιήσετε το δωρεάν εργαλείο Suspicious Package.

Βασικές Πληροφορίες DMG

Τα αρχεία DMG, ή Apple Disk Images, είναι ένα μορφή αρχείου που χρησιμοποιείται από το macOS της Apple για εικόνες δίσκου. Ένα αρχείο DMG είναι ουσιαστικά μια εικόνα δίσκου που μπορεί να τοποθετηθεί (περιέχει το δικό του σύστημα αρχείων) που περιέχει ωμά δεδομένα των τετραγωνικών τύπων συμπιεσμένα και μερικές φορές κρυπτογραφημένα. Όταν ανοίγετε ένα αρχείο DMG, το macOS τοποθετεί το ως να ήταν φυσικός δίσκος, επιτρέποντάς σας να έχετε πρόσβαση στα περιεχόμενά του.

Σημειώστε ότι οι εγκαταστάτες .dmg υποστηρίζουν τόσα πολλά μορφές ώστε στο παρελθόν μερικοί από αυτούς που περιείχαν ευπάθειες καταχρηστικά χρησιμοποιήθηκαν για να αποκτηθεί εκτέλεση κώδικα πυρήνα.

Ιεραρχία

Η ιεραρχία ενός αρχείου DMG μπορεί να είναι διαφορετική ανάλογα με το περιεχόμενο. Ωστόσο, για τα DMG εφαρμογών, συνήθως ακολουθεί αυτή τη δομή:

  • Κορυφαίο Επίπεδο: Αυτό είναι το ριζικό επίπεδο της εικόνας δίσκου. Συνήθως περιέχει την εφαρμογή και πιθανώς ένα σύνδεσμο προς τον φάκελο Εφαρμογές.

  • Εφαρμογή (.app): Αυτή είναι η πραγματική εφαρμογή. Στο macOS, μια εφαρμογή είναι τυπικά ένα πακέτο που περιέχει πολλά μεμονωμένα αρχεία και φακέλους που αποτελούν την εφαρμογή.

  • Σύνδεσμος Εφαρμογών: Αυτός είναι ένας συντομευμένος τρόπος προς τον φάκελο Εφαρμογές στο macOS. Ο σκοπός αυτού είναι να σας διευκολύνει στην εγκατάσταση της εφαρμογής. Μπορείτε να σύρετε το αρχείο .app σε αυτόν το συντόμευση για να εγκαταστήσετε την εφαρμογή.

Ανύψωση προνομίων μέσω κατάχρησης pkg

Εκτέλεση από δημόσιους καταλόγους

Αν ένα σενάριο πριν ή μετά την εγκατάσταση εκτελείται για παράδειγμα από το /var/tmp/Installerutil, και ένας επιτιθέμενος μπορεί να ελέγχει αυτό το σενάριο για να αναβαθμίσει τα προνόμια κάθε φορά που εκτελείται. Ή ένα άλλο παρόμοιο παράδειγμα:

AuthorizationExecuteWithPrivileges

Αυτή είναι μια δημόσια συνάρτηση που πολλοί εγκαταστάτες και ενημερωτές θα καλέσουν για να εκτελέσουν κάτι ως ριζικό χρήστη. Αυτή η συνάρτηση δέχεται τη διαδρομή του αρχείου που θα εκτελεστεί ως παράμετρο, ωστόσο, αν ένας επιτιθέμενος μπορεί να τροποποιήσει αυτό το αρχείο, θα μπορεί να καταχραστεί την εκτέλεσή του με ρίζι για να αναβαθμίσει τα προνόμια.

# Breakpoint in the function to check wich file is loaded
(lldb) b AuthorizationExecuteWithPrivileges
# You could also check FS events to find this missconfig

Εκτέλεση με την τοποθέτηση σε σημείο πρόσβασης

Εάν ένα πρόγραμμα εγκατάστασης γράφει στο /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