RingReaper: el malware para Linux que se oculta usando io_uring
RingReaper es una nueva familia de malware centrada en sistemas Linux que destaca por su capacidad para pasar desapercibida frente a las defensas habituales de endpoints. Mediante técnicas de E/S asíncrona, este agente de etapa posterior a la intrusión realiza tareas encubiertas con una huella mínima ante los sistemas de monitoreo.
La clave de su sigilo está en el uso de io_uring, una interfaz moderna del kernel que le permite sustituir llamadas al sistema convencionales por operaciones asíncronas de alto rendimiento, dejando a oscuras a soluciones EDR basadas en ganchos y filtrado de syscalls.
Qué es RingReaper y por qué importa
Identificado por analistas de Picus Security como un agente de pos-explotación, RingReaper no se centra en la intrusión inicial, sino en el trabajo silencioso posterior: reconocimiento, recolección de datos y persistencia, todo ello con un enfoque metódico que complica la detección.
El impacto va más allá de un caso aislado de malware: su éxito demuestra una brecha sistémica en estrategias que confían en interceptar syscalls, ya que las actividades canalizadas a través de io_uring quedan, en gran medida, fuera del alcance de la telemetría tradicional.
Cómo evade RingReaper la detección con io_uring
En lugar de invocar funciones típicas como read
, write
, recv
, send
o connect
, RingReaper recurre a primitivas io_uring (por ejemplo, io_uring_prep_*()
), reduciendo el ruido de syscalls y esquivando los hooks de los EDR.
Esta sustitución de rutas de ejecución crea una zona ciega para las herramientas que esperan patrones sincrónicos y deja menos trazas forenses, especialmente cuando las operaciones afectan a estructuras del kernel o al sistema de archivos virtual /proc
.
Capacidades observadas en fase post-explotación
Durante el reconocimiento de procesos (MITRE ATT&CK T1057), RingReaper enumera procesos y detalles de propiedad a través de consultas asíncronas a /proc
, emulando utilidades como ps
sin disparar alertas comunes.
Para el mapeo de usuarios y sesiones activas (ATT&CK T1033), analiza /dev/pts
y entradas de /proc
a fin de identificar actividad de terminal y potenciales superficies para movimiento lateral o escalada.
En el inventario de conexiones (ATT&CK T1049), interroga tablas de red del kernel y sockets de forma asíncrona, replicando funciones de netstat
/ss
sin recurrir a llamadas sincrónicas, lo que reduce su visibilidad.
Para la recolección de datos (ATT&CK T1005), puede extraer información sensible de archivos como /etc/passwd
sin usar herramientas visibles (cat
, getent
), y para elevar privilegios (ATT&CK T1068) automatiza la búsqueda de binarios SUID y vulnerabilidades aprovechables.
Cargas útiles y modo de operación
El operador establece un directorio de trabajo ($WORKDIR
) desde el que ejecuta módulos especializados que encapsulan tareas discretas, canalizando todas las operaciones por io_uring para mantenerse bajo radar.
"$WORKDIR"/cmdMe
y"$WORKDIR"/executePs
: enumeración de procesos y metadatos del sistema vía consultas a/proc
."$WORKDIR"/netstatConnections
: inventario de conexiones y sockets a partir de tablas de red del kernel, alternativa furtiva anetstat
."$WORKDIR"/loggedUsers
: correlación de sesiones PTS y usuarios activos mediante/dev/pts
y/proc
."$WORKDIR"/fileRead
: lectura asíncrona de archivos sensibles como/etc/passwd
."$WORKDIR"/privescChecker
: comprobación de binarios SUID y condiciones de escalado."$WORKDIR"/selfDestruct
: borrado asíncrono de sus propios artefactos para dificultar el análisis forense.
Especial mención merece el mecanismo de auto-preservación: el borrado asíncrono de binarios y rastros evita monitores de operaciones de archivos convencionales y verifica su limpieza para minimizar la huella.
Implicaciones para la defensa
Las arquitecturas que confían en intercepción de syscalls y patrones de herramientas estándar se encuentran con lagunas notables: si la actividad fluye por io_uring, gran parte de la señal esperada no llega a la telemetría del EDR.
Este enfoque marca un punto de inflexión en el uso de interfaces legítimas del kernel para evadir control, y anticipa una adopción mayor por parte de actores con recursos en entornos de servidores Linux y cargas en la nube.
Indicadores de compromiso y estrategias de detección
Los equipos de seguridad deberían priorizar la auditoría de io_uring: llamadas como io_uring_setup
o patrones de io_uring_prep_*()
en binarios no estándar, especialmente si residen en directorios de usuario o rutas temporales.
Conviene alertar sobre lecturas anómalas de /proc
, /dev/pts
o /etc/passwd
realizadas por procesos que no invocan utilidades comunes (ps
, who
, netstat
) pero exhiben resultados equivalentes.
Otros indicios incluyen enumeración de red con bajo ruido de syscalls, ejecutables que se auto-eliminan, y secuencias repetidas de módulos desde el mismo $WORKDIR
, correlacionadas en ventanas de tiempo reducidas.
Como medidas de mitigación, es recomendable fortalecer el monitoreo en tiempo de ejecución del kernel, correlacionar comportamientos a nivel de proceso y, cuando sea viable, restringir o deshabilitar io_uring en sistemas donde no sea imprescindible.
La aparición de RingReaper confirma que el abuso de io_uring ha pasado de la teoría a la práctica: un agente pos-explotación capaz de reconocer, recopilar y esconderse con operaciones asíncronas, que obliga a revisar la visibilidad de los EDR, ampliar la observabilidad del kernel y ajustar controles en Linux para cerrar las brechas que hoy aprovecha.