macOS Security Protections

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Gatekeeper

Ο Gatekeeper χρησιμοποιείται συνήθως για να αναφέρεται στον συνδυασμό Quarantine + Gatekeeper + XProtect, 3 μονάδες ασφαλείας του macOS που προσπαθούν να αποτρέψουν τους χρήστες από το να εκτελούν δυνητικά κακόβουλο λογισμικό που έχει κατεβεί.

Περισσότερες πληροφορίες στο:

macOS Gatekeeper / Quarantine / XProtect

Processes Limitants

SIP - System Integrity Protection

macOS SIP

Sandbox

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

macOS Sandbox

TCC (Transparency, Consent, and Control) είναι ένα πλαίσιο ασφαλείας. Είναι σχεδιασμένο για να διαχειρίζεται τις άδειες των εφαρμογών, ρυθμίζοντας συγκεκριμένα την πρόσβασή τους σε ευαίσθητες δυνατότητες. Αυτό περιλαμβάνει στοιχεία όπως υπηρεσίες τοποθεσίας, επαφές, φωτογραφίες, μικρόφωνο, κάμερα, προσβασιμότητα και πλήρη πρόσβαση δίσκου. Το TCC διασφαλίζει ότι οι εφαρμογές μπορούν να έχουν πρόσβαση σε αυτές τις δυνατότητες μόνο μετά την απόκτηση ρητής συγκατάθεσης του χρήστη, ενισχύοντας έτσι την ιδιωτικότητα και τον έλεγχο των προσωπικών δεδομένων.

macOS TCC

Launch/Environment Constraints & Trust Cache

Οι περιορισμοί εκκίνησης στο macOS είναι μια λειτουργία ασφαλείας για να ρυθμίζουν την εκκίνηση διαδικασιών καθορίζοντας ποιος μπορεί να εκκινήσει μια διαδικασία, πώς και από πού. Εισήχθη στο macOS Ventura, κατηγοριοποιούν τα συστήματα δυαδικών σε κατηγορίες περιορισμών εντός ενός trust cache. Κάθε εκτελέσιμο δυαδικό έχει καθορισμένους κανόνες για την εκκίνηση του, συμπεριλαμβανομένων των self, parent και responsible περιορισμών. Επεκτάθηκε σε εφαρμογές τρίτων ως Environment Constraints στο macOS Sonoma, αυτές οι δυνατότητες βοηθούν στη μείωση πιθανών εκμεταλλεύσεων του συστήματος ρυθμίζοντας τις συνθήκες εκκίνησης διαδικασιών.

macOS Launch/Environment Constraints & Trust Cache

MRT - Malware Removal Tool

Το Malware Removal Tool (MRT) είναι άλλο ένα μέρος της υποδομής ασφαλείας του macOS. Όπως υποδηλώνει το όνομα, η κύρια λειτουργία του MRT είναι να αφαιρεί γνωστό κακόβουλο λογισμικό από μολυσμένα συστήματα.

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

Ενώ τόσο το XProtect όσο και το MRT είναι μέρος των μέτρων ασφαλείας του macOS, εκτελούν διαφορετικές λειτουργίες:

  • XProtect είναι ένα προληπτικό εργαλείο. Ελέγχει τα αρχεία καθώς κατεβαίνουν (μέσω ορισμένων εφαρμογών), και αν ανιχνεύσει οποιουσδήποτε γνωστούς τύπους κακόβουλου λογισμικού, αποτρέπει το άνοιγμα του αρχείου, αποτρέποντας έτσι το κακόβουλο λογισμικό από το να μολύνει το σύστημά σας εξαρχής.

  • MRT, από την άλλη πλευρά, είναι ένα αντιδραστικό εργαλείο. Λειτουργεί αφού ανιχνευθεί κακόβουλο λογισμικό σε ένα σύστημα, με στόχο την αφαίρεση του ενοχλητικού λογισμικού για να καθαρίσει το σύστημα.

Η εφαρμογή MRT βρίσκεται στο /Library/Apple/System/Library/CoreServices/MRT.app

Background Tasks Management

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

Αυτό λειτουργεί με έναν daemon που βρίσκεται στο /System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/Resources/backgroundtaskmanagementd και τον agent στο /System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Support/BackgroundTaskManagementAgent.app

Ο τρόπος που backgroundtaskmanagementd γνωρίζει ότι κάτι είναι εγκατεστημένο σε έναν επίμονο φάκελο είναι μέσω της λήψης των FSEvents και της δημιουργίας ορισμένων handlers για αυτά.

Επιπλέον, υπάρχει ένα αρχείο plist που περιέχει γνωστές εφαρμογές που συχνά επιμένουν και διατηρούνται από την Apple που βρίσκεται στο: /System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/Resources/attributions.plist

[...]
"us.zoom.ZoomDaemon" => {
"AssociatedBundleIdentifiers" => [
0 => "us.zoom.xos"
]
"Attribution" => "Zoom"
"Program" => "/Library/PrivilegedHelperTools/us.zoom.ZoomDaemon"
"ProgramArguments" => [
0 => "/Library/PrivilegedHelperTools/us.zoom.ZoomDaemon"
]
"TeamIdentifier" => "BJ4HAAB9B3"
}
[...]

Enumeration

Είναι δυνατόν να καταμετρήσετε όλα τα ρυθμισμένα στοιχεία παρασκηνίου που εκτελούνται με το εργαλείο cli της Apple:

# The tool will always ask for the users password
sfltool dumpbtm

Επιπλέον, είναι επίσης δυνατό να καταχωρηθεί αυτή η πληροφορία με το DumpBTM.

# You need to grant the Terminal Full Disk Access for this to work
chmod +x dumpBTM
xattr -rc dumpBTM # Remove quarantine attr
./dumpBTM

Αυτές οι πληροφορίες αποθηκεύονται στο /private/var/db/com.apple.backgroundtaskmanagement/BackgroundItems-v4.btm και το Terminal χρειάζεται FDA.

Ανακατεύοντας με το BTM

Όταν βρεθεί μια νέα επιμονή, δημιουργείται ένα γεγονός τύπου ES_EVENT_TYPE_NOTIFY_BTM_LAUNCH_ITEM_ADD. Έτσι, οποιοσδήποτε τρόπος για να αποτραπεί αυτή η εκδήλωση από το να σταλεί ή ο πράκτορας από το να ειδοποιήσει τον χρήστη θα βοηθήσει έναν επιτιθέμενο να παρακάμψει το BTM.

  • Επαναφορά της βάσης δεδομένων: Η εκτέλεση της παρακάτω εντολής θα επαναφέρει τη βάση δεδομένων (θα πρέπει να την ξαναχτίσει από την αρχή), ωστόσο, για κάποιο λόγο, μετά την εκτέλεση αυτού, καμία νέα επιμονή δεν θα ειδοποιηθεί μέχρι να επανεκκινήσει το σύστημα.

  • Απαιτείται root.

# Reset the database
sfltool resettbtm
  • Σταματήστε τον Πράκτορα: Είναι δυνατόν να στείλετε ένα σήμα διακοπής στον πράκτορα ώστε να μην ειδοποιεί τον χρήστη όταν εντοπίζονται νέες ανιχνεύσεις.

# Get PID
pgrep BackgroundTaskManagementAgent
1011

# Stop it
kill -SIGSTOP 1011

# Check it's stopped (a T means it's stopped)
ps -o state 1011
T
  • Σφάλμα: Αν η διαδικασία που δημιούργησε την επιμονή υπάρχει γρήγορα αμέσως μετά από αυτήν, ο δαίμονας θα προσπαθήσει να λάβει πληροφορίες γι' αυτήν, θα αποτύχει, και δεν θα μπορέσει να στείλει το γεγονός που υποδεικνύει ότι ένα νέο πράγμα επιμένει.

Αναφορές και περισσότερες πληροφορίες σχετικά με το BTM:

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Last updated