I ricercatori di sicurezza di Intezer Joakim Kennedy e il BlackBerry Threat Research and Intelligence Team hanno analizzato un nuovo malware Linux, a cui è stato dato il nome di Symbiote, che secondo loro è diverso dalla maggior parte degli altri: non è un file eseguibile autonomo.
La modalità d’azione del malware è infatti abbastanza particolare: il suo scopo è quello di modificare la variabile d’ambiente LD_PRELOAD, utilizzata dal linker dinamico per caricare una libreria di oggetti condivisi. Se fatto globalmente, significa che ogni processo che andrà in esecuzione sulla macchina andrà a caricare le librerie indicate nella variable d’ambiente, tra cui quelle del malware Symbiote.
L’utilizzo di LD_PRELOAD permette di fare cose abbastanza particolari e carine. Normalmente, contiene una serie di percorsi che puntano a dei file shared object. Sono file non direttamente eseguibili ma che contengono al loro interno definizioni di funzioni o altro e che quindi possono essere eseguiti da altri programmi una volta caricati in memoria.
Se un eseguibile di un programma viene compilato come “statically linked” tutte le librerie vengono staticamente incluse all’interno dell’eseguibile, e il linker dinamico (che utilizza LD_PRELOAD) non verrà invocato.
Se invece un eseguibile viene compilato come “dynamically linked”, esso sarà più leggero affidandosi quindi alle librerie fornite dall’ambiene in cui viene eseguito. Anche un programma in C semplice come un hello world basa il suo funzionamento su libc. Per chi non lo sapesse, la libreria standard C o libc è la libreria standard per il linguaggio di programmazione C, come specificato nello standard ISO C. Libc (il cui file che viene linkato dinamicamente è lib.so) è la libreria che fornisce tutte le funzioni C base, per esempio quelle definite in stdio.h e stdlib.h come printf, malloc e così via.
La particolarità è che tutte le librerie presenti in LD_PRELOAD vengono caricate prima persino di libc.so. Questo permette quindi di fornire delle implementazioni personali delle funzioni esposte dalla libreria standard C. Un esempio carino potrebbe per esempio essere quello di modificare le funzioni di scrittura verso stdout/stderr e modificare quindi l’output applicando colori diversi.
Uno dei lati positivi di Linux è quello di essere “immune” da malware. La verità è che non è immune per sua natura, o meglio, è un sistema operativo altamente sicuro ed è anche abbastanza difficile da attaccare se configurato e utilizzato bene, ma è anche vero che i criminali informatici hanno poco interesse nello sviluppare malware vista la difficoltà d’applicazione e i pochi utenti “mainstream” ad utilizzare Linux. Il gioco non ne vale la candela quindi.
Se sviluppati però, possono causare danni maggiori. Questo perchè Linux viene ampiaente utilizzato nella maggior parte dei server mondiali e workstation aziendali. I team di Intezer e BlackBerry hanno scoperto Symbiote nel novembre 2021 e pare essere stato scritto per prendere di mira le istituzioni finanziarie in America Latina. L’analisi del malware Symbiote e il suo comportamento suggeriscono che potrebbe essere stato sviluppato in Brasile.
“Dato che è estremamente evasivo, è probabile che un’infezione da Symbiote ‘voli sotto i radar’. Nella nostra ricerca, non abbiamo trovato prove sufficienti per determinare se Symbiote viene utilizzato in attacchi altamente mirati o ampi”
“L’esecuzione di analisi forensi dal vivo su una macchina infetta potrebbe non rivelare nulla poiché tutti i file, i processi e gli artefatti di rete sono nascosti dal malware”
Un esempio di tecnica utilizzata per nascondersi è la seguente. Tra gli obiettivi principali di Symbiote troviamo quello di aprire delle backdoor sul sistema e quindi fornire accesso da remoto a malintenzionati. Questo causa ovviamente del traffico di rete malevolo che potrebbe essere facilmente identificabile utilizzando software per l’analisi del traffico di rete. Su Linux, l’analisi dei pacchetti trasmessi/ricevuti viene effettuata grazie al Berkeley Packet Filter. Si tratta di un’interfaccia diretta verso il Data-Link layer dello stack ISO/OSI e permette, tra le altre cose, di monitorare tutti i pacchetti che passano attraverso questo layer. Quello che fa Symbiote è andare a sostituire le funzioni di default e quindi nascondere tutti i pacchetti di rete malevoli.