macOS Auto Start
Αυτή η ενότητα βασίζεται σε μεγάλο βαθμό στη σειρά άρθρων του ιστολογίου Πέρα από τα καλά LaunchAgents, με στόχο να προστεθούν περισσότερες τοποθεσίες Αυτόματης Εκκίνησης (εάν είναι δυνατό), να υποδειχθεί ποιες τεχνικές λειτουργούν ακόμα σήμερα με την τελευταία έκδοση του macOS (13.4) και να καθοριστούν οι άδειες που απαιτούνται.
Παράκαμψη Αμμοδοχείου
Εδώ μπορείτε να βρείτε τοποθεσίες εκκίνησης χρήσιμες για τη παράκαμψη του αμμοδοχείου που σας επιτρέπει να απλά εκτελέσετε κάτι με το να το γράψετε σε ένα αρχείο και να περιμένετε για μια πολύ συνηθισμένη ενέργεια, ένα συγκεκριμένο χρονικό διάστημα ή μια ενέργεια που μπορείτε συνήθως να εκτελέσετε από μέσα σε ένα αμμοδοχείο χωρίς την ανάγκη ριζικών δικαιωμάτων.
Launchd
Τοποθεσίες
/Library/LaunchAgents
Ενεργοποίηση: Επανεκκίνηση
Απαιτούνται ρίζες
/Library/LaunchDaemons
Ενεργοποίηση: Επανεκκίνηση
Απαιτούνται ρίζες
/System/Library/LaunchAgents
Ενεργοποίηση: Επανεκκίνηση
Απαιτούνται ρίζες
/System/Library/LaunchDaemons
Ενεργοποίηση: Επανεκκίνηση
Απαιτούνται ρίζες
~/Library/LaunchAgents
Ενεργοποίηση: Επανασύνδεση
~/Library/LaunchDemons
Ενεργοποίηση: Επανασύνδεση
Περιγραφή & Εκμετάλλευση
Το launchd
είναι η πρώτη διαδικασία που εκτελείται από τον πυρήνα του OX S κατά την εκκίνηση και η τελευταία που ολοκληρώνεται κατά τον τερματισμό. Πρέπει πάντα να έχει το PID 1. Αυτή η διαδικασία θα διαβάσει και θα εκτελέσει τις ρυθμίσεις που υποδεικνύονται στα plists ASEP στα:
/Library/LaunchAgents
: Πράκτορες ανά χρήστη εγκατεστημένοι από τον διαχειριστή/Library/LaunchDaemons
: Δαίμονες παγκόσμιας εμβέλειας εγκατεστημένοι από τον διαχειριστή/System/Library/LaunchAgents
: Πράκτορες ανά χρήστη που παρέχονται από την Apple./System/Library/LaunchDaemons
: Δαίμονες παγκόσμιας εμβέλειας που παρέχονται από την Apple.
Όταν ένας χρήστης συνδέεται, τα plists που βρίσκονται στα /Users/$USER/Library/LaunchAgents
και /Users/$USER/Library/LaunchDemons
ξεκινούν με τις άδειες των συνδεδεμένων χρηστών.
Η κύρια διαφορά μεταξύ πρακτόρων και δαιμόνων είναι ότι οι πράκτορες φορτώνονται όταν ο χρήστης συνδέεται και οι δαίμονες φορτώνονται κατά την εκκίνηση του συστήματος (καθώς υπάρχουν υπηρεσίες όπως το ssh που πρέπει να εκτελούνται πριν οποιοσδήποτε χρήστης έχει πρόσβαση στο σύστημα). Επίσης, οι πράκτορες μπορεί να χρησιμοποιούν το γραφικό περιβάλλον, ενώ οι δαίμονες πρέπει να εκτελούνται στο παρασκήνιο.
Υπάρχουν περιπτώσεις όπου ένας πράκτορας πρέπει να εκτελεστεί πριν ο χρήστης συνδεθεί, αυτοί ονομάζονται PreLoginAgents. Για παράδειγμα, αυτό είναι χρήσιμο για την παροχή τεχνολογίας υποστήριξης κατά τη σύνδεση. Μπορούν επίσης να βρεθούν στο /Library/LaunchAgents
(δείτε εδώ ένα παράδειγμα).
Τα νέα αρχεία ρύθμισης Δαίμονων ή Πρακτόρων θα φορτωθούν μετά την επόμενη επανεκκίνηση ή χρησιμοποιώντας την εντολή launchctl load <target.plist>
. Είναι επίσης δυνατό να φορτωθούν αρχεία .plist χωρίς αυτήν την επέκταση με την εντολή launchctl -F <file>
(ωστόσο αυτά τα αρχεία plist δεν θα φορτωθούν αυτόματα μετά την επανεκκίνηση).
Είναι επίσης δυνατό να απενεργοποιηθεί με την εντολή launchctl unload <target.plist>
(η διαδικασία που αναφέρεται θα τερματιστεί).
Για να διασφαλίσετε ότι δεν υπάρχει τίποτα (όπως μια παράκαμψη) που εμποδίζει έναν Πράκτορα ή Δαίμονα από το να εκτελεστεί, εκτελέστε: sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.smdb.plist
Καταγράψτε όλους τους πράκτορες και δαίμονες που έχουν φορτωθεί από τον τρέχοντα χρήστη:
Αν ένα plist ανήκει σε έναν χρήστη, ακόμα κι αν βρίσκεται σε φακέλους συστήματος daemon, η εργασία θα εκτελείται ως ο χρήστης και όχι ως root. Αυτό μπορεί να αποτρέψει ορισμένες επιθέσεις εξάρτησης δικαιωμάτων.
Αρχεία εκκίνησης κελύφους
Ανάλυση: https://theevilbit.github.io/beyond/beyond_0001/ Ανάλυση (xterm): https://theevilbit.github.io/beyond/beyond_0018/
Χρήσιμο για παράκαμψη της αμμοθολογίας: ✅
Παράκαμψη TCC: ✅
Αλλά πρέπει να βρείτε μια εφαρμογή με παράκαμψη TCC που εκτελεί ένα κελί που φορτώνει αυτά τα αρχεία
Τοποθεσίες
~/.zshrc
,~/.zlogin
,~/.zshenv.zwc
,~/.zshenv
,~/.zprofile
Ενεργοποίηση: Ανοίξτε ένα τερματικό με zsh
/etc/zshenv
,/etc/zprofile
,/etc/zshrc
,/etc/zlogin
Ενεργοποίηση: Ανοίξτε ένα τερματικό με zsh
Απαιτείται root
~/.zlogout
Ενεργοποίηση: Έξοδος από ένα τερματικό με zsh
/etc/zlogout
Ενεργοποίηση: Έξοδος από ένα τερματικό με zsh
Απαιτείται root
Πιθανώς περισσότερα στο:
man zsh
~/.bashrc
Ενεργοποίηση: Ανοίξτε ένα τερματικό με bash
/etc/profile
(δεν λειτούργησε)~/.profile
(δεν λειτούργησε)~/.xinitrc
,~/.xserverrc
,/opt/X11/etc/X11/xinit/xinitrc.d/
Ενεργοποίηση: Αναμένεται να ενεργοποιηθεί με xterm, αλλά δεν είναι εγκατεστημένο και ακόμη και μετά την εγκατάσταση εμφανίζεται αυτό το σφάλμα: xterm:
DISPLAY is not set
Περιγραφή & Εκμετάλλευση
Κατά την εκκίνηση ενός περιβάλλοντος κελύφους όπως το zsh
ή το bash
, εκτελούνται ορισμένα αρχεία εκκίνησης. Η macOS χρησιμοποιεί επί του παρόντος το /bin/zsh
ως το προεπιλεγμένο κέλυφος. Αυτό το κέλυφος προσπελαύνεται αυτόματα όταν εκκινείται η εφαρμογή Terminal ή όταν ένα συσκευή προσπελαύνεται μέσω SSH. Ενώ τα bash
και sh
είναι επίσης παρόντα στη macOS, πρέπει να κληθούν ρητά για να χρησιμοποιηθούν.
Η σελίδα εγχειριδίου του zsh, την οποία μπορούμε να διαβάσουμε με την εντολή man zsh
, έχει μια μακρά περιγραφή των αρχείων εκκίνησης.
Επανεκκινούμενες Εφαρμογές
Η ρύθμιση της ενδεικτικής εκμετάλλευσης και η αποσύνδεση και επανασύνδεση ή ακόμη και η επανεκκίνηση δεν λειτούργησαν για μένα για να εκτελέσω την εφαρμογή. (Η εφαρμογή δεν εκτελούνταν, ίσως χρειάζεται να εκτελείται όταν πραγματοποιούνται αυτές οι ενέργειες)
Writeup: https://theevilbit.github.io/beyond/beyond_0021/
Τοποθεσία
~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.plist
Ενεργοποίηση: Επανεκκίνηση επανανοίξεως εφαρμογών
Περιγραφή & Εκμετάλλευση
Όλες οι εφαρμογές που πρόκειται να επανανοιχτούν βρίσκονται μέσα στο plist ~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.plist
Έτσι, για να κάνετε τις εφαρμογές επανεκκίνησης να εκκινούν τη δική σας, απλά χρειάζεται να προσθέσετε την εφαρμογή σας στη λίστα.
Το UUID μπορεί να βρεθεί αναφέροντας αυτό τον κατάλογο ή με την εντολή ioreg -rd1 -c IOPlatformExpertDevice | awk -F'"' '/IOPlatformUUID/{print $4}'
Για να ελέγξετε τις εφαρμογές που θα επανανοιχτούν, μπορείτε να κάνετε:
Για να προσθέσετε μια εφαρμογή σε αυτή τη λίστα μπορείτε να χρησιμοποιήσετε:
Προτιμήσεις Terminal
Χρήσιμο για παράκαμψη αμμόλοφου: ✅
Παράκαμψη TCC: ✅
Χρήση Terminal για άδειες FDA του χρήστη που το χρησιμοποιεί
Τοποθεσία
~/Library/Preferences/com.apple.Terminal.plist
Ενεργοποίηση: Άνοιγμα Terminal
Περιγραφή & Εκμετάλλευση
Στο ~/Library/Preferences
αποθηκεύονται οι προτιμήσεις του χρήστη στις Εφαρμογές. Κάποιες από αυτές τις προτιμήσεις μπορεί να περιέχουν μια διαμόρφωση για εκτέλεση άλλων εφαρμογών/σεναρίων.
Για παράδειγμα, το Terminal μπορεί να εκτελέσει έναν κώδικα κατά την εκκίνηση:
Αυτή η ρύθμιση αντανακλάται στο αρχείο ~/Library/Preferences/com.apple.Terminal.plist
όπως παρακάτω:
Έτσι, αν το plist των προτιμήσεων του τερματικού στο σύστημα μπορεί να αντικατασταθεί, τότε η λειτουργία open
μπορεί να χρησιμοποιηθεί για να ανοίξει το τερματικό και να εκτελεστεί εκείνη η εντολή.
Μπορείτε να προσθέσετε αυτό από το cli με:
Σενάρια τερματικού / Άλλες επεκτάσεις αρχείων
Χρήσιμο για παράκαμψη της αμμόλοφης: ✅
Παράκαμψη TCC: ✅
Χρήση τερματικού για να έχει ο χρήστης FDA δικαιώματα
Τοποθεσία
Οπουδήποτε
Ενεργοποίηση: Άνοιγμα Τερματικού
Περιγραφή & Εκμετάλλευση
Αν δημιουργήσετε ένα .terminal
σενάριο και το ανοίξετε, η εφαρμογή Τερματικό θα εκτελέσει αυτόματα τις εντολές που υποδηλώνονται εκεί. Αν η εφαρμογή Τερματικού έχει κάποια ειδικά προνόμια (όπως TCC), η εντολή σας θα εκτελεστεί με αυτά τα ειδικά προνόμια.
Δοκιμάστε το με:
Μπορείτε επίσης να χρησιμοποιήσετε τις επεκτάσεις .command
, .tool
, με κανονικό περιεχόμενο shell scripts και θα ανοίγονται επίσης από το Terminal.
Αν το terminal έχει Πλήρη Πρόσβαση Δίσκου θα μπορεί να ολοκληρώσει αυτή την ενέργεια (σημειώστε ότι η εντολή που εκτελείται θα είναι ορατή σε ένα παράθυρο του terminal).
Πρόσθετα Ήχου
Ανάλυση: https://theevilbit.github.io/beyond/beyond_0013/ Ανάλυση: https://posts.specterops.io/audio-unit-plug-ins-896d3434a882
Τοποθεσία
/Library/Audio/Plug-Ins/HAL
Απαιτεί δικαιώματα ρίζας
Ενεργοποίηση: Επανεκκίνηση του coreaudiod ή του υπολογιστή
/Library/Audio/Plug-ins/Components
Απαιτεί δικαιώματα ρίζας
Ενεργοποίηση: Επανεκκίνηση του coreaudiod ή του υπολογιστή
~/Library/Audio/Plug-ins/Components
Ενεργοποίηση: Επανεκκίνηση του coreaudiod ή του υπολογιστή
/System/Library/Components
Απαιτεί δικαιώματα ρίζας
Ενεργοποίηση: Επανεκκίνηση του coreaudiod ή του υπολογιστή
Περιγραφή
Σύμφωνα με τις προηγούμενες αναλύσεις είναι δυνατόν να συντάξετε μερικά πρόσθετα ήχου και να τα φορτώσετε.
Πρόσθετα QuickLook
Ανάλυση: https://theevilbit.github.io/beyond/beyond_0028/
Τοποθεσία
/System/Library/QuickLook
/Library/QuickLook
~/Library/QuickLook
/Applications/AppNameHere/Contents/Library/QuickLook/
~/Applications/AppNameHere/Contents/Library/QuickLook/
Περιγραφή & Εκμετάλλευση
Τα πρόσθετα QuickLook μπορούν να εκτελεστούν όταν ενεργοποιείτε την προεπισκόπηση ενός αρχείου (πατώντας το πλήκτρο διαστήματος με το αρχείο που έχετε επιλέξει στο Finder) και ένα πρόσθετο που υποστηρίζει αυτόν τον τύπο αρχείου είναι εγκατεστημένο.
Είναι δυνατόν να συντάξετε το δικό σας πρόσθετο QuickLook, να το τοποθετήσετε σε μία από τις προηγούμενες τοποθεσίες για να το φορτώσετε και στη συνέχεια να μεταβείτε σε ένα υποστηριζόμενο αρχείο και να πατήσετε διαστήματος για να το ενεργοποιήσετε.
Συνδέσεις Εισόδου/Εξόδου
Αυτό δεν λειτούργησε για μένα, ούτε με τη σύνδεση εισόδου χρήστη ούτε με τη σύνδεση εξόδου ρίζας
Ανάλυση: https://theevilbit.github.io/beyond/beyond_0022/
Τοποθεσία
Χρειάζεται να μπορείτε να εκτελέσετε κάτι σαν
defaults write com.apple.loginwindow LoginHook /Users/$USER/hook.sh
Βρίσκεται στο
~/Library/Preferences/com.apple.loginwindow.plist
Είναι απαρχαιωμένες αλλά μπορούν να χρησιμοποιηθούν για να εκτελέσετε εντολές όταν ένας χρήστης συνδέεται.
Αυτή η ρύθμιση αποθηκεύεται στο /Users/$USER/Library/Preferences/com.apple.loginwindow.plist
Για να το διαγράψετε:
Ο χρήστης root αποθηκεύεται στο /private/var/root/Library/Preferences/com.apple.loginwindow.plist
Παράκαμψη Συνθηκών Αμμοθεράπειας
Εδώ μπορείτε να βρείτε τις τοποθεσίες εκκίνησης χρήσιμες για τη παράκαμψη της αμμοθεράπειας που σας επιτρέπει να εκτελέσετε κάτι απλά γράφοντάς το σε ένα αρχείο και περιμένοντας μη πολύ συνηθισμένες συνθήκες όπως συγκεκριμένα εγκατεστημένα προγράμματα, "ασυνήθιστες" ενέργειες χρήστη ή περιβάλλοντα.
Χρονοδιάγραμμα (Cron)
Ανάλυση: https://theevilbit.github.io/beyond/beyond_0004/
Χρήσιμο για παράκαμψη αμμοθεράπειας: ✅
Ωστόσο, χρειάζεστε τη δυνατότητα εκτέλεσης του δυαδικού
crontab
Ή να είστε root
Παράκαμψη TCC: 🔴
Τοποθεσία
/usr/lib/cron/tabs/
,/private/var/at/tabs
,/private/var/at/jobs
,/etc/periodic/
Απαιτείται root για άμεση πρόσβαση εγγραφής. Δεν απαιτείται root αν μπορείτε να εκτελέσετε
crontab <αρχείο>
Ενεργοποίηση: Εξαρτάται από την εργασία του χρονοδιαγράμματος
Περιγραφή & Εκμετάλλευση
Καταχωρήστε τις εργασίες του χρονοδιαγράμματος του τρέχοντος χρήστη με:
Μπορείτε επίσης να δείτε όλες τις εργασίες cron των χρηστών στα /usr/lib/cron/tabs/
και /var/at/tabs/
(χρειάζεται root).
Στο MacOS μπορούν να βρεθούν διάφοροι φάκελοι που εκτελούν scripts με συγκεκριμένη συχνότητα στα:
Εκεί μπορείτε να βρείτε τις κανονικές εργασίες cron, τις εργασίες at (που δε χρησιμοποιούνται πολύ) και τις περιοδικές εργασίες (χρησιμοποιούνται κυρίως για τον καθαρισμό προσωρινών αρχείων). Οι καθημερινές περιοδικές εργασίες μπορούν να εκτελεστούν για παράδειγμα με: periodic daily
.
Για να προσθέσετε μια εργασία cron χρήστη προγραμματικά είναι δυνατόν να χρησιμοποιήσετε:
iTerm2
Ανάλυση: https://theevilbit.github.io/beyond/beyond_0002/
Χρήσιμο για παράκαμψη αμμόλοφου: ✅
Παράκαμψη TCC: ✅
Το iTerm2 χρησιμοποιείται για τη χορήγηση δικαιωμάτων TCC
Τοποθεσίες
~/Library/Application Support/iTerm2/Scripts/AutoLaunch
Σήμανση: Άνοιγμα iTerm
~/Library/Application Support/iTerm2/Scripts/AutoLaunch.scpt
Σήμανση: Άνοιγμα iTerm
~/Library/Preferences/com.googlecode.iterm2.plist
Σήμανση: Άνοιγμα iTerm
Περιγραφή & Εκμετάλλευση
Τα scripts που αποθηκεύονται στο ~/Library/Application Support/iTerm2/Scripts/AutoLaunch
θα εκτελεστούν. Για παράδειγμα:
Το script ~/Library/Application Support/iTerm2/Scripts/AutoLaunch.scpt
θα εκτελεστεί επίσης:
Οι προτιμήσεις του iTerm2 βρίσκονται στο ~/Library/Preferences/com.googlecode.iterm2.plist
μπορεί να υποδεικνύουν έναν εντολή για εκτέλεση όταν ανοίγει το τερματικό iTerm2.
Αυτή η ρύθμιση μπορεί να προσαρμοστεί στις ρυθμίσεις του iTerm2:
Και η εντολή αντανακλάται στις προτιμήσεις:
Μπορείτε να ορίσετε την εντολή που θα εκτελείται με:
Υπάρχει μεγάλη πιθανότητα να υπάρχουν άλλοι τρόποι εκμετάλλευσης των προτιμήσεων του iTerm2 για την εκτέλεση αυθαίρετων εντολών.
xbar
Ανάλυση: https://theevilbit.github.io/beyond/beyond_0007/
Χρήσιμο για παράκαμψη του sandbox: ✅
Αλλά το xbar πρέπει να είναι εγκατεστημένο
TCC παράκαμψη: ✅
Ζητά δικαιώματα προσβασιμότητας
Τοποθεσία
~/Library/Application\ Support/xbar/plugins/
Ενεργοποίηση: Μόλις εκτελεστεί το xbar
Περιγραφή
Αν το δημοφιλές πρόγραμμα xbar είναι εγκατεστημένο, είναι δυνατόν να γραφτεί ένα shell script στο ~/Library/Application\ Support/xbar/plugins/
το οποίο θα εκτελείται όταν ξεκινάει το xbar:
Hammerspoon
Ανάλυση: https://theevilbit.github.io/beyond/beyond_0008/
Χρήσιμο για παράκαμψη της αμμόλοφης: ✅
Αλλά πρέπει να είναι εγκατεστημένο το Hammerspoon
Παράκαμψη TCC: ✅
Ζητά δικαιώματα προσβασιμότητας
Τοποθεσία
~/.hammerspoon/init.lua
Ενεργοποίηση: Μόλις εκτελεστεί το Hammerspoon
Περιγραφή
Hammerspoon λειτουργεί ως πλατφόρμα αυτοματισμού για το macOS, εκμεταλλευόμενο τη γλώσσα σεναρίου LUA για τις λειτουργίες του. Είναι σημαντικό να σημειωθεί ότι υποστηρίζει την ολοκλήρωση πλήρους κώδικα AppleScript και την εκτέλεση κελιών εντολών, βελτιώνοντας σημαντικά τις δυνατότητες σεναριογραφίας του.
Η εφαρμογή αναζητά ένα μόνο αρχείο, ~/.hammerspoon/init.lua
, και όταν ξεκινάει, το σενάριο θα εκτελεστεί.
BetterTouchTool
Χρήσιμο για παράκαμψη του sandbox: ✅
Αλλά το BetterTouchTool πρέπει να είναι εγκατεστημένο
TCC παράκαμψη: ✅
Ζητά δικαιώματα Automation-Shortcuts και Accessibility
Τοποθεσία
~/Library/Application Support/BetterTouchTool/*
Αυτό το εργαλείο επιτρέπει να υποδείξετε εφαρμογές ή scripts προς εκτέλεση όταν πατιούνται κάποια συντομεύσεις πληκτρολογίου. Ένας επιτιθέμενος μπορεί να διαμορφώσει τη δική του συντόμευση και ενέργεια προς εκτέλεση στη βάση δεδομένων για να εκτελέσει αυθαίρετο κώδικα (μια συντόμευση θα μπορούσε απλά να είναι το πάτημα ενός πλήκτρου).
Alfred
Χρήσιμο για παράκαμψη του sandbox: ✅
Αλλά το Alfred πρέπει να είναι εγκατεστημένο
TCC παράκαμψη: ✅
Ζητά δικαιώματα Automation, Accessibility και ακόμα πρόσβαση στον πλήρη δίσκο
Τοποθεσία
???
Επιτρέπει τη δημιουργία ροών εργασίας που μπορούν να εκτελέσουν κ
Περιγραφή & Εκμετάλλευση
Από προεπιλογή, εκτός αν το PermitUserRC no
στο /etc/ssh/sshd_config
, όταν ένας χρήστης συνδέεται μέσω SSH τα scripts /etc/ssh/sshrc
και ~/.ssh/rc
θα εκτελεστούν.
Στοιχεία Σύνδεσης
Ανάλυση: https://theevilbit.github.io/beyond/beyond_0003/
Χρήσιμο για παράκαμψη της αμμόλοφης: ✅
Αλλά χρειάζεται να εκτελέσετε το
osascript
με ορίσματαΠαράκαμψη TCC: 🔴
Τοποθεσίες
~/Library/Application Support/com.apple.backgroundtaskmanagementagent
Ενεργοποίηση: Σύνδεση
Το payload εκμετάλλευσης αποθηκεύεται καλώντας το
osascript
/var/db/com.apple.xpc.launchd/loginitems.501.plist
Ενεργοποίηση: Σύνδεση
Απαιτείται ρίζα
Περιγραφή
Στις Προτιμήσεις Συστήματος -> Χρήστες & Ομάδες -> Στοιχεία Σύνδεσης μπορείτε να βρείτε στοιχεία που θα εκτελούνται όταν ο χρήστης συνδέεται. Είναι δυνατόν να τα καταγράψετε, προσθέσετε και αφαιρέσετε από τη γραμμή εντολών:
Αυτά τα στοιχεία αποθηκεύονται στο αρχείο ~/Library/Application Support/com.apple.backgroundtaskmanagementagent
Τα στοιχεία σύνδεσης μπορούν επίσης να υποδειχθούν χρησιμοποιώντας το API SMLoginItemSetEnabled το οποίο θα αποθηκεύσει τη διαμόρφωση στο /var/db/com.apple.xpc.launchd/loginitems.501.plist
ZIP ως Στοιχείο Σύνδεσης
(Ελέγξτε την προηγούμενη ενότητα σχετικά με τα Στοιχεία Σύνδεσης, αυτή είναι μια επέκταση)
Εάν αποθηκεύσετε ένα αρχείο ZIP ως ένα Στοιχείο Σύνδεσης, το Archive Utility
θα το ανοίξει και αν το zip ήταν για παράδειγμα αποθηκευμένο στο ~/Library
και περιείχε τον Φάκελο LaunchAgents/file.plist
με ένα backdoor, αυτός ο φάκελος θα δημιουργηθεί (δεν υπάρχει από προεπιλογή) και το plist θα προστεθεί έτσι την επόμενη φορά που ο χρήστης συνδέεται ξανά, το backdoor που υποδεικνύεται στο plist θα εκτελεστεί.
Μια άλλη επιλογή θα ήταν να δημιουργήσετε τα αρχεία .bash_profile
και .zshenv
μέσα στον φάκελο χρήστη HOME, έτσι αν ο φάκελος LaunchAgents υπάρχει ήδη, αυτή η τεχνική θα λειτουργούσε ακόμα.
At
Ανάλυση: https://theevilbit.github.io/beyond/beyond_0014/
Χρήσιμο για παράκαμψη του sandbox: ✅
Αλλά πρέπει να εκτελέσετε το
at
και πρέπει να είναι ενεργοποιημένοΠαράκαμψη TCC: 🔴
Τοποθεσία
Χρειάζεται να εκτελέσετε το
at
και πρέπει να είναι ενεργοποιημένο
Περιγραφή
Τα tasks του at
σχεδιάστηκαν για το προγραμματισμό μιας φοράς για να εκτελεστούν σε συγκεκριμένες χρονικές στιγμές. Αντίθετα με τα cron jobs, τα tasks του at
αφαιρούνται αυτόματα μετά την εκτέλεση. Είναι κρίσιμο να σημειωθεί ότι αυτά τα tasks είναι μόνιμα μεταξύ επανεκκινήσεων του συστήματος, κάτι που τα καθιστά πιθανές ανησυχίες ασφαλείας υπό συγκεκριμένες συνθήκες.
Από προεπιλογή είναι απενεργοποιημένα αλλά ο χρήστης root μπορεί να τα ενεργοποιήσει με:
Αυτό θα δημιουργήσει ένα αρχείο σε 1 ώρα:
Ελέγξτε την ουρά εργασιών χρησιμοποιώντας το atq:
Παραπάνω μπορούμε να δούμε δύο προγραμματισμένες εργασίες. Μπορούμε να εκτυπώσουμε τις λεπτομέρειες της εργασίας χρησιμοποιώντας την εντολή at -c JOBNUMBER
Αν οι εργασίες του AT δεν είναι ενεργοποιημένες, οι δημιουργημένες εργασίες δεν θα εκτελεστούν.
Τα αρχεία εργασίας μπορούν να βρεθούν στο /private/var/at/jobs/
Το όνομα αρχείου περιέχει την ουρά, τον αριθμό της εργασίας και την ώρα που είναι προγραμματισμένο να τρέξει. Για παράδειγμα, ας δούμε το a0001a019bdcd2
.
a
- αυτή είναι η ουρά0001a
- αριθμός εργασίας σε δεκαεξαδική μορφή,0x1a = 26
019bdcd2
- ώρα σε δεκαεξαδική μορφή. Αντιπροσωπεύει τα λεπτά που έχουν περάσει από την εποχή. Το0x019bdcd2
είναι26991826
σε δεκαδική μορφή. Αν το πολλαπλασιάσουμε με 60 παίρνουμε1619509560
, το οποίο είναιGMT: 2021. Απρίλιος 27., Τρίτη 7:46:00
.
Αν εκτυπώσουμε το αρχείο εργασίας, θα δούμε ότι περιέχει τις ίδιες πληροφορίες που λάβαμε χρησιμοποιώντας την εντολή at -c
.
Δράσεις Φακέλου
Ανάλυση: https://theevilbit.github.io/beyond/beyond_0024/ Ανάλυση: https://posts.specterops.io/folder-actions-for-persistence-on-macos-8923f222343d
Χρήσιμο για παράκαμψη του sandbox: ✅
Αλλά χρειάζεστε τη δυνατότητα να καλέσετε το
osascript
με ορίσματα για να επικοινωνήσετε με τοSystem Events
και να μπορέσετε να ρυθμίσετε Δράσεις ΦακέλουΠαράκαμψη TCC: 🟠
Διαθέτει κάποιες βασικές άδειες TCC όπως Desktop, Documents και Downloads
Τοποθεσία
/Library/Scripts/Folder Action Scripts
Απαιτείται δικαιώματα ρίζας
Ενεργοποίηση: Πρόσβαση στον καθορισμένο φάκελο
~/Library/Scripts/Folder Action Scripts
Ενεργοποίηση: Πρόσβαση στον καθορισμένο φάκελο
Περιγραφή & Εκμετάλλευση
Οι Δράσεις Φακέλου είναι σενάρια που ενεργοποιούνται αυτόματα από αλλαγές σε έναν φάκελο, όπως προσθήκη, αφαίρεση στοιχείων, ή άλλες ενέργειες όπως το άνοιγμα ή η αλλαγή μεγέθους του παραθύρου του φακέλου. Αυτές οι ενέργειες μπορούν να χρησιμοποιηθούν για διάφορες εργασίες και μπορούν να ενεργοποιηθούν με διαφορετικούς τρόπους όπως χρησιμοποιώντας το UI του Finder ή εντολές τερματικού.
Για τη ρύθμιση Δράσεων Φακέλου, έχετε επιλογές όπως:
Δημιουργία ενός ροής εργασίας Δράσης Φακέλου με το Automator και εγκατάστασή του ως υπηρεσία.
Επισύναψη ενός σεναρίου χειροκίνητα μέσω της Ρύθμισης Δράσεων Φακέλου στο μενού περιβάλλοντος ενός φακέλου.
Χρήση του OSAScript για να στείλετε μηνύματα Apple Event στο
System Events.app
για τη ρύθμιση προγραμματιστικά μιας Δράσης Φακέλου.
Αυτή η μέθοδος είναι ιδιαίτερα χρήσιμη για την ενσωμάτωση της ενέργειας στο σύστημα, προσφέροντας ένα επίπεδο διατήρησης.
Το παρακάτω σενάριο είναι ένα παράδειγμα του τι μπορεί να εκτελεστεί από μια Δράση Φακέλου:
Για να κάνετε το παραπάνω script χρήσιμο με τις Δράσεις Φακέλου, μεταγλωτίστε το χρησιμοποιώντας:
Αφού έχει συνταχθεί το script, εγκαταστήστε τις Δράσεις Φακέλου εκτελώντας το παρακάτω script. Αυτό το script θα ενεργοποιήσει τις Δράσεις Φακέλου γενικά και θα συνδέσει ειδικά το προηγουμένως συνταγμένο script στον φάκελο της επιφάνειας εργασίας.
Εκτελέστε το σενάριο εγκατάστασης με:
Αυτός είναι ο τρόπος για να υλοποιήσετε αυτήν την επιμονή μέσω GUI:
Αυτός είναι ο κώδικας που θα εκτελεστεί:
Μεταγλωττίστε το με: osacompile -l JavaScript -o folder.scpt source.js
Μετακινήστε το σε:
Στη συνέχεια, ανοίξτε την εφαρμογή Folder Actions Setup
, επιλέξτε τον φάκελο που θέλετε να παρακολουθείτε και επιλέξτε στην περίπτωσή σας το folder.scpt
(στη δική μου περίπτωση το ονόμασα output2.scp):
Τώρα, αν ανοίξετε αυτόν τον φάκελο με το Finder, το σενάριό σας θα εκτελεστεί.
Αυτή η ρύθμιση αποθηκεύτηκε στο plist που βρίσκεται στο ~/Library/Preferences/com.apple.FolderActionsDispatcher.plist
σε μορφή base64.
Τώρα, ας προσπαθήσουμε να προετοιμάσουμε αυτήν την επιμονή χωρίς πρόσβαση στο γραφικό περιβάλλον:
Αντιγράψτε το
~/Library/Preferences/com.apple.FolderActionsDispatcher.plist
στο/tmp
για αντίγραφο ασφαλείας:
cp ~/Library/Preferences/com.apple.FolderActionsDispatcher.plist /tmp
Αφαιρέστε τις Folder Actions που μόλις ορίσατε:
Τώρα που έχουμε ένα κενό περιβάλλον
Αντιγράψτε το αρχείο αντιγράφου ασφαλείας:
cp /tmp/com.apple.FolderActionsDispatcher.plist ~/Library/Preferences/
Ανοίξτε την εφαρμογή Folder Actions Setup για να χρησιμοποιήσετε αυτήν τη ρύθμιση:
open "/System/Library/CoreServices/Applications/Folder Actions Setup.app/"
Και αυτό δεν λειτούργησε για μένα, αλλά αυτές είναι οι οδηγίες από το άρθρο:(
Συντομεύσεις Dock
Άρθρο: https://theevilbit.github.io/beyond/beyond_0027/
Χρήσιμο για παράκαμψη αμμοθονίου: ✅
Αλλά πρέπει να έχετε εγκαταστήσει μια κακόβουλη εφαρμογή μέσα στο σύστημα
Παράκαμψη TCC: 🔴
Τοποθεσία
~/Library/Preferences/com.apple.dock.plist
Ενέργεια ενεργοποίησης: Όταν ο χρήστης κάνει κλικ στην εφαρμογή μέσα στο dock
Περιγραφή & Εκμετάλλευση
Όλες οι εφαρμογές που εμφανίζονται στο Dock καθορίζονται μέσα στο plist: ~/Library/Preferences/com.apple.dock.plist
Είναι δυνατόν να προστεθεί μια εφαρμογή μόνο με:
Χρησιμοποιώντας κάποια κοινωνική μηχανική μπορείτε να προσωποποιήσετε για παράδειγμα το Google Chrome μέσα στο dock και να εκτελέσετε πραγματικά το δικό σας script:
Επιλογείς Χρωμάτων
Ανάλυση: https://theevilbit.github.io/beyond/beyond_0017
Χρήσιμο για παράκαμψη της αμμόλοφου: 🟠
Χρειάζεται μια πολύ συγκεκριμένη ενέργεια
Θα καταλήξετε σε μια άλλη αμμόλοφο
Παράκαμψη TCC: 🔴
Τοποθεσία
/Library/ColorPickers
Απαιτείται δικαιώματα ρίζας
Ενεργοποίηση: Χρήση του επιλογέα χρωμάτων
~/Library/ColorPickers
Ενεργοποίηση: Χρήση του επιλογέα χρωμάτων
Περιγραφή & Εκμετάλλευση
Συνθέστε ένα δέσμη επιλογέα χρωμάτων με τον κώδικά σας (μπορείτε να χρησιμοποιήσετε αυτόν για παράδειγμα) και προσθέστε έναν κατασκευαστή (όπως στην ενότητα Οθόνης Προστασίας) και αντιγράψτε τη δέσμη στο ~/Library/ColorPickers
.
Έπειτα, όταν ενεργοποιηθεί ο επιλογέας χρωμάτων, θα πρέπει να ενεργοποιηθεί και το δικό σας.
Σημειώστε ότι το δυαδικό που φορτώνει τη βιβλιοθήκη σας έχει μια πολύ περιοριστική αμμόλοφο: /System/Library/Frameworks/AppKit.framework/Versions/C/XPCServices/LegacyExternalColorPickerService-x86_64.xpc/Contents/MacOS/LegacyExternalColorPickerService-x86_64
Πρόσθετα Finder Sync
Ανάλυση: https://theevilbit.github.io/beyond/beyond_0026/ Ανάλυση: https://objective-see.org/blog/blog_0x11.html
Χρήσιμο για παράκαμψη του sandbox: Όχι, επειδή χρειάζεται να εκτελέσετε τη δική σας εφαρμογή
Παράκαμψη TCC: ???
Τοποθεσία
Μια συγκεκριμένη εφαρμογή
Περιγραφή & Εκμετάλλευση
Ένα παράδειγμα εφαρμογής με μια Επέκταση Finder Sync μπορεί να βρεθεί εδώ.
Οι εφαρμογές μπορούν να έχουν Επεκτάσεις Finder Sync
. Αυτή η επέκταση θα μπει μέσα σε μια εφαρμογή που θα εκτελεστεί. Επιπλέον, για την επέκταση να μπορεί να εκτελέσει τον κώδικά της πρέπει να είναι υπογεγραμμένη με κάποιο έγκυρο πιστοποιητικό ανάπτυξης της Apple, πρέπει να είναι σε sandbox (αν και μπορούν να προστεθούν χαλαρές εξαιρέσεις) και πρέπει να είναι εγγεγραμμένη με κάτι σαν:
Screen Saver
Writeup: https://theevilbit.github.io/beyond/beyond_0016/ Writeup: https://posts.specterops.io/saving-your-access-d562bf5bf90b
Χρήσιμο για παράκαμψη του sandbox: 🟠
Αλλά θα καταλήξετε σε ένα κοινό sandbox εφαρμογής
TCC παράκαμψη: 🔴
Τοποθεσία
/System/Library/Screen Savers
Απαιτείται δικαιώματα ρίζας
Ενεργοποίηση: Επιλογή του screen saver
/Library/Screen Savers
Απαιτείται δικαιώματα ρίζας
Ενεργοποίηση: Επιλογή του screen saver
~/Library/Screen Savers
Ενεργοποίηση: Επιλογή του screen saver
Περιγραφή & Εκμετάλλευση
Δημιουργήστε ένα νέο έργο στο Xcode και επιλέξτε το πρότυπο για τη δημιουργία ενός νέου Screen Saver. Στη συνέχεια, προσθέστε τον κώδικά σας, για παράδειγμα τον παρακάτω κώδικα για τη δημιουργία καταγραφών.
Κάντε Build, και αντιγράψτε το πακέτο .saver
στο ~/Library/Screen Savers
. Στη συνέχεια, ανοίξτε το GUI του Screen Saver και αν απλά κάνετε κλικ πάνω του, θα πρέπει να δημιουργηθούν πολλές καταγραφές:
Σημειώστε ότι επειδή μέσα στα δικαιώματα του δυαδικού που φορτώνει αυτόν τον κώδικα (/System/Library/Frameworks/ScreenSaver.framework/PlugIns/legacyScreenSaver.appex/Contents/MacOS/legacyScreenSaver
) μπορείτε να βρείτε το com.apple.security.app-sandbox
θα βρίσκεστε μέσα στο κοινό sandbox εφαρμογών.
Saver code:
Πρόσθετα Spotlight
Ανάλυση: https://theevilbit.github.io/beyond/beyond_0011/
Χρήσιμα για παράκαμψη του sandbox: 🟠
Αλλά θα βρεθείτε σε ένα sandbox εφαρμογής
Παράκαμψη TCC: 🔴
Το sandbox φαίνεται πολύ περιορισμένο
Τοποθεσία
~/Library/Spotlight/
Ενεργοποίηση: Δημιουργείται ένα νέο αρχείο με μια επέκταση που διαχειρίζεται το πρόσθετο του spotlight.
/Library/Spotlight/
Ενεργοποίηση: Δημιουργείται ένα νέο αρχείο με μια επέκταση που διαχειρίζεται το πρόσθετο του spotlight.
Απαιτείται δικαιώματα ριζοσυστήματος
/System/Library/Spotlight/
Ενεργοποίηση: Δημιουργείται ένα νέο αρχείο με μια επέκταση που διαχειρίζεται το πρόσθετο του spotlight.
Απαιτείται δικαιώματα ριζοσυστήματος
Some.app/Contents/Library/Spotlight/
Ενεργοποίηση: Δημιουργείται ένα νέο αρχείο με μια επέκταση που διαχειρίζεται το πρόσθετο του spotlight.
Απαιτείται νέα εφαρμογή
Περιγραφή & Εκμετάλλευση
Το Spotlight είναι η ενσωματωμένη λειτουργία αναζήτησης του macOS, σχεδιασμένη για να παρέχει στους χρήστες γρήγορη και ολοκληρωμένη πρόσβαση στα δεδομένα στους υπολογιστές τους. Για να διευκολύνει αυτήν τη γρήγορη δυνατότητα αναζήτησης, το Spotlight διατηρεί μια ιδιόκτητη βάση δεδομένων και δημιουργεί έναν δείκτη με το να αναλύει τα περισσότερα αρχεία, επιτρέποντας έτσι γρήγορες αναζητήσεις τόσο με βάση τα ονόματα αρχείων όσο και το περιεχόμενό τους.
Η βασική μηχανική του Spotlight περιλαμβάνει ένα κεντρικό διεργασία με το όνομα 'mds', που σημαίνει 'metadata server'. Αυτή η διαδικασία οργανώνει ολόκληρη την υπηρεσία Spotlight. Συμπληρώνοντας αυτό, υπάρχουν πολλοί δαίμονες 'mdworker' που εκτελούν διάφορες εργασίες συντήρησης, όπως ευρετήριαση διαφορετικών τύπων αρχείων (ps -ef | grep mdworker
). Αυτές οι εργασίες γίνονται δυνατές μέσω των πρόσθετων εισαγωγέων Spotlight, ή ".mdimporter bundles", που επιτρέπουν στο Spotlight να κατανοήσει και να ευρετηριάσει περιεχόμενο από μια ποικιλία μορφών αρχείων.
Τα πρόσθετα ή .mdimporter
bundles βρίσκονται στις προηγουμένως αναφερθείσες τοποθεσίες και αν εμφανιστεί ένα νέο bundle, φορτώνεται μέσα σε λίγα λεπτά (χωρίς την ανάγκη επανεκκίνησης κάποιας υπηρεσίας). Αυτά τα bundles πρέπει να υποδεικνύουν ποιους τύπους αρχείων και επεκτάσεις μπορούν να διαχειριστούν, με αυτόν τον τρόπο, το Spotlight θα τα χρησιμοποιήσει όταν δημιουργηθεί ένα νέο αρχείο με την υποδειγμένη επέκταση.
Είναι δυνατόν να βρεθούν όλοι οι mdimporters
που φορτώνονται τρέχοντας:
Και για παράδειγμα /Library/Spotlight/iBooksAuthor.mdimporter χρησιμοποιείται για την ανάλυση αυτού του τύπου αρχείων (επεκτάσεις .iba
και .book
μεταξύ άλλων):
Εάν ελέγξετε το Plist άλλου mdimporter
, ενδέχεται να μη βρείτε την καταχώριση UTTypeConformsTo
. Αυτό συμβαίνει επειδή πρόκειται για ενσωματωμένο Uniform Type Identifiers (UTI) και δεν χρειάζεται να καθορίσει επεκτάσεις.
Επιπλέον, τα προεπιλεγμένα πρόσθετα του συστήματος έχουν πάντα προτεραιότητα, έτσι ένας επιτιθέμενος μπορεί να έχει πρόσβαση μόνο σε αρχεία που δεν έχουν διαφορετικά ευρεθεί από τους ίδιους τους mdimporters
της Apple.
Για να δημιουργήσετε το δικό σας εισαγωγέα, μπορείτε να ξεκινήσετε με αυτό το έργο: https://github.com/megrimm/pd-spotlight-importer και στη συνέχεια να αλλάξετε το όνομα, το CFBundleDocumentTypes
και να προσθέσετε UTImportedTypeDeclarations
ώστε να υποστηρίζει την επέκταση που θέλετε και να τα αντικατοπτρίζετε στο schema.xml
.
Στη συνέχεια αλλάξτε τον κώδικα της συνάρτησης GetMetadataForFile
για να εκτελεί το payload σας όταν δημιουργείται ένα αρχείο με την επεξεργασμένη επέκταση.
Τέλος κάντε build και αντιγράψτε τον νέο σας .mdimporter
σε μία από τις προηγούμενες τοποθεσίες και μπορείτε να ελέγξετε όταν φορτώνεται παρακολουθώντας τα logs ή ελέγχοντας το mdimport -L.
Πίνακας Προτιμήσεων
Δεν φαίνεται ότι λειτουργεί πλέον.
Ανάλυση: https://theevilbit.github.io/beyond/beyond_0009/
Τοποθεσία
/System/Library/PreferencePanes
/Library/PreferencePanes
~/Library/PreferencePanes
Περιγραφή
Δεν φαίνεται ότι λειτουργεί πλέον.
Παράκαμψη Αμμοθονίου Root
Εδώ μπορείτε να βρείτε τοποθεσίες εκκίνησης χρήσιμες για παράκαμψη αμμοθονίου που σάς επιτρέπουν να απλά εκτελέσετε κάτι γράφοντάς το σε ένα αρχείο ως χρήστης root και/ή απαιτώντας άλλες περίεργες συνθήκες.
Περιοδικός
Ανάλυση: https://theevilbit.github.io/beyond/beyond_0019/
Τοποθεσία
/etc/periodic/daily
,/etc/periodic/weekly
,/etc/periodic/monthly
,/usr/local/etc/periodic
Απαιτούνται δικαιώματα root
Ενεργοποίηση: Όταν έρθει η ώρα
/etc/daily.local
,/etc/weekly.local
ή/etc/monthly.local
Απαιτούνται δικαιώματα root
Ενεργοποίηση: Όταν έρθει η ώρα
Περιγραφή & Εκμετάλλευση
Τα περιοδικά scripts (/etc/periodic
) εκτελούνται λόγω των launch daemons που έχουν διαμορφωθεί στο /System/Library/LaunchDaemons/com.apple.periodic*
. Σημειώστε ότι τα scripts που αποθηκεύονται στο /etc/periodic/
εκτελούνται ως ο ιδιοκτήτης του αρχείου, οπότε αυτό δεν θα λειτουργήσει για πιθανή ανόδο ικανοτήτων.
Υπάρχουν και άλλα περιοδικά scripts που θα εκτελεστούν όπως υποδεικνύεται στο /etc/defaults/periodic.conf
:
Εάν καταφέρετε να γράψετε οποιοδήποτε από τα αρχεία /etc/daily.local
, /etc/weekly.local
ή /etc/monthly.local
θα εκτελεστεί νωρίτερα ή αργότερα.
Σημειώστε ότι το περιοδικό script θα εκτελεστεί ως ο ιδιοκτήτης του script. Έτσι, εάν ένας κανονικός χρήστης είναι ιδιοκτήτης του script, θα εκτελεστεί ως αυτός ο χρήστης (κάτι που μπορεί να αποτρέψει επιθέσεις εξάρτησης από προνομιακά δικαιώματα).
PAM
Ανάλυση: Linux Hacktricks PAM Ανάλυση: https://theevilbit.github.io/beyond/beyond_0005/
Τοποθεσία
Πάντα απαιτείται root
Περιγραφή & Εκμετάλλευση
Καθώς το PAM είναι περισσότερο εστιασμένο στη μόνιμη διατήρηση και το malware παρά στην εύκολη εκτέλεση μέσα στο macOS, αυτό το blog δεν θα δώσει μια λεπτομερή εξήγηση, διαβάστε τις αναλύσεις για να κατανοήσετε καλύτερα αυτή την τεχνική.
Ελέγξτε τα modules PAM με:
Μια τεχνική διατήρησης/ανόδου προνομίων που καταχράζεται το PAM είναι τόσο εύκολη όσο η τροποποίηση του module /etc/pam.d/sudo προσθέτοντας στην αρχή τη γραμμή:
Έτσι θα μοιάζει κάτι τέτοιο:
Και επομένως οποιαδήποτε προσπάθεια χρήσης sudo
θα λειτουργήσει.
Σημειώστε ότι αυτός ο κατάλογος προστατεύεται από το TCC, επομένως είναι πολύ πιθανό να ζητηθεί από τον χρήστη άδεια πρόσβασης.
Πρόσθετα Εξουσιοδότησης
Ανάλυση: https://theevilbit.github.io/beyond/beyond_0028/ Ανάλυση: https://posts.specterops.io/persistent-credential-theft-with-authorization-plugins-d17b34719d65
Χρήσιμο για παράκαμψη του sandbox: 🟠
Αλλά χρειάζεστε δικαιώματα ρίζας και επιπλέον ρυθμίσεις
Παράκαμψη TCC: ???
Τοποθεσία
/Library/Security/SecurityAgentPlugins/
Απαιτείται ρίζα
Απαιτείται επίσης να διαμορφώσετε τη βάση δεδομένων εξουσιοδότησης για να χρησιμοποιήσει το πρόσθετο
Περιγραφή & Εκμετάλλευση
Μπορείτε να δημιουργήσετε ένα πρόσθετο εξουσιοδότησης που θα εκτελείται όταν ένας χρήστης συνδέεται για να διατηρήσετε την επιμονή. Για περισσότερες πληροφορίες σχετικά με το πώς να δημιουργήσετε ένα από αυτά τα πρόσθετα, ελέγξτε τις προηγούμενες αναλύσεις (και προσέξτε, ένα κακά γραμμένο μπορεί να σας κλειδώσει έξω και θα χρειαστεί να καθαρίσετε το Mac σας από τη λειτουργία ανάκτησης).
Μετακινήστε το δέμα στη θέση που θα φορτωθεί:
Τέλος, προσθέστε τον κανόνα για τη φόρτωση αυτού του Plugin:
Το evaluate-mechanisms
θα ειδοποιήσει το πλαίσιο εξουσιοδότησης ότι θα χρειαστεί να καλέσει ένα εξωτερικό μηχανισμό για εξουσιοδότηση. Επιπλέον, το privileged
θα κάνει την εκτέλεσή του από τον ριζικό χρήστη.
Ενεργοποίησέ το με:
Και στη συνέχεια η ομάδα προσωπικού πρέπει να έχει πρόσβαση sudo (διαβάστε το /etc/sudoers
για επιβεβαίωση).
Man.conf
Ανάλυση: https://theevilbit.github.io/beyond/beyond_0030/
Χρήσιμο για παράκαμψη αμμουδιάς: 🟠
Αλλά πρέπει να είστε ριζοχρήστης και ο χρήστης πρέπει να χρησιμοποιεί το man
Παράκαμψη TCC: 🔴
Τοποθεσία
/private/etc/man.conf
Απαιτείται ρίζα
/private/etc/man.conf
: Κάθε φορά που χρησιμοποιείται το man
Περιγραφή & Εκμετάλλευση
Το αρχείο ρύθμισης /private/etc/man.conf
υποδεικνύει το δυαδικό/σενάριο που θα χρησιμοποιηθεί όταν ανοίγονται αρχεία τεκμηρίωσης man. Έτσι, το μονοπάτι προς το εκτελέσιμο μπορεί να τροποποιηθεί έτσι ώστε κάθε φορά που ο χρήστης χρησιμοποιεί το man για να διαβάσει κάποια έγγραφα, να εκτελείται ένα backdoor.
Για παράδειγμα, ορίστε στο /private/etc/man.conf
:
Και στη συνέχεια δημιουργήστε το /tmp/view
ως:
Apache2
Ανάλυση: https://theevilbit.github.io/beyond/beyond_0023/
Χρήσιμο για παράκαμψη αμμοθονίου: 🟠
Αλλά χρειάζεστε δικαιώματα ρίζας και ο Apache πρέπει να εκτελείται
Παράκαμψη TCC: 🔴
Το Httpd δεν έχει δικαιώματα
Τοποθεσία
/etc/apache2/httpd.conf
Απαιτείται ρίζα
Ενεργοποίηση: Όταν ξεκινά ο Apache2
Περιγραφή & Εκμετάλλευση
Μπορείτε να υποδείξετε στο /etc/apache2/httpd.conf
να φορτώσει ένα module προσθέτοντας μια γραμμή όπως:
Με αυτόν τον τρόπο, τα μεταγλωττισμένα σας modules θα φορτωθούν από τον Apache. Το μόνο που χρειάζεται είναι είτε να το υπογράψετε με ένα έγκυρο πιστοποιητικό της Apple, είτε να προσθέσετε ένα νέο αξιόπιστο πιστοποιητικό στο σύστημα και να το υπογράψετε με αυτό.
Στη συνέχεια, αν χρειαστεί, για να εξασφαλίσετε ότι ο διακομιστής θα ξεκινήσει, μπορείτε να εκτελέσετε:
Παράδειγμα κώδικα για το Dylb:
Πλαίσιο ελέγχου BSM
Ανάλυση: https://theevilbit.github.io/beyond/beyond_0031/
Χρήσιμο για παράκαμψη του sandbox: 🟠
Αλλά χρειάζεστε δικαιώματα ρίζας, το auditd να εκτελείται και να προκαλεί μια προειδοποίηση
Παράκαμψη TCC: 🔴
Τοποθεσία
/etc/security/audit_warn
Απαιτούνται δικαιώματα ρίζας
Ενεργοποίηση: Όταν το auditd ανιχνεύει μια προειδοποίηση
Περιγραφή & Εκμετάλλευση
Κάθε φορά που το auditd ανιχνεύει μια προειδοποίηση, το σενάριο /etc/security/audit_warn
εκτελείται. Έτσι μπορείτε να προσθέσετε το φορτίο σας σε αυτό.
Στοιχεία Εκκίνησης
Αυτό έχει αποσυρθεί, οπότε δεν πρέπει να βρεθεί τίποτα σε αυτούς τους καταλόγους.
Το StartupItem είναι ένας κατάλογος που πρέπει να τοποθετηθεί είτε στο /Library/StartupItems/
είτε στο /System/Library/StartupItems/
. Μόλις αυτός ο κατάλογος δημιουργηθεί, πρέπει να περιλαμβάνει δύο συγκεκριμένα αρχεία:
Ένα rc script: Ένα shell script που εκτελείται κατά την εκκίνηση.
Ένα αρχείο plist, με το συγκεκριμένο όνομα
StartupParameters.plist
, το οποίο περιέχει διάφορες ρυθμίσεις διαμόρφωσης.
Βεβαιωθείτε ότι τόσο το rc script όσο και το αρχείο StartupParameters.plist
είναι τοποθετημένα σωστά μέσα στον κατάλογο StartupItem για να τα αναγνωρίσει και να τα χρησιμοποιήσει η διαδικασία εκκίνησης.
Τοποθεσίες Αυτόματης Έναρξης στο macOS
Στο macOS, υπάρχουν διάφορες τοποθεσίες όπου μπορούν να προστεθούν εφαρμογές για να ξεκινούν αυτόματα κατά την εκκίνηση του συστήματος. Αυτές οι τοποθεσίες περιλαμβάνουν:
Φάκελος Εκκίνησης (Startup Folder): Οι εφαρμογές που βρίσκονται σε αυτόν τον φάκελο θα ξεκινήσουν αυτόματα με την εκκίνηση του συστήματος για τον συγκεκριμένο χρήστη.
Launch Agents και Launch Daemons: Τα αρχεία που βρίσκονται στα φακέλους
/Library/LaunchAgents
,/Library/LaunchDaemons
,~/Library/LaunchAgents
ή/System/Library/LaunchAgents
μπορούν να χρησιμοποιηθούν για να δημιουργήσουν αυτόματες εκκινήσεις.Ρυθμίσεις Χρήστη: Οι ρυθμίσεις στο Μενού Συστήματος > Χρήστες και Ομάδες > Στοιχεία Σύνδεσης μπορούν να περιέχουν εφαρμογές που ξεκινούν αυτόματα.
Ελέγξτε αυτές τις τοποθεσίες για να διαχειριστείτε τις εφαρμογές που ξεκινούν αυτόματα στο macOS και να ενισχύσετε την ασφάλεια του συστήματός σας.
emond
Δεν μπορώ να βρω αυτό το στοιχείο στο macOS μου, οπότε για περισσότερες πληροφορίες ελέγξτε το writeup
Writeup: https://theevilbit.github.io/beyond/beyond_0023/
Εισήχθη από την Apple, το emond είναι ένα μηχανισμός καταγραφής που φαίνεται να είναι ανεπτυγμένος ελάχιστα ή ίσως εγκαταλειμμένος, αλλά παραμένει προσβάσιμος. Αν και δεν είναι ιδιαίτερα χρήσιμος για έναν διαχειριστή Mac, αυτή η σκοτεινή υπηρεσία θα μπορούσε να λειτουργήσει ως ένας διακριτικός τρόπος διατήρησης για απειλητικούς παράγοντες, πιθανώς απαρατήρητος από τους περισσότερους διαχειριστές macOS.
Για όσους γνωρίζουν την ύπαρξή του, η ανίχνευση οποιασδήποτε κακόβουλης χρήσης του emond είναι απλή. Το LaunchDaemon του συστήματος για αυτήν την υπηρεσία αναζητά scripts για εκτέλεση σε έναν μόνο κατάλογο. Για να ελεγχθεί αυτό, μπορεί να χρησιμοποιηθεί η ακόλουθη εντολή:
XQuartz
Writeup: https://theevilbit.github.io/beyond/beyond_0018/
Τοποθεσία
/opt/X11/etc/X11/xinit/privileged_startx.d
Απαιτείται ρίζα
Ενεργοποίηση: Με το XQuartz
Περιγραφή & Εκμετάλλευση
Το XQuartz δεν εγκαθίσταται πλέον στο macOS, οπότε αν θέλετε περισσότερες πληροφορίες, ελέγξτε το writeup.
kext
Είναι τόσο περίπλοκο να εγκαταστήσετε ένα kext ακόμα και ως ρίζα, ώστε δεν θα το θεωρήσω ως τρόπο απόδρασης από τις αμμοθύες ή ακόμα και για διατήρηση (εκτός αν έχετε ένα εκμετάλλευση)
Τοποθεσία
Για να εγκαταστήσετε ένα KEXT ως στοιχείο εκκίνησης, πρέπει να είναι εγκατεστημένο σε μία από τις ακόλουθες τοποθεσίες:
/System/Library/Extensions
Αρχεία KEXT που έχουν ενσωματωθεί στο λειτουργικό σύστημα OS X.
/Library/Extensions
Αρχεία KEXT που έχουν εγκατασταθεί από λογισμικό τρίτων
Μπορείτε να εμφανίσετε τα φορτωμένα αρχεία kext με:
Για περισσότερες πληροφορίες σχετικά με τις επεκτάσεις πυρήνα ελέγξτε αυτή την ενότητα.
amstoold
Ανάλυση: https://theevilbit.github.io/beyond/beyond_0029/
Τοποθεσία
/usr/local/bin/amstoold
Απαιτεί δικαιώματα ρίζας
Περιγραφή & Εκμετάλλευση
Φαίνεται ότι το plist
από το /System/Library/LaunchAgents/com.apple.amstoold.plist
χρησιμοποιούσε αυτό το δυαδικό ενώ εκθέτοντας ένα XPC service... το πρόβλημα είναι ότι το δυαδικό δεν υπήρχε, οπότε θα μπορούσατε να τοποθετήσετε κάτι εκεί και όταν κληθεί το XPC service, το δικό σας δυαδικό θα κληθεί.
Δεν μπορώ πλέον να βρω αυτό στο macOS μου.
xsanctl
Ανάλυση: https://theevilbit.github.io/beyond/beyond_0015/
Τοποθεσία
/Library/Preferences/Xsan/.xsanrc
Απαιτεί δικαιώματα ρίζας
Ενεργοποίηση: Όταν το σέρβις τρέχει (σπάνια)
Περιγραφή & εκμετάλλευση
Φαίνεται ότι δεν είναι πολύ συνηθισμένο να τρέξει αυτό το script και ακόμη δεν μπόρεσα να το βρω στο macOS μου, οπότε αν θέλετε περισσότερες πληροφορίες ελέγξτε το ανάλυση.
/etc/rc.common
Αυτό δεν λειτουργεί σε μοντέρνες εκδόσεις MacOS
Είναι επίσης δυνατόν να τοποθετήσετε εδώ εντολές που θα εκτελούνται κατά την εκκίνηση. Παράδειγμα κανονικού script rc.common:
Τεχνικές και εργαλεία διατήρησης
Last updated