Etiqueta: restauración WordPress

  • Restaurar funcionalidad WordPress después de limpieza de malware

    Restaurar funcionalidad WordPress después de limpieza de malware

    Restaurar funcionalidad WordPress después de limpieza de malware: guía completa

    Cuando termino una auditoría de seguridad y limpieza de malware en WordPress, el trabajo técnico apenas está en la mitad. La verdadera prueba llega después: verificar que tu sitio funciona exactamente como antes, sin errores, sin plugins que hayan quedado dañados, sin configuraciones rotas. En mi experiencia, esta fase de restauración es donde muchos administradores creen que pueden saltarse pasos, y precisamente ahí es donde los problemas reaparecen.

    Te voy a mostrar el proceso completo y metódico que utilizo para restaurar la funcionalidad total de un WordPress post-limpieza, desde la verificación de la base de datos hasta el testing de cada componente crítico.

    Por qué la restauración funcional es más importante que la limpieza técnica

    El malware no solo deixa archivos maliciosos. También modifica configuraciones, corrompe plugins, inyecta código en funciones.php, rompe hooks, cambia permisos de archivos y deja rastros de infección distribuidos por toda la estructura de tu WordPress.

    Cuando utilizo herramientas como Wordfence CLI o WP-CLI para limpiar, elimino el código malicioso, pero necesito verificar que no haya dejado cicatrices invisibles. Un malware de tipo backdoor puede haber insertado código ofuscado que solo se activa bajo condiciones específicas. Un redirector SEO pudo haber modificado el archivo .htaccess de forma que interfiera con URLs limpias. Un skimmer de tarjetas en PrestaShop quizá comprometió módulos de pago que siguen fallando aunque elimines el código malicioso.

    Paso 1: Restaurar la base de datos WordPress

    Verificación inicial de integridad

    Lo primero que hago es ejecutar un diagnóstico de la base de datos. En WordPress, accedo a través de WP-CLI:

    wp db check

    Este comando detecta corrupción en tablas. Si encuentra errores, reparo:

    wp db repair

    El malware a veces inyecta opciones maliciosas en wp_options, modifica URLs base, inserta usuarios fantasma o crea posts ocultos con contenido spam. Por eso reviso manualmente:

    • La tabla wp_users buscando cuentas administrativas desconocidas o usuarios con privilegios elevados.
    • La tabla wp_options verificando que siteurl y home coincidan con tu dominio legítimo.
    • Entradas en wp_posts con post_content que contenga código JavaScript ofuscado (típico de malware SEO).

    Limpiar opciones contaminadas

    Con frecuencia encuentro opciones inyectadas en wp_options que cargan scripts externos. Accedo a phpMyAdmin o uso WP-CLI:

    wp option list

    Busco opciones sospechosas con nombres como «extra_scripts», «footer_code», «header_inject» o valores que contengan URLs acortadas o dominios de terceros no reconocidos.

    Las elimino así:

    wp option delete nombre_opcion_sospechosa

    También reviso los hooks customizados en funciones.php. El malware los utiliza para cargar código sin dejar archivos visibles:

    grep -r «add_action|add_filter» wp-content/themes/*/functions.php

    Si encuentro llamadas a funciones desconocidas o URLs remotas, las documento y las elimino.

    Paso 2: Validar y reparar archivos del núcleo de WordPress

    Aunque el núcleo de WordPress rara vez se infecta directamente (porque es mayoritariamente de solo lectura), el malware puede haber insertado código en wp-config.php, index.php o .htaccess.

    Verificar integridad del núcleo

    Uso Wordfence CLI para un escaneo completo:

    wordfence scan –all

    También puedo usar WP-CLI para validar checksum de archivos core:

    wp core verify-checksums

    Si encuentra archivos modificados, reinstalo el núcleo sin perder datos:

    wp core download –force

    Esto descarga la versión exacta de WordPress que tienes instalada y sobrescribe archivos comprometidos, preservando wp-config.php y wp-content.

    Restaurar .htaccess limpio

    El .htaccess es un vector frecuente de infección. Los malware SEO insertan redirecciones, reglas de reescritura que te redirigen a sitios spam, o bloquean acceso a wp-admin si vienes desde IPs específicas.

    Respalda el actual y regenera:

    wp rewrite flush

    Esto reconstruye las reglas de reescritura desde cero en Settings → Permalinks. Si tienes reglas custom, añádelas después manualmente.

    Si aún ves problemas de redirección, edita .htaccess manualmente y elimina cualquier línea que no reconozcas, especialmente RewriteCond con patrones como bot|crawler|scanner.

    Paso 3: Auditar y restaurar plugins y temas

    Detectar plugins comprometidos

    Los plugins son el talón de Aquiles. El malware explota vulnerabilidades de plugins desactualizados, inyecta código en archivos de plugin, o reemplaza plugins legítimos con versiones nulled que incluyen backdoors.

    En mi proceso verifico:

    1. Integridad de archivos: comparo el checksum del plugin instalado con la versión oficial de wordpress.org. Si no coincide, el plugin está modificado.
    2. Versión y actualizaciones: cualquier plugin con versión desactualizada es sospechoso post-infección. Los actualizo aunque no haya vulnerabilidad reportada, porque el malware pudo haber estado esperando una vulnerabilidad futura.
    3. Archivos no autorizados: reviso la carpeta de cada plugin buscando archivos .php con nombres raros o ofuscados. Un plugin legítimo no tiene archivos como «a.php», «shell.php» o código eval().

    Desactivo y elimino:

    wp plugin delete nombre-plugin –allow-root

    Luego lo reinstalo desde el repositorio oficial:

    wp plugin install nombre-plugin –activate

    Restaurar tema limpio

    Los temas nulled (pirateados) son bombas de malware. Si tu sitio está comprometido y usas un tema descargado de un sitio no oficial, ese es probablemente el punto de entrada.

    Mi recomendación:

    • Cambia temporalmente a un tema oficial (Twenty Twenty-Three, por ejemplo).
    • Realiza un escaneo completo con el tema neutral activo.
    • Si todo funciona limpio, recupera tu tema original de un backup anterior a la infección, o compra la versión legítima.
    • Nunca descargues temas premium de sitios como nulled.cc, themeforest resellers o análogos. Son veneno garantizado.

    Paso 4: Reconstruir funcionalidad de formularios y transacciones

    Formularios de contacto (Contact Form 7, WPForms)

    El malware a menudo intercepta formularios desviando emails a direcciones de atacante o capturando datos de forma silenciosa. Después de limpiar:

    • Desactivo y elimino completamente el plugin de formularios.
    • Limpio la base de datos de cualquier entrada de formulario sospechosa (logs de contactos dirigidos a emails desconocidos).
    • Reinstalo el plugin de cero desde el repositorio oficial.
    • Recrío todos los formularios y compruebo que los emails se envían a direcciones legítimas.

    Pruebo con un envío de prueba a mi email y verifico que no hay redirecciones ocultas.

    Pasarelas de pago (WooCommerce, PrestaShop)

    Este es crítico. Un malware tipo skimmer (Magecart) puede haber persistido en el código de la pasarela de pago.

    Para WooCommerce:

    1. Desactivo todas las extensiones de pago.
    2. Escaneo wp-content/plugins/woocommerce/includes buscando código ofuscado o llamadas a dominios de terceros.
    3. Reinstalo WooCommerce limpio: wp plugin install woocommerce –activate
    4. Reconfigurar cada pasarela desde cero (Stripe, PayPal, etc.).
    5. Pruebo una transacción de prueba en un carrito sandbox.

    En PrestaShop, el proceso es similar pero más delicado porque los módulos de pago están en /modules. Si sospechas que un módulo de pago está comprometido:

    • Desactívalo en Back Office.
    • Elimina su carpeta completamente de /modules/.
    • Reinstala el módulo oficial desde la Marketplace de PrestaShop.

    Paso 5: Testear flujos de usuario críticos

    Checklist funcional post-limpieza

    No doy por finalizada la restauración hasta que verifico:

    • Login de usuarios: accedo como usuario normal y admin. Verifico que 2FA funciona si está activado.
    • Publicación de posts: creo un post, asigno categorías, publico, edito. Compruebo que el editor visual y código funcionan.
    • URLs y redirecciones: navego entre páginas, compruebo que las URLs limpias funcionan (si tienes estructura custom).
    • Búsqueda: busco un post antiguo, verifico que los resultados son correctos sin redirecciones.
    • Widgets y sidebars: confirmo que aparecen en frontend, sin errores JavaScript en la consola.
    • Comentarios: publico un comentario, verifico que la moderación funciona, que los emails de notificación se envían.
    • Carrito y checkout (ecommerce): añado productos, intento comprar con tarjeta de prueba, valido que no hay cambios de dominio ni redirecciones.

    Auditoría de navegador y consola

    Abro la consola de desarrollador (F12) en la página de inicio y en checkout (si aplica). Busco:

    • Errores JavaScript rojo: podrían indicar código malicioso no limpiado.
    • Llamadas a dominios externos sospechosos en la pestaña Network.
    • Scripts inyectados en el HTML que no reconozco.

    Si ves algo sospechoso, investiga su origen. A menudo el malware carga código desde un CDN comprometido o inyecta URLs en atributos data-* de elementos HTML.

    Paso 6: Fortalecer contra reinfección

    Una vez que la funcionalidad está restaurada, es momento de cerrar las puertas para que no entre de nuevo.

    Hardening fundamental

    • Desactiva edición de archivos: añade a wp-config.php define(‘DISALLOW_FILE_EDIT’, true);
    • Cambiar prefijo de tablas: si tienes acceso directo a BD, modifica de wp_ a algo como wp_xyz.
    • Proteger wp-admin: mediante .htaccess con autenticación HTTP básica o IP whitelist.
    • Limitar intentos de login: usa un plugin como Wordfence o Limit Login Attempts Reloaded para bloquear brute force.
    • Activar 2FA: fuerza autenticación de dos factores en todas las cuentas administrativas.
    • Cambiar todas las contraseñas: de WordPress, FTP, cPanel, base de datos.

    Monitoreo continuo

    No basta una limpieza de una sola vez. El malware es persistente. Instalo Wordfence en modo profesional o MalCare con escaneo automático diario, alertas en tiempo real y backups incrementales.

    Configuro notificaciones para:

    • Nuevos usuarios creados.
    • Cambios en plugins/temas.
    • Modificaciones en wp-config.php.
    • Intentos de acceso a wp-admin desde IPs no autorizadas.

    Paso 7: Validar SEO y reputación

    El malware SEO inyecta contenido spam y crea redireccionamientos que dañan tu reputación en motores de búsqueda. Después de limpiar:

    Google Search Console

    Accedo a Google Search Console y busco:

    • Reportes de seguridad: si Google seguía detectando malware, debería desaparecer en 48-72 horas post-limpieza.
    • URLs no deseadas: páginas spammadas que necesito eliminar del índice.
    • Problemas de cobertura: errores 404 o 500 que podrían indicar problemas residuales.

    Solicito una revisión de seguridad si Google había marcado el sitio como comprometido.

    Verificar backlinks tóxicos

    El malware a veces inyecta enlaces internos spam o genera backlinks desde sitios de baja calidad. Reviso con herramientas como Ahrefs o SEMrush y desapruebo enlaces claramente maliciosos a través de Google Search Console.

    Paso 8: Documentar y comunicar

    Cuando termino una restauración completa, preparo un informe para el cliente detallando:

    • Qué malware se encontró y dónde.
    • Qué cambios se realizaron en configuración, plugins y archivos.
    • Qué funcionalidad se verificó y restauró.
    • Recomendaciones de seguridad para el futuro.
    • Fecha de próximo escaneo recomendado.

    Esta transparencia no solo tranquiliza al cliente, sino que establece expectativas claras sobre el mantenimiento de seguridad continuo que necesita.

    Señales de alerta: cuándo la limpieza no fue suficiente

    Si después de restauración sigues viendo síntomas, el malware puede no haber sido completamente erradicado:

    • Redirecciones espontáneas a sitios de apuestas, farmácias o casinos.
    • Nuevos usuarios admin que aparecen solos.
    • Velocidad extremadamente lenta sin explicación (cryptominer).
    • Google sigue alertando de malware en Search Console días después de limpieza.
    • Emails spam llegando desde tu dominio a terceros (compromiso de correo o alias).

    En estos casos, necesitas una limpieza más profunda, análisis forense o consultoría especializada. Te invito a que contactes conmigo si necesitas ayuda profesional en esta etapa.

    Resumen de restauración funcional post-malware

    La restauración de WordPress después de limpieza de malware no es un único paso, sino un proceso metódico de:

    1. Verificación y reparación de base de datos.
    2. Validación de integridad del núcleo y archivos.
    3. Auditoría y reinstalación de plugins/temas.
    4. Reconstrucción de funcionalidad transaccional.
    5. Testing exhaustivo de flujos de usuario.
    6. Hardening de seguridad.
    7. Validación SEO y reputación.
    8. Documentación y monitoreo continuo.

    En mi experiencia, saltarse cualquiera de estos pasos deja puertas abiertas a reinfección o deja funcionalidad crítica rota.

    Si tu sitio ha sufrido una infección por malware y necesitas restaurar la confianza de que está completamente limpio y funcional, contacta conmigo para un análisis profesional. Realizaré una auditoría completa, te limpiaré el código malicioso y verificaré que cada función crítica está restaurada y protegida contra futuros ataques.