¿Te preocupa que un sitio WordPress esté infectado y no saber por dónde empezar? La infección por malware puede dañar la reputación, penalizar en SEO y comprometer datos de clientes. Esta guía ofrece un playbook técnico y reproducible para el escaneo y limpieza de malware en WordPress, con herramientas, comandos, checklist y pasos de recuperación enfocados a empresas y profesionales.
Puntos clave: Lo que debes saber en 1 minuto
- Detectar primero, actuar después. Priorizar un escaneo completo del código, archivos subidos y base de datos antes de borrar nada.
- Usar múltiples herramientas (scanner local, plugins y servicios externos) para reducir falsos positivos y encontrar IOCs (indicadores de compromiso).
- Aislar el entorno (poner sitio en modo mantenimiento o offline) y trabajar sobre copias; nunca limpiar en producción sin backup verificable.
- Revisar accesos y credenciales tras la limpieza y aplicar hardening (usuarios, permisos, WAF, actualizaciones).
- Verificar listas negras y recuperar SEO notificando a Google y monitorizando la indexación.
Cómo realizar un escaneo de malware en WordPress: enfoque y checklist inicial
Paso 0: Preparación y aislamiento
- Poner el sitio en mantenimiento y comunicar al equipo técnico. Si el sitio gestiona datos sensibles, considerar desconexión temporal.
- Crear backup completo (archivos + base de datos) y descargar copia local fuera del servidor. Verificar integridad del backup.
- Crear un entorno de trabajo aislado (entorno local o staging) para pruebas.
Paso 1: escaneo automatizado con plugins y servicios externos
- Ejecutar un plugin de confianza: Wordfence o Sucuri para obtener una primera vista (archivos modificados, URL maliciosas, malas prácticas).
- Subir copia del sitio a un servicio externo de análisis estático: VirusTotal (scan URLs) y comprobar reportes.
- Consultar Google Safe Browsing: Google Safe Browsing para ver si existe bloqueo.
Paso 2: escaneo profundo (ficheros y base de datos)
- Comparar árbol de ficheros con instalación limpia de la misma versión de WordPress: buscar ficheros desconocidos en /wp-content/uploads, /wp-content/plugins, /wp-content/themes.
- Buscar cambios en /wp-config.php, archivos .htaccess y cron jobs (crontab) en servidor.
- Búsquedas rápidas por IOCs en la copia local (ejemplos de comandos):
- Buscar funciones sospechosas en PHP:
- grep -R --exclude-dir=vendor -n "eval(|base64_decode(|gzinflate(|preg_replace(.*//e" .
- Buscar archivos modificados recientemente:
- find . -type f -mtime -30 -print
- Buscar iframes, scripts externos o cadenas de redirección:
- grep -R --include="*.php" -n "iframe|eval|base64_decode|document.write|window.location" .
- Revisar tablas de la base de datos en busca de entradas con payloads: wp_options, wp_posts (post_content), wp_users (meta), wp_sitemeta.
- SQL de ejemplo para buscar scripts dentro de posts:
- SELECT ID, post_title FROM wp_posts WHERE post_content LIKE '%<script%';
Paso 3: análisis de logs y IOCs (forense mínimo)
- Revisar logs de Apache/Nginx y PHP-FPM para picos de tráfico, peticiones POST sospechosas o accesos a admin-ajax.php.
- Extraer IPs y rutas recurrentes y comprobar reputación con RBL y VirusTotal.
- Identificar TTPs (técnicas) habituales: inyección de backdoors en plugins, cuentas administrativas desconocidas, modificaciones en index.php, redirecciones cloaking.
Herramientas y plugins para detectar malware eficazmente: comparativa y recomendaciones
La detección depende de combinar enfoques: plugins que actúan en WordPress, scanners externos y herramientas de línea de comandos.
| Tipo |
Herramienta / plugin |
Fortalezas |
Limitaciones |
| Plugin WP |
Wordfence |
Firewall + scanner en tiempo real, cuarentena |
Consumo de recursos en hosting compartido |
| Plugin WP |
Sucuri (plugin + servicio) |
Escaneo cloud y WAF gestionado |
Servicio pago para respuesta completa |
| Servicio externo |
VirusTotal |
Revisión URL/archivo con multitud de motores |
No entra en DB ni código propietario |
| CLI |
grep + find + ClamAV |
Rápido, reproducible en servidor |
Requiere expertise técnico |
| Análisis web |
Google Safe Browsing |
Indica penalizaciones SEO |
No detecta backdoors locales |
Recomendación práctica
- Combinar: ejecutar Wordfence o Sucuri en WordPress, descargar copia y analizar localmente con grep/ClamAV, y verificar URL con VirusTotal y Google Safe Browsing.
- Para empresas, usar WAF en cloud (Cloudflare, Sucuri WAF) durante la limpieza para bloquear ataques automatizados.

Pasos prácticos para la limpieza completa del sitio infectado: playbook reproducible
Resumen del flujo
- Aislar y backup. 2. Escaneo completo. 3. Eliminar backdoors y archivos sospechosos. 4. Restaurar desde copia limpia si procede. 5. Reforzar credenciales y permisos. 6. Monitorizar.
Paso A: identificación de archivos maliciosos
- Priorizar ficheros en /wp-content/uploads y root. Los backdoors suelen llamarse con nombres aleatorios, contenedores de base64 o funciones eval.
- Ejemplo de patrón a buscar: base64_decode, gzinflate, preg_replace('/.*/e',...), shell_exec, system, passthru.
Paso B: limpieza de archivos (procedimiento seguro)
- No borrar masivamente. Mover a una carpeta aislada (/quarantine) para poder restaurar si hay falsos positivos.
- Reemplazar núcleos de WordPress, plugins y temas por versiones limpias descargadas desde el repositorio oficial o proveedor.
- wp core download --force (si procede en staging)
- Eliminar archivos desconocidos en uploads; revisar metadatos EXIF en imágenes si se sospecha webshell.
Paso C: limpieza de base de datos
- Revisar wp_options y wp_posts en busca de inyecciones: limpiar entradas con scripts maliciosos.
- Eliminar usuarios administradores sospechosos desde la DB y regenerar hashes de contraseñas para usuarios legítimos.
- Ejemplo SQL para buscar inserciones con iframe:
- SELECT ID, post_title FROM wp_posts WHERE post_content LIKE '%iframe%' OR post_content LIKE '%<script%';
Paso D: revisar configuraciones del servidor
- Revisar .htaccess y nginx.conf para cadenas que redirijan tráfico o añadan reglas de ejecución PHP inusuales.
- Comprobar permisos de ficheros: directorios 755, ficheros 644 y wp-config.php 640/600.
- Comprobar crontab para tareas no autorizadas: crontab -l -u www-data
Paso E: credenciales y accesos
- Rotar todas las contraseñas: admin WP, FTP/SFTP, base de datos, panel de hosting, cuentas de correo con acceso a WP.
- Eliminar claves API comprometidas y regenerar tokens.
Paso F: verificación y hardening post-limpieza
- Ejecutar nuevo escaneo con varias herramientas y verificar que ya no aparecen IOCs.
- Forzar revalidación de integridad: comparar hashes de archivos con una instalación limpia.
Restauración segura y recuperación tras eliminación de malware: pasos para restaurar operaciones y SEO
Restauración técnica
- Si la limpieza completa es difícil, restaurar desde backup limpio conocido anterior al compromiso. Antes de restaurar, auditar la causa raíz para evitar reinfección.
- Restaurar DB y archivos, actualizar a las últimas versiones y activar WAF temporalmente.
Recuperación SEO y listas negras
- Comprobar en Google Search Console si existen mensajes de seguridad o penalizaciones. Solicitar revisión tras limpieza: Seguridad > Acciones manuales / Problemas de seguridad.
- Verificar en Google Safe Browsing y en navegadores principales (Chrome, Firefox) que la URL no aparece marcada.
- Si existe una lista negra en proveedores (Sucuri, Norton Safe Web), seguir sus instrucciones de solicitud de revisión.
Comunicación y cumplimiento
- Para sitios con datos personales, revisar obligaciones legales (RGPD) si la intrusión supuso acceso a datos personales; documentar el incidente.
- Comunicar a clientes según política de incidentes si procede.
Prevención: hardening, copias de seguridad y monitorización continua
Hardening esencial (lista práctica)
- Mantener WordPress, plugins y temas actualizados. Eliminar plugins/desactivados no utilizados.
- Limitar intentos de login y usar autenticación multifactor en cuentas administrativas.
- Configurar permisos de ficheros y deshabilitar edición de archivos desde el dashboard: define('DISALLOW_FILE_EDIT', true);
- Desactivar ejecución de PHP en /wp-content/uploads con un .htaccess:
- Deny from all
Copias de seguridad y SLAs
- Implementar copias automáticas diarias y conservar rotaciones (diaria, semanal, mensual). Verificar restauración periódica (pruebas de DR).
- Definir SLAs internos: tiempo de detección, tiempo de respuesta y tiempo de recuperación.
Monitorización continua
- Configurar monitorización de integridad de archivos (SIV), alertas por cambios de checksum y logs. Servicios como Wordfence, Sucuri o soluciones de SIEM corporativo son recomendables.
- Revisar logs y alertas cada 24-72h y establecer runbooks de respuesta.
Checklist de limpieza y prevención
🛡️
Backup verificado
Copias diarias con prueba de restauración
🔍
Escaneo múltiple
Plugin + CLI + servicio externo
🔐
Hardening
MFA, permisos, WAF
📈
Monitorización
Alertas de integridad y logs
Ventajas, riesgos y errores comunes
Beneficios / cuándo aplicar ✅
- Restaurar confianza y operaciones en sitios comerciales.
- Recomendado cuando existen señales claras: redirecciones, contenidos no autorizados, alertas de Google.
- Aplicar siempre para sitios con datos de clientes, tiendas online y plataformas con login.
Errores que debes evitar / riesgos ⚠️
- Borrar sin backup: riesgo de pérdida de datos o contenido legítimo.
- Limpiar solo archivos sin revisar la base de datos ni las tareas programadas.
- No rotar credenciales tras limpieza.
- Volver a poner en producción sin monitorización ni WAF temporal.
Cómo comprobar listas negras y evitar penalizaciones SEO: paso a paso
Comprobaciones rápidas
- Google Search Console: revisar mensajes de seguridad y solicitar revisión tras limpieza.
- Google Safe Browsing: comprobar URL en informe.
- Comprobar reputación en Sucuri, Norton Safe Web y VirusTotal para identificar bloqueos a navegadores o antivirus.
Solicitud de revisión en Google
- Tras limpiar, subir fichero robots.txt correcto y sitemap actualizado, y solicitar reexaminación en Security Issues > Request Review.
- Incluir en la solicitud el resumen de acciones realizadas (copias, eliminación de IOCs, hardening) y tiempo de monitoreo.
Monitorización post-revisión
- Vigilar impresiones y clics en Search Console, y comprobación manual de SERPs para detectar redirecciones o páginas hackeadas.
Preguntas Frecuentes
¿Cuánto tiempo tarda una limpieza completa?
Depende del tamaño y complejidad: desde unas horas hasta varios días para auditoría y verificación; incidentes con pérdida de datos o persistencias pueden tardar más.
¿Es suficiente un plugin para limpiar un sitio infectado?
Un plugin ayuda en detección y mitigación, pero no siempre es suficiente. Se recomienda análisis forense, revisión de DB y logs y, si procede, restaurar desde backup verificado.
¿Se deben restaurar copias antiguas tras un hackeo?
Si existe un backup limpio y anterior al compromiso, es la opción más segura. Antes de restaurar, identificar y corregir la vulnerabilidad que causó el acceso.
¿Cómo evitar reinfecciones?
Aplicando hardening: actualizaciones, MFA, WAF, copias periódicas y monitorización de integridad con alertas.
¿Qué hacer si Google marca el sitio como inseguro?
Limpiar el sitio, corregir vulnerabilidades y luego solicitar revisión en Google Search Console con evidencia de las acciones tomadas.
¿Se deben notificar a clientes si hubo acceso a datos?
Sí, si existe evidencia de acceso a datos personales puede aplicarse obligación de notificación bajo el RGPD; consultar asesoría legal.
¿Qué herramientas gratuitas son útiles para empezar?
Wordfence (versión gratuita) para escaneo inicial, VirusTotal para URLs/archivos, y grep/ClamAV en servidor para análisis local.
Pasos siguientes
- Verificar hoy mismo que existe un backup completo y aislado (archivos + base de datos).
- Ejecutar un escaneo combinado: plugin (Wordfence/Sucuri) + análisis local (grep/ClamAV) y revisar resultados.
- Rotar credenciales administrativas y activar MFA; si hay dudas, aislar el sitio y solicitar auditoría profesional.