IT-Sicherheit: Wie wir einem unachtsamen Phisher auf die Schliche kamen
Phishing und Spamming sind kriminelle Industriezweige. Weil sich ein Phisher einen dummen Fehler leistete, konnten wir mehr ĂĽber ihn erfahren.
(Bild: Thorsten HĂĽbner)
Eine verdächtige Mail mit einer noch verdächtigeren URL landete in einem Spam-Filter, den einer unserer Leser betreut. Beruflich kümmert er sich um IT-Sicherheit und so war ihm sofort klar, dass es sich bei der vermeintlichen Aufforderung des Mailanbieters, sich aus Sicherheitsgründen sofort an der Webmail-Oberfläche anzumelden, um einen Phishing-Versuch handeln musste. Der Link in der Mail zeigte zu einer Subdomain von web.core.windows.net und enthielt am Ende als Query-Parameter die Mailadresse. Neugierig schaute sich der Leser die Seite an und fand ein anschauliches Beispiel für eine Phishing-Attacke – und eine Sicherheitslücke zu Ungunsten des Phishers.
In einer virtuellen Maschine probierten wir den Link aus und tauschten die Mailadresse im Link durch eine Beispiel-Adresse beim deutschen Mail-Hoster Web.de aus. In der Mitte erschien vor grauem Hintergrund ein stark deformiertes Login-Fenster, das nur entfernt an das Original von Web.de erinnerte. Wer dort sein Kennwort eingab, musste schon sehr naiv sein.
Ein Blick in die Entwicklerwerkzeuge des Browsers enthüllte, was sich der Phisher eigentlich überlegt hatte: Per Iframe sollte hinter dem Fenster die echte Web.de-Seite von https://web.de eingebettet werden, darüber sollte das selbstgebaute Login-Fenster schweben. Das hätte die Täuschung zumindest etwas besser gemacht und die Erfolgsquote sicher erhöht. Doch daraus wurde nichts: Weil die Betreiber von Web.de schon länger mit Phishing gegen ihre Nutzer zu tun haben, haben sie ihre Server so konfiguriert, dass sie folgenden Header mitschicken:
content-security-policy: frame-ancestors 'none'
Moderne Browser weigern sich dann, die Seite im Iframe darzustellen – es bleibt eine unattraktive graue Fläche. Eine kleine Einstellung im Server, die Phishing zumindest etwas erschwert. Wer selbst Login-Seiten betreibt, ist gut beraten, diesen Header zu aktivieren.
Die Phishing-Seite war so programmiert, dass sie dynamisch auf unterschiedliche Mailhoster reagierte: In der URL wurde die Mailadresse des Opfers übergeben, die Phishing-Links müssen also in einer Art Serienbrief personalisiert generiert und verschickt werden. Je nach Mailadresse versucht die Seite, unterschiedliche Mail-Anbieter per Iframe einzubinden und stellt das Favicon der Seite als Logo im Login-Fenster dar. Eine kleine Versuchsreihe zeigte aber, dass die gängigsten Mail-Provider Iframe-Einbindungen per Header unterbunden und die meisten Opfer wohl eine graue Fläche gesehen haben.
Videos by heise
Passwortversand
Neben Iframe und gefälschtem Login-Fenster fanden wir JavaScript auf der Seite. Die Analyse hatten die Entwickler aber deutlich erschwert und den Code mit einem sogenannten Obfuskator etwas unkenntlich gemacht. Ein solches Werkzeug ersetzt möglichst viel aussagekräftigen Klartext (Strings, Funktions- und Variablennamen) durch andere Zeichen, in diesem Fall durch hexadezimale Zeichen. So wird es zwar nicht unmöglich, den Code zu verstehen, aber immerhin mühsam (als Gegenmittel gibt es wiederum De-Obfuskatoren).
Aber auch ohne JavaScript-Code im Klartext konnten wir beobachten, was beim vermeintlichen Anmelden geschah. Die Entwicklerwerkzeuge aller Browser haben einen Reiter "Netzwerk", der HTTP-Aufrufe mit Anfrage- und Antwortdaten protokolliert und darstellt. Für gewöhnlich wird das Kennwort per HTTP an den Server geschickt und dort gespeichert. Doch dieser Fall war ungewöhnlich – und nicht gerade geschickt:
Sandte man das Formular ab, wurde eine Anfrage an den Endpunkt sendMessage von https://api.telegram.org/ geschickt, in den Formulardaten das Kennwort, das man ins Kennwortfeld getippt hatte:
##+nEw+lOg+##
+------------------------+
max.muster@web.de+|+geheimes_passwort
+------------------------+
Im Messenger Telegram kann jeder einen Bot anlegen und mit ihm eine Kommunikation starten. Bots sind klar als solche gekennzeichnet und ganz hilfreich, um sich etwa Statusmeldungen seiner Server oder des vernetzten Zuhauses schicken zu lassen. DafĂĽr reicht ein API-Aufruf, wie wir ihn gefunden haben. Der Phisher nutzte dieses Verfahren, um alle Kennworteingaben von Opfern sofort aufs Handy zu bekommen.
Um das API zu nutzen, generiert Telegram ein Token, auf das man gut aufpassen muss – keinesfalls darf man das API direkt per JavaScript aus einer öffentlichen Seite heraus ansprechen: Die URL zum API enthält nämlich das Token, und wer das kennt, kann den Bot Nachrichten schicken lassen. Eigentlich legt man das Token daher auf einen Server und lässt ausschließlich diesen mit dem API sprechen, niemals den Browser.
Diese grundsätzliche Vorsichtsmaßnahme hatte der Phisher ignoriert und uns so das API-Token für seinen Bot präsentiert. Per API hätten wir ihn jetzt mit Nachrichten überhäufen können, doch damit nicht genug: In der HTTP-Antwort verrät das Telegram-API weitere Details: Vorname, Nachname und Telegram-Benutzername des Benutzers, dem der Bot eine Nachricht geschickt hat. So erfuhren wir, dass der Phisher offenbar Daniel heißt und hatten auch seinen Benutzernamen. Mithilfe des Werkzeugs TgScanRobot, das öffentliche Telegram-Gruppen systematisch durchsucht, fanden wir heraus, in welchen unsympathischen Kreisen er sich herumgetrieben hatte: über 20 Gesprächs- und Handelsplattformen für Spamming, Hacking-Werkzeuge und Handel mit geklauten Kreditkarten. In einer dieser Gruppen hatte sich Daniel auch mal zu Wort gemeldet und wurde zurechtgewiesen, weil er sich nicht an die Regeln der Gruppe gehalten hatte.
Jetzt wollten wir mehr über Daniel wissen – zumindest seine Herkunft interessierte uns. Ein Gruppenname mit chinesischen Schriftzeichen deutete schon mal grob auf Asien hin. Um es genauer einzukreisen, stellten wir dem Phisher eine Falle: Mit seinem Token schickten wir ihm über seinen Bot eine Nachricht, dass ebendieser Bot wegen illegaler Aktivitäten gesperrt sei, und er einen Link bei Telegram zur Freischaltung klicken müsse. Statt einem Link zur Telegram-Seite enthielt unsere Nachricht einen Link des Dienstes Grabify (Download) – eine Art URL-Kürzer, der dem Ersteller nebenbei zahlreiche Details zu allen Nutzern anzeigt, die ihn angeklickt haben. Ob ein Phisher selbst auf eine solche Phishing-Nachricht hereinfällt?
Nur sechs Stunden später ging er ins Netz und klickte auf den Link: So erfuhren wir, dass Daniel einen aktuellen Firefox nutzt, seinen PC in der Zeitzone "Asia/Shanghai GMT+8" mit englischer Oberfläche betreibt und über ein Microsoft-VPN im Internet surft, das in den USA endet.
Gehostet bei Microsoft und professionelle Kampagnen
Gehostet bei Microsoft
Damit Daniel keinen weiteren Schaden anrichten konnte, musste die Phishing-Seite schnell vom Netz. Gehostet wurde sie in Microsofts Azure-Cloud, genauer gesagt handelte es sich um eine statische Seite, wie sie jeder Azure-Kunde anlegen kann. Ungeschickt von Microsoft ist es, dafür Subdomains von windows.net zu vergeben. Phisher könnten damit eine weitaus wirksamere Phishing-Kampagne für Microsofts eigene Kunden aufsetzen: Wer aufgefordert wird, sein Windows-, Office-365-, oder Outlook.com-Konto einzugeben, wird angesichts einer windows.net-Seite zunächst nicht stutzig. Für die perfekte Täuschung bräuchten die Angreifer aber einen besseren Webdesigner als Daniel, der das originale Microsoft-Design ansehnlich nachbauen kann.
Wir entschieden uns, Microsoft Azure über das Formular im Microsoft Security Response Center über die Phishing-Seite zu informieren. Wenige Tage später war die Seite verschwunden und wir erhielten eine Bestätigung von Microsoft. Dass Strafverfolger über Microsoft eine Chance hätten, den wirklichen Namen von Daniel zu erfahren, ist unwahrscheinlich – wer sich in Foren über geklaute Kreditkarten austauscht, wird sich nicht mit eigenen Daten bei Microsoft anmelden.
Professionelle Kampagnen
Wie ein großer Fisch in der Szene wirkt Daniel nicht, mehr wie ein recht unerfahrener Kleinkrimineller, der sich mit dem Verkauf von Mailadresse-Kennwort-Kombinationen verdingen oder über gekaperte Postfächer Kennwörter für Webshops zurücksetzen und in fremdem Namen einkaufen wollte. Unklar ist, ob er die Phishing-Seite selbst gebaut hat, die Expertise in einer der Telegram-Gruppen eingekauft oder dort einen Online-Schnellkurs "Phishing für Einsteiger" belegt hat.
Doch wer kauft Benutzernamen und Kennwörter, die Kleinkriminelle mühsam sammeln? Diesen Teil der Wertschöpfungskette – sofern man das so bezeichnen möchte – decken professionellere Gruppen ab. Ihre Spuren fand ein Leser zufällig bei einem Port-Scan: Auf Port 80 lag eine umfangreiche Webanwendung, die offenbar zum Verwalten von Spam-Kampagnen gedacht war. Die Beschriftungen deuteten auf Betreiber in Osteuropa hin. Da Datenschutz unter kriminellen Spammern ohnehin kein allzu hohes Gut ist, hing die gesamte Anwendung aber ohne Kennwortschutz im Netz.
Auf der einen Seite enthielt sie Textdateien mit einigen hundert Megabyte Benutzername-Kennwort-Kombinationen. Außerdem einen ausgeklügelten Manager für Spam-Kampagnen. Der erinnerte vom Aufbau an professionelle Werkzeuge für Newsletter- und Social-Media-Kampagnen – nur eben für Spam. Online konnte man Textvorlagen, Empfänger und Absender kombinieren und so zeitgesteuerte Spam-Wellen planen. Die Vorlagen wurden offenbar von einer Template-Engine verarbeitet, die per Zufall die Platzhalter mit einem der angegebenen Inhalte füllte:
I {want|desire|choose|wish} to
{ask|demand|inquire}...
So kann man auch ausgeklĂĽgelte Inhaltsfilter an die Grenzen bringen, weil es ausreichend unwahrscheinlich ist, dass zwei identische Mails oder wiedererkennbare Muster entstehen.
Verschickt wurden die Spam-Mails über die legitimen Mailserver von Mail-Hostern – authentifiziert mit einem der Accounts aus der langen Liste von erbeuteten Kennwörtern. In solchen Fällen haben auch Blacklist-Filter und Verfahren wie SPF oder DKIM kaum eine Chance, weil die Mails ja von vertrauenswürdigen Absenderservern verschickt wurden.
Um zumindest diesen einen Sumpf stückweise trockenzulegen, haben wir den Betreiber der Website haveibeenpwned.com auf die öffentlich zugängliche Kennwortsammlung der Spammer hingewiesen. Das Projekt sammelt gefundene Benutzernamen und Kennwörter als Hashes und Anwender können sich informieren, ob ihre Zugangsdaten schon im Internet kursieren.
Wo die Spam-Profis so große Kennwortsammlungen überhaupt finden, kann man nur mutmaßen – ein Teil kommt aus Datenlecks bei Betreibern, die in einschlägigen Foren verkauft werden, ein weiterer Teil sicher über dubiose Marktplätze von Zulieferern wie dem kleinkriminellen Phisher Daniel. (jam)