El malware condicional suele ocultarse comprobando referrer, cookie, dispositivo, país o primera visita. La navegación directa y los administradores pueden ver una web normal mientras el usuario de buscador llega a estafas o descargas.
Conserva una cadena reproducible y contiene el daño sin visitar repetidamente el destino.
Captura una reproducción segura
Usa navegador aislado o inspección HTTP controlada. Registra URL del resultado, hora, user agent, referrer, status y cada Location.
No entres a WordPress en ese perfil ni sigas una descarga. No publiques enlaces vivos. Prueba solo las variaciones necesarias para identificar la condición.
Guarda la respuesta con headers y un hash del cuerpo en un repositorio restringido. Si utilizas línea de comandos, desactiva la ejecución de contenido y limita redirects para no contactar indefinidamente con dominios maliciosos. La prueba debe demostrar el salto sin interactuar con la estafa.
Compara primera visita y siguientes
El malware puede poner una cookie tras el primer redirect para que el propietario no lo reproduzca. Compara perfil nuevo y sesión recurrente y registra nombres de cookies sin valores.
Prueba directo frente a referrer de búsqueda, móvil/escritorio y desconectado, cambiando una dimensión cada vez. No borres cookies o caché global antes de preservar.
Incluye un referrer sintético controlado y el URL exacto indexado. Algunas infecciones solo actúan sobre parámetros UTM o páginas antiguas. Registra una matriz de resultado por condición para poder repetirla después de reparar.
Identifica la capa
Un 301/302 puede venir de Cloudflare, servidor, .htaccess, Nginx/Plesk, PHP o WordPress. JavaScript/meta refresh aparece dentro de una respuesta 200.
Relaciona headers, logs y fuente HTML. Compara origen y proxy mediante acceso autorizado para separar CDN/DNS de WordPress. No asumas que todo redirect es ajuste de plugin.
Comprueba si el primer salto ocurre antes de llegar al origen en los logs. Si Cloudflare devuelve el 302 y Apache no ve la petición, investiga Workers/Rules; si el origen responde 200 con script, sigue PHP/base. Esta separación evita limpiar WordPress mientras la regla maliciosa sigue en CDN.
Inspecciona persistencia WordPress
Revisa plugins activos/mu, bootstrap del tema, wp-config.php, index y PHP en uploads/caché. Compara componentes con paquetes confiables.
Busca en options, widgets, posts y scripts el dominio o loader ofuscado trabajando desde snapshots. No ejecutes el payload decodificado. La fecha puede falsificarse.
Busca patrones estructurales y llamadas remotas, no solo el dominio actual, porque el atacante puede rotarlo. Revisa código que evalúa HTTP_REFERER, user agent, cookies o document.referrer. Analiza copias en un entorno sin salida de red cuando sea necesario.
Revisa servidor y cuentas
Comprueba .htaccess, Nginx/Apache, auto-prepend, cron y tareas del panel. Audita usuarios/keys SSH/SFTP y actividad del file manager.
Rota controles desde equipo limpio tras conservar evidencia. Retira herramientas públicas de archivos/base no intencionadas y revisa webs hermanas del mismo hosting.
Examina DNS y CDN
Confirma nameservers, A/AAAA/CNAME, workers y reglas de redirect. Un atacante de CDN puede filtrar referrers sin modificar WordPress.
Revisa auditoría y tokens API; revoca desconocidos y exige MFA. Restringe origen.
Comprueba reglas de transformación, Zaraz/tag managers y aplicaciones conectadas, no solo Page Rules. Conserva quién creó cada cambio y cuándo. Rota tokens amplios y sustitúyelos por permisos mínimos.
Comprueba usuarios, tokens de propiedad, acciones manuales y URLs indexadas en Search Console. Preserva identificadores antes de quitar propietarios desconocidos.
Contén sin borrar pruebas
Sirve mantenimiento estático fuera de WordPress o bloquea ruta/regla desde una capa confiable mientras se toman copias. Desactiva checkout o cuentas si existe riesgo.
No bloquees solo el dominio malicioso en JavaScript: loader y vector permanecen. Notifica a buscadores/seguridad por procesos oficiales cuando la web esté limpia.
Reconstruye y verifica rutas condicionales
Reemplaza core/plugins/temas con fuentes confiables, valida código/base, cierra entrada y rota secretos. Restaura contenido solo desde fecha evaluada.
Prueba referrer de búsqueda, directo, móvil, primera visita y retorno después de purgar caché. Monitoriza redirects y cambios de archivos/cuentas.
Solicita revisión en Search Console o servicios de navegación segura solo cuando la web esté contenida y verificada. Mantén los redirects históricos legítimos documentados para no confundirlos con recaídas.
Solicita rescate urgente si cruza DNS/CDN y hosting. Comparte cadena registrada y acceso gestionado, no logs personales, credenciales o malware públicamente.