Hackearon su sitio web, alguien lo limpió y durante unos días o semanas todo parecía estar bien. Luego volvieron a aparecer la misma redirección, las mismas páginas de spam o los mismos archivos sospechosos.
Es una de las situaciones más frustrantes para el propietario de un sitio web. Puede dar la sensación de que la limpieza no sirvió de nada, o de que es imposible detener al atacante.
En la mayoría de los casos, que el malware vuelva una y otra vez significa que la limpieza eliminó los síntomas visibles, pero no la causa. Algo sigue permitiendo que el atacante vuelva a entrar, o algo que ha quedado en el servidor vuelve a crear la infección.
La buena noticia es que una reinfección suele tener un motivo identificable. Una vez encontrado y cerrado ese motivo, el ciclo normalmente se detiene.
Esta guía explica los motivos más frecuentes por los que vuelve el malware, qué comprobaciones puede hacer sin riesgo, qué evitar y cuándo pedir ayuda especializada.
¿Qué significa que el malware vuelva una y otra vez?
Una infección de WordPress suele tener tres partes:
- el punto de entrada, la debilidad que utilizó el atacante para entrar
- la persistencia, lo que le permite volver o mantiene vivo el código
- la carga maliciosa, el daño visible, como páginas de spam, redirecciones o scripts inyectados
Muchas limpiezas se centran en la carga maliciosa porque es lo que ven los visitantes, los clientes y Google. Eliminarla hace que el sitio web vuelva a parecer normal. Pero si sobreviven el punto de entrada o el mecanismo de persistencia, la carga maliciosa vuelve, a veces en cuestión de horas.
Así que la pregunta no es "¿cómo eliminamos otra vez el malware?", sino "¿qué dejó atrás la última limpieza?".
¿Por qué vuelve el malware?
A menudo hay más de un motivo a la vez.
El punto de entrada nunca se cerró
Si el atacante entró aprovechando una debilidad, puede que esa debilidad siga ahí. Ejemplos frecuentes:
- un plugin o un tema vulnerable que no se ha actualizado, o que ya no tiene mantenimiento
- un plugin o un tema nulled o pirata, descargado de una fuente no oficial, que puede contener código malicioso desde el principio
- credenciales robadas, como una contraseña de WordPress, del hosting, de SFTP o de la base de datos que no se cambió
- un plugin abandonado que está desactivado pero sigue en el servidor, donde todavía se puede acceder a sus archivos
- una copia antigua del sitio web en una subcarpeta, con software desactualizado y vulnerable
Desactivar un plugin no es lo mismo que eliminarlo. En muchos casos todavía se puede llamar directamente a sus archivos.
Quedaron puertas traseras
Los atacantes rara vez se conforman con una sola vía de entrada. Después del primer compromiso, a menudo instalan puertas traseras (backdoors): pequeños fragmentos de código que les permiten ejecutar comandos o subir archivos cuando quieran.
Las puertas traseras pueden estar:
- ocultas en archivos con nombres de apariencia inofensiva
- añadidas a archivos legítimos de plugins o temas
- guardadas en la carpeta de subidas, que solo debería contener archivos multimedia
- colocadas en la carpeta
mu-plugins, que se carga automáticamente y no aparece en la lista normal de plugins - almacenadas en la base de datos, por ejemplo dentro de una opción o de un widget
Una limpieza que elimina el malware visible pero pasa por alto una sola puerta trasera deja la puerta abierta.
Otros sitios web de la misma cuenta de hosting están infectados
Si varios sitios web comparten una cuenta de hosting, la infección de uno de ellos a menudo puede llegar a los demás. Limpiar solo el sitio web que muestra los síntomas deja intacto el origen.
Es muy habitual con sitios de prueba antiguos, micrositios olvidados o una versión anterior del sitio web que se conserva "por si acaso".
Tareas programadas vuelven a crear la infección
WordPress tiene su propio sistema de programación, llamado WP-Cron, y los servidores tienen sus propias tareas programadas (cron jobs). Un atacante puede añadir una tarea que descargue o reescriba código malicioso con regularidad.
Si no se elimina la tarea, el malware puede reaparecer a intervalos regulares, lo que a menudo es una pista útil.
Sigue activa una cuenta comprometida
Puede que el atacante todavía tenga:
- una cuenta de administrador en WordPress, quizá con un nombre de apariencia normal
- una sesión iniciada que nunca se cerró
- acceso al panel de control del hosting, a SFTP o a la base de datos
- acceso a una cuenta de correo que se usa para restablecer contraseñas
- la propiedad del sitio en Google Search Console
Si se pasó por alto alguno de estos accesos, el atacante simplemente puede volver a iniciar sesión. Consulte qué hacer ante un administrador desconocido para más detalles.
Se restauró un backup infectado
Restaurar un backup es una respuesta habitual a un hackeo. Pero si el backup se hizo después de que empezara el compromiso, contiene el mismo malware o la misma puerta trasera.
Las infecciones pueden permanecer latentes durante semanas antes de mostrar síntomas visibles, así que un backup hecho "antes de que notáramos el problema" no está necesariamente limpio.
¿Cuáles son las primeras comprobaciones seguras?
Estas comprobaciones le ayudan a reunir información sin cambiar nada.
Anote el patrón
Anote:
- cuándo apareció el malware por primera vez
- cuándo se limpió y quién lo hizo
- cuándo volvió
- si volvió de la misma forma o de otra distinta
- si parece volver a intervalos regulares
Un patrón regular sugiere una tarea programada. Una vuelta rápida tras una limpieza sugiere una puerta trasera o una cuenta activa. Una vuelta después de mucho tiempo sugiere un punto de entrada que se ha vuelto a utilizar.
Pregunte qué incluyó la limpieza anterior
Si limpió el sitio un proveedor de hosting, una agencia o un servicio de seguridad, pregúnteles:
- qué eliminaron
- si descubrieron cómo entró el atacante
- si revisaron otros sitios web de la misma cuenta
- si se cambiaron las contraseñas y las claves de seguridad
- si revisaron las tareas programadas y las cuentas de usuario
Las lagunas en las respuestas a menudo señalan el problema.
Revise los usuarios y los plugins en el escritorio
En WordPress, vaya a Users → All Users (Usuarios → Todos los usuarios) y filtre por Administrador. Busque cuentas que no reconozca.
Después vaya a Plugins → Installed Plugins (Plugins → Plugins instalados). Anote los plugins que no reconozca, los que no se actualizan desde hace mucho tiempo y los instalados desde fuera del directorio oficial sin una licencia válida.
No elimine nada todavía. Registre lo que ve.
Pregunte al proveedor de hosting
Su proveedor de hosting puede decirle:
- si se sigue detectando malware
- qué otros sitios web comparten la cuenta
- si hay tareas programadas a nivel de servidor
- si ha habido inicios de sesión sospechosos en el panel de control o por SFTP
- si hay logs del servidor disponibles del periodo del ataque
¿Qué puede hacer ahora sin riesgo?
Algunos pasos reducen el riesgo sin destruir pruebas:
- cambie la contraseña de su propia cuenta de WordPress y de su cuenta de hosting, usando contraseñas únicas
- active la autenticación en dos pasos donde esté disponible
- compruebe que la cuenta de correo usada para WordPress y para el hosting es segura
- deje de restaurar backups hasta que esté claro cuál está limpio
- pause la publicidad que envía tráfico al sitio web, si se está redirigiendo a los visitantes
Cambiar todas las contraseñas es más eficaz después de haber encontrado el punto de entrada. De lo contrario, las nuevas contraseñas pueden quedar expuestas de la misma manera.
¿Qué debe evitar?
Evite:
- repetir la misma limpieza esperando un resultado distinto
- borrar archivos al azar
- desactivar los plugins sospechosos en lugar de eliminarlos
- restaurar el backup más reciente sin comprobarlo
- limpiar un sitio web mientras otros de la misma cuenta siguen intactos
- instalar varios plugins de seguridad a la vez
- dejar administradores desconocidos "para más adelante"
- usar plugins y temas nulled o piratas
¿Cómo se rompe el ciclo?
Una respuesta completa suele incluir:
- conservar una copia de los archivos, la base de datos y los logs actuales
- encontrar el punto de entrada, mediante los logs, las fechas de los archivos y las vulnerabilidades conocidas
- sustituir el núcleo de WordPress, los plugins y los temas por copias nuevas de fuentes oficiales
- buscar puertas traseras en los archivos restantes, en las subidas y en la base de datos
- revisar todos los sitios web de la cuenta de hosting
- eliminar las cuentas desconocidas y las tareas programadas maliciosas
- cambiar todas las contraseñas y las claves de seguridad de WordPress
- eliminar los plugins y temas que no se usan y las copias antiguas del sitio
- monitorizar el sitio web después de la limpieza para confirmar que la infección no ha vuelto
El paso 9 es importante. Una limpieza solo se confirma cuando el sitio web se mantiene limpio a lo largo del tiempo.
¿Cuándo debe pedir ayuda?
Pida ayuda cuando:
- el malware haya vuelto al menos una vez
- no sepa cómo entró el atacante
- varios sitios web compartan la misma cuenta de hosting
- el sitio web gestione pagos, suscripciones o datos personales
- Google o su proveedor de hosting hayan marcado el sitio
- no tenga un backup en el que confíe
Una infección recurrente es señal de que se ha pasado por alto algo concreto. Encontrarlo suele requerir acceso a los logs y experiencia con los patrones que usan los atacantes.
Cómo puede ayudarle D4Hub
D4Hub puede:
- revisar qué cubrió y qué no cubrió la limpieza anterior
- identificar el punto de entrada mediante logs, análisis de archivos y vulnerabilidades conocidas
- buscar puertas traseras en los archivos, las subidas,
mu-pluginsy la base de datos - revisar todos los sitios web de la cuenta de hosting
- revisar las tareas programadas de WordPress y del servidor
- eliminar las cuentas desconocidas y cerrar las sesiones activas
- sustituir el núcleo, los plugins y los temas por copias limpias
- identificar un backup limpio o reconstruir a partir de fuentes verificadas
- organizar la monitorización y el mantenimiento para reducir el riesgo de reinfección
- apoyarle en la revisión de Google si el sitio ha sido marcado
Puede pedir ayuda en cualquier fase, incluso después de una limpieza que no ha durado.
Abrir un ticket de soportePara usuarios con perfil práctico: encontrar lo que se le escapó a la limpieza
Estas comprobaciones son para personas que se manejan con SSH, SFTP y WP-CLI.
Antes de empezar, haga un backup completo de los archivos y de la base de datos actuales, y guárdelo separado del sitio en producción. Incluso una copia infectada es una prueba útil. Los comandos siguientes solo leen información. No elimine nada hasta que entienda qué es.
Verifique los archivos del núcleo de WordPress
wp core verify-checksumsEste comando compara los archivos del núcleo con la versión oficial. Señala los archivos modificados y los archivos que no deberían estar en las carpetas del núcleo. Cualquier aviso sobre wp-admin o wp-includes merece atención.
Verifique los archivos de los plugins
wp plugin verify-checksums --allSolo funciona con los plugins del directorio de WordPress.org. Los plugins premium y personalizados aparecerán como imposibles de verificar, lo que por sí solo no es señal de infección. En esos casos, compare con una copia nueva descargada del proveedor.
Busque archivos PHP en las subidas
La carpeta de subidas debería contener archivos multimedia, no código:
find wp-content/uploads -type f -name "*.php"Algunos plugins crean ahí archivos PHP inofensivos, como un index.php vacío, así que abra cada resultado y compruébelo antes de actuar. Revise también la carpeta mu-plugins:
ls -la wp-content/mu-plugins/Revise los eventos programados de WordPress
wp cron event listBusque nombres de hooks que no reconozca, sobre todo los que no corresponden a ningún plugin instalado. Anótelos antes de eliminar nada.
Si tiene acceso a la shell, revise también las tareas programadas del propio servidor para su usuario:
crontab -lMuchos paneles de control de hosting también muestran los cron jobs en una sección específica. Busque comandos que descarguen archivos o ejecuten PHP desde ubicaciones inusuales.
Liste los administradores
wp user list --role=administrator --fields=ID,user_login,user_email,user_registeredRevise todas las cuentas. Una fecha de registro reciente en una cuenta desconocida es una señal de alarma clara. En multisite, revise también los superadministradores con wp super-admin list.
Busque archivos modificados recientemente
find . -type f -name "*.php" -mtime -14Ajuste -14 al número de días transcurridos desde la última limpieza. Merece la pena examinar los archivos modificados después de la limpieza que no correspondan a actualizaciones hechas por usted.
Revise otras carpetas de la cuenta de hosting
Suba un nivel desde la carpeta del sitio web y liste lo que hay. Busque:
- otras instalaciones de WordPress, incluidos sitios antiguos o de prueba
- carpetas llamadas
old,backup,test,devo similares - archivos comprimidos como backups
.zipo.sqlque se hayan quedado en el servidor
Cada instalación de WordPress de la cuenta necesita las mismas comprobaciones. Una instalación olvidada es una fuente frecuente de reinfección.
Si los resultados le resultan confusos o encuentra algo que no sabe explicar, deténgase. D4Hub puede revisar los resultados con usted o hacerse cargo de la investigación.
Preguntas frecuentes
¿Por qué el análisis de mi proveedor de hosting decía que el sitio estaba limpio?
Los análisis automáticos buscan patrones conocidos. Las puertas traseras pueden estar ofuscadas, ocultas en archivos legítimos o almacenadas en la base de datos, donde muchos escáneres no buscan. Un análisis limpio es útil, pero no demuestra que hayan desaparecido todas las puertas traseras.
¿Basta con reinstalar WordPress?
Reinstalar el núcleo solo sustituye los archivos del núcleo. El código malicioso puede seguir en los plugins, los temas, las subidas, la base de datos, otros sitios web de la cuenta o las tareas del servidor.
¿Puede seguir siendo peligroso un plugin desactivado?
Sí. Si sus archivos siguen en el servidor, una vulnerabilidad en ellos todavía puede ser explotable. Los plugins que no utiliza deben eliminarse, no solo desactivarse.
¿Debería cambiar de proveedor de hosting?
Trasladar el sitio web no elimina el malware, y un sitio infectado trasladado a un nuevo servidor sigue infectado. Cambiar de proveedor puede tener sentido por otros motivos, pero solo después de haber limpiado el sitio.
¿Durante cuánto tiempo debo monitorizar el sitio después de la limpieza?
Al menos unas semanas, vigilando la aparición de archivos nuevos, usuarios nuevos y comportamientos extraños. Algunas puertas traseras solo se usan de vez en cuando, así que un breve periodo de calma no demuestra que el sitio esté limpio.
¿De verdad son un riesgo los temas y plugins nulled?
Sí. Proceden de fuentes no oficiales, no reciben actualizaciones de seguridad y pueden contener ya código malicioso. Sustituirlos por copias con licencia forma parte de cualquier limpieza seria.
¿Puede ayudarme D4Hub si otra empresa ya ha limpiado el sitio?
Sí. Comparta lo que sepa sobre la limpieza anterior. D4Hub puede comprobar qué se pasó por alto, encontrar el punto de entrada y ayudarle a romper el ciclo.