Un implante de Linux previamente indocumentado con nombre en código RAT de Quasar Linux (QLNX) se dirige a los sistemas de los desarrolladores para establecer un punto de apoyo silencioso y facilitar una amplia gama de funciones posteriores al compromiso, como recolección de credenciales, registro de teclas, manipulación de archivos, monitoreo del portapapeles y túneles de red.
«QLNX apunta a desarrolladores y credenciales de DevOps en toda la cadena de suministro de software», dijeron los investigadores de Trend Micro Aliakbar Zahravi y Ahmed Mohamed Ibrahim en un análisis técnico del malware.
«Su recolector de credenciales extrae secretos de archivos de alto valor como .npmrc (tokens npm), .pypirc (credenciales PyPI), .git-credentials, .aws/credentials, .kube/config, .docker/config.json, .vault-token, credenciales Terraform, tokens CLI de GitHub y archivos .env. El compromiso de estos activos podría permitir al operador impulsar archivos maliciosos paquetes a registros NPM o PyPI, acceder a la infraestructura de la nube o pasar a través de canalizaciones de CI/CD».
La capacidad del malware para recopilar sistemáticamente una amplia gama de credenciales plantea un grave riesgo para los entornos de desarrollo. Un actor de amenazas que implementa QLNX con éxito contra un mantenedor de paquetes obtiene acceso no autorizado a su canal de publicación, lo que permite al atacante impulsar versiones envenenadas que pueden provocar impactos posteriores en cascada.
QLNX se ejecuta sin archivos desde la memoria, se hace pasar por un subproceso del kernel (por ejemplo, kworker o ksoftirqd) y es capaz de crear perfiles del host para detectar entornos en contenedores, borrar registros del sistema para cubrir las pistas y configurar la persistencia utilizando no menos de siete métodos diferentes, incluidos systemd, crontab y .bashrc shell injection.
Además, extrae los datos recopilados a una infraestructura controlada por el atacante y recibe comandos que permiten ejecutar comandos de shell, administrar archivos, inyectar código en procesos, tomar capturas de pantalla, registrar pulsaciones de teclas, establecer servidores proxy SOCKS y túneles TCP, ejecutar archivos de objetos Beacon (BOF) e incluso administrar una red de malla peer-to-peer (P2P).
No está claro exactamente cómo se distribuye el malware. Sin embargo, una vez que se establece un punto de apoyo, ingresa a una fase operativa primaria al ejecutar un bucle persistente que intenta continuamente establecer y mantener la comunicación con el servidor de comando y control (C2) a través de TCP, HTTPS y HTTP sin formato. En total, QLNX admite 58 comandos distintos que brindan a los operadores un control total del host comprometido.
QLNX también viene con una puerta trasera de gancho en línea del Módulo de autenticación conectable (PAM) que intercepta las credenciales de texto sin formato durante los eventos de autenticación, registra los datos de la sesión SSH saliente y transmite los datos al servidor C2. El malware también admite un segundo registrador de credenciales basado en PAM que se carga automáticamente en cada proceso vinculado dinámicamente para extraer el nombre del servicio, el nombre de usuario y el token de autenticación.
Emplea una arquitectura de rootkit de dos niveles: un rootkit de usuario implementado a través del mecanismo LD_PRELOAD del vinculador dinámico de Linux para garantizar que los artefactos y procesos del implante permanezcan ocultos. También existe un componente eBPF a nivel de kernel que utiliza el subsistema BPF para ocultar procesos, archivos y puertos de red de herramientas estándar del usuario como ps, ls y netstat al recibir instrucciones del servidor C2.
«El implante QLNX fue construido para el robo de credenciales y sigilo a largo plazo», dijo Trend Micro. «Lo que lo hace particularmente peligroso no es una sola característica, sino cómo sus capacidades se encadenan en un flujo de trabajo de ataque coherente: llegar, borrar del disco, persistir a través de seis mecanismos redundantes, ocultarse tanto en el espacio de usuario como en el nivel del kernel, y luego recolectar las credenciales que más importan».


