Investigadores del Microsoft Defender Security Research Team han observado un incremento de ataques contra servidores Linux y entornos de hosting en los que los ciberdelincuentes emplean cookies HTTP como canal de control de web shells PHP. Esta técnica permite mantener acceso remoto y ejecutar código malicioso de forma discreta, mimetizándose con el tráfico web legítimo.
Web shell PHP con control por cookies HTTP en servidores Linux
Tradicionalmente, un web shell PHP recibe órdenes a través de parámetros en la URL o del cuerpo de la petición HTTP (POST). En las campañas descritas por Microsoft, el enfoque cambia: toda la lógica de control se traslada a los valores de las cookies HTTP. El código malicioso consulta el arreglo superglobal $_COOKIE y solo activa su funcionalidad si detecta una combinación concreta de claves y valores.
Este diseño ofrece a los atacantes dos ventajas clave. Por un lado, el web shell permanece inactivo durante el uso normal de la aplicación, reduciendo su huella. Por otro, las peticiones que contienen instrucciones se parecen visualmente al tráfico estándar, ya que el uso de cookies es ubicuo en la web. Si el servidor o las herramientas de monitorización no registran ni inspeccionan las cookies, el canal de mando y control pasa prácticamente desapercibido.
Cookie-gated execution: ejecución de código condicionada por cookies
Microsoft describe este patrón como cookie-gated execution, es decir, ejecución de código “protegida” por la presencia de determinadas cookies. Bajo este modelo, la lógica maliciosa puede incrustarse en:
- peticiones HTTP habituales hacia el sitio o la API;
- tareas programadas y procesos en segundo plano;
- workers y servicios del sistema considerados de confianza.
Mientras no se reciba la cookie adecuada, el script se comporta como un fragmento de código inocuo. Cuando el atacante envía la cookie con el valor preacordado, se activa el web shell y es posible ejecutar comandos del sistema, descargar más malware o modificar la configuración del servidor, todo ello encubierto en tráfico aparentemente normal.
Persistencia en Linux con cron y loaders PHP auto-restaurables
En los incidentes analizados, los atacantes obtienen acceso inicial a servidores Linux mediante credenciales válidas comprometidas o explotando vulnerabilidades conocidas en aplicaciones o paneles de hosting. Una vez dentro, crean una tarea de cron que ejecuta periódicamente un script de shell encargado de descargar y lanzar un loader PHP fuertemente ofuscado.
Esta arquitectura se considera self-healing o “auto‑restaurable”. Si un administrador elimina el archivo PHP malicioso durante una operación de limpieza, la tarea de cron vuelve a recrear el loader en el siguiente ciclo. El resultado es un canal de ejecución remota muy resiliente, difícil de erradicar solo con acciones puntuales.
El loader PHP permanece la mayor parte del tiempo en estado latente. La lógica de control solo se activa cuando el servidor recibe peticiones HTTP con cookies especialmente formadas que contienen comandos o parámetros para el web shell. En esta combinación, cron garantiza la persistencia y las cookies proporcionan el control remoto, reduciendo el “ruido” en los registros y complicando el análisis forense.
Evasión de defensas, ofuscación de PHP y limitaciones de WAF/IDS
Un elemento común en estas campañas es la ofuscación agresiva del código PHP. Los atacantes enmascaran cadenas, nombres de variables y funciones, utilizan evaluaciones dinámicas y construcciones poco habituales para impedir el análisis estático y dificultar la detección basada en firmas. En muchos casos, el web shell queda oculto dentro de archivos aparentemente legítimos del CMS o del framework.
El uso de cookie-based gating reduce además la interacción visible: en los registros del servidor web, las peticiones maliciosas no se distinguen fácilmente del tráfico de usuarios, especialmente cuando no se registran los encabezados de cookies. Esto limita la eficacia de reglas en WAF e IDS/IPS centradas solo en parámetros de URL o cuerpo de la petición, una tendencia ya destacada en informes públicos como Verizon DBIR o Microsoft Digital Defense Report, que señalan a los web shells como herramienta frecuente en compromisos de servidores web.
Medidas para proteger servidores Linux y entornos de hosting
Para mitigar este tipo de ataques contra servidores Linux, paneles de hosting y aplicaciones PHP, es recomendable aplicar un enfoque en capas que combine prevención, detección y respuesta:
- Aplicar MFA (autenticación multifactor) en paneles de control, acceso SSH y consolas administrativas.
- Monitorizar inicios de sesión anómalos: IPs inusuales, geolocalizaciones atípicas, horarios extraños o múltiples intentos fallidos.
- Restringir la ejecución de shells desde el contexto web, endureciendo la configuración de PHP (disable_functions, open_basedir) y limitando llamadas a intérpretes de comandos.
- Auditar con regularidad las tareas de cron y otros schedulers, incluyendo las creadas por paneles de gestión.
- Revisar las directorios web en busca de PHP sospechoso, código ofuscado y archivos modificados recientemente en rutas críticas.
- Registrar y analizar encabezados HTTP, incluidas las cookies, y desplegar un WAF con reglas de comportamiento que consideren patrones de uso anómalos de cookies.
- Realizar revisiones periódicas del código de aplicaciones y plugins para detectar posibles puertas traseras o puntos de ejecución remota ocultos.
En un contexto en el que los web shells PHP y las técnicas de cookie-gated execution ganan protagonismo en ataques a servidores Linux, reforzar la visibilidad sobre cron, cookies y código PHP resulta esencial. Invertir en monitorización, endurecimiento de la configuración y revisiones de seguridad continuas puede marcar la diferencia entre una intrusión efímera y una comprometida persistente con riesgo de fuga de datos. Adoptar estas prácticas y mantenerse actualizado sobre nuevas técnicas de ataque es un paso clave para mejorar la ciberresiliencia de cualquier infraestructura de hosting o servidor web.