Quasar Linux (QLNX): Uma Cabeça de Ponte na Cadeia de Suprimentos com Total Capacidade RAT
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
Quasar Linux (QLNX) é um trojan avançado de acesso remoto para Linux que combina um rootkit em espaço de usuário e eBPF com um backdoor PAM e amplas capacidades de coleta de credenciais. O malware suporta execução sem arquivo, mascaramento de nome de processo e várias técnicas de persistência que ajudam a mantê-lo oculto em sistemas infectados. Seu foco em estações de trabalho de desenvolvedores o torna especialmente perigoso para o abuso na cadeia de suprimentos, pois pode roubar tokens, chaves SSH e credenciais de nuvem. O malware também usa comunicações criptografadas e suporta uma arquitetura de malha peer-to-peer para melhorar a resiliência e manter o acesso.
Investigação
Pesquisadores da Trend Micro obtiveram o binário QLNX e conduziram análises estática e dinâmica, revelando código-fonte incorporado para os componentes do rootkit e backdoor PAM. Sua investigação documentou a capacidade do malware de compilar componentes diretamente no host alvo, a gama de mecanismos de persistência que usa, e o conjunto completo de comandos suportados pelo implante. A análise de rede também revelou um protocolo personalizado baseado em TLS e um identificador mágico distinto usado nas comunicações. A partir deste trabalho, os pesquisadores extraíram indicadores de compromisso para apoiar a caça e detecção.
Mitigação
Os defensores devem procurar o QLNX monitorando seu arquivo de bloqueio de mutex exclusivo, entradas LD_PRELOAD suspeitas e comandos de gcc compilação incomuns que geram objetos compartilhados maliciosos. As organizações também devem bloquear a execução de binários desconhecidos nomeados quasar-implant e restringir o acesso de escrita a /etc/ld.so.preload. A autenticação multifator deve ser aplicada para contas de desenvolvedores, e as equipes de segurança devem monitorar de perto as tentativas de exfiltrar armazenamentos de credenciais e arquivos de token sensíveis.
Resposta
Se forem encontrados indicadores de QLNX, isole o sistema afetado imediatamente, colete imagens de memória e disco, e termine o processo malicioso. Remova as entradas não autorizadas de /etc/ld.so.preload, delete os .so arquivos maliciosos compilados e limpe o arquivo de bloqueio usado pelo implante. Todas as credenciais potencialmente expostas, especialmente tokens de nuvem e de registro de pacotes, devem ser rotacionadas sem demora. Os investigadores também devem avaliar se algum sistema de cadeia de suprimentos, repositórios, ou ambientes de construção foram contaminados durante a intrusão.
graph TB %% Definições de 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ó de Malware malware_qlnx[“<b>Malware</b> – <b>Nome</b>: QLNX<br/><b>Descrição</b>: Implante Linux sem arquivos que utiliza técnicas de rootkit”] class malware_qlnx malware %% Fase de Execução action_execution[“<b>Ação</b> – <b>Execução</b>: Inicia implante sem arquivos via memfd_create e execveat, falsifica argv0 e o nome do processo”] class action_execution action technique_process_spoof[“<b>Técnica</b> – T1564.010:<br/>Ocultar Artefatos – Falsificação de Argumentos de Processo”] class technique_process_spoof technique technique_unix_shell[“<b>Técnica</b> – T1059.004:<br/>Interpretador de Comandos e Scripts – Shell Unix”] class technique_unix_shell technique %% Fase de Escalação de Privilégios action_priv_esc[“<b>Ação</b> – <b>Escalação de Privilégios</b>: Tenta usar sudo ou pkexec para obter privilégios mais elevados”] class action_priv_esc action technique_priv_esc[“<b>Técnica</b> – T1548.004:<br/>Abuso do Mecanismo de Controle de Elevação – Execução Elevada com Prompt”] class technique_priv_esc technique %% Fase de Persistência action_persistence[“<b>Ação</b> – <b>Persistência</b>: Instala serviços systemd, cron @reboot, scripts init.d, inicialização automática XDG e hook LD_PRELOAD”] class action_persistence action technique_rc_scripts[“<b>Técnica</b> – T1037.004:<br/>Scripts de Inicialização de Boot ou Login – Scripts RC”] class technique_rc_scripts technique technique_autostart[“<b>Técnica</b> – T1547:<br/>Execução Automática na Inicialização ou Login”] class technique_autostart technique technique_hijack[“<b>Técnica</b> – T1574:<br/>Sequestro do Fluxo de Execução via LD_PRELOAD”] class technique_hijack technique class action_persistence persistence %% Fase de Evasão de Defesa action_defense_evasion[“<b>Ação</b> – <b>Evasão de Defesa</b>: Implanta rootkit LD_PRELOAD, controlador eBPF, injeção de processos e limpa logs”] class action_defense_evasion action technique_rootkit[“<b>Técnica</b> – T1014:<br/>Rootkit – oculta arquivos, processos e portas”] class technique_rootkit technique technique_thread_hijack[“<b>Técnica</b> – T1055.003:<br/>Injeção de Processos – Sequestro de Execução de Threads”] class technique_thread_hijack technique technique_process_hollow[“<b>Técnica</b> – T1055.012:<br/>Injeção de Processos – Process Hollowing”] class technique_process_hollow technique %% Fase de Coleta de Credenciais action_credential_harvest[“<b>Ação</b> – <b>Coleta de Credenciais</b>: Coleta credenciais de arquivos, chaves SSH, /etc/shadow, navegadores e PAM”] class action_credential_harvest action technique_creds_files[“<b>Técnica</b> – T1552.001:<br/>Credenciais Não Seguras – Credenciais em Arquivos”] class technique_creds_files technique technique_private_keys[“<b>Técnica</b> – T1552.004:<br/>Credenciais Não Seguras – Chaves Privadas”] class technique_private_keys technique technique_shadow_dump[“<b>Técnica</b> – T1003.008:<br/>Dump de Credenciais do Sistema Operacional – /etc/passwd e /etc/shadow”] class technique_shadow_dump technique technique_cookies[“<b>Técnica</b> – T1550.004:<br/>Uso de Material Alternativo de Autenticação – Cookie de Sessão Web”] class technique_cookies technique technique_pam[“<b>Técnica</b> – T1555:<br/>Credenciais de Armazenamentos de Senhas – Módulo PAM”] class technique_pam technique %% Fase de Coleta action_collection[“<b>Ação</b> – <b>Coleta</b>: Captura dados da área de transferência e imagens da tela”] class action_collection action technique_clipboard[“<b>Técnica</b> – T1115:<br/>Dados da Área de Transferência”] class technique_clipboard technique technique_screenshot[“<b>Técnica</b> – T1113:<br/>Captura de Tela”] class technique_screenshot technique %% Fase de Comando e Controle action_c2[“<b>Ação</b> – <b>Comando e Controle</b>: Exfiltra dados por TLS/HTTPS criptografado”] class action_c2 action technique_exfil[“<b>Técnica</b> – T1041:<br/>Exfiltração por Canal C2”] class technique_exfil technique %% Fase de Movimento Lateral action_lateral[“<b>Ação</b> – <b>Movimento Lateral</b>: Usa chaves SSH coletadas para acessar hosts remotos”] class action_lateral action technique_remote_exploit[“<b>Técnica</b> – T1210:<br/>Exploração de Serviços Remotos”] class technique_remote_exploit technique %% Conexões malware_qlnx –>|executa| action_execution action_execution –>|usa| technique_process_spoof action_execution –>|usa| technique_unix_shell action_execution –>|leva a| action_priv_esc action_priv_esc –>|usa| technique_priv_esc action_priv_esc –>|leva a| action_persistence action_persistence –>|usa| technique_rc_scripts action_persistence –>|usa| technique_autostart action_persistence –>|usa| technique_hijack action_persistence –>|leva a| action_defense_evasion action_defense_evasion –>|usa| technique_rootkit action_defense_evasion –>|usa| technique_thread_hijack action_defense_evasion –>|usa| technique_process_hollow action_defense_evasion –>|leva a| action_credential_harvest action_credential_harvest –>|usa| technique_creds_files action_credential_harvest –>|usa| technique_private_keys action_credential_harvest –>|usa| technique_shadow_dump action_credential_harvest –>|usa| technique_cookies action_credential_harvest –>|usa| technique_pam action_credential_harvest –>|leva a| action_collection action_collection –>|usa| technique_clipboard action_collection –>|usa| technique_screenshot action_collection –>|leva a| action_c2 action_c2 –>|usa| technique_exfil action_c2 –>|habilita| action_lateral action_lateral –>|usa| technique_remote_exploit
Fluxo de Ataque
Detecções
Possível tentativa de comunicação de pesquisa de domínio IP (via dns)
Ver
.desktop de inicialização automática suspeito foi descartado no perfil do usuário (via file_event)
Ver
Arquivo oculto foi criado no host Linux (via file_event)
Ver
IOCs (HashSha256) para detectar: Quasar Linux (QLNX) – Um ponto silencioso na cadeia de suprimentos: Dentro de um RAT completo para Linux com Rootkit, Backdoor PAM, Coleta de Credenciais e mais
Ver
IOCs (HashSha1) para detectar: Quasar Linux (QLNX) – Um ponto silencioso na cadeia de suprimentos: Dentro de um RAT completo para Linux com Rootkit, Backdoor PAM, Coleta de Credenciais e mais
Ver
IOCs (HashMd5) para detectar: Quasar Linux (QLNX) – Um ponto silencioso na cadeia de suprimentos: Dentro de um RAT completo para Linux com Rootkit, Backdoor PAM, Coleta de Credenciais e mais
Ver
Detecção de Execução Sem Arquivo e Injeção de Código pelo QLNX [Criação de Processo Linux]
Ver
## Execução de Simulação
Pré-requisito: O Check de Pré-voo de Telemetria & Baseline deve ter sido aprovado.
Racional: Esta seção detalha a execução precisa da técnica do adversário (TTP) projetada para acionar a regra de detecção. Os comandos e a narrativa DEVEM refletir diretamente os TTPs identificados e têm como objetivo gerar a telemetria exata esperada pela lógica de detecção.
-
Narrativa & Comandos de Ataque:
- Estágio 1 – Geração de Carga Útil: O atacante escreve uma carga útil C mínima que chama
memfd_createpara criar um arquivo executável anônimo em memória, escreve um shellcode simples (por exemplo,execve("/bin/sh", …)), marca como executável e depois lança viaexecveat. - Estágio 2 – Compilação Em Tempo Real: Usando
gcc(o indicador visível na regra) o atacante compila a fonte sem tocar no disco (saída direcionada para/dev/fd/3). - Estágio 3 – Execução & Injeção: O binário compilado executa, invoca
memfd_create, carrega o shellcode e finalmente chamaexecveatpara executar o ELF residente em memória. Opcionalptracepode ser usado para injetar código em um processo irmão, o que também satisfaria a regra.
- Estágio 1 – Geração de Carga Útil: O atacante escreve uma carga útil C mínima que chama
-
Script de Teste de Regressão:
#!/usr/bin/env bash # # Simulação de execução sem arquivo semelhante ao QLNX # Gera ELF em memória via memfd_create e executa com execveat. # Requer: gcc, libcap2-bin (para demonstração de execveat), e regras auditd do pré-voo. set -euo pipefail # 1️⃣ Cria a fonte C que realiza a dança memfd + execveat 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) { // Cria um descritor de arquivo anônimo (memfd) int fd = syscall(SYS_memfd_create, "memfd_payload", MFD_CLOEXEC); if (fd == -1) _exit(1); // Simples binário ELF que apenas executa execve /bin/sh const unsigned char elf[] = { 0x7f,0x45,0x4c,0x46,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ... (truncado para brevidade – um ELF mínimo estático para /bin/sh) }; write(fd, elf, sizeof(elf)); // Torne-o executável fchmod(fd, 0755); // Use execveat para executar o binário em memória syscall(SYS_execveat, fd, "", NULL, NULL, AT_EMPTY_PATH); _exit(0); } EOF # 2️⃣ Compila com gcc (isto será capturado pela regra de detecção) gcc -static -o /tmp/payload /tmp/payload.c # 3️⃣ Executa o binário malicioso – isto aciona execveat /tmp/payload # 4️⃣ Limpeza rm -f /tmp/payload /tmp/payload.c -
Comandos de Limpeza:
# Remove arquivos residuais e descarrega possíveis regras de auditoria (se o ambiente de teste for descartável) 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