TrendMicro identified Quasar Linux (QLNX), a previously undocumented Linux RAT that targets developer and DevOps workstations with fileless execution, an eBPF rootkit, PAM backdoor activity, and a P2P mesh for command relay. Its goal is to steal high-value secrets such as SSH keys, NPM/PyPI tokens, Git PATs, AWS and Kubernetes credentials, while blending into Linux systems and evading traditional file-based defenses. #QuasarLinux #QLNX #TrendMicro #eBPF #PAM #LinuxRAT
Keypoints
- QLNX is a newly documented Linux remote access trojan designed specifically for Linux developer and DevOps workstations.
- It uses fileless execution, runtime compilation, and system-wide library injection to avoid leaving obvious on-disk traces.
- The malware deploys an eBPF-based kernel rootkit and a PAM backdoor to intercept activity and capture cleartext credentials.
- Targets include SSH private keys, NPM/PyPI tokens, Git PATs, AWS and Kubernetes secrets, browser-stored credentials, and .env files.
- QLNX also creates a peer-to-peer mesh network so infected hosts can relay commands and resist single-endpoint takedown.
- Observed environments include Linux developer workstations and CI/CD build hosts across major distributions such as Debian, Ubuntu, RHEL, Fedora, and Arch.
- Effective remediation requires full reimaging, while mitigation focuses on monitoring /etc/ld.so.preload, restricting gcc, and rotating credentials.
MITRE Techniques
- [T1195 ] Supply Chain Compromise â Targets developer and CI/CD hosts to steal repository, package registry, cloud, and signing credentials for later source or build tampering. [âcompromising Linux developer or CI/CD hosts⌠positioning attackers to alter source code, build pipelines, or published packagesâ]
- [T1106 ] Native API â Uses memfd_create and execveat directly to launch payloads from memory. [âdirectly invokes memfd_create and execveat syscalls to launch payload from an in-memory file descriptorâ]
- [T1543.002 ] Create or Modify System Process: Systemd Service â Persists by dropping systemd service files. [âdrops quasar_linux.service under /etc/systemd/system/ and ~/.config/systemd/user/â]
- [T1053.003 ] Scheduled Task/Job: Cron â Installs reboot cron entries for persistence. [âInstalls @reboot cron entriesâ]
- [T1037.004 ] Boot or Logon Initialization Scripts: RC Scripts â Uses init scripts to start automatically. [âDrops persistence script at /etc/init.d/quasar_linuxâ]
- [T1556.003 ] Modify Authentication Process: Pluggable Authentication Modules â Registers malicious PAM modules to intercept logins and sudo credentials. [âregisters pam_security.so / libpam_cache.so in the PAM stack to both backdoor authentication and record cleartext passwordsâ]
- [T1546.004 ] Event Triggered Execution: Unix Shell Configuration Modification â Adds startup commands to shell config for persistence. [âAppends startup commands to the userâs .bashrcâ]
- [T1547.013 ] Boot or Logon Autostart Execution: XDG Autostart Entries â Uses desktop autostart for logon persistence. [âDrops quasar_linux.desktop in ~/.config/autostart/ to launch at desktop logonâ]
- [T1574.006 ] Hijack Execution Flow: Dynamic Linker Hijacking â Injects its rootkit by writing to ld.so.preload. [âAdds libsecurity_utils.so.1 to /etc/ld.so.preload so the rootkit is injected system-wideâ]
- [T1620 ] Reflective Code Loading â Loads payload from anonymous memory and executes it without a normal file on disk. [âwrites the real payload into an anonymous memfd and executes it via execveatâ]
- [T1036.005 ] Masquerading: Match Legitimate Name or Location â Spoofs process names to look like kernel threads. [ârewrites comm and argv[0] to imitate kernel worker threads such as [kworker/0:0] and [migration/0]â]
- [T1027.004 ] Obfuscated Files or Information: Compile After Delivery â Compiles embedded C source at runtime to evade signatures. [âembeds C source for the rootkit and PAM module inside the implant and compiles it per-host at runtimeâ]
- [T1014 ] Rootkit â Loads an eBPF-based kernel rootkit compiled against the local kernel. [âloads an eBPF-based kernel rootkit compiled against the local kernelâ]
- [T1070.004 ] Indicator Removal: File Deletion â Removes the original on-disk binary after in-memory launch. [âUnlinks the original on-disk ELF binary shortly after launching the in-memory copyâ]
- [T1070 ] Indicator Removal: Clear Linux or Mac System Logs â Cleans logs after persistence to reduce traces. [âLog rotation/truncation and journalctl âvacuum operations post-persistenceâ]
- [T1552.001 ] Unsecured Credentials: Credentials in Files â Harvests tokens and secrets from config and environment files. [âWalks ~/.npmrc, ~/.pypirc, ~/.aws, ~/.kube, and project-level .env filesâ]
- [T1552.004 ] Unsecured Credentials: Private Keys â Searches SSH directories for private keys. [âWalks ~/.ssh to steal SSH private keysâ]
- [T1555.003 ] Credentials from Password Stores: Credentials from Web Browsers â Steals browser-stored credentials. [âSteals browser-stored credentialsâ]
- [T1083 ] File and Directory Discovery â Enumerates credential-related directories and project trees. [âEnumerates ~/.ssh, ~/.aws, ~/.kube, and project trees to locate credential materialâ]
- [T1573.002 ] Encrypted Channel: Asymmetric Cryptography â Wraps its custom C2 in TLS. [âWraps the custom C2 protocol in TLSâ]
- [T1090.003 ] Proxy: Multi-hop Proxy â Relays operator commands across a peer-to-peer mesh. [âEstablishes a peer-to-peer mesh between infected hosts so operator commands can be relayed through any nodeâ]
Indicators of Compromise
- [File names ] Persistence and masquerading artifacts â quasar_linux.service, quasar_linux.desktop, and /etc/init.d/quasar_linux
- [File paths ] Rootkit and preload injection â /etc/ld.so.preload, /usr/lib/libsecurity_utils.so.1, and /usr/lib/.libpam_cache.so
- [File paths ] Credential-harvest storage â /var/log/.ICE-unix, /var/log/.Test-unix, and /tmp/.pam_cache
- [File paths ] Additional artifact and lock file â /tmp/.X752e2ca1-lock and /etc/pam.d/
- [Command/system call artifacts ] Fileless execution and runtime behavior â memfd_create, execveat, and gcc
- [Process names ] Masqueraded process identities â [kworker/0:0] and [migration/0]
Read more: https://guardsix.com/blog/quasar-linux-qlnx-a-developer-targeted-linux-rat-and-detection-strategy