Attributi Estesi: Extended Attributes (T1564.014)
La tecnica T1564.014 — Extended Attributes documenta l'abuso degli attributi estesi (xattrs) su macOS e Linux come meccanismo di occultamento di payload malevoli. Gli xattrs sono coppie chiave-valore di metadati associati a file e directory, invisibili agli strumenti standard come ls, cat o Finder, e leggibili solo tramite utility dedicate come xattr su macOS o getfattr su Linux.
La tecnica appartiene alla tattica TA0005 (Defense Evasion) e si colloca nella fase post-compromissione della kill chain, tipicamente dopo l'ottenimento del foothold iniziale, per garantire persistenza e resistenza all'analisi. L'attaccante incorpora un payload di seconda fase in un attributo esteso di un file legittimo: il contenuto principale del file resta invariato, quindi hash e controlli di integrità continuano a restituire i valori originali.
Su Linux, gli xattrs sono organizzati in namespace (user., trusted., security., system.) con permessi differenziati. Su macOS, gli attributi sono stringhe piatte spesso prefissate con com.apple.*, usate da Gatekeeper, Spotlight e sistema di quarantena. Un loader minimale è sufficiente a estrarre il payload, decodificarlo e passarlo a un interprete come bash, Python o osascript.
L'impatto è significativo: antivirus signature-based e strumenti di integrity checking classici sono ciechi a questa forma di occultamento, poiché operano sul contenuto del file e non sui metadati estesi. La tecnica è documentata con 1 mitigazione MITRE (M1040) e due strategie di detection separate per Linux (AN1135) e macOS (AN1136).
Per un red team, l'abuso degli xattrs offre un canale di occultamento elegante che sopravvive a molti controlli statici. La catena d'attacco tipica prevede tre passi: scelta di un file legittimo come contenitore, scrittura del payload codificato in un attributo, deploy di un loader che estrae ed esegue.
Su macOS, la scrittura avviene con l'utility nativa xattr. Un payload Base64 può essere iniettato con xattr -w com.apple.metadata:custom "$(base64 payload.sh)" /Applications/LegitApp.app/Contents/Info.plist. Il file bersaglio può essere un plist, un binario firmato o qualsiasi file su cui l'utente abbia diritti di scrittura. L'estrazione lato loader avviene con xattr -p com.apple.metadata:custom /path/to/file | base64 -d | bash. La scelta di una chiave con prefisso com.apple.* aiuta a mimetizzarsi tra gli attributi legittimi già presenti.
Su Linux, il flusso è analogo con setfattr e getfattr (pacchetto attr, open source). La scrittura si effettua con setfattr -n user.payload -v "$(base64 -w0 stage2.sh)" /usr/share/doc/legit-package/README, mentre il loader recupera con getfattr --only-values -n user.payload /usr/share/doc/legit-package/README | base64 -d | bash. Il namespace user. è preferibile perché non richiede privilegi di root ed è disponibile sulla maggior parte dei filesystem con opzione user_xattr attiva (ext4, XFS, Btrfs).
Per simulazioni più realistiche, si può combinare la tecnica con un LaunchAgent su macOS o una entry cron su Linux che invoca periodicamente il loader, ottenendo persistenza senza file eseguibili aggiuntivi visibili.
Strumenti utili in laboratorio:
- Atomic Red Team (open source) — include test coverage parziali per T1564 e permette di parametrizzare i comandi xattr e setfattr in scenari ripetibili
- Mythic C2 (open source) — supporta agenti macOS come Apfell/Poseidon che possono manipolare xattrs nativamente
- attr (open source) — pacchetto Linux con setfattr, getfattr, attr
- xattr (nativo macOS) — preinstallato, nessuna dipendenza
Durante un engagement, va documentata la lista dei file modificati con relative chiavi xattr per garantire un cleanup completo in fase di chiusura: attributi lasciati indietro possono generare falsi positivi permanenti nei controlli successivi del cliente. Un semplice xattr -d su macOS o setfattr -x su Linux rimuove le tracce.
Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?
Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo