Modifica File Plist: Plist File Modification (T1647)

La tecnica T1647 - Plist File Modification riguarda l'abuso dei file property list di macOS, strutture XML o binarie che memorizzano configurazioni e metadati letti dal sistema operativo per gestire applicazioni e servizi al runtime. Un attaccante che riesce a scrivere su questi file può alterare il comportamento di app legittime, nascondere processi malevoli, iniettare variabili d'ambiente o costruire meccanismi di persistenza sfruttando le stesse convenzioni che Apple mette a disposizione degli sviluppatori.

La tecnica è mappata sulla tattica TA0005 Defense Evasion, ma nella pratica offensiva si intreccia costantemente con la persistenza: modificando chiavi come LSUIElement si ottiene l'esecuzione in background senza icona nel Dock, mentre l'iniezione di LSEnvironment apre la strada al Dynamic Linker Hijacking. Un altro vettore ricorrente è la manipolazione di ~/Library/Preferences/com.apple.dock.plist per alterare le applicazioni presentate all'utente, oppure la creazione ex novo di plist in ~/Library/LaunchAgents per registrare un Launch Agent.

L'impatto è significativo perché i file plist sono ubiqui in macOS e la loro modifica raramente genera allarmi diretti: gli utenti finali interagiscono con essi indirettamente e molti strumenti di sicurezza si concentrano su binari eseguibili anziché su file di configurazione. Le statistiche MITRE riportano 2 famiglie malware documentate (XCSSET e Cuckoo Stealer) e 1 mitigazione ufficiale focalizzata sulle linee guida per sviluppatori Apple.

In un ingaggio red team su ambiente macOS, la manipolazione dei plist è uno degli strumenti più eleganti per ottenere persistenza e occultamento senza ricorrere a exploit. Il punto di partenza è la comprensione dei due formati: XML testuale e binario. Per convertirli si usa il comando nativo plutil -convert xml1 file.plist oppure plutil -convert binary1 file.plist, entrambi disponibili out-of-the-box su ogni versione recente di macOS.

Un primo scenario classico è la creazione di un Launch Agent utente. Si scrive un file in ~/Library/LaunchAgents/com.apple.updater.plist contenente le chiavi Label, ProgramArguments con il path al payload, RunAtLoad impostato su true e opzionalmente KeepAlive. Il caricamento avviene con launchctl load ~/Library/LaunchAgents/com.apple.updater.plist (su versioni recenti è preferibile launchctl bootstrap gui/$(id -u) ). Per rendere il processo invisibile al Dock si aggiunge LSUIElement con valore true nell'Info.plist del bundle applicativo, tecnica documentata anche in XCSSET.

Per la modifica programmatica delle chiavi il tool di riferimento resta defaults (built-in): defaults write ~/Library/Preferences/com.apple.dock persistent-apps -array-add '...' consente di iniettare voci nel Dock. Alternativa più robusta è plutil -insert o plutil -replace per operare su chiavi specifiche senza corrompere la struttura. Se serve un approccio scriptato multipiattaforma, la libreria Python plistlib (standard library, open source) permette di leggere e scrivere sia formato XML che binario.

Per scenari di Dynamic Linker Hijacking si inserisce la chiave LSEnvironment nell'Info.plist con un dizionario contenente DYLD_INSERT_LIBRARIES puntato a una dylib controllata. Attenzione però: dal rilascio di System Integrity Protection e con la firma hardened runtime obbligatoria per il notarization, molte variabili DYLD vengono ignorate per binari firmati con com.apple.security.cs.disable-library-validation non attivo.

In laboratorio strumenti come Mythic (open source) con agent Poseidon o Apfell, oppure il framework swiftbelt (open source) di Cedric Owens per l'enumerazione, permettono di simulare l'intera catena. Per validare la persistenza dopo il reboot è utile KnockKnock di Objective-See (gratuito), che elenca gli elementi persistenti e consente di verificare se il proprio artefatto è visibile o meno agli strumenti di difesa comuni.

Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?

Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo

TEST GRATUITO
2 minuti · 7 domande Che professionista cyber sei? Scopri il profilo più vicino al tuo modo di pensare e inizia dal percorso giusto.
We use cookies

Utilizziamo i cookie sul nostro sito Web. Alcuni di essi sono essenziali per il funzionamento del sito, mentre altri ci aiutano a migliorare questo sito e l'esperienza dell'utente (cookie di tracciamento). Puoi decidere tu stesso se consentire o meno i cookie. Ti preghiamo di notare che se li rifiuti, potresti non essere in grado di utilizzare tutte le funzionalità del sito.