IntermedioVXezinesLinuxELFinfección binariainvestigación moderna

tmp.out: Investigación VX Moderna, Infección ELF y el Renacimiento en Linux

tmp.out es la ezine VX moderna que retoma la tradición de investigación de código autorreplicante en Linux y ELF. Análisis de sus contribuciones técnicas: infección de binarios ELF, técnicas PT_NOTE, inyección de código en procesos y su impacto en la seguridad ofensiva actual.

MalwareIntel Research··9 min lectura
Serie: Ezines y Cultura VX — Parte 4

El renacimiento de la investigación VX

Cuando la escena VX clásica se disolvió a finales de los 2000, muchos asumieron que la era de las publicaciones técnicas sobre código autorreplicante había terminado. Los virus writers recreativos habían dado paso al crimeware profesional, y la investigación sobre técnicas de infección parecía haberse trasladado enteramente a las empresas de seguridad y las agencias de inteligencia.

tmp.out demostró que esa asunción era prematura. Publicada a partir de 2021, esta ezine retomó la tradición de publicaciones técnicas de alta calidad sobre técnicas de infección de binarios, pero con un giro: el foco exclusivo en Linux, el formato ELF y las técnicas relevantes para el ecosistema Unix moderno.

El nombre "tmp.out" es una referencia doble: al directorio temporal /tmp en sistemas Unix (donde los procesos escriben archivos efímeros) y al concepto de output (salida) de un proceso. Es también un guiño a la transitoriedad del conocimiento: lo que se publica hoy será la base de la próxima técnica de defensa.

Contexto: por qué Linux importa para la escena VX

La escena VX clásica fue predominantemente una escena Windows (y antes, MS-DOS). Los virus para Linux existían pero eran marginales: la diversidad de distribuciones, la separación de privilegios y la menor base de usuarios de escritorio hacían que Linux fuera un objetivo menos atractivo para el virus writing recreativo.

Sin embargo, el panorama cambió radicalmente. Linux domina los servidores (más del 90% de los servidores en la nube), los contenedores (Docker, Kubernetes), los dispositivos IoT, los sistemas embebidos y los dispositivos Android. Un virus que infecte binarios ELF tiene un alcance potencial enorme.

Para la industria de seguridad, esto representa un desafío. Las herramientas de detección de malware para Linux están menos maduras que las equivalentes para Windows. Los EDR para Linux son más recientes y menos sofisticados. Las técnicas de evasión en Linux están menos documentadas y, por tanto, menos comprendidas por los defensores.

tmp.out llena ese vacío de conocimiento. Al documentar técnicas de infección de ELF con rigor técnico, proporciona a los defensores la información que necesitan para mejorar la detección y a los investigadores ofensivos las bases para evaluar la postura de seguridad de sistemas Linux.

El formato ELF como campo de batalla

Anatomía de un archivo ELF

Para entender las técnicas documentadas en tmp.out, es necesario comprender la estructura del formato ELF. Un archivo ELF consta de un header que identifica el formato, una program header table que describe los segmentos para carga en memoria y una section header table que describe las secciones del archivo.

Los segmentos más relevantes para la infección son:

PT_LOAD. Segmentos que se cargan en memoria. Típicamente hay dos: uno para código (con permisos de lectura y ejecución) y otro para datos (con permisos de lectura y escritura). Un virus puede insertarse en uno de estos segmentos o crear uno nuevo.

PT_NOTE. Un segmento que contiene información auxiliar (notas del compilador, ABI tags, build IDs). Este segmento no es necesario para la ejecución del programa, lo que lo convierte en un objetivo atractivo para la infección: puede ser sobrescrito o convertido en un segmento PT_LOAD sin afectar la funcionalidad del programa original.

PT_INTERP. Contiene la ruta al intérprete dinámico (ld-linux.so). La modificación de este segmento permite redirigir la carga del programa a través de un loader controlado por el atacante.

Técnica de infección PT_NOTE

La técnica de infección por conversión de PT_NOTE fue una de las contribuciones más significativas documentadas en tmp.out. El procedimiento consiste en:

  1. Localizar el segmento PT_NOTE en la program header table del binario objetivo.
  2. Reemplazar el tipo de segmento de PT_NOTE a PT_LOAD, cambiando los permisos para incluir ejecución.
  3. Escribir el código del virus al final del archivo.
  4. Actualizar los campos de offset, tamaño y dirección virtual del segmento convertido para que apunten al código del virus.
  5. Modificar el punto de entrada (e_entry) del ELF header para que apunte al virus.
  6. El virus, al ejecutarse, realiza su acción y luego salta al punto de entrada original del programa.

Esta técnica es elegante por varias razones. No modifica los segmentos PT_LOAD existentes, por lo que no altera las secciones de código ni de datos del programa original. El segmento PT_NOTE no es necesario para la ejecución, por lo que su conversión no rompe la funcionalidad. Y el tamaño del archivo solo crece por el tamaño del código del virus, sin requerir realineación compleja de secciones.

Infección de texto (text segment padding)

Otra técnica documentada en tmp.out explota el padding (relleno) entre segmentos. El linker de Linux alinea los segmentos a límites de página (típicamente 4096 bytes), lo que deja espacio sin utilizar entre el final de un segmento y el inicio del siguiente. Un virus suficientemente pequeño puede insertarse en este espacio sin aumentar el tamaño del archivo.

Esta técnica, conocida como "text segment padding infection" o "Silvio Cesare technique" (por el investigador que la documentó originalmente a finales de los 90), fue refinada en tmp.out con variantes modernas que manejan binarios PIE (Position Independent Executable), RELRO y otros hardening modernos de Linux.

Técnicas avanzadas documentadas

Inyección en procesos en ejecución

tmp.out documentó técnicas de inyección de código en procesos Linux en ejecución, equivalentes a las técnicas de process injection en Windows pero adaptadas al modelo de procesos de Linux. Las técnicas incluyen:

ptrace injection. Uso de la system call ptrace() para adjuntarse a un proceso, modificar sus registros y memoria, inyectar código y redirigir la ejecución. ptrace es la misma interfaz que utilizan depuradores como GDB, lo que la hace difícil de distinguir del uso legítimo.

LD_PRELOAD hijacking. Aunque no es una técnica nueva, tmp.out documentó variantes avanzadas que evaden las protecciones modernas contra LD_PRELOAD (como la restricción en binarios setuid y la variable LD_PRELOAD_OVERRIDE).

Inyección vía /proc/pid/mem. Escritura directa en la memoria de un proceso a través del sistema de archivos virtual /proc. Esta técnica no requiere ptrace y puede evadir herramientas de monitorización que solo vigilan llamadas a ptrace.

Técnicas de persistencia en Linux

Los artículos de tmp.out cubrieron métodos de persistencia que van más allá de los mecanismos tradicionales (crontab, scripts de inicio, servicios systemd). Las técnicas documentadas incluyen:

Infección de shared libraries. Modificación de bibliotecas compartidas (.so) para que ejecuten código adicional al ser cargadas por cualquier programa que las use. Una biblioteca como libc.so es cargada por prácticamente todos los programas en un sistema Linux, lo que proporciona ejecución automática de código.

Hooking de funciones en el GOT/PLT. Modificación de la Global Offset Table o la Procedure Linkage Table de binarios dinámicamente enlazados para redirigir llamadas a funciones de biblioteca hacia código controlado por el atacante.

Infección del initramfs. El initramfs (sistema de archivos inicial en RAM) se ejecuta durante el arranque del sistema antes de que se monte el sistema de archivos raíz. Un virus que infecte el initramfs se ejecuta con privilegios máximos en un entorno donde las herramientas de seguridad aún no están activas.

Evasión de defensas modernas

tmp.out dedicó artículos a técnicas de evasión de las defensas específicas de Linux:

Evasión de seccomp. seccomp (secure computing mode) restringe las system calls que un proceso puede realizar. Los artículos documentaron técnicas para evadir filtros seccomp, incluyendo la explotación de system calls no filtradas y el uso de llamadas indirectas.

Evasión de AppArmor y SELinux. Los sistemas de control de acceso mandatorio (MAC) de Linux pueden restringir las acciones de un proceso más allá de los permisos Unix tradicionales. tmp.out documentó debilidades en las políticas por defecto y técnicas para operar dentro de las restricciones sin activar alertas.

Evasión de detección en memoria. Con el crecimiento de herramientas de forensia de memoria para Linux (como Volatility con perfiles Linux), tmp.out documentó técnicas para ocultar código malicioso en la memoria de un proceso: inyección en regiones de memoria legítimas, uso de memory mappings anónimos y técnicas para evitar la detección por heurísticas de los motores de scanning.

Calidad editorial y continuidad con la tradición

tmp.out mantiene los estándares editoriales de las mejores ezines VX históricas. Los artículos incluyen:

Explicación teórica. Cada técnica se introduce con una explicación del concepto subyacente, no solo de la implementación.

Código fuente completo. Los artículos incluyen código funcional, generalmente en C o ensamblador, comentado y explicado.

Discusión de limitaciones. Los artículos documentan honestamente las limitaciones de cada técnica: qué defensas la bloquean, qué configuraciones de sistema la impiden y qué mejoras son posibles.

Contexto defensivo. Aunque tmp.out se centra en técnicas ofensivas, los artículos frecuentemente incluyen notas sobre cómo detectar las técnicas documentadas, proporcionando valor tanto para atacantes como para defensores.

Impacto en la seguridad moderna

Las técnicas documentadas en tmp.out tienen relevancia directa para la seguridad de infraestructuras modernas. Con la migración masiva a la nube (donde los servidores Linux son la norma), la proliferación de contenedores (que ejecutan binarios ELF) y el crecimiento del IoT (que frecuentemente utiliza Linux embebido), las técnicas de infección de ELF documentadas en tmp.out son aplicables a una superficie de ataque enorme.

Grupos de APT como Turla (que ha utilizado malware para Linux desde al menos 2014), Lazarus (con su arsenal de herramientas Linux para servidores comprometidos) y grupos de ransomware que atacan hipervisores ESXi (basados en Linux) utilizan técnicas que están documentadas o tienen raíces en la investigación publicada en tmp.out y sus predecesores.

Para los equipos de defensa, tmp.out es una fuente de inteligencia sobre técnicas de ataque que los EDR para Linux pueden no detectar. Los indicadores de infección de ELF documentados en la ezine (modificación de PT_NOTE, cambios en e_entry, código en el padding entre segmentos) son directamente traducibles a reglas de detección.

tmp.out en el contexto de la historia VX

tmp.out representa un puente entre la escena VX clásica y la investigación de seguridad moderna. Comparte con 29A y VLAD el compromiso con la calidad técnica, la documentación exhaustiva y el enfoque en la investigación por la investigación. Pero opera en un contexto radicalmente diferente: un mundo donde el malware es una industria multimillonaria, las APTs son actores geopolíticos y la seguridad informática es una preocupación de gobiernos y corporaciones.

Lo que tmp.out demuestra es que la investigación independiente de técnicas de infección sigue teniendo valor. Las empresas de seguridad y las agencias de inteligencia realizan investigación similar en privado, pero la publicación abierta beneficia a toda la comunidad de seguridad al hacer que las técnicas sean conocidas y, por tanto, detectables.

Fuentes y lecturas recomendadas

  • tmp.out: números disponibles en tmpout.sh
  • Cesare, Silvio. "Unix Viruses". Presentación original sobre infección de ELF, 1998.
  • Ryan "elfmaster" O'Neill. "Learning Linux Binary Analysis". Packt Publishing, 2016.
  • Andriesse, Dennis. "Practical Binary Analysis". No Starch Press, 2018.
  • MITRE ATT&CK: técnicas Linux (T1055, T1574, T1547) para contexto de amenazas reales.

Preguntas frecuentes

Artículos relacionados

Este contenido tiene fines exclusivamente educativos y de investigación en ciberseguridad defensiva. No se proporcionan binarios maliciosos ni payloads ejecutables. El uso indebido de esta información es responsabilidad exclusiva del usuario. Leer disclaimer completo.