Een voorheen ongedocumenteerd Linux-implantaat met de codenaam Quasar Linux RAT (QLNX) richt zich op de systemen van ontwikkelaars om stil voet aan de grond te krijgen en een breed scala aan post-compromisfunctionaliteit te faciliteren, zoals het verzamelen van inloggegevens, keylogging, bestandsmanipulatie, klembordmonitoring en netwerktunneling.
“QLNX richt zich op ontwikkelaars en DevOps-referenties in de hele softwaretoeleveringsketen”, zeiden Trend Micro-onderzoekers Aliakbar Zahravi en Ahmed Mohamed Ibrahim in een technische analyse van de malware.
“De credential harvester extraheert geheimen uit hoogwaardige bestanden zoals .npmrc (npm-tokens), .pypirc (PyPI-referenties), .git-credentials, .aws/credentials, .kube/config, .docker/config.json, .vault-token, Terraform-referenties, GitHub CLI-tokens en .env-bestanden. Het compromitteren van deze assets zou de operator in staat kunnen stellen kwaadaardige pakketten te pushen naar NPM- of PyPI-registers, krijg toegang tot de cloudinfrastructuur of draai via CI/CD-pijplijnen.”
Het vermogen van de malware om systematisch een breed scala aan inloggegevens te verzamelen, vormt een ernstig risico voor ontwikkelaarsomgevingen. Een bedreigingsacteur die met succes QLNX tegen een pakketbeheerder inzet, krijgt ongeautoriseerde toegang tot hun publicatiepijplijn, waardoor de aanvaller vergiftigde versies kan pushen die kunnen leiden tot trapsgewijze gevolgen verderop in de keten.
QLNX wordt bestandsloos vanuit het geheugen uitgevoerd, doet zich voor als een kernelthread (bijv. kworker of ksoftirqd) en is in staat de host te profileren om gecontaineriseerde omgevingen te detecteren, systeemlogboeken te wissen om de sporen te verbergen en persistentie in te stellen met behulp van niet minder dan zeven verschillende methoden, waaronder systemd, crontab en .bashrc shell-injectie.
Bovendien exfiltreert het de verzamelde gegevens naar een door de aanvaller gecontroleerde infrastructuur en ontvangt het opdrachten die het mogelijk maken om shell-opdrachten uit te voeren, bestanden te beheren, code in processen te injecteren, schermafbeeldingen te maken, toetsaanslagen te loggen, SOCKS-proxy’s en TCP-tunnels op te zetten, Beacon Object Files (BOF’s) uit te voeren en zelfs een peer-to-peer (P2P) mesh-netwerk te beheren.
Hoe de malware precies wordt afgeleverd, is onduidelijk. Zodra er echter vaste voet aan de grond is, komt het in een primaire operationele fase terecht door een persistente lus uit te voeren die voortdurend probeert communicatie met de command-and-control (C2)-server tot stand te brengen en te onderhouden via onbewerkte TCP, HTTPS en HTTP. In totaal ondersteunt QLNX 58 verschillende opdrachten die de operators volledige controle geven over de gecompromitteerde host.
QLNX wordt ook geleverd met een Pluggable Authentication Module (PAM) inline-hook backdoor die leesbare inloggegevens onderschept tijdens authenticatiegebeurtenissen, uitgaande SSH-sessiegegevens registreert en de gegevens naar de C2-server verzendt. De malware ondersteunt ook een tweede op PAM gebaseerde inloggegevenslogger die automatisch in elk dynamisch gekoppeld proces wordt geladen om de servicenaam, gebruikersnaam en authenticatietoken te extraheren.
Het maakt gebruik van een rootkit-architectuur met twee niveaus: een userland-rootkit die wordt ingezet via het LD_PRELOAD-mechanisme van de dynamische Linux-linker om ervoor te zorgen dat de artefacten en processen van het implantaat verborgen blijven. Er bestaat ook een eBPF-component op kernelniveau die het BPF-subsysteem gebruikt om processen, bestanden en netwerkpoorten te verbergen voor standaard gebruikerstools zoals ps, ls en netstat bij ontvangst van instructies van de C2-server.
“Het QLNX-implantaat is gebouwd voor stealth op de lange termijn en diefstal van inloggegevens”, aldus Trend Micro. “Wat het bijzonder gevaarlijk maakt, is niet één enkele functie, maar hoe de mogelijkheden ervan samenkomen in een samenhangende aanvalsworkflow: arriveren, van schijf wissen, voortduren via zes redundante mechanismen, zich verbergen op zowel gebruikersruimte- als kernelniveau, en vervolgens de inloggegevens verzamelen die er het meest toe doen.”