Applicazioni Riaperte al Login: Re-opened Applications (T1547.007)
La tecnica T1547.007 - Re-opened Applications sfrutta una funzionalità legittima di macOS che permette all'utente di riaprire automaticamente le applicazioni attive al momento del logout o del riavvio. Quando l'utente seleziona la casella "Reopen windows when logging back in" dalla schermata di conferma del sistema, macOS registra le applicazioni aperte in un file property list denominato com.apple.loginwindow.[UUID].plist, salvato nella cartella ~/Library/Preferences/ByHost.
Un attaccante può manipolare questo file plist aggiungendo il percorso di un binario malevolo, ottenendo così esecuzione automatica al successivo login dell'utente. Il meccanismo è particolarmente insidioso perché sfrutta un componente nativo del sistema operativo e non richiede privilegi elevati: il file risiede nella directory utente e può essere modificato senza sudo.
La tecnica si colloca in due tattiche MITRE ATT&CK: TA0003 (Persistence), come metodo per mantenere l'accesso attraverso riavvii e cambi di sessione, e TA0004 (Privilege Escalation), quando il payload viene eseguito nel contesto di un utente con privilegi superiori al processo iniziale. Nella kill chain si colloca dopo l'Initial Access e l'Execution, come meccanismo di consolidamento del foothold. L'impatto operativo è significativo perché l'esecuzione avviene senza notifiche visibili all'utente e senza richiedere modifiche a componenti di sistema protetti da SIP (System Integrity Protection).
Per simulare T1547.007 in un contesto red team autorizzato, il punto di partenza è la manipolazione controllata del file plist utente. Il percorso completo è ~/Library/Preferences/ByHost/com.apple.loginwindow.[UUID].plist, dove UUID corrisponde all'hardware UUID del sistema, ottenibile con il comando:
ioreg -rd1 -c IOPlatformExpertDevice | awk '/IOPlatformUUID/ { print $3; }'
Una volta identificato il file, l'operatore può ispezionarlo con plutil (nativo di macOS, open source):
plutil -p ~/Library/Preferences/ByHost/com.apple.loginwindow.*.plist
La struttura contiene un array TALAppsToRelaunchAtLogin con dizionari che specificano BundleID e Path delle applicazioni da riaprire. L'aggiunta di un'entry malevola può essere effettuata convertendo il plist in XML, modificandolo e ricompilandolo:
plutil -convert xml1 [path-plist]
Dopo la modifica manuale con un editor di testo, il file viene riconvertito in formato binario con plutil -convert binary1. In alternativa, il comando defaults write consente modifiche programmatiche senza conversioni intermedie, anche se la struttura annidata dell'array richiede attenzione alla sintassi.
Per una catena d'attacco completa, il payload dovrebbe essere un Mach-O firmato con un certificato self-signed o ad-hoc (codesign -s - [binario]) per ridurre le probabilità di blocco da parte di Gatekeeper, specialmente se l'attaccante ha già ottenuto un'esecuzione iniziale che ha rimosso l'attributo esteso com.apple.quarantine con xattr -d.
Strumenti utili in ambiente lab includono Mythic (open source), un framework C2 modulare con agenti macOS come Poseidon e Apfell che supportano tecniche di persistence macOS-specific, e Empire (open source) nella sua fork mantenuta, che include moduli di persistence per macOS. Atomic Red Team (open source) fornisce test atomici documentati per validare la detection lato blue team, anche se al momento la copertura specifica per T1547.007 va verificata nel repository ufficiale.
Per l'analisi dinamica durante lo sviluppo del test, fs_usage e fseventer (a pagamento) permettono di osservare le modifiche al filesystem in tempo reale, mentre Suspicious Package (gratuito) è utile per esaminare pacchetti PKG che potrebbero essere il vettore iniziale. Il test va sempre condotto su una VM macOS dedicata con snapshot pre-esecuzione, ricordando che le modifiche ai plist ByHost sopravvivono ai riavvii ma non alla ricreazione del profilo utente.
Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?
Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo