macOS Files, Folders, Binaries & Memory
Last updated
Last updated
Μάθε & εξάσκησε το Hacking στο AWS:Εκπαίδευση HackTricks AWS Red Team Expert (ARTE) Μάθε & εξάσκησε το Hacking στο GCP: Εκπαίδευση HackTricks GCP Red Team Expert (GRTE)
/Applications: Οι εγκατεστημένες εφαρμογές πρέπει να βρίσκονται εδώ. Όλοι οι χρήστες θα έχουν πρόσβαση σε αυτές.
/bin: Δυαδικά αρχεία γραμμής εντολών
/cores: Αν υπάρχει, χρησιμοποιείται για την αποθήκευση απορρίμματος πυρήνα
/dev: Όλα θεωρούνται ως αρχεία, οπότε μπορείτε να δείτε συσκευές υλικού που αποθηκεύονται εδώ.
/etc: Αρχεία ρυθμίσεων
/Library: Μπορείτε να βρείτε πολλούς υποφακέλους και αρχεία που σχετίζονται με προτιμήσεις, caches και logs εδώ. Ένας φάκελος Library υπάρχει στο ριζικό φάκελο και σε κάθε φάκελο χρήστη.
/private: Ανεπισήμως, αλλά πολλοί από τους αναφερόμενους φακέλους είναι συμβολικοί σύνδεσμοι στον ιδιωτικό φάκελο.
/sbin: Βασικά δυαδικά αρχεία συστήματος (σχετικά με τη διαχείριση)
/System: Αρχείο για τη λειτουργία του OS X. Θα πρέπει να βρείτε κυρίως μόνο αρχεία που αφορούν την Apple εδώ (όχι τρίτων).
/tmp: Τα αρχεία διαγράφονται μετά από 3 ημέρες (είναι μια μαλακή σύνδεση στο /private/tmp)
/Users: Κατάλογος αρχικού φακέλου για τους χρήστες.
/usr: Δυαδικά και δυαδικά συστήματος
/var: Αρχεία καταγραφής
/Volumes: Οι συνδεδεμένοι δίσκοι θα εμφανιστούν εδώ.
/.vol: Εκτελώντας stat a.txt
λαμβάνετε κάτι σαν 16777223 7545753 -rw-r--r-- 1 username wheel ...
όπου το πρώτο νούμερο είναι ο αριθμός id του όγκου όπου υπάρχει το αρχείο και το δεύτερο είναι ο αριθμός inode. Μπορείτε να έχετε πρόσβαση στο περιεχόμενο αυτού του αρχείου μέσω του /.vol/ με αυτές τις πληροφορίες εκτελώντας cat /.vol/16777223/7545753
Εφαρμογές συστήματος βρίσκονται στο /System/Applications
Εγκατεστημένες εφαρμογές συνήθως εγκαθίστανται στο /Applications
ή στο ~/Applications
Δεδομένα εφαρμογής μπορούν να βρεθούν στο /Library/Application Support
για τις εφαρμογές που τρέχουν ως ρίζα και στο ~/Library/Application Support
για εφαρμογές που τρέχουν ως χρήστης.
Οι δαίμονες τρίτων εφαρμογών που χρειάζονται να τρέχουν ως ρίζα συνήθως βρίσκονται στο /Library/PrivilegedHelperTools/
Οι εφαρμογές με αμμοθάλασσα αντιστοιχίζονται στον φάκελο ~/Library/Containers
. Κάθε εφαρμογή έχει ένα φάκελο με το όνομα του αναλόγως με το ID δέματος της εφαρμογής (com.apple.Safari
).
Ο πυρήνας βρίσκεται στο /System/Library/Kernels/kernel
Οι επεκτάσεις πυρήνα της Apple βρίσκονται στο /System/Library/Extensions
Οι επεκτάσεις πυρήνα τρίτων αποθηκεύονται στο /Library/Extensions
Το MacOS αποθηκεύει πληροφορίες όπως κωδικούς πρόσβασης σε διάφορα μέρη:
macOS Sensitive Locations & Interesting Daemons.dmg
: Τα αρχεία Apple Disk Image είναι πολύ συχνά για εγκαταστάτες.
.kext
: Πρέπει να ακολουθεί μια συγκεκριμένη δομή και είναι η έκδοση του OS X ενός προγράμματος οδήγησης. (είναι ένα δέμα)
.plist
: Επίσης γνωστό ως λίστα ιδιοτήτων αποθηκεύει πληροφορίες σε μορφή XML ή δυαδική.
Μπορεί να είναι XML ή δυαδικά. Τα δυαδικά μπορούν να διαβαστούν με:
defaults read config.plist
/usr/libexec/PlistBuddy -c print config.plsit
plutil -p ~/Library/Preferences/com.apple.screensaver.plist
plutil -convert xml1 ~/Library/Preferences/com.apple.screensaver.plist -o -
plutil -convert json ~/Library/Preferences/com.apple.screensaver.plist -o -
.app
: Εφαρμογές Apple που ακολουθούν δομή καταλόγου (Είναι ένα δέμα).
.dylib
: Δυναμικές βιβλιοθήκες (όπως τα αρχεία DLL των Windows)
.pkg
: Είναι ίδια με τα xar (eXtensible Archive format). Η εντολή installer μπορεί να χρησιμοποιηθεί για να εγκαταστήσει τα περιεχόμενα αυτών των αρχείων.
.DS_Store
: Αυτό το αρχείο υπάρχει σε κάθε φάκελο, αποθηκεύει τα χαρακτηριστικά και τις προσαρμογές του φακέλου.
.Spotlight-V100
: Αυτός ο φάκελος εμφανίζεται στο ριζικό φάκελο κάθε όγκου στο σύστημα.
.metadata_never_index
: Αν αυτό το αρχείο βρίσκεται στη ρίζα ενός όγκου, το Spotlight δεν θα ευρετηριάσει αυτόν τον όγκο.
.noindex
: Τα αρχεία και οι φάκελοι με αυτή την επέκταση δεν θα ευρετηριαστούν από το Spotlight.
.sdef
: Αρχεία μέσα σε δέματα που καθορίζουν πώς είναι δυνατή η αλληλεπίδραση με την εφαρμογή από ένα AppleScript.
Ένα δέμα είναι ένα κατάλογος που μοιάζει με αντικείμενο στο Finder (ένα παράδειγμα δέματος είναι τα αρχεία *.app
).
Στο macOS (και iOS) όλες οι κοινόχρηστες βιβλιοθήκες συστήματος, όπως πλαίσια και dylibs, συνδυάζονται σε ένα μόνο αρχείο, που ονομάζεται κοινόχρηστη βιβλιοθήκη dyld. Αυτό βελτιώνει την απόδοση, αφού ο κώδικας μπορεί να φορτωθεί πιο γρήγορα.
Αυτό βρίσκεται στο macOS στο /System/Volumes/Preboot/Cryptexes/OS/System/Library/dyld/
και σε παλαιότερες εκδόσεις μπορείτε να βρείτε τη κοινόχρηστη cache στο /System/Library/dyld/
.
Στο iOS μπορείτε να τα βρείτε στο /System/Library/Caches/com.apple.dyld/
.
Παρόμοια με την κοινόχρηστη cache dyld, ο πυρήνας και
Σημειώστε ότι ακόμα κι αν το εργαλείο dyld_shared_cache_util
δεν λειτουργεί, μπορείτε να περάσετε το κοινό dyld binary στο Hopper και το Hopper θα είναι σε θέση να αναγνωρίσει όλες τις βιβλιοθήκες και να σας επιτρέψει να επιλέξετε ποια θέλετε να ερευνήσετε:
Κάποιοι εξαγωγείς δεν θα λειτουργήσουν καθώς οι dylibs είναι προ-συνδεδεμένες με σκληρούς κωδικούς διευθύνσεων και επομένως ενδέχεται να μεταβαίνουν σε άγνωστες διευθύνσεις
Είναι επίσης δυνατό να κατεβάσετε την Κοινόχρηστη Βιβλιοθήκη Cache άλλων συσκευών *OS στο macos χρησιμοποιώντας έναν εξομοιωτή στο Xcode. Θα κατέβουν μέσα στο: ls $HOME/Library/Developer/Xcode/<*>OS\ DeviceSupport/<version>/Symbols/System/Library/Caches/com.apple.dyld/
, όπως:$HOME/Library/Developer/Xcode/iOS\ DeviceSupport/14.1\ (18A8395)/Symbols/System/Library/Caches/com.apple.dyld/dyld_shared_cache_arm64
Το dyld
χρησιμοποιεί την κλήση συστήματος shared_region_check_np
για να γνωρίζει αν έχει γίνει χαρτογράφηση του SLC (η οποία επιστρέφει τη διεύθυνση) και shared_region_map_and_slide_np
για να χαρτογραφήσει το SLC.
Σημειώστε ότι ακόμα κι αν το SLC έχει μετακινηθεί στην πρώτη χρήση, όλες οι διεργασίες χρησιμοποιούν το ίδιο αντίγραφο, το οποίο αποκλείει την προστασία ASLR εάν ο επιτιθέμενος μπορούσε να εκτελέσει διεργασίες στο σύστημα. Αυτό εκμεταλλεύτηκε πραγματικά στο παρελθόν και διορθώθηκε με τον κοινόχρηστο περιοχή pager.
Οι ομάδες κλαδιών είναι μικρές Mach-O dylibs που δημιουργούν μικρούς χώρους μεταξύ των αντιστοιχίσεων εικόνων κάνοντας αδύνατη την ενδιάμεση εισαγωγή των λειτουργιών.
Χρησιμοποιώντας τις μεταβλητές περιβάλλοντος:
DYLD_DHARED_REGION=private DYLD_SHARED_CACHE_DIR=</path/dir> DYLD_SHARED_CACHE_DONT_VALIDATE=1
-> Αυτό θα επιτρέψει τη φόρτωση μιας νέας κοινόχρηστης βιβλιοθήκης cache
DYLD_SHARED_CACHE_DIR=avoid
και αντικαταστήστε χειροκίνητα τις βιβλιοθήκες με συμβολικούς συνδέσμους στην κοινόχρηστη μνήμη cache με τις πραγματικές (θα χρειαστεί να τις εξάγετε)
Σε έναν φάκελο, το read επιτρέπει να καταλογογραφήσετε τον φάκελο, το write επιτρέπει να διαγράψετε και να γράψετε αρχεία σε αυτόν, και το execute επιτρέπει να διασχίσετε τον κατάλογο. Έτσι, για παράδειγμα, ένας χρήστης με δικαίωμα ανάγνωσης σε ένα αρχείο μέσα σε έναν κατάλογο όπου δεν έχει δικαίωμα εκτέλεσης δεν θα μπορεί να διαβάσει το αρχείο.
Υπάρχουν μερικές σημαίες που μπορούν να οριστούν στα αρχεία που θα κάνουν το αρχείο να συμπεριφέρεται διαφορετικά. Μπορείτε να ελέγξετε τις σημαίες των αρχείων μέσα σε έναν φάκελο με ls -lO /path/directory
uchg
: Γνωστή ως σημαία uchange θα εμποδίσει οποιαδήποτε ενέργεια αλλαγής ή διαγραφής του αρχείου. Για να το ορίσετε: chflags uchg file.txt
Ο χρήστης ρίζα μπορεί να αφαιρέσει τη σημαία και να τροποποιήσει το αρχείο
restricted
: Αυτή η σημαία κάνει το αρχείο να είναι προστατευμένο από το SIP (δεν μπορείτε να προσθέσετε αυτή τη σημαία σε ένα αρχείο).
Sticky bit
: Εάν ένας φάκελος έχει sticky bit, μόνο ο ιδιοκτήτης του φακέλου ή η ρίζα μπορεί να μετονομάσει ή να διαγράψει αρχεία. Συνήθως αυτό ορίζεται στον φάκελο /tmp για να αποτρέψει τους κανονικούς χρήστες από το διαγραφή ή τη μετακίνηση αρχείων άλλων χρηστών.
Όλες οι σημαίες μπορούν να βρεθούν στο αρχείο sys/stat.h
(βρείτε το χρησιμοποιώντας mdfind stat.h | grep stat.h
) και είναι:
UF_SETTABLE
0x0000ffff: Μάσκα των επεξεργάσιμων σημαιών ιδιοκτήτη.
UF_NODUMP
0x00000001: Να μην γίνει αντιγραφή αρχείου.
UF_IMMUTABLE
0x00000002: Το αρχείο δεν μπορεί να αλλάξει.
UF_APPEND
0x00000004: Οι εγγραφές στο αρχείο μπορούν να προστεθούν μόνο.
UF_OPAQUE
0x00000008: Ο κατάλογος είναι αδιαφανής ως προς την ένωση.
UF_COMPRESSED
0x00000020: Το αρχείο είναι συμπιεσμένο (κάποια συστήματα αρχείων).
UF_TRACKED
0x00000040: Χωρίς ειδοποιήσεις για διαγραφές/μετονομασίες για αρχεία με αυτό το σύνολο.
UF_DATAVAULT
0x00000080: Απαιτείται εξουσιοδότηση για ανάγνωση και εγγραφή.
UF_HIDDEN
0x00008000: Υπόδειξη ότι αυτό το στοιχείο δεν πρέπει να εμφανίζεται σε μια γραφική διεπαφή.
SF_SUPPORTED
0x009f0000: Μάσκα των σημαιών που υποστηρίζονται από τον υπερχρήστη.
SF_SETTABLE
0x3fff0000: Μάσκα των επεξεργάσιμων σημαιών υπερχρήστη.
SF_SYNTHETIC
0xc0000000: Μάσκα συστημικών σημαιών μόνο για ανάγνωση.
SF_ARCHIVED
0x00010000: Το αρχείο είναι αρχειοθετημένο.
SF_IMMUTABLE
0x00020000: Το αρχείο δεν μπορεί να αλλάξει.
SF_APPEND
0x00040000: Οι εγγραφές στο αρχείο μπορούν να προστεθούν μόνο.
SF_RESTRICTED
0x00080000: Απαιτείται εξουσιοδότηση για εγγραφή.
SF_NOUNLINK
0x00100000: Το στοιχείο δεν μπορεί να αφαιρεθεί, να μετονομαστεί ή να τοποθετηθεί.
SF_FIRMLINK
0x00800000: Το αρχείο είναι σύνδεσμος σταθερού συνδέσμου.
SF_DATALESS
0x40000000: Το αρχείο είναι αντικείμενο χωρίς δεδομένα.
Τα ACLs αρχείων περιέχουν ACE (Access Control Entries) όπου μπορούν να ανατεθούν πιο λεπτομερή δικαιώματα σε διαφορετικούς χρήστες.
Είναι δυνατό να χορηγηθούν σε έναν φάκελο αυτά τα δικαιώματα: κατάλογος
, αναζήτηση
, προσθήκη_αρχείου
, προσθήκη_υποκαταλόγου
, διαγραφή_παιδιού
.
Και σε ένα αρχείο: ανάγνωση
, εγγραφή
, προσάρτηση
, εκτέλεση
.
Όταν το αρχείο περιέχει ACLs θα **βρείτε ένα "+" κ
Μπορείτε να διαβάσετε τα ACLs του αρχείου με:
Μπορείτε να βρείτε όλα τα αρχεία με ACLs με (αυτό είναι πολύ αργό):
Τα επεκτεινόμενα χαρακτηριστικά έχουν ένα όνομα και μια επιθυμητή τιμή και μπορούν να βρεθούν χρησιμοποιώντας την εντολή ls -@
και να τροποποιηθούν χρησιμοποιώντας την εντολή xattr
. Μερικά κοινά επεκτεινόμενα χαρακτηριστικά είναι:
com.apple.resourceFork
: Συμβατότητα με το resource fork. Επίσης ορατό ως filename/..namedfork/rsrc
com.apple.quarantine
: MacOS: Μηχανισμός καραντίνας Gatekeeper (III/6)
metadata:*
: MacOS: διάφορα μεταδεδομένα, όπως _backup_excludeItem
, ή kMD*
com.apple.lastuseddate
(#PS): Ημερομηνία τελευταίας χρήσης αρχείου
com.apple.FinderInfo
: MacOS: Πληροφορίες Finder (π.χ., ετικέτες χρώματος)
com.apple.TextEncoding
: Καθορίζει την κωδικοποίηση κειμένου των αρχείων ASCII
com.apple.logd.metadata
: Χρησιμοποιείται από το logd σε αρχεία στο /var/db/diagnostics
com.apple.genstore.*
: Γενεαλογική αποθήκευση (/.DocumentRevisions-V100
στη ρίζα του συστήματος αρχείων)
com.apple.rootless
: MacOS: Χρησιμοποιείται από την Προστασία Ακεραιότητας Συστήματος για να επισημάνει αρχεία (III/10)
com.apple.uuidb.boot-uuid
: Σήμανση των εποχών εκκίνησης από το logd με μοναδικό UUID
com.apple.decmpfs
: MacOS: Διαφανής συμπίεση αρχείων (II/7)
com.apple.cprotect
: *OS: Δεδομένα κρυπτογράφησης αρχείου ανά αρχείο (III/11)
com.apple.installd.*
: *OS: Μεταδεδομένα που χρησιμοποιούνται από το installd, π.χ., installType
, uniqueInstallID
Αυτή είναι μια μέθοδος για να αποκτήσετε Εναλλακτικές Ροές Δεδομένων στα μηχανήματα MacOS. Μπορείτε να αποθηκεύσετε περιεχόμενο μέσα σε ένα επεκτεινόμενο χαρακτηριστικό που ονομάζεται com.apple.ResourceFork μέσα σε ένα αρχείο αποθηκεύοντάς το στο file/..namedfork/rsrc.
Μπορείτε να βρείτε όλα τα αρχεία που περιέχουν αυτό το επεκταμένο χαρακτηριστικό με:
Το επεκτεταμένο χαρακτηριστικό com.apple.decmpfs
υποδηλώνει ότι το αρχείο είναι αποθηκευμένο κρυπτογραφημένο, το ls -l
θα αναφέρει μέγεθος 0 και τα συμπιεσμένα δεδομένα βρίσκονται μέσα σε αυτό το χαρακτηριστικό. Κάθε φορά που το αρχείο προσπελαύνεται, θα αποκρυπτογραφείται στη μνήμη.
Αυτό το χαρακτηριστικό μπορεί να εμφανιστεί με την εντολή ls -lO
ως συμπιεσμένο επειδή τα συμπιεσμένα αρχεία επισημαίνονται επίσης με τη σημαία UF_COMPRESSED
. Αν ένα συμπιεσμένο αρχείο αφαιρεθεί αυτή η σημαία με chflags nocompressed </path/to/file>
, το σύστημα δεν θα γνωρίζει ότι το αρχείο ήταν συμπιεσμένο και συνεπώς δεν θα μπορεί να αποσυμπιέσει και να έχει πρόσβαση στα δεδομένα (θα νομίζει ότι είναι πραγματικά κενό).
Το εργαλείο afscexpand μπορεί να χρησιμοποιηθεί για να αναγκάσει την αποσυμπίεση ενός αρχείου.
Τα δυαδικά του Mac OS συνήθως μεταγλωττίζονται ως παγκόσμια δυαδικά. Ένα παγκόσμιο δυαδικό μπορεί να υποστηρίζει πολλές αρχιτεκτονικές στο ίδιο αρχείο.
macOS Universal binaries & Mach-O FormatΟ κατάλογος /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/System
είναι όπου αποθηκεύονται πληροφορίες σχετικά με το κίνδυνο που συνδέεται με διαφορετικές επεκτάσεις αρχείων. Αυτός ο κατάλογος κατηγοριοποιεί τα αρχεία σε διάφορα επίπεδα κινδύνου, επηρεάζοντας τον τρόπο με τον οποίο το Safari χειρίζεται αυτά τα αρχεία κατά τη λήψη. Οι κατηγορίες είναι οι εξής:
LSRiskCategorySafe: Τα αρχεία σε αυτή την κατηγορία θεωρούνται εντελώς ασφαλή. Το Safari θα ανοίγει αυτά τα αρχεία αυτόματα μετά τη λήψη τους.
LSRiskCategoryNeutral: Αυτά τα αρχεία δεν συνοδεύονται από προειδοποιήσεις και δεν ανοίγονται αυτόματα από το Safari.
LSRiskCategoryUnsafeExecutable: Τα αρχεία σε αυτή την κατηγορία ενεργοποιούν μια προειδοποίηση που υποδεικνύει ότι το αρχείο είναι μια εφαρμογή. Αυτό λειτουργεί ως μέτρο ασφαλείας για να ειδοποιήσει τον χρήστη.
LSRiskCategoryMayContainUnsafeExecutable: Αυτή η κατηγορία είναι για αρχεία, όπως αρχεία αρχειοθέτησης, που ενδέχεται να περιέχουν εκτελέσιμο. Το Safari θα ενεργοποιήσει μια προειδοποίηση εκτός αν μπορεί να επαληθεύσει ότι όλο το περιεχόμενο είναι ασφαλές ή ουδέτερο.
$HOME/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2
: Περιέχει πληροφορίες σχετικά με τα ληφθέντα αρχεία, όπως η διεύθυνση URL από όπου λήφθηκαν.
/var/log/system.log
: Κύρια καταγραφή των συστημάτων OSX. Το com.apple.syslogd.plist είναι υπεύθυνο για την εκτέλεση της καταγραφής συστήματος (μπορείτε να ελέγξετε αν είναι απενεργοποιημένο αναζητώντας το "com.apple.syslogd" στο launchctl list
.
/private/var/log/asl/*.asl
: Αυτά είναι τα Αρχεία Καταγραφής Συστήματος της Apple που μπορεί να περιέχουν ενδιαφέρουσες πληροφορίες.
$HOME/Library/Preferences/com.apple.recentitems.plist
: Αποθηκεύει πρόσφατα αρχεία και εφαρμογές που έχουν ανοιχτεί μέσω του "Finder".
$HOME/Library/Preferences/com.apple.loginitems.plsit
: Αποθηκεύει στοιχεία που θα εκκινηθούν κατά την εκκίνηση του συστήματος
$HOME/Library/Logs/DiskUtility.log
: Αρχείο καταγραφής για την εφαρμογή DiskUtility (πληροφορίες σχετικά με τους δίσκους, συμπεριλαμβανομένων των USB)
/Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist
: Δεδομένα σχετικά με τα σημεία πρόσβασης ασύρματων δικτύων.
/private/var/db/launchd.db/com.apple.launchd/overrides.plist
: Λίστα των απενεργοποιημένων δαίμονων.