Malware auf der Spur

Kriminelle verschleiern die Spuren ihrer Malware im Internet mit diversen Methoden. Doch mit speziellen Tools kann man die Wege zurückverfolgen und herausfinden, über welche Schwachstelle ein Schädling eingedrungen ist.

Lesezeit: 10 Min.
In Pocket speichern
vorlesen Druckansicht
Von
  • Daniel Bachfeld
Inhaltsverzeichnis

Während man sich früher Viren und Trojaner über den Browser hauptsächlich nur beim Besuch dubioser Webseiten einfangen konnte, reicht dazu heute die Morgenlektüre auf einer populären News-Seite. Zuletzt installierten infizierte Werbebanner auf Handelsblatt.de und zeit.de über Browser-Lücken sogenannte Scareware. Dabei versteckten Kriminelle in Werbebannern ein spezielles JavaScript, die in einem Iframe weiteren Code nachluden, der seinerseits wieder auf eine andere Seite zeigte, wo dann letztlich das Exploit-Toolkit Neosploit verschiedene Lücken in den Plug-ins für QuickTime, Java und den Adobe Reader durchprobierte.

Um den eigentlichen Ursprungsort eines Angriff zu verschleiern, gehen die Kriminellen mehrstufig vor. Zum einen betten sie in gehackte Webseiten oder infizierte Flash-Werbebanner keine Links im Klartext ein, sondern codieren URLs über lange Zeichenketten, die ein Java- oder ActionScript erst wieder zur Laufzeit zusammenbaut – oft ist sogar das Skript selbst noch codiert. Zum anderen benutzen die Malware-Programmierer mehrfache Umleitungen, um den Browser über mehrere Sprünge zum eigentlichen Schadcode zu führen. Das alles hat den Zweck, sowohl Anwender als auch Webseitenbetreiber und sogar Antivirenspezialisten in die Irre zu führen und ihnen die Arbeit zu erschweren.

Glücklicherweise gibt es Tools und Hilfsmittel respektive Dienste, die für den Menschen so gut wie unlesbares JavaScript in mehr oder minder verständlichen Code zurückführen können. Damit kann man die Verfolgung aufnehmen oder zumindest nachvollziehen, welche Lücken die Angreifer versucht haben, auszunutzen. Die Tools Malzilla und Jode helfen bei der manuellen Analyse, während die Dienste jsunpack und wepawat mit ihrer automatischen Analyse dem Analysten zur Seite stehen. Wir stellen alle vier Werkzeuge kurz vor.

Das Windows-Tool Malzilla hilft dem Malware-Jäger, der Bedeutung eines verschwurbelten (englisch obfuscated) JavaScripts in infizierten Webseiten auf die Schliche zukommen. Dazu lädt es nach Angabe der URL den kompletten HTML-Code herunter und zeigt ihn an. Grundsätzlich nutzen Virenautoren zwei Verfahren, um eingebettete Sprungziele, Nachlade-URLs und weiterer Code unleserlich zu machen. Eine einfache Methode ist beispielsweise, eine URL mittels Base64 oder über das Universal Character Set (UCS) zu kodieren. Malzilla enthält eine Reihe von Dekodern, um solche Zeichenketten wieder zu dekodieren und für den Analysten lesbar zu machen.

Die andere Methode ist, eine URL erst zur Laufzeit per JavaScript anhand verschiedener Daten wieder zusammenzubauen. Malzilla kann die Ausführung von JavaScript jedoch emulieren und die Ergebnisse des Durchlaufs anzeigen. Nicht selten kombinieren die Virenautoren die beiden Methoden, sodass man mehrere Durchläufe in Malzilla benötigt, um der Malware auf die Spur zu kommen.

Im oberen Fenster zeigt Malzilla den geladenen HTML-Quelltext der Seite an. Verdächtige Einträge lassen sich meist bereits mit bloßem Auge erkennen.

Für erste Tests nimmt man die URL einer infizierten Webseite und trägt sie ins Adressfeld von Malzilla ein. Beispiele für eigene Experimente findet man auf Seiten wie www.malwaredomainlist.com oder www.malwareurl.com. Allerdings sollte man die dort angegebenen URLs nicht ohne spezielle Vorkehrungen im Browser öffnen. Malzilla trifft einige Vorkehrungen, um eine Infektion des Analyse-Systems zu verhindern. So führt es den Code mit speziellen JavaScript-Bibliotheken aus, die nicht die lokalen Ressourcen beeinflussen können. Ein Angreifer müsste also schon eine Lücke in Malzilla ausnutzen, um einen Trojaner einzuschleusen. Dennoch empfiehlt es sich nicht, den selben PC für Malware-Analysen und Online-Banking zu verwenden – man weiß ja nie. Besser ist es, die Tests in einer virtuellen Umgebung, etwa mit dem kostenlosen VirtualBox durchzuführen.

Der Button "Get" ruft die eingegebene URL auf und Malzilla liest den kompletten HTML-Code ein. Im Textfenster lässt sich der Code auf verdächtige Einträge oder Skripte durchsuchen. Praktischerweise kann Malzilla im HTML-Code enthaltene JavaScript-Abschnitte automatisch markieren und an den Decoder schicken. Im Fenster "Decoder" findet sich dann der Codeabschnitt, den man mit dem Button "Run Script" ausführen kann.

Lässt man das in die Seite eingebettete Skript im oberen Decoder-Fenster laufen, offenbart es unteren Fenster einen versteckten Iframe zu einem weiteren Server.

Ließ sich ein Skript erfolgreich ausführen, meldet Malzilla "Script compiled" und zeigt das Ergebnis im unteren Fenster an. Oftmals handelt es sich um einen im normalen Browser versteckt geöffneten IFrame, der auf eine weitere Seite zeigt oder ein weiteres JavaScript, das es nun abermals zu entschleiern gilt. Handelt es sich bei dem Ergebnis um ein weiteres Skript, kopiert man es einfach aus dem Ergebnisfenster in das Decoder-Fenster und startet es erneut mit "Run Script". Handelt es sich nur um einen Link wie im Bild links, kann man die URL als neuen Startpunkt für Malzilla verwenden, um sich weiter zum Ursprungsort des Angriffs vorzuarbeiten – im Beispiel die Seite oughwa.com/in4.php. Das dort abgelegte Skript leitet die Malzilla-Anfrage auf den Server apomith.com um, auf dem die eigentlichen Exploits lauern.

Der Link im Iframe führt über einen weiteren Redirect auf eine Seite, die einen Java-Exploit enthält.

Manchmal kann Malzilla ein Skript jedoch nicht vollständig ausführen, weil es bestimmte JavaScript-Funktionen wie document.createElement() nicht unterstützt – was auch für die auf apomith.com eingebetteten Skripte zutrifft. An dieser Stelle muss man dann entweder das JavaScript abändern und die nicht unterstützte Funktion durch eine andere, ähnliche JavaScript-Funktionen ersetzen oder auf ein anderes Tools setzen, etwa jsunpack – doch dazu später mehr.

Malzilla kann jedoch verschleierte Codesequenzen auch ohne einen emulierten Durchlauf teilweise entschleiern, indem es seine zahlreichen Dedoderfunktionen einsetzt. Etwa stellenweise mit der escape-Funktion verschleierten Code kann es automatisch dekodieren und das Ergebnis in eine Datei ausgeben. Daneben bietet Malzilla weitere Dekodieroptionen zum manuellen Rumprobieren. Wie man diese in welchen Fällen benutzt, zeigen die zahlreichen Tutorials auf der Projektseite des Tools.

Der auf apomith.com dekodierte Code offenbart, dass die Kriminellen versuchen, den Besucher sowohl mit einem PDF-Exploit als auch einem Java-Expoit zu infizieren. Dabei haben sie es insbesondere auf Anwender des Internet Explorer abgesehen, wozu sie laut Code testen, ob der Microsoft-Browser das Adobe-Reader-ActiveX-Control geladen hat und in welcher Version es installiert ist. Um eine mögliche Lücke in Java auszunutzen, lädt die Seite apomith das Java-Archiv jjj.jar auf den Rechner und startet es.