Encontrarse instalaciones de WordPress hackeadas o infectadas es algo común, mucho más de lo que crees. WordPress es el CMS más utilizado del mundo, tal y como explico en mi informe de cuota de mercado. Precisamente por esto, WordPress es el CMS más atacado del mercado y en el que más casos de infección se ven.
En Raiola Networks estamos especializados en WordPress y desde hace tiempo tenemos un procedimiento “perfecto” para solucionar de raíz infecciones y hackeos, siempre que sigamos todos los pasos al pie de la letra. Si no quieres seguir leyendo y necesitas un servicio de desinfeccion profesional de WordPress, contacta conmigo desde AQUÍ.
Existen dos tipos de infecciones en WordPress:
- Infecciones en los archivos, normalmente en el theme o en los plugins. Existen infecciones de archivos que se propagan y otras que no se propagan.
- Infecciones en la DB, que ocurren cuando directamente se inyecta malware en la DB de WordPress.
De estos dos tipos de infección, las primeras son mucho más fáciles de solucionar que las segundas. De hecho, para las segundas no tengo ninguna forma exacta o procedimiento “paso a paso” para desinfectar el sitio web, ya que depende mucho de la infección y del malware.
En cualquier caso, cuando nos encontramos un WordPress infectado podemos darnos cuenta por diferentes métodos. Lo más normal es abrir el sitio web en el navegador y encontrar un mensaje como este o similar (depende del navegador web):
En otros casos, el problema nos lo encontramos en las SERP, es decir, en los resultados de búsqueda de Google, ya que nos aparecerán indexadas cosas similares a estas:
Existen un tercer caso y que es más complicado de detectar desde el punto de vista del administrador del sitio web. En algunos casos el malware lo que hace es abrir popups solo en algunas ocasiones, pero no siempre. Por eso, puede darse el caso que un porcentaje de visitantes vea el popup de malware, pero el administrador del sitio web no.
En cualquier caso la mayoría de la gente, cuando se encuentra cosas como esta, automáticamente entra en pánico.
Sin liarnos más, vamos a empezar a hablar de como detectar y solucionar el problema que podemos tener con un WordPress hackeado.
¿Quieres
recibir mis articulos?
No te pierdas todos mis trucos para WordPress, CMS, Marketing Digital y WPO.
Paso 1 – ¿Cómo detectar malware en WordPress?
Bueno, vamos a partir de la base de que ya sabemos que nos han infectado al ver cualquiera de los indicios de los que hemos hablado al principio del post.
¿Qué hacemos? ¿Cómo procedemos?
Pues bien, si sabemos que estamos infectados pero nuestro hosting no ha detectado nada ni nos ha avisado, debemos ver el alcance del problema y el tipo de malware.
Si nuestro proveedor de hosting no ha detectado nada puede ser por muchas razones. Si tenemos un servidor dedicado o VPS propio, puede que no tengamos antimalware. Si lo tenemos, puede que el malware sea demasiado nuevo o que por alguna razón todavía no esté en la base de datos de firmas.
Por otro lado, normalmente los proveedores de hosting solo notifican al cliente de forma “invasiva” cuando la cuenta de hosting o servidor está dando problemas por culpa del malware que se ha alojado en él (algo que es bastante común, desde ataques hasta minado de bitcoins).
Vamos a empezar usando un par de plugins para detectar el malware en nuestro WordPress. Yo normalmente recomiendo utilizarlos todos para ir descartando por rondas de detección.
Estos antimalware para WordPress son como los antivirus para Windows, tienen motor de análisis y cuarentena para los archivos infectados.
Anti-Malware Security and Brute-Force Firewall
Empiezo por este plugin porque para mí es de los más potentes que existen para detectar malware específico para WordPress. Siempre utilizo este plugin como avanzadilla, es decir, es el primer plugin que instalo para analizar un WordPress hackeado, ya que tiene buena tasa de detección.
Anti-Malware Security and Brute-Force Firewall es completamente gratuito y podemos descargarlo desde el repositorio oficial de plugins de WordPress en la siguiente URL: https://es.wordpress.org/plugins/gotmls/
Después de instalar Anti-Malware Security and Brute-Force Firewall en WordPress, vamos a registrar la instalación y a actualizar la DB de firmas de detección.
En la sección marcada en la imagen anterior con el cuadro rojo podemos registrar la instalación y actualizar la DB de firmas para una corrección eficiente.
Ahora que lo tenemos todo actualizado, en primer lugar vaciamos el campo llamado “Omitir archivos con las siguientes extensiones” para que se busque malware en todos los archivos de la instalación. Después de esto, podemos ejecutar el análisis pulsando el botón “Ejecutar escaneo completo” que está en la siguiente imagen:
A continuación, empezará el análisis de malware en el WordPress hackeado. Puede llevarle más o menos tiempo, dependiendo de la potencia disponible en el hosting y del tamaño de la instalación que se va a analizar. El malware detectado se va a listar en la interfaz de análisis del plugin:
Cuando finalice el análisis, si dejamos marcadas las casillas de verificación para el malware, podremos eliminar los archivos infectados al pulsar el botón “Arreglar Archivos SELECCIONADOS automáticamente ahora”. También podemos borrar/desinfectar estos archivos manualmente por nuestra cuenta.
Te ha parecido simple, ¿verdad? Pues Anti-Malware Security and Brute-Force Firewall es de los plugins de análisis de malware para WordPress hackeados con mejor base de datos para detección.
Además, el plugin tiene algunas funcionalidades extra en formato tweak que podemos activar:
Algunas funciones solo están disponibles en la versión premium del plugin, aunque para realizar un análisis basta con la versión gratuita. Lo que es cierto es que hay una funcionalidad de análisis de los archivos del núcleo de WordPress que se echa mucho de menos en la versión gratuita.
Si quieres ver de forma mas dinámica la configuración y el uso de Anti-Malware Security and Brute-Force Protection, puedes ver el siguiente vídeo que he grabado para ti:
Ninja Scanner para WordPress
Es otro de mis plugins de análisis de WordPress hackeados y, aunque no tiene mucha configuración, es de los sistemas de análisis más potentes. Lo más importante es que, a diferencia del plugin anterior, la versión gratuita de Ninja Scanner sí permite analizar el núcleo de la instalación de WordPress.
Ninja Scanner es gratuito y podemos descargarlo desde el repositorio oficial de plugins de Wordpress a través de la siguiente URL: https://wordpress.org/plugins/ninjascanner/
Después de instalar el plugin y activarlo, tendremos una nueva sección en el dashboard:
Vamos a la pestaña “Settings” para tocar algunas cosillas en la configuración. Los dos campos rodeados debes dejarlos así:
Volvemos a la pestaña “Summary” y pulsamos el botón “Scan your blog” para que comience el análisis:
Cuando finalice, veremos un informe completo de lo que se ha encontrado con todo detalle:
A veces en los informes hay algunos falsos positivos, por lo que es necesario tener conocimientos intermedios sobre WordPress para distinguir lo que es un positivo auténtico de un falso positivo.
Al igual que en el plugin anterior, podemos gestionar el malware detectado mediante el plugin o manualmente, depende de los conocimientos que tengamos y de lo que nos queramos molestar.
Y antes de que se me olvide: Ninja Scanner tiene un hermano mayor llamado Ninja Firewall, que es uno de los mejores WAF que conozco en formato plugin para WordPress.
El plugin Ninja Scanner es simple, pero tiene bastantes opciones. Si quieres más información acerca del plugin, puedes ver el siguiente vídeo:
WordFence Security para WordPress
Lo he dejado para el final, pero WordFence Security como plugin de análisis de malware para WordPress hackeados es de los que más me fío.
WordFence Security tiene un buen motor de análisis de malware, aunque como suite de seguridad para WordPress consume bastantes recursos y puede “lastrar” el rendimiento de cualquier sitio web.
Aunque tiene muchas más funcionalidades incluidas como, por ejemplo, un buen WAF (Web Application Firewall) y tweaking para mejorar la seguridad, en este caso solo vamos a hablar del análisis de WordFence.
Hace algún tiempo yo usaba WordFence Security como suite de seguridad para WordPress, pero en las últimas versiones se han cambiado algunos detalles en la configuración y ahora WordFence Security consume demasiados recursos en el hosting sin posibilidad de poder solucionarlo.
Muchas funcionalidades de WordFence Security son de la versión premium. Esas no las podremos utilizar, pero existen muchas funciones gratuitas que podremos utilizar para analizar el malware en nuestro WordPress.
Ahora viene el problema: desde hace algunas versiones, en la versión gratuita no podemos elegir cuándo se realiza el análisis. Tendremos que esperar a que el plugin lo haga automáticamente:
¿Cuál es la razón de esto? Supongo que, al ser un análisis en la nube, utilizará potencia y recursos cuando menos exigencia exista para los usuarios gratuitos del plugin. De esta forma, se optimizan recursos para los usuarios premium que tienen disponible el análisis manual bajo demanda.
Es importante activar WordFence para analizar y desactivarlo cuando haya terminado, ya que consume bastantes recursos.
Puedes encontrar WordFence Security de forma gratuita en el repositorio de plugins de WordPress: https://es.wordpress.org/plugins/wordfence/
Si quieres ver un tutorial acerca de WordFence Security para WordPress, puedes hacerlo en el siguiente vídeo:
WPScan para WordPress
Lo dejo para el final porque es uno de los plugins más potentes, ya que utiliza una base de datos especializada en vulnerabilidades para WordPress llamada WPVulnDB (https://wpvulndb.com/) aunque no de,tecta directamente malware sino vulnerabilidades.
El plugin en cuestión es muy simple. Tiene un motor de escaneo de componentes y utiliza la base de datos del servicio online. De esta forma se mantiene siempre actualizado y, para mayor eficiencia, la base de datos está especializada en vulnerabilidades para WordPress.
Lo primero que debemos hacer al instalar el plugin, que está disponible en el repositorio de WordPress, es conseguir una clave gratuita de API para utilizar el servicio de WPVulnDB:
Las cuentas gratuitas tienen limitado el uso del API a 50 peticiones al día, pero te servirá para analizar tu web.
Como puedes ver a continuación, una vez introducida la API la interfaz del plugin WPScan es simple. Solo nos lista los themes y plugins instalados en nuestro WordPress y detecta sus versiones, de forma que puede saber si están afectadas por algún tipo de vulnerabilidad conocida:
La idea es mantenerlo instalado y, cada cierto tiempo, comprobar si existe algún plugin en el que ha aparecido algún tipo de vulnerabilidad que puedan usar los hackers para infectar con malware nuestro sitio web.
Ten en cuenta que cada ELEMENTO comprobado es una petición al API, por lo que normalmente solo podrás ejecutar un check al día con la cuenta gratuita.
Puedes encontrar el plugin WPScan de forma gratuita en el repositorio de plugins: https://es.wordpress.org/plugins/wpscan/
Paso 2 – Sustituir y actualizar archivos
Después de detectar malware en WordPress, si finalmente no es un falso positivo y nuestro WordPress está infectado con malware, debemos empezar con la desinfección.
La primera medida es sustituir todos los archivos originales por nuevos archivos descargados directamente desde la fuente original. Sin embargo, esta medida incluye varios pasos que deben ser ejecutados y tenidos en cuenta por separado.
Lo primero que debemos tener en cuenta es que puede haber más archivos infectados que los detectados por los plugins de análisis. Por eso, es necesario sustituir TODOS los archivos de plugins, theme y WordPress por los originales descargados de fuentes originales.
Por otro lado, debemos tener en cuenta que puede haber plugins que no se hayan actualizado en meses, siendo interrumpido su desarrollo.
¿Qué quiere decir esto? Pues que, aunque tengamos la última versión de un plugin, puede no estar actualizado dado que su desarrollo está discontinuado.
Pues con esta información vamos a trabajar.
Al mismo tiempo que sustituimos los archivos por los nuevos, también vamos a revisar que todos los plugins y el theme sigan en desarrollo.
¿Y qué ocurre si tenemos código personalizado? Pues que tendremos que realizar las modificaciones otra vez. Es preferible actualizar de nuevo los archivos con el código, que jugarnos la infección de nuevo.
El objetivo de la sustitución COMPLETA de archivos es que no quede NI UN SOLO archivo de los infectados. Por lo tanto, debemos ser tajantes para garantizar que la infección no sigue. Lo ideal es BORRAR TODOS LOS ARCHIVOS y subir la carpeta con los archivos nuevos por FTP.
A la afirmación anterior, por si han quedado dudas, voy a añadir lo siguiente:
Es muy raro encontrarse infecciones de WordPress en base de datos, salvo inyecciones, pero apenas ocurre en el 10% de los casos de infección (al menos según mi experiencia).
Vamos a empezar con el proceso, pero teniendo muy en cuenta las dos afirmaciones anteriores.
Normalmente, para hacer este proceso creamos una carpeta y metemos dentro los archivos de WordPress recién descargados, última versión:
Ahora vamos a meter en la carpeta PLUGINS las carpetas de los plugins que ya teníamos previamente instalados, pero las últimas versiones descargadas directamente desde las fuentes oficiales:
Y lo siguiente será meter el theme activo, también descargado desde fuente oficial y actualizado.
Aquí debes tener cuidado, ya que en muchos casos si el theme lleva tiempo sin actualizar o si tenemos cambios importantes sin tema hijo, directamente en código, puede que nos cueste hacer “limpieza” pero es extremadamente importante ser tajante con este tema.
Lo normal en WordPress es SOLO usar un theme. Para evitar problemas tienes que borrar el resto de themes y plantillas que no están activas, pero están instaladas. De lo contrario, pueden infectarte por una plantilla desactivada sin actualizar.
¿Y qué hacemos con algún archivo que pueda quedar suelto que no sea de ningún plugin, theme o de WordPress?
Pues, como has podido ver, la idea es borrar todos los archivos y volver a meterlos originales, por lo que NINGÚN archivo puede quedar sin cambiar o borrar.
Cuando subamos todo, solo nos queda comprobar que todo funciona correctamente, ya que al actualizar versiones de plugins y theme, (o al cambiar cosas en código personalizado) puede llegar a darnos algún tipo de error leve que debemos solucionar.
Sobra decir que todas estas acciones es importante hacerlas con una copia de seguridad preparada por si la necesitamos.
Paso 3 – Volver a analizar WordPress
Cuando hayamos completado el paso anterior, vamos a volver a analizar la instalación con los plugins mencionados en el paso 1 con el objetivo de garantizar que está todo limpio.
También podemos pedirle a nuestro proveedor de hosting o ejecutar en nuestro servidor VPS o dedicado un análisis a nivel servidor con una herramienta como Maldet.
La idea es poder “certificar” que ningún archivo queda infectado y que no hay nada “raro” inyectado en la base de datos de WordPress, aunque normalmente los elementos inyectados en la DB de WordPress suelen ser enlaces de spam o scripts JS que ejecutan popups.
Otra cosa que podemos hacer para garantizar la desinfección es utilizar un antivirus. Estas son algunas opciones interesantes donde puedes meter la URL de tu web para comprobar si hay algo “raro”:
- Virus Total: https://www.virustotal.com/gui/home/url
- DrWeb: https://vms.drweb-av.es/online/?lng=es
- Google Safe Browsing: https://transparencyreport.google.com/safe-browsing/search
- WPSec: https://wpsec.com/
Es muy raro que si aplicamos todo esto se nos escape algo, pero pueden existir casos donde el JS inyectado sea inofensivo y solo se convierta en “ofensivo” en ciertos momentos al detectar cierto user-agent o similar. En esos casos, el malware es más difícil de detectar a simple vista.
Paso 4 – Mejorar la seguridad de WordPress
En este post no voy a hablar sobre cómo mejorar la seguridad de WordPress o cómo securizar WordPress.
¿Por qué? Pues porque de esto ya he hablado largo y tendido en este post que publicado hace algún tiempo: https://alvarofontela.com/seguridad-wordpress/
Aunque sí hay algo que voy a decir aquí: para mí, la seguridad de WordPress se basa en la prevención y en la lógica. Con estos dos conceptos, vas a poder mantener tu WordPress infranqueable si sigues mis instrucciones al pie de la letra y sin saltarte ninguna.
Si tienes alguna duda sobre cómo mejorar la seguridad de tu WordPress y no encuentras la respuesta en el tutorial enlazado más arriba, siempre puedes contactar conmigo para dudas específicas e intentaré contestarte.
Otras herramientas para desinfectar WordPress
Existen otras herramientas que te pueden ayudar a detectar y desinfectar malware en tu instalación de WordPress. Sin embargo, la mayoría requieren conocimientos de sysadmin o al menos de consola Linux, algo que (por experiencia personal) muy pocos webmasters tienen.
Como decía antes, una de las más conocidas es Maldet, también llamada Linux Malware Detect, que podemos encontrar aquí: https://www.rfxn.com/projects/linux-malware-detect/
Maldet puede utilizar el motor de análisis de ClamAV (muy conocido como antivirus opensource), pero con firmas especializadas en malware web, aunque sin especializarse en WordPress.
Si quieres un manual sobre cómo utilizar Maldet en tu Linux, puedes consultar esta guía que publiqué hace algún tiempo en el blog de Raiola Networks: https://raiolanetworks.es/blog/maldet-antivirus-y-antimalware-para-servidores-linux-guia-completa/
Por otro lado, en Raiola Networks utilizamos CXS (ConfigServer eXploit Scanner) con firmas propias para detectar malware y la verdad es que estamos muy contentos con el resultado.
Nuestros clientes no tienen que hacer nada. Automáticamente, nuestro sistema CXS modificado analiza el malware monitorizando los cambios en los archivos y al mismo tiempo usando las firmas personalizadas y actualizadas para detectar malware.
Si crees que tu web o cuenta de hosting puede estar comprometida, puedes hablar con el soporte de Raiola Networks si estás alojado con nosotros para analizarla y quedarte tranquilo.
Existen muchas otras opciones a nivel de servidor para detectar y desinfectar malware en un servidor o hosting. Algunos proveedores de hosting utilizan Imunify360 (de los creadores de CloudLinux) y otros prefieren utilizar BitNinja.
Evidentemente, si tienes un servidor dedicado o servidor VPS administrado por ti o por un freelance que trabaja para ti, puedes tener también cualquiera de estos sistemas de análisis, detección y desinfección. Simplemente debes pagar las licencias para el software o para las firmas de detección, depende del caso.
20 Responses
Hola Álvaro.
Gran artículo, la verdad que a mí me encanta: Anti-Malware Security & Brute-Force Firewall.
Son 2 herramientas muy potentes que te pueden proteger y evitar un quebradero de cabeza.
Maldet lo he utilizado en otros proyectos y estoy de acuerdo que Wordpress no es su punto fuerte pero es muy versatil.
Un artículo útil pero conviene recordar que muchas veces podemos solventar los ataques con un buen mantenimiento web.
Un abrazo, Álvaro!!
Hola Roberto, la verdad es que a mi Ninja Scanner me ha sorprendido para bien últimamente, incluso mas que Anti-Malware Security & Brute-Force Firewallm aunque Ninja Scanner tenga peor motor de análisis.
Maldet es útil para “ver todo desde fuera”, aunque soy consciente de que existen herramientas mas potentes para hacer esto…
Evidentemente, se puede mantener lejos la infección simplemente con un buen mantenimiento del sitio web…
Buenas tardes, Álvaro.
Un gran post, como siempre. Felicidades.
Voy a instalar uno para prevenir amenazas.
Saludos cordiales.
Buenas Juan, tampoco es cuestión de instalarlos y mantenerlos activos siempre, pero si que puedes analizar de vez en cuando 🙂
Hola, Álvaro.
Muy útil tu post.
Como plugin adicional a los indicados en WordPress estoy probando https://wordpress.org/plugins/wp-malware-removal/ (Malcure).
También en Linux ISPRotect (de pago) https://ispprotect.com/ suele localizar bastante malware con código ofuscado.
Puedes reportarle muestras de malware para que lo revisen y añadan en las actualizaciones.
Se puede instalar en servidor Linux y añadir un chequeo automático a sitios.
Con WordPress te indica si tiene la última versión y también las versiones de plugins. También con Joomla, Prestashop, etc.
Un saludo.
Hola Jose, te cuento…
Malcure lo he probado, pero la versión gratuita es “postureo”, ya que solo busca hex y patrones con la palabra “hacked”, no he probado la versión de pago, pero según hemos podido ver en Raiola, se conecta a una API, por lo que intuyo que no es postureo como la gratuita.
Sobre ISP Protect, no la conocía, voy a probarla 🙂
Un saludo y gracias por leerme.
Buenas Álvaro,
Lo primero felicitarte por el post, muy bien explicado y dando varias alternativas para analizar todo lo mejor posible nuestras webs, lo cual es genial.
Lo segundo, ¿has probado (ISP Protect https://ispprotect.com/)?, a mí, después de probrar gran cantidad de alternativas, fue la mejor cuando se infecto mi página (https://www.epae.es/).
Un saludo y gracias por el artículo.
Hola Manu, la verdad es que no he probado aun ISPProtect, lo haré en breves!
Hola Alvaro, excelente artículo como siempre.
Te consulto algo que pasa en uno de mis clientes, se generan usuarios de WP y no logro detectar si es un malware ya que en todos los escaneos me da que está todo bien. Sabes algo de esto ?
Saludos
Hola Guillermo, no es la primera vez que lo veo, no utilizaras Avada por casualidad?
Hola Alvaro, tengo un par de preguntas, en un whm (Sin CloudLinux) donde un sitio en un cpanel se ha infectado. ¿Es posible que los otros cpanel(y sus webs) de otros usuarios también se infecten?
Y otra,¿ Como saber que proceso o archivo esta creando otros archivos?
Hola Jose, pues en ambos casos la respuesta es “depende”.
¿Se podrian infectar cuentas separadas dentro de cPanel? Pues depende como este montado, pero sin CageFS y dependiendo de como se ejecute la vulnerabilidad, si, seria posible.
Lo de ver que esta creando archivos, eso se puede ver en los logs, aunque dependiendo del tipo de archivo y donde se creen, puede salir en un log o en otro.
Hola Alvaro!! Y si el wordpress está hackeado al punto de no poder ingresar al escritorio. Cómo procederías?
Hola Leandro, para realizar un proceso de desinfeccion no necesitas acceder al Dashboard de WP, simplemente puedes empezar descargándote los archivos a tu ordenador para comenzar el proceso.
Álvaro, cordial saludo desde estas lejanas tierras del Putumayo, en Colombia…
Gracias por el artículo, tenía problemas con un sitio web y el único de los tres plugins de búsqueda de Malware que me funcionó fue WordFence…
Ya identifiqué los archivos que estaban haciendo un redireccionamiento a sitios web de publicidad, porno, etc.. dependiendo del usuario que abriera mi web.
Gracias.. desde hoy comienzo a seguirte
Hola Luis, me alegro de que te sirviera 😉
Buenas,
Buen post. Cuando indicas que hay que borrar todos los archivos yo indicaría que no se borre la carpeta “wp-content/uploads”. Y anotad los valores de las variables “wp-config.php” para luego anotarlas en el nuevo “wp-config.php” renombrado del original “wp-config-sample.php”.
Después por último recomendaría el cambio de claves con la BBDD y que está almacenado en wp-config.php al igual que las claves únicas de autenticación, que se pueden regenerar en:
https://api.wordpress.org/secret-key/1.1/salt/
Un saludo.
Gracias por tu aportación Antonio!
Hola buen dia! Alvaro Genial tu aporte! me gusto mucho, pues te comento que llegue aqui con el problema de los resultados de busqueda en Google, me aparecen paginas Chinas dentro del sitio, yo he eliminado todo el wordpress del servidor y lo reinstale, pero el problema en google sigue, alguna recomendación?
Revisar Google Search Console para comprobar si la infección sale allí. Si aparece en Google Search Console, hay que solicitar la validación y esperar un tiempo indefinido.