Dylib Hijacking: Dynamic Library Hijacking su macOS (T1574.004)

Il Dylib Hijacking è una tecnica di manipolazione del flusso di esecuzione specifica dell'ecosistema macOS, in cui l'attaccante colloca una libreria dinamica malevola (.dylib) con un nome atteso in un percorso che un'applicazione legittima interroga durante il caricamento. Il dynamic loader dyld risolve i riferimenti alle librerie seguendo un ordine sequenziale di search path, molti dei quali prefissati con @rpath, e questa prevedibilità è ciò che rende la tecnica sfruttabile.

Un ulteriore vettore è rappresentato dal weak linking tramite LC_LOAD_WEAK_DYLIB: quando una dipendenza è dichiarata debole, il binario si avvia anche se la libreria manca, offrendo all'attaccante la possibilità di introdurre una dylib con quel nome che verrà caricata nello spazio di indirizzamento del processo vittima.

MITRE ATT&CK mappa la tecnica su tre tattiche: TA0003 Persistence, perché la dylib viene caricata a ogni avvio dell'applicazione trojanizzata; TA0004 Privilege Escalation, quando il processo vittima gira con privilegi elevati o entitlement particolari; TA0005 Defense Evasion, poiché l'esecuzione avviene all'interno di un processo firmato e legittimo, mascherando il codice ostile.

L'impatto operativo è significativo: il codice iniettato eredita entitlement, TCC permission e accesso di rete del binario ospite, spesso bypassando controlli di sicurezza che si basano sull'identità del processo padre.

L'attività di red team su questa tecnica parte sempre dall'enumerazione delle dipendenze deboli o mancanti dei binari target. Lo strumento canonico è otool (incluso nei Command Line Tools di Xcode, gratuito), che consente di ispezionare i load command di un Mach-O:

otool -l /Applications/Target.app/Contents/MacOS/Target | grep -E "LC_LOAD|LC_RPATH|name"

Cercare voci LC_LOAD_WEAK_DYLIB è il primo passo: ogni weak dylib assente rappresenta un potenziale hijack. In parallelo, LC_RPATH rivela i search path relativi che dyld esplorerà; una dylib con nome coincidente piazzata nel primo path della lista viene caricata prima dell'originale.

Per automatizzare la scoperta, Dylib Hijack Scanner (DHS) di Objective-See (gratuito) analizza le applicazioni installate identificando sia weak dylib mancanti sia scenari di rpath hijack. Un approccio più programmatico è l'uso di objection (open source) o script Python basati su LIEF (open source) per il parsing massivo dei Mach-O.

La costruzione del payload richiede la compilazione di una dylib che esporti i simboli attesi e includa un costruttore __attribute__((constructor)) per eseguire il codice al caricamento. Un esempio minimo di compilazione:

clang -dynamiclib -o malicious.dylib payload.c -Wl,-install_name,@rpath/legit.dylib

Il framework Empire (S0363, open source nel fork BC-Security) include un modulo dedicato che, data una dylib legittima di un'applicazione vulnerabile, genera automaticamente la dylib malevola con i simboli corretti per evitare crash del processo ospite. Questo è cruciale: se la libreria non esporta i simboli richiesti, l'applicazione termina e l'operazione fallisce silenziosamente ma perde persistenza.

Per scenari di privilege escalation, il target ideale sono applicazioni con entitlement sensibili — accesso a com.apple.security.automation.apple-events, TCC permission per Full Disk Access, o binari SUID. Verificare gli entitlement con:

codesign -d --entitlements :- /Applications/Target.app

Attenzione ai vincoli moderni: dal rilascio di System Integrity Protection e con l'introduzione di hardened runtime e library validation, molti binari firmati Apple rifiutano di caricare dylib non firmate dallo stesso team ID. In laboratorio, i target realistici sono applicazioni di terze parti senza hardened runtime o con l'entitlement com.apple.security.cs.disable-library-validation. Verificare sempre il flag prima di investire tempo su un target.

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.