<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
Questa sezione si basa pesantemente sulla serie di blog [**Oltre i buoni vecchi LaunchAgents**](https://theevilbit.github.io/beyond/), l'obiettivo è aggiungere **ulteriori posizioni di avvio automatico** (se possibile), indicare **quali tecniche funzionano ancora** oggi con l'ultima versione di macOS (13.4) e specificare le **autorizzazioni** necessarie.
Qui puoi trovare posizioni di avvio utili per il **bypass di sandbox** che ti permette di eseguire semplicemente qualcosa **scrivendolo in un file** e **aspettando** un'azione molto **comune**, una determinata **quantità di tempo** o un'**azione che di solito puoi eseguire** da dentro una sandbox senza bisogno di permessi di root.
**`launchd`** è il **primo****processo** eseguito dal kernel di OX S all'avvio e l'ultimo a terminare allo spegnimento. Dovrebbe sempre avere il **PID 1**. Questo processo **leggerà ed eseguirà** le configurazioni indicate nei **plist ASEP** in:
Quando un utente effettua il login, i plist situati in `/Users/$USER/Library/LaunchAgents` e `/Users/$USER/Library/LaunchDemons` vengono avviati con le **autorizzazioni degli utenti connessi**.
**La differenza principale tra agenti e daemon è che gli agenti vengono caricati quando l'utente effettua il login e i daemon vengono caricati all'avvio del sistema** (poiché ci sono servizi come ssh che devono essere eseguiti prima che qualsiasi utente acceda al sistema). Inoltre, gli agenti possono utilizzare l'interfaccia grafica mentre i daemon devono essere eseguiti in background.
Ci sono casi in cui un **agente deve essere eseguito prima che l'utente effettui l'accesso**, questi vengono chiamati **PreLoginAgents**. Ad esempio, questo è utile per fornire tecnologia assistiva durante l'accesso. Possono essere trovati anche in `/Library/LaunchAgents` (vedi [**qui**](https://github.com/HelmutJ/CocoaSampleCode/tree/master/PreLoginAgents) un esempio).
I nuovi file di configurazione di Daemons o Agents verranno **caricati dopo il riavvio successivo o utilizzando**`launchctl load <target.plist>`. È **anche possibile caricare file .plist senza quella estensione** con `launchctl -F <file>` (tuttavia quei file plist non verranno caricati automaticamente dopo il riavvio).\
È anche possibile **scaricare** con `launchctl unload <target.plist>` (il processo a cui punta verrà terminato).
Per **assicurarsi** che non ci sia **nulla** (come un override) **che impedisca** a un **Agente** o **Daemon****di essere eseguito**, eseguire: `sudo launchctl load -w /System/Library/LaunchDaemos/com.apple.smdb.plist`
Se un plist è di proprietà di un utente, anche se si trova in una cartella di sistema daemon, il **task verrà eseguito come utente** e non come root. Ciò può prevenire alcuni attacchi di escalation dei privilegi.
* **Trigger**: Si prevede che venga attivato con xterm, ma **non è installato** e anche dopo l'installazione viene generato questo errore: xterm: `DISPLAY non è impostato`
Quando si avvia un ambiente shell come `zsh` o `bash`, **vengono eseguiti determinati file di avvio**. Attualmente macOS utilizza `/bin/zsh` come shell predefinita. Questa shell viene automaticamente accessa quando viene avviata l'applicazione Terminal o quando si accede a un dispositivo tramite SSH. Mentre `bash` e `sh` sono anche presenti in macOS, devono essere esplicitamente invocati per essere utilizzati.
La configurazione dell'exploit indicato e il logout e il login o addirittura il riavvio non hanno funzionato per me per eseguire l'applicazione. (L'applicazione non veniva eseguita, forse è necessario che sia in esecuzione quando vengono eseguite queste azioni)
Nella cartella **`~/Library/Preferences`** vengono memorizzate le preferenze dell'utente nelle applicazioni. Alcune di queste preferenze possono contenere una configurazione per **eseguire altre applicazioni/script**.
Quindi, se il plist delle preferenze del terminale nel sistema può essere sovrascritto, la funzionalità **`open`** può essere utilizzata per **aprire il terminale e eseguire quel comando**.
Se crei uno script [**`.terminal`**](https://stackoverflow.com/questions/32086004/how-to-use-the-default-terminal-settings-when-opening-a-terminal-file-osx) e lo apri, l'applicazione **Terminale** verrà automaticamente invocata per eseguire i comandi indicati al suo interno. Se l'applicazione Terminale ha alcuni privilegi speciali (come TCC), il tuo comando verrà eseguito con quei privilegi speciali.
Se il terminale ha **Accesso completo al disco**, sarà in grado di completare quell'azione (nota che il comando eseguito sarà visibile in una finestra del terminale).
I plugin QuickLook possono essere eseguiti quando **si attiva l'anteprima di un file** (premere la barra spaziatrice con il file selezionato in Finder) ed è installato un **plugin che supporta quel tipo di file**.
È possibile compilare il proprio plugin QuickLook, posizionarlo in una delle posizioni precedenti per caricarlo e quindi andare su un file supportato e premere spazio per attivarlo.
Qui puoi trovare le posizioni di avvio utili per il **bypass del sandbox** che ti consente di eseguire semplicemente qualcosa **scrivendolo in un file** e **aspettando condizioni non super comuni** come specifici **programmi installati, azioni o ambienti "non comuni"**.
Qui puoi trovare i **cron job** regolari, i **job at** (non molto utilizzati) e i **job periodici** (principalmente utilizzati per la pulizia dei file temporanei). I job periodici giornalieri possono essere eseguiti ad esempio con: `periodic daily`.
In macOS, ci sono diverse posizioni in cui è possibile configurare le applicazioni per avviarsi automaticamente all'avvio del sistema. Queste posizioni possono essere sfruttate da un attaccante per eseguire codice dannoso o per ottenere privilegi elevati.
Di seguito sono elencate le posizioni di avvio automatico più comuni in macOS:
## 1. LaunchAgents
Le LaunchAgents sono file di tipo .plist che specificano quali applicazioni o script devono essere avviati automaticamente all'avvio dell'utente. Questi file sono solitamente posizionati nella directory `~/Library/LaunchAgents` o `/Library/LaunchAgents`.
Per visualizzare i LaunchAgents attualmente configurati, è possibile utilizzare il comando:
```bash
ls -la ~/Library/LaunchAgents
ls -la /Library/LaunchAgents
```
## 2. LaunchDaemons
I LaunchDaemons sono simili alle LaunchAgents, ma vengono eseguiti con privilegi di root. Questi file sono posizionati nella directory `/Library/LaunchDaemons` o `/System/Library/LaunchDaemons`.
Per visualizzare i LaunchDaemons attualmente configurati, è possibile utilizzare il comando:
I Login Items sono applicazioni o script che vengono avviati automaticamente all'accesso dell'utente. Queste impostazioni possono essere trovate nelle preferenze di sistema di macOS.
Per visualizzare i Login Items attualmente configurati, è possibile seguire questi passaggi:
1. Fare clic sull'icona Apple nella barra dei menu.
2. Selezionare "Preferenze di Sistema".
3. Fare clic su "Utenti e gruppi".
4. Selezionare l'account utente desiderato.
5. Fare clic sulla scheda "Accesso".
6. Verificare le applicazioni o gli script elencati.
## 4. Cron Jobs
I Cron Jobs sono script o comandi che vengono eseguiti automaticamente in base a un programma di pianificazione. Questi possono essere configurati utilizzando il comando `crontab`.
Per visualizzare i Cron Jobs attualmente configurati, è possibile utilizzare il comando:
```bash
crontab -l
```
## 5. Startup Items
I Startup Items sono applicazioni o script che vengono avviati automaticamente all'avvio del sistema. Tuttavia, questa funzionalità è stata deprecata a partire da macOS 10.4 e non è più supportata.
Per verificare se ci sono ancora Startup Items configurati, è possibile utilizzare il comando:
```bash
ls -la /Library/StartupItems
```
## 6. Launchctl
Launchctl è un comando di macOS utilizzato per gestire i servizi di avvio automatico. Può essere utilizzato per caricare, scaricare o elencare i servizi di avvio automatico.
Per visualizzare tutti i servizi di avvio automatico configurati, è possibile utilizzare il comando:
```bash
launchctl list
```
## 7. Applicazioni di terze parti
Alcune applicazioni di terze parti possono avere le proprie impostazioni di avvio automatico. Queste impostazioni possono essere trovate all'interno delle preferenze dell'applicazione stessa.
## Conclusioni
È importante essere consapevoli delle posizioni di avvio automatico di macOS e delle applicazioni configurate per avviarsi automaticamente. Monitorare e verificare regolarmente queste impostazioni può aiutare a prevenire l'esecuzione di codice dannoso o l'accesso non autorizzato al sistema.
Le preferenze di iTerm2 si trovano in **`~/Library/Preferences/com.googlecode.iterm2.plist`** e possono **indicare un comando da eseguire** quando viene aperto il terminale di iTerm2.
Se il popolare programma [**xbar**](https://github.com/matryer/xbar) è installato, è possibile scrivere uno script shell in **`~/Library/Application\ Support/xbar/plugins/`** che verrà eseguito quando xbar viene avviato:
[**Hammerspoon**](https://github.com/Hammerspoon/hammerspoon) funge da piattaforma di automazione per **macOS**, sfruttando il linguaggio di scripting **LUA** per le sue operazioni. In particolare, supporta l'integrazione di codice AppleScript completo e l'esecuzione di script shell, migliorando significativamente le sue capacità di scripting.
Per impostazione predefinita, a meno che `PermitUserRC no` non sia presente in `/etc/ssh/sshd_config`, quando un utente effettua il login tramite SSH, gli script **`/etc/ssh/sshrc`** e **`~/.ssh/rc`** verranno eseguiti.
Nelle Preferenze di Sistema -> Utenti e Gruppi -> **Elementi di accesso** è possibile trovare **elementi da eseguire quando l'utente effettua il login**.\
È possibile elencarli, aggiungerli e rimuoverli dalla riga di comando:
Gli **elementi di accesso** possono essere indicati anche utilizzando l'API [SMLoginItemSetEnabled](https://developer.apple.com/documentation/servicemanagement/1501557-smloginitemsetenabled?language=objc) che memorizzerà la configurazione in **`/var/db/com.apple.xpc.launchd/loginitems.501.plist`**
Se si memorizza un file **ZIP** come **elemento di accesso**, l'**`Archive Utility`** lo aprirà e se il file zip fosse ad esempio memorizzato in **`~/Library`** e contenesse la cartella **`LaunchAgents/file.plist`** con un backdoor, quella cartella verrà creata (non lo è di default) e il plist verrà aggiunto in modo che la prossima volta che l'utente effettua nuovamente l'accesso, il **backdoor indicato nel plist verrà eseguito**.
Un'altra opzione sarebbe quella di creare i file **`.bash_profile`** e **`.zshenv`** all'interno della HOME dell'utente, in modo che se la cartella LaunchAgents esiste già, questa tecnica funzionerà comunque.
I task `at` sono progettati per **programmare attività one-time** da eseguire in determinati momenti. A differenza dei lavori cron, i task `at` vengono automaticamente rimossi dopo l'esecuzione. È importante notare che questi task sono persistenti anche dopo il riavvio del sistema, il che li rende potenziali preoccupazioni per la sicurezza in determinate condizioni.
Il nome del file contiene la coda, il numero del lavoro e l'ora in cui è programmato per essere eseguito. Ad esempio, prendiamo in considerazione `a0001a019bdcd2`.
*`0001a` - numero del lavoro in esadecimale, `0x1a = 26`
*`019bdcd2` - ora in esadecimale. Rappresenta i minuti trascorsi dall'epoca. `0x019bdcd2` corrisponde a `26991826` in decimale. Moltiplicandolo per 60 otteniamo `1619509560`, che corrisponde a `GMT: 27 aprile 2021, martedì 7:46:00`.
* Utile per eludere il sandbox: [✅](https://emojipedia.org/check-mark-button)
* Ma è necessario essere in grado di chiamare `osascript` con argomenti per contattare **`System Events`** per poter configurare le Azioni della cartella
Le Azioni della cartella sono script attivati automaticamente dalle modifiche in una cartella, come l'aggiunta o la rimozione di elementi, o altre azioni come l'apertura o il ridimensionamento della finestra della cartella. Queste azioni possono essere utilizzate per svolgere varie attività e possono essere attivate in modi diversi, come utilizzando l'interfaccia utente del Finder o comandi di terminale.
1. Creare un flusso di lavoro delle Azioni della cartella con [Automator](https://support.apple.com/guide/automator/welcome/mac) e installarlo come servizio.
2. Allegare uno script manualmente tramite la configurazione delle Azioni della cartella nel menu contestuale di una cartella.
3. Utilizzare OSAScript per inviare messaggi di Apple Event a `System Events.app` per configurare in modo programmato un'azione della cartella.
* Questo metodo è particolarmente utile per incorporare l'azione nel sistema, offrendo un livello di persistenza.
Dopo che lo script è compilato, configura le Folder Actions eseguendo lo script di seguito. Questo script abiliterà le Folder Actions a livello globale e specificamente aggiornerà lo script precedentemente compilato nella cartella Desktop.
Quindi, apri l'app "Folder Actions Setup", seleziona la **cartella che desideri monitorare** e seleziona nel tuo caso **`folder.scpt`** (nel mio caso l'ho chiamato output2.scp):
Questa configurazione è stata memorizzata nel **plist** situato in **`~/Library/Preferences/com.apple.FolderActionsDispatcher.plist`** in formato base64.
**Compila un bundle** di selettore di colore con il tuo codice (puoi utilizzare, ad esempio, [**questo**](https://github.com/viktorstrate/color-picker-plus)) e aggiungi un costruttore (come nella sezione [Screen Saver](macos-auto-start-locations.md#screen-saver)) e copia il bundle in `~/Library/ColorPickers`.
Nota che il caricamento binario della tua libreria ha un **sandbox molto restrittivo**: `/System/Library/Frameworks/AppKit.framework/Versions/C/XPCServices/LegacyExternalColorPickerService-x86_64.xpc/Contents/MacOS/LegacyExternalColorPickerService-x86_64`
Le applicazioni possono avere `Estensioni di sincronizzazione Finder`. Questa estensione verrà inserita all'interno di un'applicazione che verrà eseguita. Inoltre, affinché l'estensione possa eseguire il proprio codice, **deve essere firmata** con un certificato valido di sviluppatore Apple, deve essere **sandboxed** (anche se potrebbero essere aggiunte eccezioni rilassate) e deve essere registrata con qualcosa del genere:
Crea un nuovo progetto in Xcode e seleziona il template per generare un nuovo **Screen Saver**. Quindi, aggiungi il tuo codice ad esso, ad esempio il seguente codice per generare log.
**Compilalo** e copia il bundle `.saver` in **`~/Library/Screen Savers`**. Quindi, apri l'interfaccia grafica dello Screen Saver e se ci clicchi sopra, dovrebbe generare molti log:
Nota che all'interno dei diritti del binario che carica questo codice (`/System/Library/Frameworks/ScreenSaver.framework/PlugIns/legacyScreenSaver.appex/Contents/MacOS/legacyScreenSaver`) puoi trovare **`com.apple.security.app-sandbox`** e quindi sarai **all'interno della sandbox dell'applicazione comune**.
Spotlight è la funzione di ricerca integrata di macOS, progettata per fornire agli utenti **accesso rapido e completo ai dati presenti sui loro computer**.\
Per facilitare questa rapida capacità di ricerca, Spotlight mantiene un **database proprietario** e crea un indice analizzando la maggior parte dei file, consentendo ricerche rapide sia per nome file che per contenuto.
Il meccanismo sottostante di Spotlight coinvolge un processo centrale chiamato 'mds', che sta per **'metadata server'**. Questo processo coordina l'intero servizio di Spotlight. A completamento di ciò, ci sono più demoni 'mdworker' che svolgono una varietà di compiti di manutenzione, come l'indicizzazione di diversi tipi di file (`ps -ef | grep mdworker`). Questi compiti sono resi possibili tramite i plugin di importazione di Spotlight, o **".mdimporter bundles"**, che consentono a Spotlight di comprendere e indicizzare contenuti in una vasta gamma di formati di file.
I plugin o pacchetti **`.mdimporter`** si trovano nei luoghi menzionati in precedenza e se compare un nuovo pacchetto viene caricato entro un minuto (non è necessario riavviare alcun servizio). Questi pacchetti devono indicare quali **tipi di file ed estensioni possono gestire**, in questo modo, Spotlight li utilizzerà quando viene creato un nuovo file con l'estensione indicata.
E ad esempio **/Library/Spotlight/iBooksAuthor.mdimporter** viene utilizzato per analizzare questi tipi di file (estensioni `.iba` e `.book` tra gli altri):
Se controlli il Plist di altri `mdimporter`, potresti non trovare l'ingresso **`UTTypeConformsTo`**. Questo perché è un _Uniform Type Identifiers_ ([UTI](https://en.wikipedia.org/wiki/Uniform\_Type\_Identifier)) integrato e non ha bisogno di specificare le estensioni.
Inoltre, i plugin predefiniti di sistema hanno sempre la precedenza, quindi un attaccante può accedere solo ai file che non sono altrimenti indicizzati dai `mdimporters` di Apple.
Per creare il tuo importer, puoi iniziare con questo progetto: [https://github.com/megrimm/pd-spotlight-importer](https://github.com/megrimm/pd-spotlight-importer) e quindi cambiare il nome, i **`CFBundleDocumentTypes`** e aggiungere **`UTImportedTypeDeclarations`** in modo che supporti l'estensione che desideri supportare e riflettili in **`schema.xml`**.\
Quindi **modifica** il codice della funzione **`GetMetadataForFile`** per eseguire il tuo payload quando viene creato un file con l'estensione elaborata.
Infine, **compila e copia il tuo nuovo `.mdimporter`** in una delle posizioni precedenti e puoi controllare quando viene caricato **monitorando i log** o controllando **`mdimport -L.`**
Qui puoi trovare le posizioni di avvio utili per il **bypass del sandbox** che ti consente di eseguire semplicemente qualcosa **scrivendolo in un file** essendo **root** e/o richiedendo altre **condizioni strane**.
Gli script periodici (**`/etc/periodic`**) vengono eseguiti a causa dei **launch daemons** configurati in `/System/Library/LaunchDaemons/com.apple.periodic*`. Nota che gli script memorizzati in `/etc/periodic/` vengono **eseguiti** come **proprietario del file**, quindi ciò non funzionerà per un potenziale escalation dei privilegi.
Nota che lo script periodico verrà **eseguito come proprietario dello script**. Quindi se uno user normale è il proprietario dello script, verrà eseguito come tale user (questo potrebbe prevenire attacchi di escalation di privilegi).
Poiché PAM è più focalizzato sulla **persistenza** e sul malware che sull'esecuzione semplice all'interno di macOS, questo blog non fornirà una spiegazione dettagliata, **leggi i writeup per comprendere meglio questa tecnica**.
Una tecnica di persistenza/escalation dei privilegi che sfrutta PAM è semplice come modificare il modulo /etc/pam.d/sudo aggiungendo all'inizio la riga:
Il seguente è il contenuto di un libro di hacking sulle tecniche di hacking. Il seguente contenuto proviene dal file /hive/hacktricks/macos-hardening/macos-auto-start-locations.md. Traduci il testo inglese pertinente in italiano e restituisci la traduzione mantenendo esattamente la stessa sintassi markdown e html. Non tradurre cose come codice, nomi di tecniche di hacking, parole di hacking, nomi di piattaforme cloud/SaaS (come Workspace, aws, gcp...), la parola 'leak', pentesting e tag markdown. Inoltre, non aggiungere nulla di extra oltre alla traduzione e alla sintassi markdown.
È possibile creare un plugin di autorizzazione che verrà eseguito quando un utente effettua il login per mantenere la persistenza. Per ulteriori informazioni su come creare uno di questi plugin, controllare gli articoli precedenti (e fare attenzione, un plugin scritto male può bloccarti e sarà necessario pulire il tuo Mac dalla modalità di ripristino).
Il comando **`evaluate-mechanisms`** indicherà al framework di autorizzazione che sarà necessario **chiamare un meccanismo esterno per l'autorizzazione**. Inoltre, l'opzione **`privileged`** farà sì che venga eseguito come root.
Il file di configurazione **`/private/etc/man.conf`** indica il binario/script da utilizzare quando si aprono i file di documentazione di man. Quindi il percorso dell'eseguibile potrebbe essere modificato in modo che ogni volta che l'utente utilizza man per leggere alcuni documenti, venga eseguita una backdoor.
In questo modo i tuoi moduli compilati verranno caricati da Apache. L'unica cosa è che devi **firmarlo con un certificato Apple valido**, oppure devi **aggiungere un nuovo certificato fidato** nel sistema e **firmarlo** con esso.
Ogni volta che auditd rileva un avviso, lo script **`/etc/security/audit_warn`** viene **eseguito**. Quindi è possibile aggiungere il proprio payload al suo interno.
Lo **StartupItem** è una directory che dovrebbe essere posizionata all'interno di `/Library/StartupItems/` o `/System/Library/StartupItems/`. Una volta creata questa directory, deve contenere due file specifici:
Assicurati che lo script rc e il file `StartupParameters.plist` siano posizionati correttamente all'interno della directory **StartupItem** affinché il processo di avvio li riconosca e li utilizzi.
In macOS, ci sono diverse posizioni in cui è possibile configurare l'avvio automatico di un'applicazione o di un servizio. Queste posizioni possono essere sfruttate da un hacker per eseguire un'applicazione o un servizio dannoso all'avvio del sistema.
## 1. LaunchAgents
Le LaunchAgents sono file di tipo .plist che specificano quali applicazioni o servizi devono essere avviati automaticamente quando un utente accede al sistema. Questi file sono posizionati nella directory `~/Library/LaunchAgents` o `/Library/LaunchAgents`.
## 2. LaunchDaemons
I LaunchDaemons sono simili alle LaunchAgents, ma vengono eseguiti a livello di sistema anziché a livello utente. Questi file sono posizionati nella directory `/Library/LaunchDaemons` o `/System/Library/LaunchDaemons`.
## 3. Login Items
I Login Items sono applicazioni o servizi che vengono avviati automaticamente quando un utente accede al sistema. Queste impostazioni possono essere configurate nelle preferenze di sistema di macOS.
## 4. Cron Jobs
I Cron Jobs sono script o comandi che vengono eseguiti automaticamente in determinati intervalli di tempo. Questi job possono essere configurati utilizzando il comando `crontab` o i file di configurazione nella directory `/etc/cron.*`.
## 5. Startup Items
I Startup Items sono applicazioni o servizi che vengono avviati automaticamente all'avvio del sistema. Queste impostazioni possono essere configurate nella directory `/Library/StartupItems` o `/System/Library/StartupItems`.
## 6. XPC Services
Le XPC Services sono servizi che vengono eseguiti in background e possono essere avviati automaticamente all'avvio del sistema. Questi servizi sono specificati nei file di configurazione nella directory `/Library/LaunchAgents` o `/System/Library/LaunchAgents`.
## 7. Kernel Extensions
Le Kernel Extensions sono estensioni del kernel che possono essere utilizzate per avviare servizi o applicazioni all'avvio del sistema. Queste estensioni sono posizionate nella directory `/System/Library/Extensions`.
## 8. LaunchAtLogin
LaunchAtLogin è un framework che consente alle applicazioni di essere avviate automaticamente all'accesso dell'utente. Questa funzionalità può essere utilizzata da un'applicazione dannosa per avviarsi automaticamente all'accesso del sistema.
## 9. Other Locations
Oltre alle posizioni menzionate sopra, ci possono essere altre posizioni personalizzate in cui è possibile configurare l'avvio automatico di un'applicazione o di un servizio. Queste posizioni possono variare a seconda delle configurazioni personalizzate del sistema.
È importante tenere presente che un hacker può sfruttare queste posizioni di avvio automatico per eseguire applicazioni o servizi dannosi all'avvio del sistema. Pertanto, è consigliabile verificare regolarmente queste posizioni e rimuovere eventuali voci sospette o non autorizzate.
Introdotto da Apple, **emond** è un meccanismo di registrazione che sembra essere poco sviluppato o forse abbandonato, ma rimane accessibile. Sebbene non sia particolarmente utile per un amministratore Mac, questo servizio oscuro potrebbe fungere da metodo di persistenza sottile per gli attori minaccia, probabilmente passando inosservato alla maggior parte degli amministratori di macOS.
Per coloro che ne sono consapevoli, identificare eventuali utilizzi maligni di **emond** è semplice. Il LaunchDaemon di sistema per questo servizio cerca script da eseguire in una singola directory. Per ispezionare ciò, è possibile utilizzare il seguente comando:
È così complicato installare kext anche come root che non lo considererò per sfuggire alle sandbox o persino per la persistenza (a meno che tu non abbia un exploit)
Apparentemente il `plist` da `/System/Library/LaunchAgents/com.apple.amstoold.plist` stava utilizzando questo binario mentre esponeva un servizio XPC... il problema è che il binario non esisteva, quindi potevi inserire qualcosa lì e quando il servizio XPC veniva chiamato, il tuo binario sarebbe stato chiamato.
Apparentemente non è molto comune eseguire questo script e non sono riuscito nemmeno a trovarlo nel mio macOS, quindi se vuoi ulteriori informazioni consulta il writeup.
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR ai repository github di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).