Symbiote è un malware appartenente alla famiglia dei trojan che prende di mira il sistema operativo Linux fornendo all’attaccante funzionalità quali la sottrazione di credenziali utilizzate dalla vittima ed il controllo remoto della macchina infetta.
Le prime attività malevole registrate e attribuibili a Symbiote risalgono a novembre 2021.
Indice degli argomenti
Symbiote: cos’è e come funziona il malware
Come suggerisce l’etimologia del nome assegnatoli, derivante dal greco “syn bios” cioè “vita insieme”, Symbiote differisce dalla maggior parte dei malware in quanto non opera come un file eseguibile standalone, ma come un parassita servendosi dei processi in esecuzione nella macchina della vittima per eseguire azioni malevole per conto dell’attaccante.
In particolare, il malware si presenta come una shared object library che viene caricata a runtime dai processi in esecuzione sulla macchina attraverso la manipolazione della variabile d’ambiente LD_PRELOAD, provocando l’infezione.
Come accennato in precedenza, uno degli obiettivi di Symbiote è quello di sottrarre le credenziali utilizzate dalla vittima. A tal fine, il malware utilizza un hook sulla funzione read della libreria standard del C, in modo tale da catturare le credenziali nel caso in cui quest’ultima venga chiamata da un processo come Secure Shell (ssh) o Secure Copy (scp).
Così Symbiote bypassa i controlli di sicurezza perimetrali
Una volta estrapolate, le credenziali vengono cifrate attraverso l’algoritmo di crittografia RC4 e memorizzate in un file all’interno della macchina della vittima, pronte per essere inoltrate all’attaccante. A tal fine, Symbiote codifica in esadecimale le credenziali e, utilizzando una tecnica nota come DNS exfiltration, le invia all’attaccante incapsulandole in una richiesta DNS di risoluzione di indirizzo IP ad un nome di dominio controllato da quest’ultimo.
Ciò permette al malware di bypassare i controlli di sicurezza perimetrali attivi nella rete della vittima.
La richiesta DNS risulterà così formata:
%NUMERO_PACCHETTO%.%ID_MACCHIINA%.%PAYLOAD_CODIFICATO%.%NOME_DI_DOMINIO%
Ecco come il malware prende il controllo dei sistemi target
Quella appena descritta, non è l’unica funzionalità di Symbiote. Esso è in grado anche di garantire all’attaccante il controllo remoto della macchina infetta sfruttando un hook sulle principali funzioni del Pluggable Authentication Module (PAM) di Linux.
Il malware, infatti, consente all’utente malevolo di autenticarsi a qualsiasi servizio utilizzante PAM come layer di autenticazione. Non solo: in aggiunta fornisce privilegi di amministratore all’attaccante, modificando il contenuto della variabile d’ambiente HTTP_SETTHIS.
Tra le caratteristiche più interessanti e pericolose di Symbiote, c’è l’avanzata capacità di evadere le attività di scansione e di analisi, nascondendo in maniera molto efficace la propria presenza all’interno della macchina infetta e la propria attività all’interno della rete.
Le tecniche di evasione di Symbiote
Una delle tecniche di evasione è quella che riguarda la utility ldd. Ldd permette, invocando il linker dinamico con la variabile ambientale LD_TRACE_LOADED_OBJECTS settata a 1, di visualizzare tutte le shared object library caricate nei processi in esecuzione.
Symbiote è in grado di intercettare la chiamata alla suddetta utility e cancellare i propri riferimenti dalla lista di dipendenze fornite in output.
Symbiote non nasconde solo se stesso, ma anche altri programmi malevoli che un attaccante potrebbe distribuire o file utilizzati per memorizzare le credenziali estratte. In particolare, nel caso in cui si tentasse di accedere alla lista dei processi in esecuzione sulla macchina, il malware sarebbe in grado di intercettare l’attività e di eliminare i processi propedeutici al proprio funzionamento tra cui certbotx64, certbotx86, javanodex86, javaserverx64, javaclientex64 e javautils.
Metodologie usate per celare le attività malevole
Molto avanzate risultano anche le metodologie utilizzate dal malware per celare la propria attività agli strumenti di monitoraggio e analisi di rete. In questo senso Symbiote opera su tre fronti.
In primis intercetta la chiamata alle funzioni fopen e fopen64 in modo tale da poter rilevare il tentativo di accedere al file /prc/net/tcp contenente le informazioni legate alle connessioni TCP correntemente attive.
Il malware crea un file temporaneo nel quale riporta tutte le connessioni di rete presenti nel file suddetto, omettendo, però, quelle ad esso associate.
Symbiote è inoltre in grado di alterare l’utilizzo del extensive Berkeley Packet Filter (eBPF) da parte dei tool di monitoraggio della rete al fine di impedire a questi ultimi di individuare il traffico malevolo.
Il Berkeley Packet Filter permette l’esecuzione di bytecode, proveniente dallo spazio utente, all’interno del Kernel Linux consentendo quindi agli strumenti di monitoraggio della rete, di determinare lato utente le regole di filtraggio dei pacchetti (applicate tra data link layer e stack ISO/OSI) propedeutiche alla propria attività di analisi.
In questo contesto, Symbiote ha la capacità di manipolare il bytecode specificato dall’applicazione di monitoraggio, oscurando traffico in ingresso ed in uscita relativo alle porte, TCP o SCTP, 43253, 43753, 63424 e 26424.
Cosi come avviene per le connessioni TCP, Symbiote si occupa anche di celare le connessioni UDP instaurate. Fa ciò intercettando l’esecuzione delle funzioni associate alla libreria libcap e filtrando dall’output il traffico UDP indirizzato a specifici nomi di dominio controllati dall’attaccante.