macOS Auto Start
Αυτή η ενότητα βασίζεται σε μεγάλο βαθμό στη σειρά blog Beyond the good ol' LaunchAgents, ο στόχος είναι να προσθέσουμε περισσότερες τοποθεσίες αυτόματης εκκίνησης (αν είναι δυνατόν), να υποδείξουμε ποιες τεχνικές λειτουργούν ακόμα σήμερα με την τελευταία έκδοση του macOS (13.4) και να προσδιορίσουμε τις άδειες που απαιτούνται.
Sandbox Bypass
Εδώ μπορείτε να βρείτε τοποθεσίες εκκίνησης χρήσιμες για sandbox bypass που σας επιτρέπουν να εκτελέσετε κάτι απλά γράφοντας το σε ένα αρχείο και περιμένοντας για μια πολύ συνηθισμένη ενέργεια, μια καθορισμένη ποσότητα χρόνου ή μια ενέργεια που μπορείτε συνήθως να εκτελέσετε από μέσα σε ένα sandbox χωρίς να χρειάζεστε δικαιώματα root.
Launchd
Τοποθεσίες
/Library/LaunchAgents
Trigger: Επανεκκίνηση
Απαιτείται root
/Library/LaunchDaemons
Trigger: Επανεκκίνηση
Απαιτείται root
/System/Library/LaunchAgents
Trigger: Επανεκκίνηση
Απαιτείται root
/System/Library/LaunchDaemons
Trigger: Επανεκκίνηση
Απαιτείται root
~/Library/LaunchAgents
Trigger: Επανασύνδεση
~/Library/LaunchDemons
Trigger: Επανασύνδεση
Ως ενδιαφέρον γεγονός, launchd
έχει μια ενσωματωμένη λίστα ιδιοτήτων στην ενότητα Mach-o __Text.__config
που περιέχει άλλες γνωστές υπηρεσίες που πρέπει να εκκινήσει το launchd. Επιπλέον, αυτές οι υπηρεσίες μπορεί να περιέχουν το RequireSuccess
, RequireRun
και RebootOnSuccess
που σημαίνει ότι πρέπει να εκτελούνται και να ολοκληρώνονται με επιτυχία.
Φυσικά, δεν μπορεί να τροποποιηθεί λόγω υπογραφής κώδικα.
Περιγραφή & Εκμετάλλευση
launchd
είναι η πρώτη διαδικασία που εκτελείται από τον πυρήνα του OX S κατά την εκκίνηση και η τελευταία που ολοκληρώνεται κατά την απενεργοποίηση. Πρέπει πάντα να έχει το PID 1. Αυτή η διαδικασία θα διαβάσει και θα εκτελέσει τις ρυθμίσεις που υποδεικνύονται στα ASEP plists σε:
/Library/LaunchAgents
: Πράκτορες ανά χρήστη που εγκαθίστανται από τον διαχειριστή/Library/LaunchDaemons
: Daemons συστήματος που εγκαθίστανται από τον διαχειριστή/System/Library/LaunchAgents
: Πράκτορες ανά χρήστη που παρέχονται από την Apple./System/Library/LaunchDaemons
: Daemons συστήματος που παρέχονται από την Apple.
Όταν ένας χρήστης συνδέεται, οι plists που βρίσκονται σε /Users/$USER/Library/LaunchAgents
και /Users/$USER/Library/LaunchDemons
εκκινούνται με τις άδειες των συνδεδεμένων χρηστών.
Η κύρια διαφορά μεταξύ πρακτόρων και daemons είναι ότι οι πράκτορες φορτώνονται όταν ο χρήστης συνδέεται και οι daemons φορτώνονται κατά την εκκίνηση του συστήματος (καθώς υπάρχουν υπηρεσίες όπως το ssh που πρέπει να εκτελούνται πριν οποιοσδήποτε χρήστης αποκτήσει πρόσβαση στο σύστημα). Επίσης, οι πράκτορες μπορεί να χρησιμοποιούν GUI ενώ οι daemons πρέπει να εκτελούνται στο παρασκήνιο.
Υπάρχουν περιπτώσεις όπου ένας agent πρέπει να εκτελείται πριν ο χρήστης συνδεθεί, αυτές ονομάζονται PreLoginAgents. Για παράδειγμα, αυτό είναι χρήσιμο για την παροχή υποστηρικτικής τεχνολογίας κατά την είσοδο. Μπορούν επίσης να βρεθούν στο /Library/LaunchAgents
(δείτε εδώ ένα παράδειγμα).
Νέα αρχεία ρυθμίσεων Daemons ή Agents θα φορτωθούν μετά την επόμενη επανεκκίνηση ή χρησιμοποιώντας launchctl load <target.plist>
Είναι επίσης δυνατό να φορτωθούν αρχεία .plist χωρίς αυτή την επέκταση με launchctl -F <file>
(ωστόσο αυτά τα αρχεία plist δεν θα φορτωθούν αυτόματα μετά την επανεκκίνηση).
Είναι επίσης δυνατό να ξεφορτωθούν με launchctl unload <target.plist>
(η διαδικασία που υποδεικνύεται από αυτό θα τερματιστεί),
Για να διασφαλίσετε ότι δεν υπάρχει τίποτα (όπως μια υπέρβαση) που να εμποδίζει έναν Agent ή Daemon να τρέξει, εκτελέστε: sudo launchctl load -w /System/Library/LaunchDaemos/com.apple.smdb.plist
Λίστα με όλους τους agents και daemons που έχουν φορτωθεί από τον τρέχοντα χρήστη:
Αν ένα plist ανήκει σε έναν χρήστη, ακόμα και αν βρίσκεται σε φακέλους συστήματος daemon, η εργασία θα εκτελείται ως ο χρήστης και όχι ως root. Αυτό μπορεί να αποτρέψει κάποιες επιθέσεις ανύψωσης δικαιωμάτων.
Περισσότερες πληροφορίες σχετικά με το launchd
launchd
είναι η πρώτη διαδικασία χρήστη που ξεκινά από τον kernel. Η εκκίνηση της διαδικασίας πρέπει να είναι επιτυχής και δεν μπορεί να τερματιστεί ή να καταρρεύσει. Είναι ακόμη προστατευμένη από ορισμένα σήματα τερματισμού.
Ένα από τα πρώτα πράγματα που θα κάνει το launchd
είναι να ξεκινήσει όλους τους daemons όπως:
Daemons χρονοδιακόπτη που εκτελούνται με βάση τον χρόνο:
atd (
com.apple.atrun.plist
): Έχει έναStartInterval
30 λεπτώνcrond (
com.apple.systemstats.daily.plist
): ΈχειStartCalendarInterval
για να ξεκινά στις 00:15Δίκτυα daemons όπως:
org.cups.cups-lpd
: Ακούει σε TCP (SockType: stream
) μεSockServiceName: printer
SockServiceName πρέπει να είναι είτε μια θύρα είτε μια υπηρεσία από το
/etc/services
com.apple.xscertd.plist
: Ακούει σε TCP στην θύρα 1640Path daemons που εκτελούνται όταν αλλάζει μια καθορισμένη διαδρομή:
com.apple.postfix.master
: Ελέγχει τη διαδρομή/etc/postfix/aliases
Daemons ειδοποιήσεων IOKit:
com.apple.xartstorageremoted
:"com.apple.iokit.matching" => { "com.apple.device-attach" => { "IOMatchLaunchStream" => 1 ...
Mach port:
com.apple.xscertd-helper.plist
: Υποδεικνύει στην καταχώρησηMachServices
το όνομαcom.apple.xscertd.helper
UserEventAgent:
Αυτό είναι διαφορετικό από το προηγούμενο. Κάνει το launchd να δημιουργεί εφαρμογές σε απάντηση σε συγκεκριμένα γεγονότα. Ωστόσο, σε αυτή την περίπτωση, το κύριο δυαδικό που εμπλέκεται δεν είναι το
launchd
αλλά το/usr/libexec/UserEventAgent
. Φορτώνει πρόσθετα από τον περιορισμένο φάκελο SIP /System/Library/UserEventPlugins/ όπου κάθε πρόσθετο υποδεικνύει τον αρχικοποιητή του στο κλειδίXPCEventModuleInitializer
ή, στην περίπτωση παλαιότερων πρόσθετων, στο λεξικόCFPluginFactories
κάτω από το κλειδίFB86416D-6164-2070-726F-70735C216EC0
τουInfo.plist
του.
αρχεία εκκίνησης shell
Writeup: https://theevilbit.github.io/beyond/beyond_0001/ Writeup (xterm): https://theevilbit.github.io/beyond/beyond_0018/
Χρήσιμο για να παρακαμφθεί το sandbox: ✅
Παράκαμψη TCC: ✅
Αλλά χρειάζεστε να βρείτε μια εφαρμογή με μια παράκαμψη TCC που εκτελεί ένα shell που φορτώνει αυτά τα αρχεία
Τοποθεσίες
~/.zshrc
,~/.zlogin
,~/.zshenv.zwc
,~/.zshenv
,~/.zprofile
Trigger: Άνοιγμα ενός τερματικού με zsh
/etc/zshenv
,/etc/zprofile
,/etc/zshrc
,/etc/zlogin
Trigger: Άνοιγμα ενός τερματικού με zsh
Απαιτείται root
~/.zlogout
Trigger: Έξοδος από ένα τερματικό με zsh
/etc/zlogout
Trigger: Έξοδος από ένα τερματικό με zsh
Απαιτείται root
Πιθανώς περισσότερα στο:
man zsh
~/.bashrc
Trigger: Άνοιγμα ενός τερματικού με bash
/etc/profile
(δεν λειτούργησε)~/.profile
(δεν λειτούργησε)~/.xinitrc
,~/.xserverrc
,/opt/X11/etc/X11/xinit/xinitrc.d/
Trigger: Αναμένονται να ενεργοποιηθούν με xterm, αλλά δεν είναι εγκατεστημένο και ακόμη και μετά την εγκατάσταση, εμφανίζεται αυτό το σφάλμα: xterm:
DISPLAY is not set
Περιγραφή & Εκμετάλλευση
Όταν ξεκινάτε ένα περιβάλλον shell όπως το zsh
ή το bash
, ορισμένα αρχεία εκκίνησης εκτελούνται. Το macOS χρησιμοποιεί αυτή τη στιγμή το /bin/zsh
ως προεπιλεγμένο shell. Αυτό το shell προσπελάζεται αυτόματα όταν εκκινείται η εφαρμογή Terminal ή όταν αποκτάται πρόσβαση σε μια συσκευή μέσω SSH. Ενώ το bash
και το sh
είναι επίσης παρόντα στο macOS, χρειάζεται να κληθούν ρητά για να χρησιμοποιηθούν.
Η σελίδα man του zsh, την οποία μπορούμε να διαβάσουμε με man zsh
, έχει μια εκτενή περιγραφή των αρχείων εκκίνησης.
Επαναλειτουργία Εφαρμογών
Η ρύθμιση της υποδεικνυόμενης εκμετάλλευσης και η αποσύνδεση και σύνδεση ή ακόμα και η επανεκκίνηση δεν λειτούργησε για μένα για να εκτελέσω την εφαρμογή. (Η εφαρμογή δεν εκτελούνταν, ίσως χρειάζεται να είναι σε λειτουργία όταν εκτελούνται αυτές οι ενέργειες)
Writeup: https://theevilbit.github.io/beyond/beyond_0021/
Τοποθεσία
~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.plist
Trigger: Επανεκκίνηση επαναλειτουργίας εφαρμογών
Περιγραφή & Εκμετάλλευση
Όλες οι εφαρμογές που θα επαναλειτουργήσουν βρίσκονται μέσα στο plist ~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.plist
Έτσι, για να κάνετε τις επαναλειτουργούσες εφαρμογές να εκτελούν τη δική σας, απλώς χρειάζεται να προσθέσετε την εφαρμογή σας στη λίστα.
Το UUID μπορεί να βρεθεί καταγράφοντας αυτή τη διεύθυνση ή με ioreg -rd1 -c IOPlatformExpertDevice | awk -F'"' '/IOPlatformUUID/{print $4}'
Για να ελέγξετε τις εφαρμογές που θα επαναλειτουργήσουν μπορείτε να κάνετε:
Για να προσθέσετε μια εφαρμογή σε αυτή τη λίστα μπορείτε να χρησιμοποιήσετε:
Terminal Preferences
Χρήσιμο για να παρακάμψει το sandbox: ✅
Παράκαμψη TCC: ✅
Η χρήση του Terminal απαιτεί άδειες FDA από τον χρήστη που το χρησιμοποιεί
Location
~/Library/Preferences/com.apple.Terminal.plist
Trigger: Άνοιγμα του Terminal
Description & Exploitation
Στο ~/Library/Preferences
αποθηκεύονται οι προτιμήσεις του χρήστη στις Εφαρμογές. Ορισμένες από αυτές τις προτιμήσεις μπορεί να περιέχουν μια ρύθμιση για εκτέλεση άλλων εφαρμογών/σκριπτών.
Για παράδειγμα, το Terminal μπορεί να εκτελέσει μια εντολή κατά την εκκίνηση:
Αυτή η ρύθμιση αντικατοπτρίζεται στο αρχείο ~/Library/Preferences/com.apple.Terminal.plist
όπως αυτό:
Έτσι, αν το plist των προτιμήσεων του τερματικού στο σύστημα μπορούσε να αντικατασταθεί, τότε η open
λειτουργία μπορεί να χρησιμοποιηθεί για να ανοίξει το τερματικό και αυτή η εντολή θα εκτελείται.
Μπορείτε να το προσθέσετε αυτό από το cli με:
Terminal Scripts / Άλλες επεκτάσεις αρχείων
Χρήσιμο για να παρακάμψει το sandbox: ✅
Παράκαμψη TCC: ✅
Χρήση Terminal για να έχει άδειες FDA ο χρήστης που το χρησιμοποιεί
Τοποθεσία
Οπουδήποτε
Ενεργοποίηση: Άνοιγμα Terminal
Περιγραφή & Εκμετάλλευση
Αν δημιουργήσεις ένα .terminal
script και το ανοίξεις, η εφαρμογή Terminal θα ενεργοποιηθεί αυτόματα για να εκτελέσει τις εντολές που αναφέρονται εκεί. Αν η εφαρμογή Terminal έχει κάποιες ειδικές άδειες (όπως TCC), η εντολή σου θα εκτελείται με αυτές τις ειδικές άδειες.
Δοκίμασέ το με:
You could also use the extensions .command
, .tool
, with regular shell scripts content and they will be also opened by Terminal.
Αν το terminal έχει Πλήρη Πρόσβαση Δίσκου, θα μπορεί να ολοκληρώσει αυτή την ενέργεια (σημειώστε ότι η εντολή που εκτελείται θα είναι ορατή σε ένα παράθυρο terminal).
Audio Plugins
Writeup: https://theevilbit.github.io/beyond/beyond_0013/ Writeup: https://posts.specterops.io/audio-unit-plug-ins-896d3434a882
Χρήσιμο για να παρακάμψετε το sandbox: ✅
TCC bypass: 🟠
Μπορεί να αποκτήσετε κάποια επιπλέον πρόσβαση TCC
Location
/Library/Audio/Plug-Ins/HAL
Απαιτείται root
Trigger: Επανεκκίνηση του coreaudiod ή του υπολογιστή
/Library/Audio/Plug-ins/Components
Απαιτείται root
Trigger: Επανεκκίνηση του coreaudiod ή του υπολογιστή
~/Library/Audio/Plug-ins/Components
Trigger: Επανεκκίνηση του coreaudiod ή του υπολογιστή
/System/Library/Components
Απαιτείται root
Trigger: Επανεκκίνηση του coreaudiod ή του υπολογιστή
Description
Σύμφωνα με τις προηγούμενες αναφορές, είναι δυνατό να συγκεντρωθούν κάποια audio plugins και να φορτωθούν.
QuickLook Plugins
Writeup: https://theevilbit.github.io/beyond/beyond_0028/
Χρήσιμο για να παρακάμψετε το sandbox: ✅
TCC bypass: 🟠
Μπορεί να αποκτήσετε κάποια επιπλέον πρόσβαση TCC
Location
/System/Library/QuickLook
/Library/QuickLook
~/Library/QuickLook
/Applications/AppNameHere/Contents/Library/QuickLook/
~/Applications/AppNameHere/Contents/Library/QuickLook/
Description & Exploitation
Τα QuickLook plugins μπορούν να εκτελούνται όταν προκαλείτε την προεπισκόπηση ενός αρχείου (πατήστε το πλήκτρο διαστήματος με το αρχείο επιλεγμένο στο Finder) και ένα plugin που υποστηρίζει αυτόν τον τύπο αρχείου είναι εγκατεστημένο.
Είναι δυνατό να συγκεντρώσετε το δικό σας QuickLook plugin, να το τοποθετήσετε σε μία από τις προηγούμενες τοποθεσίες για να το φορτώσετε και στη συνέχεια να πάτε σε ένα υποστηριζόμενο αρχείο και να πατήσετε το πλήκτρο διαστήματος για να το προκαλέσετε.
Login/Logout Hooks
Αυτό δεν λειτούργησε για μένα, ούτε με το LoginHook του χρήστη ούτε με το LogoutHook του root
Writeup: https://theevilbit.github.io/beyond/beyond_0022/
Location
Πρέπει να μπορείτε να εκτελέσετε κάτι σαν
defaults write com.apple.loginwindow LoginHook /Users/$USER/hook.sh
Lo
cated in~/Library/Preferences/com.apple.loginwindow.plist
Είναι απαρχαιωμένα αλλά μπορούν να χρησιμοποιηθούν για να εκτελούν εντολές όταν συνδέεται ένας χρήστης.
Αυτή η ρύθμιση αποθηκεύεται στο /Users/$USER/Library/Preferences/com.apple.loginwindow.plist
Για να το διαγράψετε:
The root user one is stored in /private/var/root/Library/Preferences/com.apple.loginwindow.plist
Conditional Sandbox Bypass
Εδώ μπορείτε να βρείτε τοποθεσίες εκκίνησης χρήσιμες για sandbox bypass που σας επιτρέπει να εκτελέσετε κάτι απλά γράφοντας το σε ένα αρχείο και περιμένοντας όχι πολύ κοινές συνθήκες όπως συγκεκριμένα προγράμματα εγκατεστημένα, "ασυνήθιστες" ενέργειες χρηστών ή περιβάλλοντα.
Cron
Writeup: https://theevilbit.github.io/beyond/beyond_0004/
Χρήσιμο για να παρακάμψετε το sandbox: ✅
Ωστόσο, πρέπει να μπορείτε να εκτελέσετε το δυαδικό
crontab
Ή να είστε root
TCC bypass: 🔴
Location
/usr/lib/cron/tabs/
,/private/var/at/tabs
,/private/var/at/jobs
,/etc/periodic/
Απαιτείται root για άμεση πρόσβαση εγγραφής. Δεν απαιτείται root αν μπορείτε να εκτελέσετε
crontab <file>
Trigger: Εξαρτάται από τη δουλειά cron
Description & Exploitation
Λίστα με τις δουλειές cron του τρέχοντος χρήστη με:
Μπορείτε επίσης να δείτε όλα τα cron jobs των χρηστών στο /usr/lib/cron/tabs/
και /var/at/tabs/
(χρειάζεται root).
Στο MacOS, αρκετοί φάκελοι που εκτελούν scripts με ορισμένη συχνότητα μπορούν να βρεθούν σε:
Εκεί μπορείτε να βρείτε τις κανονικές cron εργασίες, τις at εργασίες (όχι πολύ χρησιμοποιούμενες) και τις περιοδικές εργασίες (κυρίως χρησιμοποιούνται για τον καθαρισμό προσωρινών αρχείων). Οι καθημερινές περιοδικές εργασίες μπορούν να εκτελούνται για παράδειγμα με: periodic daily
.
Για να προσθέσετε μια εργασία cron χρήστη προγραμματισμένα είναι δυνατόν να χρησιμοποιήσετε:
iTerm2
Writeup: https://theevilbit.github.io/beyond/beyond_0002/
Τοποθεσίες
~/Library/Application Support/iTerm2/Scripts/AutoLaunch
Trigger: Άνοιγμα του iTerm
~/Library/Application Support/iTerm2/Scripts/AutoLaunch.scpt
Trigger: Άνοιγμα του iTerm
~/Library/Preferences/com.googlecode.iterm2.plist
Trigger: Άνοιγμα του iTerm
Περιγραφή & Εκμετάλλευση
Τα σενάρια που αποθηκεύονται στο ~/Library/Application Support/iTerm2/Scripts/AutoLaunch
θα εκτελούνται. Για παράδειγμα:
ή:
Το σενάριο ~/Library/Application Support/iTerm2/Scripts/AutoLaunch.scpt
θα εκτελείται επίσης:
Οι ρυθμίσεις του iTerm2 που βρίσκονται στο ~/Library/Preferences/com.googlecode.iterm2.plist
μπορούν να υποδείξουν μια εντολή προς εκτέλεση όταν ανοίγει το τερματικό iTerm2.
Αυτή η ρύθμιση μπορεί να διαμορφωθεί στις ρυθμίσεις του iTerm2:
Και η εντολή αντικατοπτρίζεται στις ρυθμίσεις:
Μπορείτε να ορίσετε την εντολή που θα εκτελείται με:
Υπάρχει μεγάλη πιθανότητα να υπάρχουν άλλοι τρόποι κατάχρησης των ρυθμίσεων του iTerm2 για την εκτέλεση αυθαίρετων εντολών.
xbar
Writeup: https://theevilbit.github.io/beyond/beyond_0007/
Χρήσιμο για να παρακαμφθεί το sandbox: ✅
Αλλά το xbar πρέπει να είναι εγκατεστημένο
Παράκαμψη TCC: ✅
Ζητά άδειες προσβασιμότητας
Τοποθεσία
~/Library/Application\ Support/xbar/plugins/
Trigger: Μόλις εκτελεστεί το xbar
Περιγραφή
Εάν είναι εγκατεστημένο το δημοφιλές πρόγραμμα xbar, είναι δυνατόν να γραφτεί ένα shell script στο ~/Library/Application\ Support/xbar/plugins/
το οποίο θα εκτελείται όταν ξεκινά το xbar:
Hammerspoon
Writeup: https://theevilbit.github.io/beyond/beyond_0008/
Χρήσιμο για να παρακαμφθεί το sandbox: ✅
Αλλά το Hammerspoon πρέπει να είναι εγκατεστημένο
Παράκαμψη TCC: ✅
Ζητά άδειες προσβασιμότητας
Location
~/.hammerspoon/init.lua
Trigger: Μόλις εκτελεστεί το hammerspoon
Description
Hammerspoon λειτουργεί ως πλατφόρμα αυτοματοποίησης για macOS, αξιοποιώντας τη γλώσσα προγραμματισμού LUA για τις λειτουργίες του. Σημαντικά, υποστηρίζει την ενσωμάτωση πλήρους κώδικα AppleScript και την εκτέλεση shell scripts, ενισχύοντας σημαντικά τις δυνατότητες scripting του.
Η εφαρμογή αναζητά ένα μόνο αρχείο, ~/.hammerspoon/init.lua
, και όταν ξεκινήσει, το script θα εκτελεστεί.
BetterTouchTool
Χρήσιμο για να παρακαμφθεί το sandbox: ✅
Αλλά το BetterTouchTool πρέπει να είναι εγκατεστημένο
TCC bypass: ✅
Ζητά άδειες Automation-Shortcuts και Accessibility
Location
~/Library/Application Support/BetterTouchTool/*
Αυτό το εργαλείο επιτρέπει να υποδεικνύονται εφαρμογές ή σενάρια που θα εκτελούνται όταν πατηθούν ορισμένα συντομεύσεις. Ένας επιτιθέμενος μπορεί να είναι σε θέση να ρυθμίσει τη δική του συντόμευση και ενέργεια για εκτέλεση στη βάση δεδομένων για να εκτελέσει αυθαίρετο κώδικα (μια συντόμευση θα μπορούσε να είναι απλώς να πατηθεί ένα πλήκτρο).
Alfred
Χρήσιμο για να παρακαμφθεί το sandbox: ✅
Αλλά το Alfred πρέπει να είναι εγκατεστημένο
TCC bypass: ✅
Ζητά άδειες Automation, Accessibility και ακόμη και Full-Disk access
Location
???
Επιτρέπει τη δημιουργία ροών εργασίας που μπορούν να εκτελούν κώδικα όταν πληρούνται ορισμένες προϋποθέσεις. Πιθανώς είναι δυνατό για έναν επιτιθέμενο να δημιουργήσει ένα αρχείο ροής εργασίας και να κάνει το Alfred να το φορτώσει (είναι απαραίτητο να πληρώσετε την premium έκδοση για να χρησιμοποιήσετε ροές εργασίας).
SSHRC
Writeup: https://theevilbit.github.io/beyond/beyond_0006/
Χρήσιμο για να παρακαμφθεί το sandbox: ✅
Αλλά το ssh πρέπει να είναι ενεργοποιημένο και χρησιμοποιούμενο
TCC bypass: ✅
Η χρήση SSH απαιτεί FDA access
Location
~/.ssh/rc
Trigger: Σύνδεση μέσω ssh
/etc/ssh/sshrc
Απαιτείται root
Trigger: Σύνδεση μέσω ssh
Για να ενεργοποιήσετε το ssh απαιτείται Full Disk Access:
Περιγραφή & Εκμετάλλευση
Από προεπιλογή, εκτός αν υπάρχει PermitUserRC no
στο /etc/ssh/sshd_config
, όταν ένας χρήστης συνδέεται μέσω SSH τα σενάρια /etc/ssh/sshrc
και ~/.ssh/rc
θα εκτελούνται.
Στοιχεία Σύνδεσης
Writeup: https://theevilbit.github.io/beyond/beyond_0003/
Τοποθεσίες
~/Library/Application Support/com.apple.backgroundtaskmanagementagent
Trigger: Σύνδεση
Payload εκμετάλλευσης αποθηκευμένο καλώντας
osascript
/var/db/com.apple.xpc.launchd/loginitems.501.plist
Trigger: Σύνδεση
Απαιτείται δικαιώματα root
Περιγραφή
Στις Προτιμήσεις Συστήματος -> Χρήστες & Ομάδες -> Στοιχεία Σύνδεσης μπορείτε να βρείτε στοιχεία που θα εκτελούνται όταν ο χρήστης συνδέεται. Είναι δυνατή η καταγραφή τους, η προσθήκη και η αφαίρεση από τη γραμμή εντολών: