macOS Dirty NIB
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
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:
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.
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 selettore executeAndReturnError:
.
Test:
Un semplice Apple Script per scopi di test:
Testa eseguendo nel debugger di XCode e cliccando il pulsante.
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
).
Modifica l'AppleScript per accedere ed estrarre dati utente, come foto, senza il consenso dell'utente.
Accedi e rivedi un campione di un file .xib maligno che dimostra l'esecuzione di codice arbitrario.
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.
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.
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.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)