macOS Dirty NIB
Per ulteriori dettagli sulla tecnica, controlla il post originale da: 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/. Ecco un riepilogo:
Cosa sono i file Nib
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
Creazione e Configurazione di un File NIB
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.
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 selettoreexecuteAndReturnError:
.
Test:
Un semplice Apple Script per scopi di test:
Testa eseguendo nel debugger di XCode e cliccando il pulsante.
Targeting di un'Applicazione (Esempio: Pages)
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.
Sovrascrittura del File NIB:
Sostituisci un file NIB esistente (ad es., il NIB del Pannello Informazioni) con il file DirtyNIB creato.
Esecuzione:
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.
Esempio di Codice: File .xib Maligno
Accedi e rivedi un campione di un file .xib maligno 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/ puoi trovare un tutorial su come creare un dirty nib.
Affrontare i Vincoli di Avvio
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 pacchetti delle app sono limitate. Tuttavia, i metodi precedenti prevedevano:
Copiare l'app in un'altra posizione (ad es.,
/tmp/
).Rinominare le directory all'interno del pacchetto dell'app per bypassare le protezioni iniziali.
Dopo aver eseguito l'app per registrarsi con Gatekeeper, modificare il pacchetto dell'app (ad es., sostituendo MainMenu.nib con Dirty.nib).
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 pacchetti delle app dopo la memorizzazione nella cache di Gatekeeper, rendendo l'exploit inefficace.
Last updated