macOS Bundles

Reading time: 3 minutes

tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

Basic Information

Τα bundles στο macOS λειτουργούν ως δοχεία για μια ποικιλία πόρων, συμπεριλαμβανομένων εφαρμογών, βιβλιοθηκών και άλλων απαραίτητων αρχείων, κάνοντάς τα να εμφανίζονται ως ενιαία αντικείμενα στο Finder, όπως τα γνωστά αρχεία *.app. Το πιο συχνά συναντώμενο bundle είναι το .app bundle, αν και άλλοι τύποι όπως .framework, .systemextension και .kext είναι επίσης διαδεδομένοι.

Essential Components of a Bundle

Μέσα σε ένα bundle, ιδιαίτερα στον φάκελο <application>.app/Contents/, φιλοξενούνται διάφοροι σημαντικοί πόροι:

  • _CodeSignature: Αυτός ο φάκελος αποθηκεύει λεπτομέρειες υπογραφής κώδικα που είναι ζωτικής σημασίας για την επαλήθευση της ακεραιότητας της εφαρμογής. Μπορείτε να ελέγξετε τις πληροφορίες υπογραφής κώδικα χρησιμοποιώντας εντολές όπως: %%%bash openssl dgst -binary -sha1 /Applications/Safari.app/Contents/Resources/Assets.car | openssl base64 %%%
  • MacOS: Περιέχει το εκτελέσιμο δυαδικό αρχείο της εφαρμογής που εκτελείται κατά την αλληλεπίδραση του χρήστη.
  • Resources: Ένας αποθηκευτικός χώρος για τα στοιχεία διεπαφής χρήστη της εφαρμογής, συμπεριλαμβανομένων εικόνων, εγγράφων και περιγραφών διεπαφής (nib/xib αρχεία).
  • Info.plist: Λειτουργεί ως το κύριο αρχείο ρύθμισης της εφαρμογής, κρίσιμο για το σύστημα ώστε να αναγνωρίζει και να αλληλεπιδρά με την εφαρμογή κατάλληλα.

Important Keys in Info.plist

Το αρχείο Info.plist είναι θεμέλιο για τη ρύθμιση της εφαρμογής, περιέχοντας κλειδιά όπως:

  • CFBundleExecutable: Προσδιορίζει το όνομα του κύριου εκτελέσιμου αρχείου που βρίσκεται στον φάκελο Contents/MacOS.
  • CFBundleIdentifier: Παρέχει έναν παγκόσμιο αναγνωριστικό για την εφαρμογή, που χρησιμοποιείται εκτενώς από το macOS για τη διαχείριση εφαρμογών.
  • LSMinimumSystemVersion: Υποδεικνύει την ελάχιστη έκδοση του macOS που απαιτείται για να εκτελείται η εφαρμογή.

Exploring Bundles

Για να εξερευνήσετε το περιεχόμενο ενός bundle, όπως το Safari.app, μπορεί να χρησιμοποιηθεί η εξής εντολή: bash ls -lR /Applications/Safari.app/Contents

Αυτή η εξερεύνηση αποκαλύπτει φακέλους όπως _CodeSignature, MacOS, Resources, και αρχεία όπως το Info.plist, καθένα από τα οποία εξυπηρετεί μια μοναδική σκοπιμότητα από την ασφάλιση της εφαρμογής μέχρι τον καθορισμό της διεπαφής χρήστη και των λειτουργικών παραμέτρων.

Additional Bundle Directories

Πέρα από τους κοινούς φακέλους, τα bundles μπορεί επίσης να περιλαμβάνουν:

  • Frameworks: Περιέχει bundled frameworks που χρησιμοποιούνται από την εφαρμογή. Τα frameworks είναι σαν dylibs με επιπλέον πόρους.
  • PlugIns: Ένας φάκελος για plug-ins και επεκτάσεις που ενισχύουν τις δυνατότητες της εφαρμογής.
  • XPCServices: Περιέχει XPC υπηρεσίες που χρησιμοποιούνται από την εφαρμογή για επικοινωνία εκτός διαδικασίας.

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

Για περισσότερες λεπτομέρειες σχετικά με τα κλειδιά του Info.plist και τις σημασίες τους, η τεκμηρίωση προγραμματιστών της Apple παρέχει εκτενείς πόρους: Apple Info.plist Key Reference.

tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks