SOC Prime Bias: Crítico

06 Mai 2026 14:26

Quasar Linux (QLNX): Uma Cabeça de Ponte na Cadeia de Suprimentos com Total Capacidade RAT

Author Photo
SOC Prime Team linkedin icon Seguir
Quasar Linux (QLNX): Uma Cabeça de Ponte na Cadeia de Suprimentos com Total Capacidade RAT
shield icon

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

## 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:

    1. Estágio 1 – Geração de Carga Útil: O atacante escreve uma carga útil C mínima que chama memfd_create para 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 via execveat.
    2. 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).
    3. Estágio 3 – Execução & Injeção: O binário compilado executa, invoca memfd_create, carrega o shellcode e finalmente chama execveat para executar o ELF residente em memória. Opcional ptrace pode ser usado para injetar código em um processo irmão, o que também satisfaria a regra.
  • 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