macOS Security Protections
Reading time: 7 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
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Gatekeeper
Ο Gatekeeper χρησιμοποιείται συνήθως για να αναφέρεται στον συνδυασμό Quarantine + Gatekeeper + XProtect, 3 μονάδες ασφαλείας του macOS που προσπαθούν να αποτρέψουν τους χρήστες από το να εκτελούν δυνητικά κακόβουλο λογισμικό που έχει κατεβεί.
Περισσότερες πληροφορίες στο:
macOS Gatekeeper / Quarantine / XProtect
Processes Limitants
MACF
SIP - System Integrity Protection
Sandbox
Το MacOS Sandbox περιορίζει τις εφαρμογές που εκτελούνται μέσα στο sandbox στις επιτρεπόμενες ενέργειες που καθορίζονται στο προφίλ Sandbox με το οποίο εκτελείται η εφαρμογή. Αυτό βοηθά να διασφαλιστεί ότι η εφαρμογή θα έχει πρόσβαση μόνο σε αναμενόμενους πόρους.
TCC - Transparency, Consent, and Control
TCC (Transparency, Consent, and Control) είναι ένα πλαίσιο ασφαλείας. Είναι σχεδιασμένο να διαχειρίζεται τις άδειες των εφαρμογών, ρυθμίζοντας συγκεκριμένα την πρόσβασή τους σε ευαίσθητες δυνατότητες. Αυτό περιλαμβάνει στοιχεία όπως υπηρεσίες τοποθεσίας, επαφές, φωτογραφίες, μικρόφωνο, κάμερα, προσβασιμότητα και πλήρη πρόσβαση δίσκου. Το TCC διασφαλίζει ότι οι εφαρμογές μπορούν να έχουν πρόσβαση σε αυτές τις δυνατότητες μόνο μετά από ρητή συγκατάθεση του χρήστη, ενισχύοντας έτσι την ιδιωτικότητα και τον έλεγχο των προσωπικών δεδομένων.
Launch/Environment Constraints & Trust Cache
Οι περιορισμοί εκκίνησης στο macOS είναι μια λειτουργία ασφαλείας για να ρυθμίζουν την εκκίνηση διαδικασιών καθορίζοντας ποιος μπορεί να εκκινήσει μια διαδικασία, πώς και από πού. Εισήχθη στο macOS Ventura, κατηγοριοποιούν τα συστήματα δυαδικών αρχείων σε κατηγορίες περιορισμών μέσα σε μια 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...), ώστε ο χρήστης να γνωρίζει καλύτερα ποιο λογισμικό διατηρείται.
.png)
Αυτό λειτουργεί με έναν 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:
- https://youtu.be/9hjUmT031tc?t=26481
- https://www.patreon.com/posts/new-developer-77420730?l=fr
- https://support.apple.com/en-gb/guide/deployment/depdca572563/web
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
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.