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 gratisNo 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:
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.
Los directorios temporales son el escondite favorito del malware porque tienen permisos de escritura para todos los usuarios y rara vez se revisan.
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.
Los atacantes programan cron jobs para descargar y ejecutar malware periódicamente, asegurando la persistencia aunque mates el proceso original.
Conexiones salientes a puertos extraños (4444, 5555, 8888) indican reverse shells. Tráfico constante a pools de minería o servidores C2.
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.
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.
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.
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.
# 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.
Los rootkits modifican binarios del sistema para esconderse. Si ls, ps o netstat están comprometidos, no verás los procesos maliciosos.
# 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.
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 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
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.
Los atacantes crean backdoors para volver incluso después de limpiar el malware. Revisa todas las vías de acceso.
# 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.
Una vez identificado el malware, hay que eliminarlo y cerrar las puertas que usó el atacante para entrar.
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.
En lugar de ejecutar 20 comandos distintos, instala Defensia y deja que el escáner de malware revise tu servidor continuamente.
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.
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 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.
Reconoce Laravel, WordPress, Django, Symfony, Joomla, Drupal y más. Aplica verificaciones específicas: checksums de WP, usuarios administradores sospechosos, configuraciones expuestas.
Vigila directorios de uploads y archivos temporales cada 30 segundos. Detecta archivos nuevos con PHP malicioso en el momento en que aparecen.
Recibe notificaciones por Slack, email o Discord cuando se detecta malware, un ataque SSH masivo o un cambio en la puntuación de seguridad.
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.
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 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.
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 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.
Instala Defensia y detecta amenazas antes de que se conviertan en problemas. Gratis para un servidor.
Sin tarjeta de crédito. Instalación en 30 segundos.