Quasar Linux (QLNX): Un Presidio nella Catena di Fornitura con Pieno Capacità RAT
Detection stack
- AIDR
- Alert
- ETL
- Query
Sintesi
Quasar Linux (QLNX) è un trojan di accesso remoto avanzato per Linux che combina un rootkit a livello utente ed eBPF con una backdoor PAM e ampie capacità di raccolta credenziali. Il malware supporta l’esecuzione senza file, il masquerading del nome del processo e diverse tecniche di persistenza che lo aiutano a rimanere nascosto sui sistemi infetti. La sua concentrazione sulle workstation degli sviluppatori lo rende particolarmente pericoloso per l’abuso della supply chain, in quanto può rubare token, chiavi SSH e credenziali cloud. Il malware utilizza anche comunicazioni crittografate e supporta una struttura mesh peer-to-peer per migliorare la resilienza e mantenere l’accesso.
Indagine
I ricercatori di Trend Micro hanno ottenuto il binario QLNX e hanno condotto analisi sia statiche che dinamiche, scoprendo il codice sorgente incorporato per i componenti rootkit e della backdoor PAM. La loro indagine ha documentato la capacità del malware di compilare componenti direttamente sull’host target, la gamma dei meccanismi di persistenza che utilizza, e l’intero set di comandi supportato dall’impianto. L’analisi della rete ha rivelato anche un protocollo personalizzato basato su TLS e un identificatore magico distintivo utilizzato nelle comunicazioni. Da questo lavoro, i ricercatori hanno estratto indicatori di compromissione per supportare il hunting e la rilevazione.
Mitigazione
I difensori dovrebbero cercare QLNX monitorando il suo file di lock mutex unico, sospetto entrate LD_PRELOAD e comandi di compilazione insoliti che generano oggetti condivisi malevoli. Le organizzazioni dovrebbero anche bloccare l’esecuzione di binari sconosciuti chiamati gcc compilation commands that generate malicious shared objects. Organizations should also block execution of unknown binaries named quasar-implant e limitare l’accesso in scrittura su /etc/ld.so.preload. L’autenticazione a più fattori dovrebbe essere applicata per gli account degli sviluppatori, e i team di sicurezza dovrebbero monitorare attentamente i tentativi di esfiltrare archivi di credenziali e file di token sensibili.
Risposta
Se vengono trovati indicatori di QLNX, isolare immediatamente il sistema colpito, raccogliere immagini di memoria e disco, e terminare il processo malevolo. Rimuovere le voci non autorizzate da /etc/ld.so.preload, eliminare i file malevoli compilati e cancellare il file di lock utilizzato dall’impianto. Tutte le credenziali potenzialmente esposte, in particolare i token di cloud e registro pacchetti, dovrebbero essere ruotati senza ritardi. Gli investigatori dovrebbero anche valutare se i sistemi della supply chain, i repository o gli ambienti di build siano stati contaminati durante l’intrusione. .so files, and clear the lock file used by the implant. All potentially exposed credentials, especially cloud and package registry tokens, should be rotated without delay. Investigators should also assess whether any supply-chain systems, repositories, or build environments were contaminated during the intrusion.
graph TB %% Définition des classes classDef action fill:#99ccff classDef technique fill:#ffcc99 classDef malware fill:#ff9999 classDef tool fill:#cccccc classDef process fill:#ccffcc classDef persistence fill:#ffdd99 %% Nœud malware malware_qlnx[“<b>Malware</b> – <b>Nom</b> : QLNX<br/><b>Description</b> : implant Linux sans fichier utilisant des techniques de rootkit”] class malware_qlnx malware %% Phase d’exécution action_execution[“<b>Action</b> – <b>Exécution</b> : lance un implant sans fichier via memfd_create et execveat, usurpe argv0 et le nom du processus”] class action_execution action technique_process_spoof[“<b>Technique</b> – T1564.010 :<br/>Masquage d’artefacts – usurpation d’arguments de processus”] class technique_process_spoof technique technique_unix_shell[“<b>Technique</b> – T1059.004 :<br/>Interpréteur de commandes et scripts – shell Unix”] class technique_unix_shell technique %% Phase d’élévation de privilèges action_priv_esc[“<b>Action</b> – <b>Élévation de privilèges</b> : tente d’utiliser sudo ou pkexec pour obtenir des privilèges élevés”] class action_priv_esc action technique_priv_esc[“<b>Technique</b> – T1548.004 :<br/>Abus du mécanisme de contrôle d’élévation – exécution élevée avec invite”] class technique_priv_esc technique %% Phase de persistance action_persistence[“<b>Action</b> – <b>Persistance</b> : installe des services systemd, cron @reboot, scripts init.d, démarrage automatique XDG et hook LD_PRELOAD”] class action_persistence action technique_rc_scripts[“<b>Technique</b> – T1037.004 :<br/>Scripts d’initialisation de démarrage ou de connexion – scripts RC”] class technique_rc_scripts technique technique_autostart[“<b>Technique</b> – T1547 :<br/>Exécution automatique au démarrage ou à la connexion”] class technique_autostart technique technique_hijack[“<b>Technique</b> – T1574 :<br/>Détournement du flux d’exécution via LD_PRELOAD”] class technique_hijack technique class action_persistence persistence %% Phase d’évasion de défense action_defense_evasion[“<b>Action</b> – <b>Évasion de défense</b> : déploie un rootkit LD_PRELOAD, un contrôleur eBPF, injection de processus et suppression des journaux”] class action_defense_evasion action technique_rootkit[“<b>Technique</b> – T1014 :<br/>Rootkit – masque fichiers, processus et ports”] class technique_rootkit technique technique_thread_hijack[“<b>Technique</b> – T1055.003 :<br/>Injection de processus – détournement d’exécution de threads”] class technique_thread_hijack technique technique_process_hollow[“<b>Technique</b> – T1055.012 :<br/>Injection de processus – process hollowing”] class technique_process_hollow technique %% Phase de collecte d’identifiants action_credential_harvest[“<b>Action</b> – <b>Collecte d’identifiants</b> : collecte des identifiants depuis fichiers, clés SSH, /etc/shadow, navigateurs et PAM”] class action_credential_harvest action technique_creds_files[“<b>Technique</b> – T1552.001 :<br/>Identifiants non sécurisés – identifiants dans les fichiers”] class technique_creds_files technique technique_private_keys[“<b>Technique</b> – T1552.004 :<br/>Identifiants non sécurisés – clés privées”] class technique_private_keys technique technique_shadow_dump[“<b>Technique</b> – T1003.008 :<br/>Extraction d’identifiants OS – /etc/passwd et /etc/shadow”] class technique_shadow_dump technique technique_cookies[“<b>Technique</b> – T1550.004 :<br/>Utilisation de matériel d’authentification alternatif – cookie de session Web”] class technique_cookies technique technique_pam[“<b>Technique</b> – T1555 :<br/>Identifiants depuis les stockages de mots de passe – module PAM”] class technique_pam technique %% Phase de collecte action_collection[“<b>Action</b> – <b>Collecte</b> : capture les données du presse-papiers et des captures d’écran”] class action_collection action technique_clipboard[“<b>Technique</b> – T1115 :<br/>Données du presse-papiers”] class technique_clipboard technique technique_screenshot[“<b>Technique</b> – T1113 :<br/>Capture d’écran”] class technique_screenshot technique %% Phase C2 action_c2[“<b>Action</b> – <b>Commande et contrôle</b> : exfiltration des données via TLS/HTTPS chiffré”] class action_c2 action technique_exfil[“<b>Technique</b> – T1041 :<br/>Exfiltration via canal C2”] class technique_exfil technique %% Mouvement latéral action_lateral[“<b>Action</b> – <b>Mouvement latéral</b> : utilise des clés SSH collectées pour accéder à des hôtes distants”] class action_lateral action technique_remote_exploit[“<b>Technique</b> – T1210 :<br/>Exploitation de services distants”] class technique_remote_exploit technique %% Connexions malware_qlnx –>|exécute| action_execution action_execution –>|utilise| technique_process_spoof action_execution –>|utilise| technique_unix_shell action_execution –>|mène à| action_priv_esc action_priv_esc –>|utilise| technique_priv_esc action_priv_esc –>|mène à| action_persistence action_persistence –>|utilise| technique_rc_scripts action_persistence –>|utilise| technique_autostart action_persistence –>|utilise| technique_hijack action_persistence –>|mène à| action_defense_evasion action_defense_evasion –>|utilise| technique_rootkit action_defense_evasion –>|utilise| technique_thread_hijack action_defense_evasion –>|utilise| technique_process_hollow action_defense_evasion –>|mène à| action_credential_harvest action_credential_harvest –>|utilise| technique_creds_files action_credential_harvest –>|utilise| technique_private_keys action_credential_harvest –>|utilise| technique_shadow_dump action_credential_harvest –>|utilise| technique_cookies action_credential_harvest –>|utilise| technique_pam action_credential_harvest –>|mène à| action_collection action_collection –>|utilise| technique_clipboard action_collection –>|utilise| technique_screenshot action_collection –>|mène à| action_c2 action_c2 –>|utilise| technique_exfil action_c2 –>|permet| action_lateral action_lateral –>|utilise| technique_remote_exploit
Flusso di Attacco
Rilevamenti
Possibili Tentativi di Comunicazioni del Dominio di Ricerca IP (tramite dns)
Visualizza
Autostart sospetto .desktop rilasciato nel profilo utente (tramite file_event)
Visualizza
Creato un file nascosto sull’host Linux (tramite file_event)
Visualizza
IOC (HashSha256) per rilevare: Quasar Linux (QLNX) – Un Silenzioso Punto d’Ingresso nella Supply Chain: All’interno di un RAT Completo per Linux con Rootkit, Backdoor PAM, Raccolta Credenziali e altro
Visualizza
IOC (HashSha1) per rilevare: Quasar Linux (QLNX) – Un Silenzioso Punto d’Ingresso nella Supply Chain: All’interno di un RAT Completo per Linux con Rootkit, Backdoor PAM, Raccolta Credenziali e altro
Visualizza
IOC (HashMd5) per rilevare: Quasar Linux (QLNX) – Un Silenzioso Punto d’Ingresso nella Supply Chain: All’interno di un RAT Completo per Linux con Rootkit, Backdoor PAM, Raccolta Credenziali e altro
Visualizza
Rilevazione dell’Esecuzione Senza File e Iniezione di Codice da parte di QLNX [Creazione Processo Linux]
Visualizza
## Simulazione Esecuzione
Pre-requisito: Il Controllo del Prevolo della Telemetria e della Linea Base deve essere passato.
Razionale: Questa sezione dettaglia l’esecuzione precisa della tecnica dell’avversario (TTP) progettata per attivare la regola di rilevamento. I comandi e la narrativa DEVONO riflettere direttamente le TTP identificate e mirare a generare la telemetria esatta attesa dalla logica di rilevamento.
-
Narrativa dell’Attacco e Comandi:
- Fase 1 – Generazione del Payload: L’attaccante scrive un payload C minimale che chiama
memfd_createper creare un file eseguibile anonimo in memoria, scrive un semplice shellcode (ad es.,execve("/bin/sh", …)), lo segna come eseguibile e poi lo avvia tramiteexecveat. - Fase 2 – Compilazione al Volo: Utilizzando
gcc(l’indicatore visibile nella regola) l’attaccante compila il sorgente senza toccare il disco (output diretto a/dev/fd/3). - Fase 3 – Esecuzione e Iniezione: Il binario compilato viene eseguito, invoca
memfd_create, carica lo shellcode e infine chiamaexecveatper eseguire l’ELF residente in memoria. Facoltativoptracepuò essere utilizzato per iniettare codice in un processo fratello, il che soddisferebbe anche la regola.
- Fase 1 – Generazione del Payload: L’attaccante scrive un payload C minimale che chiama
-
Script di Test di Regressione:
#!/usr/bin/env bash # # Simulazione dell'esecuzione senza file simile a QLNX # Genera ELF in memoria tramite memfd_create e lo esegue con execveat. # Richiede: gcc, libcap2-bin (per la dimostrazione di execveat), e regole auditd dal pre-volo. set -euo pipefail # 1️⃣ Crea la sorgente C che esegue la danza memfd + execveat gcc -static -o /tmp/payload /tmp/payload.c # 3️⃣ Esecuzione del binario malevolo – questo attiva execveat /tmp/payload # 4️⃣ Pulizia rm -f /tmp/payload /tmp/payload.c -
Comandi di Pulizia:
# Rimuovi file residui e scarica potenziali regole di audit (se l'ambiente di test è usa e getta) rm -f /tmp/payload /tmp/payload.c sudo auditctl -d -a always,exit -F arch=b64 -S execveat -k qlnx_execveat sudo auditctl -d -a always,exit -F arch=b64 -S memfd_create -k qlnx_memfd sudo auditctl -d -a always,exit -F arch=b64 -S ptrace -k qlnx_ptrace