Cuidado con el Pharma Hack en WordPress: Cómo identificarlo y eliminarlo

Todo comenzó el pasado 23 de Agosto en la tarde cuando David Esteve (@DeiviZzZ en Twitter) me envió un tweet avisando que me había enviado un mensaje a través de mi blog. En el mensaje me alertaba que al acceder desde un resultado de búsqueda a la página de mi perfil del blog le dirigía a una Web de Viagra … -muchísimas gracias David por avisarme ;)-.

Preocupada accedí directamente a la página del blog a la que hacía referencia, revisé el código y no vi nada fuera de lo normal, pero al acceder a esa misma URL desde un resultado de búsqueda de Google ví como en vez del contenido original, se mostraba el contenido de un supuesto sitio farmacéutico de Canadá que promovía la venta de Cialis y Viagra. Me habían hackeado el blog 🙁

Pharma Hack - Seguridad en WordPress

Al hacer site:aleydasolis.com en Google ví además como la Home del sitio mostraba un título y descripción distintos a los originales, promoviendo la compra de Cialis. El contenido al parecer se estaba «inyectando» directamente en el HTML original de mi blog. Esto ocurría con la Home, mi perfil y una entrada sobre las aplicaciones de iPhone que uso, curiosamente tres de las páginas con mayor popularidad y tráfico orgánico del sitio.

Fui a buscar a Google Webmaster Tools y no encontré ninguna notificación de Malware: eran buenas noticias! Quería decir que el ataque había ocurrido hace poco, el sitio aún seguía indexado y quizás aún tenía tiempo de «eliminar» el código malicioso y resolver el problema sin mayores consecuencias.

Lo siguiente que hice fue buscar el código haciendo referencia a Cialis o a Viagra en los distintos archivos PHP del tema de WordPress que estaba utilizando y no encontré nada. Busqué en todos los archivos relacionados al sistema de WordPress, plugins y tampoco encontré nada. Busqué en la Base de Datos y cero resultados. No me podía creer que no encontraba nada y hasta verifiqué con Christian que estaba conectado en ese momento que a él también le aparecía igual. Seguía buscando y en eso Christian me envió un correo sobre un caso similar (¡muchas gracias majo!): El ataque que estaba sufriendo era el del Pharma Hack. Comencé a investigar más…

El Pharma Hack es especialmente difícil de identificar y eliminar ya que aprovecha las vulnerabilidades de seguridad de WordPress:

  • Identificando el agente de usuario y mostrando contenido y enlaces de spam farmacéutico (viagra y cialis) sólo si es el robot del buscador. Como se comenta en esta entrada sobre el Pharma Hack en Pearsonified su objetivo es aprovechar las páginas más populares y mejores posicionadas del sitio para crear enlaces, transferir popularidad y tráfico a la Web de contenido farmacéutico, pero de forma «discreta» para así evitar que se elimine rápidamente el spam, por ello la detección de agente de usuario, haciendo que el hack pase lo más desapercibido posible el visitante típico.
  • Creando archivos con una nomenclatura similar a los propios de WordPress (wp-db-class.php, wp-img.php, db-akismet.php, class-akismet.php, etc.) en varios de los directorios del sistema, temas y extensiones (wp-content/uploads/, wp-includes/, wp-content/plugins/), etc. algunos de ellos hasta ocultos (usando extensiones .cache, .bak, .old) que los hace difícil de identificar (configura tu cliente FTP para que los muestre todos). Estos archivos son los «backdoors» que permiten acceder al sistema de forma reiterada y que ejecutan el código encriptado (base64) que se almacena en la base de datos.
  • Almacenando código encriptado en la base de datos -aquí es donde se almacena el spam realmente- con entradas en la tabla «wp_options» que han sido encriptadas y por lo cual no permiten identificar fácilmente el código malicioso.

Por todo ello, además de buscar y eliminar todo el código malicioso que encontré tanto en archivos como en la base de datos después de seguir durante unas cuantas horas los pasos recomendados por las guías que comparto al final de este post, preferí igual reinstalar el blog, eliminar y volver a instalar desde la Web de WordPress todos los plugins, además de modificar las contraseñas tanto de la base de datos, FTP y usuario del blog.

Una vez hecha la limpieza verifiqué que el código de las páginas que habían sido hackeadas se veían bien de cara al buscador con la opción de «Explorar como Googlebot» en Google Webmaster Tools y las envié a través de esta opción para que se reindexaran.

Y aquí viene una pequeña «curiosidad SEO»: Aunque Google tardó un día para actualizar dos de las tres páginas cuyos títulos, meta descripción y contenido habían sido modificados por el hack (por cierto, se actualizaron antes en los resultados de Google.es que en Google.com)  lo extraño es que aún el 25 de Agosto -el día en que ya comenzó a mostrar las tres páginas en los resultados con el contenido original- la fecha que seguía mostrando en el caché era del 18 de Agosto… no la había actualizado, aunque el spam tampoco se veía en la versión cacheada!

Esto último sí ocurría con Bing, como se puede ver en la siguiente imagen, cuya fecha del caché era del 22 de Agosto y aún mostraba la versión en caché con el spam:

Pharma Hack en el cache de Google

Finalmente el 26 de Agosto ya Google actualizó la fecha del caché y Bing el 28 ya estaba mostrando también la versión sin spam de las páginas.

Si tu sitio ha sido atacado y deseas realizar una limpieza del Pharma Hack recomiendo seguir las siguientes guías que utilicé:

Así mismo, he usado las siguientes herramientas y extensiones para identificar y corregir vulnerabilidades en el blog:

Espero que esta experiencia no sólo sea de utilidad para mí sino para tí también 😉