Quasar Linux (QLNX): Ein Einstiegspunkt in die Lieferkette mit vollständigen RAT-Fähigkeiten
Detection stack
- AIDR
- Alert
- ETL
- Query
Zusammenfassung
Quasar Linux (QLNX) ist ein fortschrittlicher Remote-Access-Trojaner für Linux, der ein User-Space- und eBPF-Rootkit mit einem PAM-Backdoor und umfangreichen Möglichkeiten zur Ernte von Zugangsdaten kombiniert. Die Malware unterstützt dateilose Ausführung, Prozessnamenverschleierung und mehrere Persistenztechniken, die ihr helfen, auf infizierten Systemen verborgen zu bleiben. Der Fokus auf Entwickler-Arbeitsstationen macht sie besonders gefährlich für den Missbrauch der Lieferkette, da sie Tokens, SSH-Schlüssel und Cloud-Zugangsdaten stehlen kann. Die Malware verwendet auch verschlüsselte Kommunikation und unterstützt eine Peer-to-Peer-Mesh-Architektur, um die Resilienz zu verbessern und den Zugang aufrechtzuerhalten.
Untersuchung
Forscher von Trend Micro erhielten die QLNX-Binärdatei und führten sowohl eine statische als auch eine dynamische Analyse durch, wobei sie im Quellcode eingebettete Komponenten des Rootkits und des PAM-Backdoors entdeckten. Ihre Untersuchung dokumentierte die Fähigkeit der Malware, Komponenten direkt auf dem Zielhost zu kompilieren, die Vielfalt der von ihr verwendeten Persistenzmechanismen und das vollständige Befehlssatz, der vom Implantat unterstützt wird. Die Netzwerkanalyse offenbarte auch ein benutzerdefiniertes TLS-basiertes Protokoll und einen einzigartigen Magic Identifier, der in der Kommunikation verwendet wird. Aus dieser Arbeit extrahierten die Forscher Indikatoren für Kompromittierungen, um Jagd und Erkennung zu unterstützen.
Abschwächung
Verteidiger sollten nach QLNX suchen, indem sie nach seiner einzigartigen Mutex-Sperrdatei, verdächtigen LD_PRELOAD Einträgen und ungewöhnlichen gcc Kompilierbefehlen überwachen, die bösartige Shared Objects erzeugen. Organisationen sollten auch die Ausführung unbekannter Binärdateien mit dem Namen quasar-implant blockieren und Schreibzugriffe auf /etc/ld.so.preloadeinschränken. Multi-Faktor-Authentifizierung sollte für Entwicklerkonten durchgesetzt werden, und Sicherheitsteams sollten engmaschig auf Versuche achten, Zugangsdaten und sensible Token-Dateien zu exfiltrieren.
Reaktion
Wenn QLNX-Indikatoren gefunden werden, isolieren Sie das betroffene System sofort, sammeln Sie Speicher- und Festplattenabbilder und beenden Sie den schädlichen Prozess. Entfernen Sie unautorisierte Einträge aus /etc/ld.so.preload, löschen Sie die kompilierten bösartigen .so Dateien und löschen Sie die vom Implantat verwendete Sperrdatei. Alle potenziell exponierten Zugangsdaten, insbesondere Cloud- und Paketregister-Token, sollten unverzüglich ausgetauscht werden. Ermittler sollten auch bewerten, ob irgendwelche Lieferkettensysteme, Repositories oder Build-Umgebungen während des Einbruchs kontaminiert wurden.
graph TB %% Klassendefinitionen classDef action fill:#99ccff classDef technique fill:#ffcc99 classDef malware fill:#ff9999 classDef tool fill:#cccccc classDef process fill:#ccffcc classDef persistence fill:#ffdd99 %% Malware-Knoten malware_qlnx[„<b>Malware</b> – <b>Name</b>: QLNX<br/><b>Beschreibung</b>: Fileless-Linux-Implantat, das Rootkit-Techniken verwendet“] class malware_qlnx malware %% Ausführungsphase action_execution[„<b>Aktion</b> – <b>Ausführung</b>: Startet fileless Implantat über memfd_create und execveat, fälscht argv0 und Prozessnamen“] class action_execution action technique_process_spoof[„<b>Technik</b> – T1564.010:<br/>Artefakte verbergen – Prozess-Argument-Spoofing“] class technique_process_spoof technique technique_unix_shell[„<b>Technik</b> – T1059.004:<br/>Befehls- und Skriptinterpreter – Unix-Shell“] class technique_unix_shell technique %% Privilegieneskalation action_priv_esc[„<b>Aktion</b> – <b>Privilegieneskalation</b>: Versucht sudo oder pkexec zu nutzen, um höhere Rechte zu erhalten“] class action_priv_esc action technique_priv_esc[„<b>Technik</b> – T1548.004:<br/>Missbrauch von Mechanismen zur Rechteerhöhung – Erhöhte Ausführung mit Prompt“] class technique_priv_esc technique %% Persistenzphase action_persistence[„<b>Aktion</b> – <b>Persistenz</b>: Installiert systemd-Dienste, cron @reboot, init.d-Skripte, XDG-Autostart und LD_PRELOAD-Hook“] class action_persistence action technique_rc_scripts[„<b>Technik</b> – T1037.004:<br/>Boot- oder Login-Initialisierungsskripte – RC-Skripte“] class technique_rc_scripts technique technique_autostart[„<b>Technik</b> – T1547:<br/>Automatische Ausführung bei Boot oder Login“] class technique_autostart technique technique_hijack[„<b>Technik</b> – T1574:<br/>Hijacking des Ausführungsflusses über LD_PRELOAD“] class technique_hijack technique class action_persistence persistence %% Verteidigungsumgehung action_defense_evasion[„<b>Aktion</b> – <b>Verteidigungsumgehung</b>: Setzt LD_PRELOAD-Rootkit, eBPF-Controller und Prozessinjektion ein und löscht Logs“] class action_defense_evasion action technique_rootkit[„<b>Technik</b> – T1014:<br/>Rootkit – versteckt Dateien, Prozesse und Ports“] class technique_rootkit technique technique_thread_hijack[„<b>Technik</b> – T1055.003:<br/>Prozessinjektion – Thread Execution Hijacking“] class technique_thread_hijack technique technique_process_hollow[„<b>Technik</b> – T1055.012:<br/>Prozessinjektion – Process Hollowing“] class technique_process_hollow technique %% Credential Harvesting action_credential_harvest[„<b>Aktion</b> – <b>Credential Harvesting</b>: Sammelt Anmeldedaten aus Dateien, SSH-Keys, /etc/shadow, Browsern und PAM“] class action_credential_harvest action technique_creds_files[„<b>Technik</b> – T1552.001:<br/>Unsichere Anmeldedaten – Anmeldedaten in Dateien“] class technique_creds_files technique technique_private_keys[„<b>Technik</b> – T1552.004:<br/>Unsichere Anmeldedaten – Private Schlüssel“] class technique_private_keys technique technique_shadow_dump[„<b>Technik</b> – T1003.008:<br/>OS Credential Dumping – /etc/passwd und /etc/shadow“] class technique_shadow_dump technique technique_cookies[„<b>Technik</b> – T1550.004:<br/>Verwendung alternativer Authentifizierungsdaten – Web-Session-Cookie“] class technique_cookies technique technique_pam[„<b>Technik</b> – T1555:<br/>Credentials aus Passwortspeichern – PAM-Modul“] class technique_pam technique %% Sammlung action_collection[„<b>Aktion</b> – <b>Sammlung</b>: Erfasst Zwischenablagedaten und Bildschirmbilder“] class action_collection action technique_clipboard[„<b>Technik</b> – T1115:<br/>Zwischenablagedaten“] class technique_clipboard technique technique_screenshot[„<b>Technik</b> – T1113:<br/>Bildschirmaufnahme“] class technique_screenshot technique %% C2 action_c2[„<b>Aktion</b> – <b>Command and Control</b>: Exfiltriert Daten über verschlüsseltes TLS/HTTPS“] class action_c2 action technique_exfil[„<b>Technik</b> – T1041:<br/>Exfiltration über C2-Kanal“] class technique_exfil technique %% Laterale Bewegung action_lateral[„<b>Aktion</b> – <b>Laterale Bewegung</b>: Nutzt gesammelte SSH-Schlüssel für Zugriff auf entfernte Hosts“] class action_lateral action technique_remote_exploit[„<b>Technik</b> – T1210:<br/>Ausnutzung entfernter Dienste“] class technique_remote_exploit technique %% Verbindungen malware_qlnx –>|führt_aus| action_execution action_execution –>|nutzt| technique_process_spoof action_execution –>|nutzt| technique_unix_shell action_execution –>|führt_zu| action_priv_esc action_priv_esc –>|nutzt| technique_priv_esc action_priv_esc –>|führt_zu| action_persistence action_persistence –>|nutzt| technique_rc_scripts action_persistence –>|nutzt| technique_autostart action_persistence –>|nutzt| technique_hijack action_persistence –>|führt_zu| action_defense_evasion action_defense_evasion –>|nutzt| technique_rootkit action_defense_evasion –>|nutzt| technique_thread_hijack action_defense_evasion –>|nutzt| technique_process_hollow action_defense_evasion –>|führt_zu| action_credential_harvest action_credential_harvest –>|nutzt| technique_creds_files action_credential_harvest –>|nutzt| technique_private_keys action_credential_harvest –>|nutzt| technique_shadow_dump action_credential_harvest –>|nutzt| technique_cookies action_credential_harvest –>|nutzt| technique_pam action_credential_harvest –>|führt_zu| action_collection action_collection –>|nutzt| technique_clipboard action_collection –>|nutzt| technique_screenshot action_collection –>|führt_zu| action_c2 action_c2 –>|nutzt| technique_exfil action_c2 –>|ermöglicht| action_lateral action_lateral –>|nutzt| technique_remote_exploit
Angriffsablauf
Erkennungen
Mögliche IP Lookup Domain-Kommunikationsversuche (via dns)
Anzeigen
Verdächtiger Autostart .desktop in Benutzerprofil ablegen (via file_event)
Anzeigen
Versteckte Datei wurde auf Linux-Host erstellt (via file_event)
Anzeigen
IOCs (HashSha256), um zu erkennen: Quasar Linux (QLNX) – Ein stiller Vorposten in der Lieferkette: In einem vollwertigen Linux RAT mit Rootkit, PAM-Backdoor, Zugangsdaten-Ernte und mehr
Anzeigen
IOCs (HashSha1), um zu erkennen: Quasar Linux (QLNX) – Ein stiller Vorposten in der Lieferkette: In einem vollwertigen Linux RAT mit Rootkit, PAM-Backdoor, Zugangsdaten-Ernte und mehr
Anzeigen
IOCs (HashMd5), um zu erkennen: Quasar Linux (QLNX) – Ein stiller Vorposten in der Lieferkette: In einem vollwertigen Linux RAT mit Rootkit, PAM-Backdoor, Zugangsdaten-Ernte und mehr
Anzeigen
Erkennung der fileless Ausführung und des Code-Injections durch QLNX [Linux-Prozess-Erstellung]
Anzeigen
## Simulationsausführung
Voraussetzung: Der Telemetrie- und Basisvorflug-Check muss bestanden sein.
Begründung: Dieser Abschnitt beschreibt die präzise Ausführung der gegnerischen Technik (TTP), die zur Auslösung der Erkennungsregel entwickelt wurde. Die Befehle und der Text MÜSSEN die identifizierten TTPs direkt widerspiegeln und zielen darauf ab, die genaue Telemetrie zu erzeugen, die von der Erkennungslogik erwartet wird.
-
Angriffserzählung & Befehle:
- Stufe 1 – Payload-Generierung: Der Angreifer schreibt ein minimales C-Payload, das
memfd_createaufruft, um eine anonyme im Speicher befindliche ausführbare Datei zu erstellen, schreibt ein einfaches Shellcode (z.B.execve("/bin/sh", …)), markiert sie als ausführbar und startet sie dann überexecveat. - Stufe 2 – On-the-Fly-Kompilierung: Mit
gcc(dem sichtbaren Indikator in der Regel) kompiliert der Angreifer den Quellcode, ohne die Festplatte zu berühren (Ausgabe an/dev/fd/3). - gerichtet Stufe 3 – Ausführung & Injektion:
memfd_createDie kompilierte Binärdatei wird ausgeführt, ruftexecveatauf, lädt den Shellcode und ruft schließlichauf, um das speicherresident ELF auszuführen. Optionalauf, um das speicherresident ELF auszuführen. Optional
- Stufe 1 – Payload-Generierung: Der Angreifer schreibt ein minimales C-Payload, das
-
kann verwendet werden, um Code in einen Schwesterprozess zu injizieren, was ebenfalls die Regel erfüllen würde.
Regressionstest-Skript: -
#!/usr/bin/env bash # # QLNX-ähnliche fileless Ausführungssimulation # Generiert im Speicher befindliches ELF via memfd_create und führt es mit execveat aus. # Erforderlich: gcc, libcap2-bin (für execveat-Demo), und auditd-Regeln vom Vor-Flug. set -euo pipefail # 1️⃣ Erstellen Sie eine C-Quelle, die den memfd + execveat Tanz durchführt cat > /tmp/payload.c <<‚EOF‘ #define _GNU_SOURCE #include <sys/mman.h> #include <sys/syscall.h> #include <unistd.h> #include <fcntl.h> #include <string.h> int main(void) { // Erstellen Sie einen anonymen Dateideskriptor (memfd) int fd = syscall(SYS_memfd_create, „memfd_payload“, MFD_CLOEXEC); if (fd == -1) _exit(1); // Einfaches ELF-Binary, das nur execve /bin/sh aufruft const unsigned char elf[] = { 0x7f,0x45,0x4c,0x46,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // … (gekürzt zur Übersicht – ein minimal statisch verlinktes /bin/sh ELF) }; write(fd, elf, sizeof(elf)); // Machen Sie es ausführbar fchmod(fd, 0755); // Verwenden Sie execveat, um die im Speicher befindliche Binärdatei auszuführen syscall(SYS_execveat, fd, „“, NULL, NULL, AT_EMPTY_PATH); _exit(0); } EOF # 2️⃣ Kompilieren Sie mit gcc (dies wird von der Erkennungsregel erfasst) gcc -static -o /tmp/payload /tmp/payload.c # 3️⃣ Führen Sie die schädliche Binärdatei aus – dies löst execveat aus /tmp/payload # 4️⃣ Säubern rm -f /tmp/payload /tmp/payload.c
Aufräumbefehle: