Amenazas · 23 de noviembre de 2025 · Rodrigo Gutiérrez
Persistencia en sistemas Linux actuales: arquitecturas fantasma en la columna vertebral del software
La persistencia como fenómeno emergente del ecosistema Linux
En esta serie sobre persistencia avanzada en sistemas modernos —que comenzó con Windows, siguió con macOS y ahora llega a Linux— aparece una constante que se siente cada vez más evidente: la persistencia ya no es un artefacto, sino un comportamiento. En los dos capítulos anteriores analizamos cómo los atacantes se integran en las estructuras de poder internas de cada sistema. En Windows, la persistencia vive dentro de la lógica del dominio, sus políticas y su arquitectura replicada. En macOS, se funde con la coreografía de permisos, servicios y sincronización entre capas locales y remotas. En Linux, en cambio, la persistencia adquiere una naturaleza distinta: emerge de la complejidad distribuida del ecosistema, no del sistema operativo en sí.
Linux no es un único sistema, sino una familia de arquitecturas superpuestas. Un servidor en la nube, un contenedor efímero, un nodo edge, un cluster de computación, un gateway industrial, un appliance de red, un dispositivo IoT y un entorno HPC (High Performance Computing) pueden compartir un kernel similar, pero funcionan como entidades técnicas completamente distintas. Esta diversidad convierte la persistencia en un fenómeno ecológico. No se pregunta “¿dónde está instalado el implante?”, sino “¿cómo se perpetúa la continuidad operacional del entorno que lo sostiene?”.
El rol central de Linux en la infraestructura digital moderna —desde Kubernetes hasta plataformas de análisis masivo, desde dispositivos embebidos hasta servicios nativos de nube— hace que su persistencia deje de ser una anomalía para convertirse en una propiedad emergente. El atacante sofisticado no busca un punto fijo donde incrustarse. Busca una relación. Busca el flujo de creación, reconstrucción y automatización que define identidades, inicia servicios, genera contenedores, distribuye imágenes y sincroniza estados.
Este artículo explora precisamente esa dimensión: la persistencia en Linux como arquitectura fantasma que vive en el tejido que sostiene la continuidad. Una persistencia que no depende de un archivo oculto, sino de un comportamiento que se replica en el tiempo, en la infraestructura y en el proceso de automatización. Una persistencia que no vive en un host, sino en el ecosistema que lo produce.
Cuando la persistencia deja de ser un archivo: la transición hacia una continuidad generada
La persistencia tradicional en Linux era fija, local y evidente. Un cronjob sospechoso, una entrada en systemd, una función añadida en rc.local, un script dentro de /etc/init.d, una shell oculta en ~/.bashrc. Eran formas de permanencia que dependían de puntos concretos, visibles y, sobre todo, estáticos. En ese paradigma, la persistencia vivía en “algo” del sistema: un archivo, un servicio, un proceso, una ruta.
Ese paradigma se extinguió. La automatización, la contenerización y la infraestructura declarativa transformaron Linux en un actor dentro de un sistema mayor. El sistema ya no es un servidor, sino una topología. Y la persistencia moderna se apoya en ese cambio.
Initramfs (Initial RAM Filesystem) es un ejemplo de cómo la persistencia se movió hacia territorios previos a la existencia del sistema operativo. Initramfs ejecuta lógica crítica antes de montar el sistema de archivos real. En ese espacio, donde aún no existen registros auditables ni servicios de seguridad, un atacante puede incrustar un script mínimo que se ejecute en cada arranque. La manipulación puede estar en la cadena que genera initramfs —dracut, mkinitcpio o pipelines equivalentes— sin que la instalación principal muestre alteraciones. La persistencia vive en una etapa anterior al sistema.
La persistencia a nivel de kernel representa otro cambio conceptual profundo. Los rootkits ya no son módulos ruidosos; se integran en la dinámica del núcleo manipulando kallsyms, /proc, kprobes, uprobes, estructuras internas del scheduler y, en los casos más sofisticados, los mecanismos de introspección utilizados por las herramientas de seguridad. No es un rootkit que se instala: es un rootkit que se integra en el comportamiento del sistema.
Pero el salto más radical ocurre por encima del kernel: los contenedores y la automatización que los genera. Las imágenes base, los Dockerfiles, los Helm charts, los manifiestos de Kubernetes, los pipelines CI/CD, los artefactos en repositorios internos y las rutinas declarativas que reconstruyen infraestructuras completas en minutos. En este plano, la persistencia no vive en un archivo local; vive en el proceso industrial que fabrica entornos completos.
El atacante que compromete una imagen base no necesita sobrevivir en un host. La persistencia se convierte en arquitectura distribuida. Cuando se despliega un servicio, su payload se reproduce automáticamente. Cuando se escala el cluster, la persistencia aumenta su alcance. Cuando se reinicia una máquina, no desaparece la amenaza: simplemente se crea una nueva copia “limpia” de una imagen maliciosa.
Aquí emerge una ironía fundamental de la infraestructura inmutable. La industria dijo que la inmutabilidad mejoraría la seguridad, eliminando estados previos y destruyendo la persistencia local. Pero cuando la persistencia vive en la imagen base, la inmutabilidad se convierte en su mejor aliada. Lo que se pensó como mecanismo de limpieza se transforma en mecanismo de reinfección. La automatización diseñada para eliminar desviaciones es la misma que las reproduce con precisión industrial.
En este contexto, la persistencia deja de ser archivo y se convierte en comportamiento. No vive en un host. Vive en la relación entre hosts, pipelines, imágenes, clusters y servicios.
La anatomía oculta de la persistencia avanzada en Linux
El análisis técnico más riguroso revela que la persistencia en Linux no ocurre en un solo plano. Ocurre en múltiples capas que interactúan entre sí. Arranque, kernel, espacio de usuario, identidad, automatización, contenedores y firmware forman una secuencia donde cada componente puede ser un vector.
Uno de los mecanismos más sofisticados observados en campañas modernas es la manipulación avanzada de systemd. Systemd no es un gestor de servicios; es un sistema de orquestación interno basado en una red de dependencias, timers, targets, sockets, generadores y reglas dinámicas. Un atacante puede insertar unidades temporales que viven fuera de la estructura convencional, o utilizar systemd-tmpfiles para crear archivos maliciosos que se regeneran automáticamente durante el arranque. En este modelo, la persistencia no es un archivo permanente: es un patrón de regeneración.
El subsistema eBPF (Extended Berkeley Packet Filter) representa otro salto en sofisticación. eBPF permite ejecutar código dentro del kernel sin modificar su código fuente. Atacantes avanzados utilizan eBPF como punto de inserción para engancharse profundamente en el núcleo, interceptando operaciones de red, monitorizando syscalls, alterando rutas internas y creando condiciones donde herramientas convencionales jamás verán actividad anómala. eBPF se ejecuta en memoria, pero si un servicio liviano lo recarga en cada arranque, la persistencia se vuelve resiliente sin dejar rastro en disco.
La persistencia desde pipelines CI/CD es hoy uno de los vectores más peligrosos y menos comprendidos. Cuando un pipeline es el responsable de construir contenedores, ejecutar tests, firmar artefactos y entregarlos al cluster, un atacante que compromete ese pipeline controla la fábrica que produce el entorno. En ese escenario, la persistencia no es un implante: es una política. Una instrucción. Una línea en un script. Una configuración que se replica a cada despliegue. La seguridad local del host ya no importa.
Aquí debe añadirse la segunda ironía: la oscuridad operativa de los contenedores efímeros. Muchos servicios serverless o tareas dentro de Kubernetes viven entre 300 milisegundos y 5 segundos. Ese tiempo es insuficiente para que la mayoría de agentes de seguridad se inicien, transmitan telemetría o ejecuten escaneos. Un contenedor malicioso que vive tres segundos, ejecuta su payload y muere, existe en un plano donde la observabilidad es estadística, no forense. El atacante utiliza el tiempo como camuflaje; su persistencia es episódica, fugaz y, sin embargo, continua en el ecosistema.
La persistencia mediante manipulación de módulos PAM es otro componente crítico del panorama real. PAM define la lógica completa de autenticación. Insertar un módulo adicional o modificar el flujo permite al atacante generar accesos invisibles para auditorías convencionales. Como PAM interactúa con servicios externos de identidad —LDAP, AD, Kerberos, SSSD— la persistencia puede ocultarse en el corazón de la validación de usuarios.
Finalmente, la persistencia a nivel de firmware —en BIOS/UEFI, BMCs, dispositivos NVMe y tarjetas de red— representa el extremo de la sofisticación. Este nivel de ataque vive fuera del plano del sistema operativo. Un servidor puede ser reinstalado diez veces y seguir comprometido si el atacante modificó un componente que antecede al kernel.
La anatomía real de la persistencia avanzada en Linux revela un patrón común: el atacante no persiste en el sistema. Persiste en la continuidad del sistema.
El horizonte especulativo: persistencia que existe en potencia
En esta serie hemos reservado un segmento para la especulación técnica responsable. No es ficción; es anticipación. Son técnicas que no existen en ataques reales, pero que pueden aparecer en cualquier momento. Linux será uno de los primeros territorios donde estas ideas encontrarán ecosistemas funcionales.
Una técnica plausible es la persistencia por modulación de entropía. Los sistemas Linux utilizan generadores de entropía para inicializar funciones criptográficas, llaves, firmas y canales cifrados. Manipular la generación inicial —especialmente en momentos donde el sistema aún no tiene suficientes fuentes de entropía— podría permitir que un atacante introduzca patrones reproducibles. La persistencia viviría en las matemáticas, no en un archivo.
Otra técnica plausible es la persistencia por ensamblaje distribuido. Imagina un modelo donde el atacante divide su carga en fragmentos inofensivos dispersos en zonas del sistema que nunca coinciden en el tiempo: variables de entorno, campos no utilizados, fragmentos en contenedores efímeros, restos en imágenes, microregistros en caches intermedias. Cuando el sistema ejecuta una secuencia específica, esos fragmentos se ensamblan momentáneamente en memoria, ejecutan su tarea y desaparecen. Es una persistencia que se manifiesta solo cuando el ecosistema se alinea.
También podemos anticipar persistencia incrustada en modelos de machine learning que Linux utilice para tareas internas: análisis de logs, detección de anomalías, ajuste dinámico de rendimiento. Un atacante podría manipular esos modelos para crear zonas donde la actividad maliciosa se interprete como normalidad. No es un rootkit que oculta procesos; es un rootkit que oculta percepciones.
Finalmente, existe un posible vector en la capa física: persistencia basada en microcontroladores internos conectados mediante buses como I²C, SPI o NVMe. Manipulaciones en esta capa podrían sobrevivir incluso a la reescritura completa del firmware, creando un tipo de persistencia que vive en la estructura eléctrica del dispositivo.
Estas ideas no son extravagantes. Son una proyección lógica del ecosistema actual. Linux, con su modularidad extrema y su capacidad para vivir en múltiples formas, será terreno fértil para técnicas que conciban la persistencia como fenómeno ambiental.
Impacto estratégico: la persistencia como propiedad estructural del ecosistema Linux
El verdadero desafío de la persistencia en Linux no es su complejidad técnica. Es su impacto estratégico. Los incidentes avanzados ya no se resuelven reemplazando un servidor, reinstalando un host o rotando credenciales. Esas soluciones operan en un plano equivocado. No basta con reparar una máquina en un ecosistema donde la persistencia vive en pipelines, infraestructuras, identidades, firmware y automatismos.
Desde la perspectiva organizacional, esto transforma completamente la gobernanza de la seguridad. La defensa debe expandirse desde el host hacia la cadena de suministro completa: pipelines CI/CD, sistemas de firma, repositorios de imágenes, plataformas de automatización, control de firmware, políticas de identidad y mecanismos de telemetría continua. La pregunta ya no es “¿dónde está el artefacto malicioso?”, sino “¿qué parte del ecosistema permite su continuidad?”.
Desde el plano económico, la persistencia avanzada implica ciclos de reconstrucción profunda. El costo no es la intrusión inicial. El costo real está en regenerar imágenes base, redefinir pipelines, auditar repositorios, validar firmware, reconstruir clusters, reorganizar identidades y reinstalar componentes críticos. En entornos Linux altamente automatizados, la persistencia no produce máquinas infectadas: produce ecosistemas infectados.
Desde el plano conceptual, la persistencia en Linux destruye la narrativa de que este sistema es “más seguro por diseño”. La seguridad no depende del kernel; depende del ecosistema que lo rodea. Un entorno Windows endurecido puede ser más seguro que un cluster Linux mal diseñado. Un pipeline comprometido puede ser más destructivo que un rootkit. Una imagen base alterada puede persistir indefinidamente incluso si cada servidor se reinstala a diario.
Este tercer capítulo confirma la tesis transversal de la serie: la persistencia moderna no vive en los sistemas operativos. Vive en las relaciones entre ellos.