Wie man Exploit-Packs in Flash-Objekten versteckt

Inhalt

    Eine Grundvoraussetzung für das Gelingen jeder beliebigen Malware-Attacke ist, dass der Angriff nicht bemerkt wird, weder vom Schutzsystem noch vom Opfer. Die Hauptrolle bei der Umsetzung einer verborgenen Attacke spielen Exploits zu Sicherheitslücken in der Software, mit Hilfe derer unbemerkt Schadcode auf den Computer des Opfers geladen werden kann. Die Exploits werden in der Regel in Exploit-Packs transportiert, bei denen es sich um ein Plugin-Detect handelt (das feststellt, welche Software welcher Versionen auf dem Computer des Anwenders installiert ist) und in dem mehrere Exploits zusammengefasst sind, von denen eins an den Nutzer ausgeliefert wird, wenn eine passende Sicherheitslücke gefunden wurde.

    Vor kurzem stießen wir auf eine neue Methode, einen Angriff unter Verwendung von Exploits zu verbergen, und zwar verpackten die Cyberkriminellen das Exploit-Pack in einer Flash-Datei.

    Laden der Exploits

    Bei der Durchführung einer standardmäßigen Drive-by-Attacke wird auf einer Webseite normalerweise ein Link auf eine Seite mit Exploit-Pack platziert (Landing-Page), von der dem Nutzer das notwendige Exploit zugestellt wird. Aus Sicht der Sicherheitssoftware demaskiert dieses Schema alle Komponenten des Exploit-Packs, da sie einfach auf die Seite geladen werden, was zur Folge hat, dass die Exploits und auch das Plugin-Detect im Traffic präsent sind. Damit ein Angriff unbemerkt bleibt, müssen die Cyberkriminellen alle Komponenten einzeln verschleiern.

    Ein neuer außergewöhnlicher Ansatz unter Verwendung einer Flash-Verpackung ist aus der Sicht Cyberkrimineller sehr viel effektiver. Die übliche Landing-Page fehlt dabei. Der Nutzer landet dabei über einen Link auf einer Seite mit einem gepackten Flash-Objekt, hinter dem sich sowohl ein Exploit-Pack als auch die Konfigurationsdatei in Form eines Bildes verbirgt. Die gepackte Flash-Datei mit Exploit-Pack wir im Browser mit Lese- und Modifizierungsrechten auf die Seite geladen. Das bedeutet, sie kann auf der Seite Exploits hinzufügen, die später ausgeführt werden.

    Schauen wir uns einmal an dem konkreten Beispiel des Exploit-Packs Neutrino an, wie genau das funktioniert.

    So sieht das gepackte Flash-Objekt aus:

    Gepacktes Flash-Objekt(Exploit-Pack)

    Und so sieht es ohne Obfuskation aus:

    Flash-Objekt(Exploit-Pack) ohne Obfuskation

    Die Verpackung soll das schädliche Objekt vor Entdeckung schützen. Von den meisten der gängigen Deobfuscatoren wird ein solches Flash-Objekt nicht automatisch geöffnet. Der SWF Decompiler beispielsweise hängt sich auf und gibt eine Fehlermeldung aus.

    Folgen der Anwendung eines gängigen Deobfuscators an einem Flash-Objekt mit dem Exploit-Pack Neutrino

    Dabei schreibt sich das Flash-Objekt auf die Seite im Browser des Anwenders mit dem Parameter allowscriptaccess = "always" ein. Dadurch erhält es die Möglichkeit, die Seite zu modifizieren, sogar wenn das Objekt selbst von einer anderen Domain geladen wird. Einerseits ist es nicht unbedingt ungefährlich, Flash die Erlaubnis zur Modifizierung einer Seite zu geben, da die Verwendung von Flash-Objekten derartige Möglichkeiten nicht erforderlich macht, und das könnte Misstrauen erwecken. Gleichzeitig ist es aber eine völlig legale Option, und sehr viel Flash-Content wird auf eben diese Weise geladen. Dank dieser Option schreibt ein schädliches Flash-Objekt aus seinen Binärdaten einfach die Exploits auf die Seite hinzu.

    Auf diese Weise taucht kein schädlicher Content auf – weder im Traffic, noch auf der Seite, die an den Browser weitergeleitet wird. Alles ist in einer schönen Verpackung verborgen, und die Exploits werden bei der Verarbeitung der Seite im Browser sichtbar.

    Inhalt des Flash- Objekts

    Schauen wir uns nun einmal an, was das zu untersuchende Flash-Objekt enthält und was es auf die Webseite schreibt. Nach dem Entpacken sehen wir, dass sechs binäre Objekte enthalten sind. Diese binären Objekte sind mit RC4 verschlüsselt und einige sind zusätzlich mit dem Standardalgorithmus deflate komprimiert.

    Verschlüsselte binäre Objekte innerhalb desFlash-Objekts

    Und so wird eins der Objekte entschlüsselt und ausgegeben:

    Code zum Entschlüsseln und Einfügen des Exploits auf die Seite

    Die übrigen Objekte werden auf dieselbe Weise geöffnet.

    Hier eine Aufstellung der binären Objekte, die im Flash-Pack enthalten sind:

    • Ein Exploit zu der Sicherheitslücke CVE-2013-2551 im Internet Explorer.
    • Exploit zur Sicherheitslücke CVE-2013-2551

    • Eine schädliche dll, die auch in anderen Versionen des Exploit-Packs Neutrino enthalten ist (davon wir später noch die Rede sein).
    • Zwei Exploits zu der Sicherheitslücke CVE-2014-6332 in der VBS-Routine im IE:
    • Exploits zur Sicherheitslücke CVE-2014-6332

    • Ein Exploit zu der Sicherheitslücke 2014-0569 in Adobe Flash
    • Exploit zur Sicherheitslücke 2014-0569

    • Exploit zur Sicherheitslücke CVE-2014-0515 in Adobe Flash
    • Exploit zur Sicherheitslücke CVE-2014-0515

    In diesem Exploit-Pack gibt es übrigens kein Plugin-Detect für Exploits zu Sicherheitslücken in Adobe Flash, die jeweilige Version von Adobe Flash wird mit Hilfe von ActionScript ermittelt. Die Versionen von Adobe Flash, die für eine Attacke unter Verwendung von Exploits geeignet sind, sind in den Code des Flash-Packs geschrieben:

    In den letzten Modifikationen wurden Veränderungen am Flash-Pack vorgenommen, unter anderem wurde ein weiteres Exploit zu der Sicherheitslücke CVE-2015-0536 in Adobe Flash hinzugefügt.

    Konfigurationsdatei

    Werfen wir nun einen Blick auf eine interessante Funktion im Flash-Pack.

    Wie schon erwähnt, wird zusammen mit dem Flash-Objekt auf der Landing-Page ein Bild platziert (die Konfigurationsdatei).

    Auf der Seite platziertes Bild

    Eine spezielle Funktion überträgt dieses Bild von der Landing-Page, decodiert es mit Base64 und RC4 und erhält die Konfigurationsdatei.

    Funktion zum Erhalt der Konfigurationsdatei

    Die Konfigurationsdatei enthält die Schlüssel und IDs der oben besprochenen Exploits, die auf das System des Anwenders geladen werden können. Die Konfigurationsdatei ermöglicht den Cyberkriminellen ein flexibles Arbeiten: Sie können, ohne das Exploit-Pack selbst zu verändern, Arbeitsparameter einstellen, die für eine gewisse Zeitspanne optimal sind. So kann einzelnen Exploits beispielsweise eine höhere Priorität zugewiesen werden oder die Schlüssel zur Dechiffrierung der Objekte im Pack können separat gespeichert werden.

    Die aus dem Bild dechiffrierte Konfigurationsdatei

    In den nachfolgenden Modifikationen des Flash-Packs wurde die Konfigurationsdatei übrigens nicht mehr in Form eines einzelnen Bildes umgesetzt, sondern sie ist im Exploit-Pack selbst enthalten.

    Erhalt der Payload

    Der Shellcode eines der Exploits ist der vbs-Code mit Binärcode in der Zeile, der infolge der Ausnutzung der Sicherheitslücke CVE-2014-6332 in der vbs-Routine im IE ausgeführt wird. Das hat zur Folge, dass in das Verzeichnis "%temp%/System32/ die Datei shell32.dll geladen wird.

    Der Pfad und der Name der geladenen Datei sind der Adresse und dem Namen der Standard-Bibliotheken von Windows sehr ähnlich. Dadurch ist es möglich, unter Anwendung der Standardtechnik dll-Hijacking nicht die Funktionen run, start, open usw. zu benutzen und auf diese Weise den Start der schädlichen dll vor Antiviren-Programmen zu verbergen.

    Anwendung von dll-Hijacking an der shell32.dll

    Das Exploit ändert die Umgebungsvariable sysdir und versucht System.ShellApplication zu laden und auf diese Weise die schädliche dll zu starten.

    Die gestartete dll ist ein Dropper, der das Skript "p.js" auf den Computer des Opfers lädt und startet.

    Hauptteil des Codes der shell32.dll

    Gestartetes Skriptp.js

    Dieses Skript ist der Loader der eigentlichen Ziel-Schaddatei.

    Verbreitung

    Die in diesem Artikel beschriebene Version des Flash-Packs erschien Ende des Jahres 2014 und wurde im Laufe des ersten Quartals 2015 aktiv verbreitet. Mittlerweile sind neue Versionen des Flash-Packs erschienen, doch das Funktionsprinzip ist gleich geblieben.

    Allein im März 2015 registrierten wir einen Angriff des Flash-Packs Neutrino auf die Computer von 60.451 Anwendern. Durchschnittlich wurden täglich etwa 2.000 Nutzer angegriffen, und an einzelnen Tagen stieg die Zahl der potentiellen Opfer auf 5.000 bis 6.000.

    Zahl der individuellen Anwender, die vom Flash-PackNeutrino angegriffen wurden

    Dieses Exploit-Pack wird hauptsächlich in Angriffen auf Nutzer in den USA und in Kanada verwendet.

    Geografie der Attacken des Flash-PacksNeutrino (März 2015)

    Fazit

    Die relativ neue Technik zur Verbreitung von Exploits unter Einsatz eines Flash-Packs hat sich für Cyberkriminelle als recht vorteilhaft erwiesen. Die Standardeigenschaften von Flash erlauben es ihnen, ein Exploit-Pack in ein Flash-Objekt zu packen und es durch einen Obfuscator zu verbergen. Und die Eigenschaft von Flash, Parameter für den Zugriff auf eine Seite ausgeben zu können, ermöglicht es, Exploits auf eine Seite im Browser des Anwenders zu schreiben. Dabei sind weder im Traffic noch in der zu ladenden Seite Komponenten des Exploit-Packs vorhanden.

    Obwohl die Malwareautoren das Exploit-Pack ständig aktualisieren und den schädlichen Flash-Code modifizieren, um eine Erkennung zu verhindern, reagiert Kaspersky Lab rechtzeitig auf diese Bedrohungen. Neben den Standard-Schutzmethoden verwenden unsere Produkte die Spezialkomponente „Automatic Exploit Prevention“ (AEP), die diese Bedrohung mit Hilfe einer Verhaltensanalyse detektiert.

    Kaspersky Lab detektiert dieses Flash-Pack als HEUR:Exploit.Script.Blocker, HEUR:Exploit.SWF.Generic.

    Ähnliche Beiträge

    Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.