Detectando Spam y Malware en WordPress
El éxito de WordPress como CMS ha hecho que una gran cantidad de hackers y spammers intenten explotar vulnerabilidades para obtener un beneficio.
Además de matener los sitios actualizados con la última versión de WordPress, así como los plugins y abandonar aquellos que no tengan actualizaciones recientes (ejemplo cforms), es buena practica monitorear como ven a nuestros sitios los buscadores y herramientas anti spam.
La herramienta fundamental es Webmaster Tools de Google y su Search Console. Una vez agregado y verificado el sitio, podemos acceder a la vista que tiene el motor de Google de nuestro sitio.
Es muy importante utilizar esta vista ya que el malware utiliza técnicas de detección de navegador, cookies, etc para no mostrarse cuando accedemos desde una PC común. Deberíamos modificar el pedido de la página de los valores por defecto de los navegadores para ver lo que realmente sucede.
Una buena herramienta adicional para detectar malware es la siguiente:
https://sitecheck.sucuri.net/
Sigmos con Webmaster Tools. Accedemos a Recursos bloqueados para ver que cosas ha detectado el motor de Google como peligroso y lo ha bloqueado. Existes distintos niveles de malware y spam, algunos son programas que intentan infectar los equipos, otros simplemente realizan spam en la misma página para atraer clics o abren iframes para conseguir visitas fantasma a otros sitios.
En muchos casos inspeccionamos el codigo fuente y no encontramos nada raro, tenemos que acceder como Google desde la Consola de Busqueda:
Al ver el resultado del pedido podemos ver el código fuente y detectar el problema:
A partir de aquí debemos desactivar todos los plugins de WordPress y ver si el iframe desaparece. Si desapareció quiere decir que un plugin está infectado, iremos activando uno a uno y haciendo los pedidos de la misma pagina desde la Consola de Google para ver cual es el culpable.
Si al desactivar todos los plugins sigue apareciendo, debemos proceder a cambiar de theme para ver si el mismo esta infectado o bien analizar la base de datos para ver si hay algun post o adjunto que fue inyectado.
Podemos usar una consulta como la siguiente para buscar el iframe inyectado o el código en cuestión:
SELECT * FROM wp_posts WHERE post_content LIKE ‘%iframe%’;
En cada caso debemos ajustar la consulta para lo que estamos buscando.
Si tenemos acceso SSH al servidor podemos usar algunos comandos para detectar archivos con contenido sospechoso:
find . -type f -name ‘*.php’ | xargs grep -l «eval *(» –color
find . -type f -name ‘*.php’ | xargs grep -l «base64_decode *(» –color
find . -type f -name ‘*.php’ | xargs grep -l «gzinflate *(» –color
Si nos ubicamos en httpdocs del sitio en cuestión, estos comandos de find nos permiten buscar archivos .php que tengan textos sospechocos. No todos los archivos que se encuentren son peligrosos, pero si merecen un analisis. (se puede cambiar .php por .js por ejemplo para buscar archivos .js).
Otro comando útil es la búsqueda de archivos modificados en las últimas horas, si sabemos que el sitio no tiene archivos nuevos o modificados:
find /var/www -cmin -180 -type f -printf «%c %p\n»
Este comando nos permite buscar archivos modificados en los últimos 180 minutos.
Si no logramos detectar el origen del problema, siempre es buena idea realizar una instalacion completa nueva de WordPress e ir agregando los plugins en forma individual, controlando a cada paso si aparece el spam nuevamente utilizando las herramientas de Consola para ver el html.