Escaneo de malware WordPress: herramientas y procedimientos
Cuando un cliente me contacta porque sospecha que su WordPress está comprometido, lo primero que hago es un escaneo profundo de malware. No es algo opcional: si tu sitio está infectado y no lo detectas a tiempo, los daños pueden ser devastadores. Pérdida de datos, robo de credenciales, indexación de spam en Google, caída del tráfico orgánico y pérdida de confianza de usuarios son solo algunas consecuencias.
En mi experiencia, la mayoría de los ataques a WordPress provienen de plugins desactualizados, temas nulled o contraseñas débiles en el panel de administración. El malware se instala silenciosamente y puede estar semanas sin ser detectado. Por eso te voy a mostrar exactamente cómo scanear tu sitio, qué herramientas funcionan de verdad y qué hacer si encuentras algo.
¿Por qué un escaneo de malware es imprescindible?
Antes de entrar en herramientas, quiero que entiendas por qué esto es crítico. Los atacantes no atacan WordPress al azar. Buscan activamente vulnerabilidades porque saben que hay cientos de miles de sitios WordPress sin parches de seguridad.
Según el equipo de seguridad de WordPress.org, mantener tu instalación actualizada es la defensa más importante. Pero si ya estás comprometido, necesitas detectarlo rápido.
Los tipos de malware que más veo en WordPress son:
- Backdoors: archivos ocultos que permiten al atacante acceder sin credenciales reales
- Webshells: scripts PHP que funcionan como puerta trasera remota
- Redirectores: código que envía a visitantes a sitios maliciosos sin tu control
- Cryptominers: scripts que usan CPU del servidor para minar criptomonedas
- Skimmers de tarjetas: malware que captura datos de pagos (muy grave en tiendas online)
- Inyección de spam SEO: contenido malicioso inyectado para posicionar sitios de terceros
Herramientas principales para escanear malware en WordPress
No todas las herramientas detectan lo mismo. Lo que recomiendo siempre es usar varias en combinación porque un malware sofisticado puede eludir un solo scanner.
1. Wordfence (la mejor opción plugin)
Wordfence es mi herramienta de referencia. Tiene una versión gratuita que escanea todo el servidor, compara archivos de WordPress contra las versiones originales, detecta malware en themes y plugins, e identifica vulnerabilidades conocidas.
Cómo usarlo:
- Instala el plugin desde el repositorio oficial de WordPress
- Ve a Wordfence > Scan
- Haz clic en «Start scan»
- Espera a que termine (puede tardar 30-60 minutos según el tamaño del sitio)
- Revisa los resultados en la pestaña «Threat report»
Lo que me gusta de Wordfence es que no solo busca malware, sino también archivos modificados. Si un plugin legítimo fue parchado con código malicioso, Wordfence lo detecta comparando el hash MD5 del archivo con el original en los servidores de WordPress.org.
2. MalCare (escaneo en la nube)
MalCare escanea tu sitio desde servidores en la nube, lo que evita sobrecargar tu propio servidor. Es especialmente útil si tu hosting es lento o tienes poco margen de recursos.
Ventajas:
- Detecta malware oculto en bases de datos
- Identifica vulnerabilidades en plugins y temas
- Tiene inteligencia artificial para detectar patrones de ataque nuevos
- Versión gratuita funcional para sitios pequeños
En un caso real, encontré un backdoor que Wordfence no había detectado porque estaba ofuscado en la base de datos. MalCare lo sacó a la luz en minutos.
3. Sucuri SiteCheck (escaneo online gratuito)
Sucuri SiteCheck es completamente gratuito y no requiere instalar nada. Solo necesitas acceder a su web, escribir tu URL y esperar. Es perfecto como primer chequeo rápido.
Te muestra:
- Malware detectado
- Blacklist status (si Google o Sucuri lo han marcado como malicioso)
- Problemas de seguridad general
- Vulnerabilidades conocidas
4. Google Search Console (control de Google)
Google indexa malware constantemente. Si tu sitio tiene código malicioso, muy probablemente lo haya detectado. En Google Search Console, ve a «Seguridad y acciones manuales» para ver si Google ha marcado tu dominio.
Si aparece «Malware detectado», tienes un problema real que requiere acción inmediata.
5. Análisis manual con WP-CLI
Para los que se sienten cómodos con línea de comandos, WP-CLI es brutal en eficiencia:
Listar plugins activos con versiones:
- wp plugin list
Verificar integridad de archivos de WordPress core:
- wp core verify-checksums
Buscar archivos sospechosos modificados recientemente:
- find /ruta/a/wordpress -type f -name «*.php» -mtime -7
Este comando te muestra todos los archivos PHP modificados en los últimos 7 días. Si encontras algo fuera de wp-content/uploads o temas/plugins legítimos, es sospechoso.
6. VirusTotal (análisis de archivos individuales)
VirusTotal te permite subir archivos PHP sospechosos y escanearlos contra 90+ antivirus. Es especialmente útil cuando encuentras un archivo raro y no sabes si es legítimo.
Procedimiento completo de escaneo
Aquí está el protocolo que sigo yo cuando analizo un sitio potencialmente comprometido:
Paso 1: Escaneo inicial rápido
Primero, accedo a Sucuri SiteCheck con la URL del cliente. Tarda 2-3 minutos y te da un primer veredicto. Si sale «malware detectado» aquí, ya sabemos que es grave.
Paso 2: Escaneo con Wordfence
Instalo Wordfence si no lo tiene, y lanzo un escaneo completo. Mientras se ejecuta (30-60 minutos), paso al siguiente punto.
Paso 3: Revisión de Google Search Console
Compruebo si Google ha detectado malware. Si tiene alertas de «Sitio comprometido» o «Malware», la situación es más delicada.
Paso 4: Análisis de plugins y temas
Busco:
- Plugins desactualizados: cualquier versión antigua que tenga CVE publicado
- Temas nulled: si el cliente dice «compré el tema en una tienda rara», probablemente sea falsificado
- Plugins de origen dudoso: algunos «security» plugins maliciosos simulan ser legítimos
- Plugins inactivos años atrás: son vectores de ataque si nunca se actualizaron
Paso 5: Revisión manual de archivos core
Con WP-CLI, corro «wp core verify-checksums». Si sale algo modificado en wp-load.php, wp-settings.php o wp-config.php, el sitio fue parchado.
Paso 6: Búsqueda de backdoors
Busco en directorios comunes donde los atacantes dejan backdoors:
- /wp-content/uploads/ (el lugar más común)
- /wp-content/plugins/ (especialmente plugins desactivados)
- Raíz del sitio (archivos .php solitarios)
- /wp-admin/ (si tiene permisos, pueden añadir ahí)
Un backdoor típico es un archivo como «update.php», «config.php» o algo con nombre genérico. Cuando lo encuentro, corro VirusTotal para confirmar.
Paso 7: Análisis de base de datos
Conecto vía phpMyAdmin y busco:
- Posts editados con código malicioso: inyección de iframes o scripts
- Usuarios extra: cuentas de administrador que el cliente no reconoce
- Opciones modificadas: valores raros en wp_options que podrían ser persistencia
Un truco: busco en la tabla wp_posts donde post_content contiene «iframe» o «<script" sin ser del cliente.
Paso 8: Logs del servidor
Reviso access.log y error.log de Apache/Nginx. Busco:
- POST requests a wp-login.php desde IPs raras
- Accesos a archivos que no existen (típico de intentos de RFI/LFI)
- Mensajes de error SQL (indicio de inyección)
Qué hacer si encuentras malware
Si tu escaneo da positivo, aquí es donde muchos clientes panic. Pero hay un plan claro:
1. Aislamiento inmediato
No esperes: si está en una blacklist de Google, necesitas sacarlo rápido. Algunas opciones:
- Desactiva todos los plugins (excepto Wordfence)
- Cambia el tema a uno stock de WordPress
- Desconecta usuarios no autorizados en wp-admin
El objetivo es minimizar el daño mientras trabajas en la limpieza.
2. Backup seguro (si lo tienes)
Descarga un backup anterior a la infección si lo guardaste. Cuidado: si el backup es infectado también, no sirve. Por eso recomiendo backups automáticos diarios, no semanales.
3. Limpieza manual vs. reinstalación
Aquí tengo dos opciones:
Limpieza manual: si el malware es superficial (un plugin infectado, unos cuantos archivos backdoor), puedo eliminarlo manualmente, restablecer permisos y cambiar todas las contraseñas.
Reinstalación completa: si el malware está profundamente enraizado (modificaciones en core, múltiples backdoors, inyección en BD), reinstalo WordPress desde cero, subo contenido limpio del backup, y reconfiguro todo.
En mi experiencia, la reinstalación es más segura y custa menos tiempo que una limpieza manual exhaustiva.
4. Cambio de credenciales
Cambio todo:
- Contraseña de admin de WordPress
- Credenciales FTP/SFTP
- Contraseña de la base de datos
- Credenciales de email de administrador
- Keys y salts de WordPress (en wp-config.php)
5. Reportar a Google
En Google Search Console, ve a «Seguridad y acciones manuales» y solicita una revisión de seguridad. Explica que ya está limpio. Google tarda 1-7 días en revisar.
Prevención: hardening después del ataque
Una vez limpios, implemento medidas para que no vuelva a pasar:
Cambio de prefijo de tablas
La mayoría de ataques SQL apuntan a tablas con nombre «wp_». Lo cambio en wp-config.php y la BD:
- $table_prefix = ‘mf_’;
Deshabilitar edición de archivos
Añado a wp-config.php:
- define(‘DISALLOW_FILE_EDIT’, true);
Así, aunque un atacante acceda al panel de admin, no puede editar archivos PHP directamente.
Proteger wp-config.php
En .htaccess:
- <files wp-config.php> deny from all </files>
Limitar intentos de login
Uso Wordfence Firewall para bloquear tras 5 intentos fallidos en 5 minutos. Mata los ataques de fuerza bruta.
Dos factores de autenticación (2FA)
Instalo Two-Factor Authentication for WordPress. Aunque hackeen la contraseña, sin el móvil no entran.
Auditoría de actividad
Wordfence mantiene logs de quién accede y cuándo. Lo reviso regularmente en «Tools > Activity Log».
Automatizar escaneos
Configuro escaneos semanales automáticos en Wordfence. Si encuentra algo, me avisa por email.
Errores comunes que veo
Después de años analizando WordPress infectados, estos son los fallos más frecuentes:
- No actualizar plugins: el 80% de los ataques explotan vulnerabilidades conocidas y parchadas
- Usar temas nulled: descargar temas «gratis» de sitios de dudosa reputación es suicida
- Contraseñas débiles: «123456» o «admin» como contraseña de panel invita ataques brute force
- No tener backups: si no tienes backup limpio, no puedes recuperarte
- Ignorar alertas de Google: cuando Google te avisa, tienes días para actuar, no semanas
- Confiar en un solo scanner: usar solo Wordfence puede dejar malware sin detectar
Resumen: tu checklist de escaneo
Si sospechas malware, haz esto hoy:
- Accede a Sucuri SiteCheck y scanea tu URL
- Revisa Google Search Console para alertas de malware
- Instala Wordfence si no lo tienes y lanza escaneo completo
- Revisa plugins desactualizados y desactiva los dudosos
- Busca archivos PHP raros en wp-content/uploads/
- Si encuentras algo, contacta con un profesional
No intentes limpiar malware sofisticado tú solo si no tienes experiencia. Un mal movimiento puede borrar contenido legítimo o dejar puertas traseras. Lo que recomiendo siempre es trabajar con especialistas en seguridad WordPress.
Si tu sitio está comprometido o tienes dudas después de un escaneo, contacta conmigo en ManuelFolgar.com. Hago análisis profundos de seguridad y limpiezas garantizadas para WordPress. Tu sitio es tu negocio, y merece estar protegido.