Fast jeder kennt das Thema Spam: Man erhält E-Mails die von unschlagbaren Rabatten, Millionengewinnen für das eigene Portemonnaie oder einem gesperrten Bankaccount erzählen. Oft werden diese bereits durch Spam Filter vor der Zustellung gefiltert oder aber an den zahlreichen Rechtschreibfehlern und einer merkwürdigen Absenderadresse enttarnt.
Während unseres Arbeitsalltages bei der Pentest Factory konnten wir jedoch eine weitaus effektivere Methode aufdecken, die uns gezielt dazu verleiten sollte auf einen bösartigen Link zu klicken: Nach einem kurzen Anruf auf unser Mobilgerät erhalten wir folgende SMS:
Analyse
Wir öffnen den Link in einer abgeschotteten Virtuellen Maschine:
Nach einer einfachen 301 Weiterleitung erreichen wir die folgende Seite:
Jedoch gibt es auf den ersten Blick nichts außergewöhnliches zu finden. Auch nach einer Analyse des Quellcodes der Seite gibt es keine besonderen Eigenarten zu sehen.
Wir erinnern uns jedoch daran, dass die SMS auf ein Mobilgerät geschickt wurde. Vielleicht ist es möglich ein anderes Verhalten mit einem mobilen User Agent auszulösen. Wir ändern unseren User Agent auf einen gewöhnlichen Android Firefox Browser. Und siehe da! Wir werden nun auf eine andere Seite weitergeleitet:
Analysieren wir den Code der Seite, so sieht man, dass dieser zu 95% aus JavaScript Code besteht:
In unserer Analyse des Codes stellen wir fest, dass eine Reihe von Checks ausgeführt wird, um die Eigenschaften des Browsers und des darunterliegenden Gerätes zu enumerieren:
Diese Checks sind in separaten Funktionen (A1 bis A91) untergebracht. Diese werden in einer for Schleife iteriert und alle Parameter abgefragt. Anschließend werden alle Parameter die durch die Prüffunktionen zurückgegeben wurden, in einen JSON String konvertiert.
Dieser JSON String wird daraufhin mittels der JavaScript Bibliothek „CryptoJS“ AES CBC verschlüsselt:
Die einzelenen Funktionsaufrufe und ihre Namen sind dabei obfuskiert, um einem fremden Leser das Verständnis des Codes zu erschweren:
Eine Kodier-Funktion wie 0x4ee32b nimmt eine Array Position sowie einen Key als Parameter. Die Sektion des JavaScript Codes die wir als „verschlüsseltes JavaScript“ bezeichnet haben ist dabei ein großer Array, der kodierte Funktionsnamen enthält (eine sog. Lookup Table). Wird die Funktion 0x4ee32b(index, key) aufgerufen, so wird im Array am entsprechenden Index der Wert ausgelesen und dieser mittels des Schlüsselparameters dekodiert. Dies ergibt final einen Funktionsnamen. Beispiel:
Somit wird CryptoJS[‚enc‘][‚Utf8‘][‚parse‘] aufgerufen. Eine andere Schreibweise für CryptoJS.enc.Utf8.parse(string)
Wir haben unseren Debugger an der Stelle angehalten, an der der Parameter Array an die Verschlüsslungsroutine übergeben wird:
Man kann sehen, dass unter anderem ausgelesen wird, welchen User Agent wir verwenden, welche CPU, welches Betriebssystem, welchen Gerätehersteller, Browser, sowie viele weitere Parameter, welche Funktionen auf unserem Gerät erlaubt oder möglich sind.
Anschließend erfolgt eine Verschlüsselung dieser Werte und, die Seite überträgt diesen verschlüsselten String an eine weitere Seite:
Dort angekommen, wird vom Server eine neue Weiterleitung konstruiert, die auf einen weiteren Host verweist:
Dieser nächste Host erhält eine verschlüsselte URL, die als GET Parameter übergeben wird, an die dann im finalen Schritt weitergeleitet wird.
In unserem Fall werden wir auf die „TikTok“ App im Google PlayStore weitergeleitet:
In einem Artikel von Google wird beschrieben (https://blog.google/threat-analysis-group/protecting-android-users-from-0-day-attacks/), wie ein ähnliches Verhalten in 2021 genutzt wurde, um Android Geräte mit einer 0-day Schwachstelle zu infizieren. Hierbei wurde den Opfern ein Link per E-Mail zugestellt. Nach einem Klick auf den Link, wurden ein Exploit im Browser ausgeführt, um die Kontrolle über das darunterliegende Gerät zu erhalten. Ähnlich wie in unserem Beispiel leitet die Seite final auf eine legitime Webseite weiter.
Da wir kein verwundbares Android Gerät zur Verfügung hatten, können wir nur vermuten, ob auch die von uns analysierte Seite eine 0-day Schwachstelle oder einen Angriff auf unser Gerät geplant hatte. Jedoch steht die Vermutung nahe, dass die ausführliche und obfuskierte Prüfung von sämtlichen Systemparametern unseres Gerätes einen vorbereitenden Schritt darstellt, um die Kompatibilität des Angriffes mit unserem Gerät im Voraus zu analysieren.
Fazit zu Smishing und Phishing
Seien Sie wachsam gegenüber Phishing Angriffen – nicht nur E-Mails sondern auch SMS können bösartige Seiten referenzieren und Sie dazu aufrufen Malware (als nützliche App getarnt) auf Ihrem Gerät zu installieren. Wie auch in Google’s Artikel zu sehen ist, kann bereits ein Klick (um herausfinden zu wollen, was sich hinter dem Link befindet) ausreichen, um einen Angriff auf das Gerät auszuführen und dieses vollständig zu übernehmen.
Generell empfehlen wir die folgenden Maßnahmen, um sich gegen derartige Angriffe abzusichern:
- Halten Sie alle Ihre Geräte auf dem neuesten Stand. Installieren Sie regelmäßig (automatisiert) Sicherheitsupdates. Dies beinhaltet mobile Geräte. Nutzen Sie ein Mobile Device Management System, um zu verifizieren, dass alle Geräte in Ihrem Unternehmen die Patchlevel und Sicherheits-Policies ordnungsgemäß erfüllen.
- Klicken Sie auf keine Links, die nicht als vertrauenswürdig eingestuft werden können. Dies gilt insbesondere für Nachrichten von unbekannten Absendern. Bei Zweifeln sollte die Nachricht vorerst an Ihr Sicherheitsteam weitergeleitet werden, um diese überprüfen zu lassen.
Hinweis: Diese Empfehlungen stellen keine vollständige Liste dar. Sollten Sie unsicher sein, ob Sie und Ihre Firma gegen das Thema „Phishing“ oder „Smishing“ adäquat abgesichert sind, so kontaktieren Sie uns gerne – wir haben langjähre Erfahrung mit der Absicherung vor Phishing-Angriffen und bieten verschiedene Dienstleistungen auf technischer und personeller Ebene an. Hierzu gehören:
- Technische Untersuchung Ihrer Mailserver auf die Standhaftigkeit und Erkennungsfähigkeit von Phishing-Mails sowie Schadsoftware, inkl. eines Abschlussberichts mit Härtungsmaßnahmen und Einsicht, welche Angriffe erfolgreich waren.
- Simulation eines echten Phishing Angriffs, um zu untersuchen, wie leicht Ihre Mitarbeiter Opfer werden (auch anonymisierte Auswertung möglich). Unsere Angriffe können per E-Mail, Telefon oder physisch (z.B. infizierte Datenträger) durchgeführt werden.
- Weiterbildung Ihrer Mitarbeiter in Phishing Seminaren, um das Bewusstsein für Angriffe zu verbessern
- Periodische Wiederholung von simulierten Angriffen, um Verlaufswerte Ihrer Anti-Phishing Maßnahmen zu erhalten und die Effektivität der Maßnahmen zu untersuchen