diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-dirty-nib.md b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-dirty-nib.md index 00d703cd6..f4e9fd144 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-dirty-nib.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-dirty-nib.md @@ -1,8 +1,8 @@ # macOS Dirty NIB {% hint style="success" %} -Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
@@ -15,66 +15,75 @@ Learn & practice GCP Hacking: {% endhint %} -**Per ulteriori dettagli sulla tecnica, controlla il post originale da: [https://blog.xpnsec.com/dirtynib/**](https://blog.xpnsec.com/dirtynib/).** Ecco un riassunto: +**Per ulteriori dettagli sulla tecnica, controlla il post originale da:** [**https://blog.xpnsec.com/dirtynib/**](https://blog.xpnsec.com/dirtynib/) e il seguente post di [**https://sector7.computest.nl/post/2024-04-bringing-process-injection-into-view-exploiting-all-macos-apps-using-nib-files/**](https://sector7.computest.nl/post/2024-04-bringing-process-injection-into-view-exploiting-all-macos-apps-using-nib-files/)**.** Ecco un riepilogo: -I file NIB, parte dell'ecosistema di sviluppo di Apple, sono destinati a definire **elementi UI** e le loro interazioni nelle applicazioni. Comprendono oggetti serializzati come finestre e pulsanti, e vengono caricati durante l'esecuzione. Nonostante il loro utilizzo continuo, Apple ora promuove gli Storyboard per una visualizzazione più completa del flusso UI. +### Cosa sono i file Nib -### Preoccupazioni di Sicurezza con i File NIB -È fondamentale notare che **i file NIB possono rappresentare un rischio per la sicurezza**. Hanno il potenziale di **eseguire comandi arbitrari**, e le modifiche ai file NIB all'interno di un'app non impediscono a Gatekeeper di eseguire l'app, rappresentando una minaccia significativa. +I file Nib (abbreviazione di NeXT Interface Builder), parte dell'ecosistema di sviluppo di Apple, sono destinati a definire **elementi UI** e le loro interazioni nelle applicazioni. Comprendono oggetti serializzati come finestre e pulsanti, e vengono caricati durante l'esecuzione. Nonostante il loro utilizzo continuo, Apple ora promuove gli Storyboard per una visualizzazione più completa del flusso UI. + +Il file Nib principale è referenziato nel valore **`NSMainNibFile`** all'interno del file `Info.plist` dell'applicazione ed è caricato dalla funzione **`NSApplicationMain`** eseguita nella funzione `main` dell'applicazione. + +### Processo di Iniezione Dirty Nib -### Processo di Iniezione di Dirty NIB #### Creazione e Configurazione di un File NIB + 1. **Impostazione Iniziale**: -- Crea un nuovo file NIB utilizzando XCode. -- Aggiungi un Oggetto all'interfaccia, impostando la sua classe su `NSAppleScript`. -- Configura la proprietà `source` iniziale tramite Attributi di Runtime Definiti dall'Utente. - +* Crea un nuovo file NIB utilizzando XCode. +* Aggiungi un Oggetto all'interfaccia, impostando la sua classe su `NSAppleScript`. +* Configura la proprietà `source` iniziale tramite Attributi di Runtime Definiti dall'Utente. 2. **Gadget di Esecuzione del Codice**: -- La configurazione facilita l'esecuzione di AppleScript su richiesta. -- Integra un pulsante per attivare l'oggetto `Apple Script`, attivando specificamente il selettore `executeAndReturnError:`. - +* La configurazione facilita l'esecuzione di AppleScript su richiesta. +* Integra un pulsante per attivare l'oggetto `Apple Script`, attivando specificamente il selettore `executeAndReturnError:`. 3. **Test**: -- Un semplice Apple Script per scopi di test: +* Un semplice Apple Script per scopi di test: + ```bash set theDialogText to "PWND" display dialog theDialogText ``` -- Testa eseguendo nel debugger di XCode e cliccando il pulsante. +* Testa eseguendo nel debugger di XCode e cliccando il pulsante. #### Targeting di un'Applicazione (Esempio: Pages) + 1. **Preparazione**: -- Copia l'app target (ad es., Pages) in una directory separata (ad es., `/tmp/`). -- Avvia l'app per evitare problemi con Gatekeeper e memorizzarla nella cache. - +* Copia l'app target (ad es., Pages) in una directory separata (ad es., `/tmp/`). +* Avvia l'app per evitare problemi con Gatekeeper e memorizzarla nella cache. 2. **Sovrascrittura del File NIB**: -- Sostituisci un file NIB esistente (ad es., About Panel NIB) con il file DirtyNIB creato. - +* Sostituisci un file NIB esistente (ad es., il NIB del Pannello Informazioni) con il file DirtyNIB creato. 3. **Esecuzione**: -- Attiva l'esecuzione interagendo con l'app (ad es., selezionando l'elemento di menu `About`). +* Attiva l'esecuzione interagendo con l'app (ad es., selezionando l'elemento di menu `Informazioni`). #### Prova di Concetto: Accesso ai Dati Utente -- Modifica l'AppleScript per accedere ed estrarre dati utente, come foto, senza il consenso dell'utente. + +* Modifica l'AppleScript per accedere ed estrarre dati utente, come foto, senza il consenso dell'utente. ### Esempio di Codice: File .xib Maligno -- Accedi e rivedi un [**campione di un file .xib maligno**](https://gist.github.com/xpn/16bfbe5a3f64fedfcc1822d0562636b4) che dimostra l'esecuzione di codice arbitrario. + +* Accedi e rivedi un [**campione di un file .xib maligno**](https://gist.github.com/xpn/16bfbe5a3f64fedfcc1822d0562636b4) che dimostra l'esecuzione di codice arbitrario. + +### Altro Esempio + +Nel post [https://sector7.computest.nl/post/2024-04-bringing-process-injection-into-view-exploiting-all-macos-apps-using-nib-files/](https://sector7.computest.nl/post/2024-04-bringing-process-injection-into-view-exploiting-all-macos-apps-using-nib-files/) puoi trovare un tutorial su come creare un dirty nib. ### Affrontare i Vincoli di Avvio -- I Vincoli di Avvio ostacolano l'esecuzione dell'app da posizioni inaspettate (ad es., `/tmp`). -- È possibile identificare app non protette dai Vincoli di Avvio e mirare a esse per l'iniezione del file NIB. + +* I Vincoli di Avvio ostacolano l'esecuzione delle app da posizioni inaspettate (ad es., `/tmp`). +* È possibile identificare le app non protette dai Vincoli di Avvio e mirare a esse per l'iniezione del file NIB. ### Ulteriori Protezioni di macOS -A partire da macOS Sonoma, le modifiche all'interno dei bundle delle app sono limitate. Tuttavia, i metodi precedenti prevedevano: + +A partire da macOS Sonoma, le modifiche all'interno dei pacchetti delle app sono limitate. Tuttavia, i metodi precedenti prevedevano: + 1. Copiare l'app in un'altra posizione (ad es., `/tmp/`). -2. Rinominare le directory all'interno del bundle dell'app per bypassare le protezioni iniziali. -3. Dopo aver eseguito l'app per registrarsi con Gatekeeper, modificare il bundle dell'app (ad es., sostituendo MainMenu.nib con Dirty.nib). +2. Rinominare le directory all'interno del pacchetto dell'app per bypassare le protezioni iniziali. +3. Dopo aver eseguito l'app per registrarsi con Gatekeeper, modificare il pacchetto dell'app (ad es., sostituendo MainMenu.nib con Dirty.nib). 4. Rinominare di nuovo le directory e rieseguire l'app per eseguire il file NIB iniettato. -**Nota**: Gli aggiornamenti recenti di macOS hanno mitigato questo exploit impedendo le modifiche ai file all'interno dei bundle delle app dopo la memorizzazione nella cache di Gatekeeper, rendendo l'exploit inefficace. - +**Nota**: Gli aggiornamenti recenti di macOS hanno mitigato questo exploit impedendo le modifiche ai file all'interno dei pacchetti delle app dopo la memorizzazione nella cache di Gatekeeper, rendendo l'exploit inefficace. {% hint style="success" %} -Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)