Hace días que vengo investigando un asunto, una infección grave en ficheros Javascript que genera redirecciones y, en ocasiones, avisos de alerta de virus/troyanos en los sitios infectados.
Lo complicado del asunto es que el puñetero bicho se esconde bastante bien, y un repaso general, incluso un chequeo con los plugins habituales de seguridad para WordPress, no lo detectan. Esto es debido a que se esconde mediante código ofuscado Base64 en archivos con extensión .js
allá donde puede.
De hecho puedes estar días, semanas o meses sin saber si estás infectado, salvo que revises la ventana de actividad de tu navegador o te avise alguien con algún antivirus especialmente sensible, como los modos paranoia de AVAST, que es como me enteré yo.
Uno de los primeros síntomas que puedes comprobar es, desde la ventana de actividad del navegador (en mi caso Safari), alguna llamada a la IP 91.196.216.64, que haciendo lookup te lleva de viaje nada menos que a la Federación Rusa, y es una IP que ya ha sido reportada como fuente de spam y troyanos, ¿a que ya va dando miedito?.
También puedes comprobarlo en la barra de estado de, por ejemplo, Firefox, si se queda pensando tratando de conectar con esa misma IP o una muy similar. Lo haría de este modo:
http://sexatcars.in/gate/gate.php?f=107345
Nota: el dominio a que redirige puede cambiar
En caso afirmativo ponte manos a la obra, y sino tampoco estará de más que des un repaso a tu instalación de WordPres.
Nota: En este punto quiero aclarar que no es una infección exclusiva de WordPress sino que este bicho puede afectar a cualquier sitio web con ficheros Javascript, aunque de momento se ha afincado en instalaciones inseguras de nuestro querido CMS.
Lo primero sería revisar los ficheros con extensión .php
y .js
de tu tema, si en alguno de ellos – cotejándolo con los archivos originales recién descargados – encuentras líneas al final de más, prepara un café que tienes para rato. Normalmente, en los ficheros PHP encontrarás código ofuscado de este estilo:
<!--?php eval(gzuncompress(base64_decode('eF5Tcffxd3L0CY5Wjzcy<br ?-->NDG2NDc3MLGMV4+1dSwqSqzU0LQGAJCPCMM=')));eval(gzuncompress(base64_decode ('eF5LK81LLsnMz1OINzczNTK1MDUy01DJ1KxWSbR1LCpKrNTQtC5KLSktylNISixONTOJT0l … etc
En los JS sería algo así:
var _0xdc8d=["\x73\x63\x5F\x63\x6F","\x67\x65\x74\x45\x6C\x65\x6D\x65… etc
Este maldito engendro tiene la mala costumbre, además, de crear ficheros PHP, con nombres y código aleatorio, así que además puede llenar tu instalación de archivos PHP que ejecutan – de nuevo – código ofuscado. También puede introducir el código en los archivos siguientes:
- Ficheros index.php vacíos en las carpetas de plugins, themes, wp-content, uploads, upgrade, languages, raíz, etc
- Fichero wp-config.php
- Cualquier fichero PHP que se encuentre
- Cualquier fichero JS que se encuentre
¡Vale, ya estoy acojonado ¿qué hago?!
Pues manos a la obra. El bicho este se mete en todas partes, así que puede haber plugins infectados, temas, incluso ficheros core de WordPress, por lo que lo mejor es curarse en salud y …
- Elimina todo archivo PHP o JS que no sea de tu instalación de WordPress o hayas subido tu, y con ello me refiero a todos, si dudas lo borras … o lo revisas línea a línea, tu mismo.
- Carga por FTP una versión limpia de WordPress, sustituyendo los archivos y carpetas actuales por los nuevos
- Carga por FTP también una versión limpia del fichero
wp-config.php
y ponle tus datos de conexión a SQL, como en una instalación nueva - Carga por FTP versiones nuevas de TODOS tus plugins
- Carga por FTP una versión limpia de tu tema activo (y cualquier otro que tengas)
- Cambia tu contraseña de acceso FTP
- Cambia tu contraseña de acceso a WordPress
Parece radical pero en realidad no es un proceso muy largo y así te aseguras de que partes con todo limpio. Juanma, por si te apetece, nos ofrece un modo de limpieza alternativo.
¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!
Joder Fernando que peso me quitas de encima, este tema lo llevo sufriendo desde hace un mes y he conocido dos "variantes" en mi jerga de principiante.
El primero estaba escondido en los index.php y el otro en los js, nunca los he visto juntos a los dos en la misma web.
Los php los fui borrando uno a uno pero los js hay un monton y reinstale todo otra vez.
Como te decia al principio me quitas un peso de encima porque tampoco encontraba mucha información sobre el asunto y para rematar la faena la semana pasada se estropea el HD del MacBook empezando a ir lento, muy lento tanto al reiniciar como al abrir alguna aplicacion acabando por no acabar de arrancar, "acojonado" formateo el disco y reinstalo el sistema, instalando a todo correr la version de avast para mac.
A los dos dias, otra vez igual, llevo el equipo a la tienda y me comentan que el disco esta dañado y me lo van a cambiar, respiro aliviado…
Ahora que tú estas enterado de este asunto, podre seguir tus consejos e indicaciones y por lo menos tener un apoyo para resolver futuros problemas que mucho me temo que los seguira habiendo.
Muchas gracias y muchas felicidades por tu labor.
Gran aporte, la verdad es que has conseguido que me ponga a repasar los wp que mantengo a las dos de la mañana… 😛
Lo que no me queda claro es cual es el foco de infección de esos archivos js.
A mi me pasó eso hace como 2 meses, tampoco encontré información al respecto así que reinstale el wordpress y temas, a mi lo que me hacía era que en footer me mostraba un error, al principio pensé que era por algo del hosting ya que en todas mis web de wordpress tenían lo mismo… fue una lata pero al fin se quitó… detecté que era un malware por esta página http://sitecheck.sucuri.net saludos!!
Yo también he sufrido este ataque en las últimas semanas. No sé si por casualidad, pero fue en dos sitios donde no tenía actualizado Timthumb a la última versión.
Creo que es interesante conocer un comando para buscar desde el terminal de comandos todos los ficheros que contengan una cadena de texto. Lógicamente tienes que conectarte por SSH a tu servidor Linux/Mac para que funcione. Estando en el directorio raíz del hosting, ejecutar:
rgrep “base64” .
A mí me ayudó a detectar todos los ficheros infectados e ir modificando uno a uno.
¡Un saludo!
Se agrace este tipo de informacion, hace tiempo que vengo reciviendo avisos diversos sobre redirecciones en alguna de las paginas que mantengo, realize un analisis pero no tan exaustivo, es la primera vez que me ocurre.
Muchas gracias por compartir la info.
Yo también lo he sufrido y lo peor de todo que en todos los dominios que tenía en mi hosting. Al final, después de encontrar que era código en el .php, hice un backup de los post y eliminé todas las instalaciones y comencé de cero.
Te da más trabajo, pero ya no sabía cómo acabar con el malware.
Guardo este post como oro en paño por si vuelve
Gracias
=)
Wauuuu por fin encuentro algo de información! me sentia algo solo con esto de los virus. Hace un tiempo fui atacado tambien. Como utilizaba el FTP de Filezilla y este no encripta las contraseñas de mis hostings; algo se aprovecho y entro derecho a tooodos los sitios que tenia.
Como dicen aqui, tuve que realizar una limpieza integral y profunda de cada una de las instalaciones de Wordpress.
Recientemente encontré un sitio, que me ayudo MUCHISIMO en la tarea de encontrar archivos infectados. http://sitecheck.sucuri.net/.
Te describe exactamente QUE archivo contiene infección, dentro de todo WORDPRESS.
Por otro lado, me pareció ver por ahi, alguna manera de impedir via .httacces el uso de codigos ofuscados ? o en Base64 ?… o entendí mal ?
Saludos!
Aparentemente no hay nada raro en mi instalación.
En cuanto a la IP "91.196.216.64: Russian Federation, SpetsEnergo Ltd" no la he visto en los registros de login, de acceso, estadísticas, etc.
Aunque si que hay otra de Rusia que excedió los intentos de login con el usuario admin, que ni existe: "188.120.224.242: Russian Federation, ISPsystem, cjsc" pero debió ser casualidad.
Saludoss
Yo únicamente lo he encontrado en el los ficheros header.php y function.php, y no se si ha sido cosa mia, pero parece que ahora carga más rápido las páginas.
Lo que sería interesante, es como evitar la inyección ya que si no es así, continuamente deberemos revisar el código. ¿Se sabe como evitarlo?
Cargan más rápido porque no se quedan pensando haciendo llamadas a sitios externos.
Para evitarlo lo mejor es mantener siempre tu WP al día, los plugins, el tema, y estar atento a cualquier aviso de seguridad. Afortunadamente en WP estamos siempre informados y los bugs se solucionan rápido gracias a la comunidad.
Gracias por la información.
Mi duda es ¿Cómo consiguen colarte esos ficheros js o php, o modificar los existentes? ¿No necesitan usuario y clave para el acceso por ftp, o algo similar …?
¿Cómo te infectan?
Saludos
Normalmente a través de otros scripts, como el fallo de Timthumb que se comentaba antes.
Me he enfrentado a bichos similares en webs no wordpress y la manera más rápida de localizarlos es dado la web de alta en google webmaster. Tiene una sección de software malintencionado que te indica los ficheros infectados.
Supongo que también funcionará con este bicho.
En este caso las herramientas para webmasters no lo detectan, fue lo primero que miré 😉
A mi si me lo detecto Webmaster tools de google, de hecho me penalizaron como sitio peligroso. Supongo que tarda un tiempo hasta que las spiders actualicen la informacion en la webmaster tools. En mi experiencia creo que fue algun plugin… lo limpie todo haciendo busqueda con el grep en mi server… Bendito grep y reinstalando plugins ademas de volver a copiar los ficheros de wp.
Justamemnte hoy he tenido que "limpiar" una página a la que no le había actualizado el timthumb, y he tenido un buen rato revisando los archivos infectados para "entender" como trabaja el asunto…
Osea es como el morbo de ver un cadaver solo para ver como se ve un cadáver, pero investigando por ahi encontre algunos datos de interés que voy a aprovechar en compartir.-
Se os olvida lo más importante: revisar los permisos de todos los archivos y directorios. Ninguno debe tener permisos de escritura, salvo el wp-content/uploads
Yo he sufrido varios ataques en los últimos meses cuya solución ha pasado desde eliminar e instalar Timthumb a tener que cambiar absolutamente todo. Yo aconsejo también revisar los usuarios y cambiar todas las contraseñas tanto de WP como de la base de datos y del http://FTP.
Ahora utilizo varios Plugins que me informan sobre el estado de cada una de las instalaciones:
– WP Security Scan
– Antivirus
– Wordpress Firewall 2
Gracias por la información Fernando, muy interesante.
Saludos tengo el mismo problema, en mi caso reemplace todos los archivos y despues de varias horas regresaron los archivos.
Ahora acabo de borrar todas las cuentas FTP y cambiado la clave de la cuenta principal. Pero aun no entiendo como se volvió a ingresar.
Espero que me puedan ayudar.
Saludos
en mi caso se vuelve a reproducir sin remedio. borro los archivos, cambio los permisos y da igual, se vuelve a llenar todo de código…..
de todas maneras gracias por la información!!
como estaba a punto de caducar mi hosting he decidido mudar mis web a otro proveedor. En ese proceso instalar todo de cero, pero el problema es saber como ingresa el código y como evitarlo. Por que los medio que indican en mensajes anteriores solo avisan pero no previenen.
Estimado me estoy volviendo LOCO ya que lógicamente en mi caso, lamentablemente no soy un experto en wordpress….. más allá de instalar, editar y subir contenido a la web de mi Escuela, espero que gracias a tu artículo puedo encontrar yo hoy solución, muchísimas gracias por tu investigación que por lo que leo a varios les has devuelto la vida, saludos y reitero mis agradecimientos.