Respuesta a incidentes · Malware en Linux

¿Tu servidor Linux ha sido hackeado?

Si sospechas que tu servidor está comprometido, cada minuto cuenta. Esta guía te lleva paso a paso por la detección de malware, limpieza del sistema y prevención para que no vuelva a pasar.

Escanear mi servidor gratis

8 señales de que tu servidor ha sido comprometido

No siempre es obvio. Un servidor hackeado puede funcionar durante semanas sin que lo notes, minando criptomonedas en segundo plano o sirviendo de punto de retransmisión para spam y ataques DDoS. Estas son las señales más comunes:

!

CPU al 100% sin explicación

Los criptomineros como XMRig consumen toda la CPU del servidor. Si ves un proceso desconocido usando el 90-100% de la CPU, es casi seguro un minero.

!

Procesos en /tmp o /dev/shm

Los directorios temporales son el escondite favorito del malware porque tienen permisos de escritura para todos los usuarios y rara vez se revisan.

!

Claves SSH desconocidas

Revisa ~/.ssh/authorized_keys de todos los usuarios. Los atacantes añaden sus propias claves para mantener acceso permanente incluso si cambias la contraseña.

!

Cron jobs que no creaste tú

Los atacantes programan cron jobs para descargar y ejecutar malware periódicamente, asegurando la persistencia aunque mates el proceso original.

!

Tráfico de red inusual

Conexiones salientes a puertos extraños (4444, 5555, 8888) indican reverse shells. Tráfico constante a pools de minería o servidores C2.

!

Archivos PHP en directorios de uploads

Las web shells se suben disfrazadas de imágenes o se inyectan en plugins. Si tienes archivos .php dentro de wp-content/uploads/ o directorios similares, tienes un problema.

!

Emails de spam saliendo del servidor

Si tu servidor aparece en blacklists como Spamhaus o tu proveedor te avisa de tráfico SMTP anómalo, probablemente tienes un script de spam instalado.

!

Logs borrados o modificados

Si auth.log, syslog o los access logs de tu web server tienen huecos o han sido truncados, el atacante está intentando borrar sus huellas.

Si reconoces 2 o más de estas señales, es muy probable que tu servidor esté comprometido. Actúa ya.

Paso 1: Investigar procesos sospechosos

Lo primero es ver qué se está ejecutando en tu servidor. Los criptomineros y reverse shells suelen aparecer como procesos con nombres genéricos en directorios temporales.

Buscar procesos sospechosos

# Procesos con mayor consumo de CPU:

ps aux --sort=-%cpu | head -20

# Procesos ejecutándose desde /tmp, /dev/shm o /var/tmp:

ls -la /proc/*/exe 2>/dev/null | grep -E '/tmp|/dev/shm|/var/tmp'

# Conexiones de red activas:

ss -tulnp | grep ESTABLISHED

# Procesos ejecutados por usuarios desconocidos:

ps aux | awk '$1 !~ /^(root|www-data|mysql|nobody|syslog)/'

Qué buscar: Procesos llamados kdevtmpfsi, kinsing, xmrig son criptomineros. Binarios en /tmp o /dev/shm son sospechosos por defecto. Conexiones salientes a puertos inusuales (4444, 5555, 8888, 9999) pueden ser reverse shells.

Paso 2: Buscar rootkits y archivos ocultos

Los rootkits modifican binarios del sistema para esconderse. Si ls, ps o netstat están comprometidos, no verás los procesos maliciosos.

Verificar integridad del sistema

# Verificar paquetes modificados (Debian/Ubuntu):

dpkg -V 2>/dev/null | grep -v '^$'

# Verificar paquetes modificados (RHEL/CentOS):

rpm -Va 2>/dev/null | grep -v '^$'

# Revisar ld.so.preload (hijacking de librerías):

cat /etc/ld.so.preload 2>/dev/null

# Buscar archivos ocultos en /tmp y /dev/shm:

find /tmp /dev/shm /var/tmp -name ".*" -type f 2>/dev/null

# Ejecutar rkhunter:

sudo apt install rkhunter && sudo rkhunter --check --skip-keypress

Importante: Si /etc/ld.so.preload tiene contenido, tu servidor tiene un rootkit activo. No confíes en ningún comando del sistema — necesitas arrancar desde un medio externo o reinstalar.

Paso 3: Escanear archivos maliciosos

Las web shells PHP son el malware más común en servidores web. Se esconden en directorios de uploads, dentro de plugins de WordPress o Joomla, y permiten al atacante ejecutar comandos remotamente.

Buscar web shells y archivos sospechosos

# Buscar funciones peligrosas en archivos PHP:

grep -rl 'eval\|base64_decode\|system\|exec\|passthru\|shell_exec' /var/www/ --include="*.php"

# Archivos PHP recientes en directorios de uploads:

find /var/www -path "*/uploads/*.php" -mtime -30

# Archivos con permisos ejecutables en /var/www:

find /var/www -type f -perm -o+x -name "*.php"

# Escanear con ClamAV:

sudo apt install clamav && sudo freshclam && clamscan -ri /var/www /tmp /dev/shm

Escaneo con Defensia

ClamAV es bueno para malware de email pero detecta menos del 30% de web shells PHP. Defensia usa 64.000+ firmas hash y 684 patrones dinámicos diseñados específicamente para malware de servidor: web shells PHP, criptomineros, reverse shells, credenciales expuestas y archivos con entropía anormal. Además, detecta frameworks (Laravel, WordPress, Django, Symfony) y aplica verificaciones específicas para cada uno.

Paso 4: Revisar accesos y credenciales

Los atacantes crean backdoors para volver incluso después de limpiar el malware. Revisa todas las vías de acceso.

Revisar accesos

# Claves SSH autorizadas (para cada usuario):

for user in $(cut -d: -f1 /etc/passwd); do echo "--- $user ---"; cat /home/$user/.ssh/authorized_keys 2>/dev/null; done

# Cron jobs de todos los usuarios:

for user in $(cut -d: -f1 /etc/passwd); do echo "--- $user ---"; crontab -l -u $user 2>/dev/null; done

# Archivos .env con permisos abiertos:

find / -name ".env" -readable 2>/dev/null

# Usuarios con UID 0 (privilegios de root):

awk -F: '$3 == 0 {print $1}' /etc/passwd

Después de limpiar: Cambia todas las contraseñas (SSH, base de datos, paneles de administración). Regenera las claves SSH del servidor. Revisa los tokens API de tus aplicaciones.

Paso 5: Limpiar el servidor y prevenir reinfecciones

Una vez identificado el malware, hay que eliminarlo y cerrar las puertas que usó el atacante para entrar.

Limpieza inmediata

  • • Matar procesos maliciosos identificados
  • • Eliminar archivos malware (o moverlos a cuarentena)
  • • Eliminar claves SSH no autorizadas
  • • Eliminar cron jobs sospechosos
  • • Restaurar binarios modificados desde paquetes limpios
  • • Limpiar /etc/ld.so.preload si tiene contenido

Prevención

  • • Actualizar todo el software del servidor
  • • Desactivar autenticación SSH por contraseña
  • • Configurar un firewall restrictivo
  • • Instalar un WAF para el servidor web
  • • Programar escaneos de malware periódicos
  • • Monitorizar en tiempo real con alertas

¿Cuándo conviene reinstalar desde cero?

Si encontraste un rootkit activo, binarios del sistema modificados o no puedes determinar cuándo ocurrió la intrusión, lo más seguro es reinstalar el servidor desde cero. Restaura tus datos desde un backup que sepas que es limpio. No restaures configuraciones del sistema — solo datos de aplicaciones y bases de datos.

Defensia detecta todo esto automáticamente

En lugar de ejecutar 20 comandos distintos, instala Defensia y deja que el escáner de malware revise tu servidor continuamente.

$ curl -fsSL https://defensia.cloud/install.sh | sudo bash

Escáner de malware

64.000+ firmas hash y 684 patrones dinámicos. Detecta web shells PHP, criptomineros, reverse shells, rootkits y credenciales expuestas. Escaneo programado y cuarentena automática.

Verificación de integridad

Compara binarios del sistema con los paquetes originales (dpkg -V, rpm -Va). Detecta rootkits revisando ld.so.preload, procesos ocultos y ejecutables en /tmp.

Puntuación de seguridad

Puntuación de 0 a 100 (grado A-F) que evalúa el estado de seguridad global del servidor. Puedes ver de un vistazo si algo ha cambiado o empeorado.

Detección de frameworks

Reconoce Laravel, WordPress, Django, Symfony, Joomla, Drupal y más. Aplica verificaciones específicas: checksums de WP, usuarios administradores sospechosos, configuraciones expuestas.

Monitorización en tiempo real

Vigila directorios de uploads y archivos temporales cada 30 segundos. Detecta archivos nuevos con PHP malicioso en el momento en que aparecen.

Alertas configurables

Recibe notificaciones por Slack, email o Discord cuando se detecta malware, un ataque SSH masivo o un cambio en la puntuación de seguridad.

Preguntas frecuentes

¿Cómo saber si mi servidor Linux tiene malware?

Las señales más comunes son: CPU al 100% sin razón, procesos desconocidos en /tmp o /dev/shm, claves SSH que no reconoces, cron jobs sospechosos y archivos PHP nuevos en directorios de uploads. Defensia detecta todo esto automáticamente con su escáner de malware integrado.

¿Es mejor limpiar o reinstalar el servidor?

Si encontraste un rootkit activo, binarios del sistema modificados o no puedes determinar el alcance de la intrusión, lo más seguro es reinstalar desde cero. Si el malware se limita a web shells en /var/www o un criptominero en /tmp, puedes limpiarlo sin reinstalar.

¿ClamAV detecta web shells PHP?

ClamAV detecta algunas web shells conocidas, pero su base de firmas está orientada a malware de email. La tasa de detección para malware de servidor es baja (menos del 30%). Defensia usa firmas específicas para malware web con una tasa de detección significativamente mayor.

¿Puedo usar Defensia junto con ClamAV?

Sí. Defensia y ClamAV usan métodos de detección y bases de firmas completamente diferentes, así que se complementan sin conflictos. Muchos administradores usan ambos para tener doble cobertura.

¿Defensia puede limpiar el malware automáticamente?

Defensia mueve los archivos maliciosos a cuarentena (/var/lib/defensia/quarantine/) donde no pueden ejecutarse pero se conservan para análisis forense. La limpieza completa requiere revisión manual porque eliminar el archivo equivocado puede romper una aplicación.

Fuentes

  • • Telemetría de Defensia: 9 servidores de producción, 250.000+ ataques analizados (2024-2026)
  • • AV-TEST Institute: 1.300+ nuevas muestras de malware para Linux por día (2025)
  • • Sophos Linux Malware Threat Report (2024)
  • • OWASP Web Shell Detection Guidelines
  • • CISA Alert AA22-321A: Mitigating Web Shells

No esperes a que te hackeen

Instala Defensia y detecta amenazas antes de que se conviertan en problemas. Gratis para un servidor.

$ curl -fsSL https://defensia.cloud/install.sh | sudo bash
Empieza gratis

Sin tarjeta de crédito. Instalación en 30 segundos.