In diesem Blogbeitrag beschäftigen wir uns mit Mispadu. Dieser bislang auf Lateinamerika abzielende Bankentrojaner nutz McDonalds-Malvertising und kompromittierte Webbrowser.
Wir glauben, dass die Malware-Familie eine breitere Öffentlichkeit erreichen soll. Die für Mispadu verantwortlichen Cyberkriminellen haben es auf Geld und Identitäten abgesehen. Ganz gezielt wurde in Brasilien eine Chrome Browser-Erweiterung gestreut, die Online-Banking und Kreditkartendaten stehlen soll und im speziellen das Boleto Zahlungssystem kompromittiert.
Charakterisierung des Mispadu Bankentrojaners
Mispadu ist eine Malware-Familie, die wir im Zuge unserer Nachforschungen zu lateinamerikanischen Bankentrojanern entdeckten. Momentan sind Mexiko und Brasilien von der Malware-Kampagne am meisten betroffen. Die Malware ist in Delphi geschrieben und attackiert den User auf vergleichbare Weise, wie wir sie bereits bei anderen Bankentrojanern sahen. Fake Pop-up Fenster und andere Methoden sollen das Opfer überzeugen, persönliche sensible Daten preiszugeben.
Mit Hilfe der Backdoor-Funktionen ist Mispadu in der Lage, Screenshots aufzunehmen, Keyboard- und Maus-Bewegungen zu simulieren und Tastatureingaben aufzuzeichnen. Außerdem kann die Schadsoftware sich selbst via Visual Basic Script (VBS) aktualisieren.
Wie auch bei anderen Bankentrojanern gesehen, sammelt Mispadu folgende Informationen über seine Opfer:
- Version des Betriebssystems
- Computer-Name
- Sprach-ID
- Ob Diebold Warsaw GAS Tecnologia (beliebte App in Brasilien, um den Zugang zum Online-Banking zu schützen) auf dem Computer installiert ist
- Liste von installierten lateinamerikanischen Banking-Apps
- Liste von installierten Antivirus-Programmen
Wie es bereits bei Amavaldo und Casbaneiro der Fall gewesen ist, lässt sich Mispadu anhand eines speziellen kryptografischen Algorithmus zum Verschleiern der Zeichenfolge im Code identifizieren. Dieser kommt bei allen Komponenten sowie zum Schutz der Konfigurationsdateien und der C&C-Serverkommunikation zum Einsatz. Abbildung 1 zeigt den Kerncode, der diesen Algorithmus implementiert, und Abbildung 2 den Pseudocode für den Algorithmus.
def decrypt_string(data_enc, key):
seed = data_enc[0] - 0x41 # 'A'
data_dec = str()
for i in range(1, len(data_enc), 2):
b1 = (data_enc[i] - 0x41) * 25
b2 = data_enc[i+1] - 0x41 - seed - key
data_dec += chr(b1 + b2)
return data_dec
Abbildung 2: Pseudocode des Mispadu Algorithmus zur Daten-Entschlüsselung
Die Bankingtrojaner .EXE enthält gleich vier potenziell unerwünschte Apps, die im Ressourcenbereich gespeichert sind. Es handelt sich bei den kleinen Programmen um eigentlich zulässige Software von Nirsoft. Die Cyberkriminellen veränderten die Programme aber so, dass sie ohne GUI über die Befehlszeile ausgeführt werden können. Mispadu verwendet diese, um gespeicherte Anmeldedaten aus den folgenden Quellen extrahieren zu können:
- Web-Browser: Google Chrome, Mozilla Firefox, Internet Explorer
- E-Mail-Clients: Microsoft Outlook, Mozilla Thunderbird, Windows Live Mail und andere
Die Malware überwacht weiterhin den Inhalt der Zwischenablage und versucht, wie Casbaniero, Bitcoin-Wallet-Adressen durch die von den Cyberkriminellen zu substituieren. Das war bislang allerdings nicht sehr erfolgreich, wie die nachfolgende Abbildung 3 zeigt:
Verbreitung von Mispadu
Der Mispadu Bankentrojaner setzt auf zwei Verteilungsmethoden: Spam (siehe Abbildung 4) und Malvertising. Im Gegensatz zur ersten Methode, ist die zweite – Malvertising – in Lateinamerika eher unüblich. Deshalb schauten wir uns diese genauer an. Die Abbildung 5 zeigt, wie ein Mispadu-Cyberangriff aufgebaut sein kann.
Die Cyberangreifer platzierten gesponserte Facebook Werbeanzeigen (Abbildung 6) in Brasilien. Diese offerierten gefälschte McDonald’s Coupons. Durch einen Klick auf die Anzeigen, gelangt das potenzielle Opfer auf eine der in Abbildung 7 gezeigten Webseiten. Dort sind Download-Button, die zu einer MSI-Datei in einem ZIP-Archiv führen. Das Ganze ist unabhängig vom Betriebssystem. Gelegentlich enthält das ZIP-Archiv auch legitime Software wie Mozilla Firefox oder PuTTY, allerdings dienen diese bloß einem Täuschungsmanöver.
Es existieren zwei unterschiedliche Mispadu Bankentrojaner. Die Malware-Entwickler kompilierten zwei Versionen, die je nach anvisiertem Land verteilt wurden. Außerdem fassten sie den Entschluss, unterschiedliche Installer und nachgelagerte Stages zu verwenden. Die Logik der Ausbringungsformen ist jedoch dieselbe und wird weiter unten beschrieben.
Wenn das potenzielle Opfer das MSI-Installationsprogramm ausführt, folgt eine Kette bestehend aus drei Skripten. Das erste Skript (Unpacker) entschlüsselt und führt das zweite Skript (Downloader) aus den eigenen Daten aus (siehe Abbildung 8). Das Download-Skript ruft das letzte auf (Loader) und führt es aus (Abbildung 9).
Das Loader Script gestaltet sich komplizierter als die ersten zwei Stufen. Es nimmt Bezug auf die Länderkennung des Opfers, um sicherzustellen, dass es tatsächlich aus dem Land kommt, das die Malware-Kampagne anvisiert (Brasilien oder Mexiko). Es kann auch einige virtuelle Umgebungen erkennen. Wird eine virtuelle Umgebung erkannt oder das gewünschte Gebietsschema nicht gefunden, wird der Loader beendet.
Ansonsten fährt das Script fort und richtet die Konfigurationsdateien ein (weiter unten mehr dazu) und lädt (i) den Mispadu Bankentrojaner, (ii) eine Injector-DLL zur Ausführung und (iii) legitime Programmbibliotheken herunter. Jede Datei wird als separates ZIP-File heruntergeladen, wie in Abbildung 5 gezeigt. Wir stellen den Pseudocode für den Entschlüsselungsalgorithmus in Abbildung 10 zur Verfügung.
def decrypt_payload(data_enc):
key = data_enc[0]
data_dec = str()
for i in range(1, len(data_enc)):
data_dec += chr(data_enc[i] - ((key + i - 1) % 10))
return data_dec
Abbildung 10: Pseudocode des Payload-Entschlüsselungsalgorithmus von Mispadu
Die Download-Server von Mispadu überprüfen die Gültigkeit der eingehenden Anfragen. Das Senden einer ungültigen Anfrage führt zu einer obszönen Bildantwort, die wir hier nicht darstellen möchten.
Am Schluss schafft das Loader Script noch Persistenz im System, in dem ein Link im Startup-Ordner angelegt wird. Der Injector wird mit Hilfe von rundll32.exe ausgeführt. Das erreicht man durch das Aufrufen einer aus der Injector-DLL stammenden Funktion, dessen Name aus einer der zuvor eingerichteten Konfigurationsdateien stammt. Der Injektor lokalisiert den verschlüsselten Banking-Trojaner, entschlüsselt ihn und führt ihn aus.
Wir fanden ein offenes Verzeichnis auf einem von Mispadu verwendeten Servern. Dort lagen Dateien gespeichert, die mit einer ähnlichen Malware-Kampagne verbunden waren. Mit Hilfe der dortigen Dateien konnte man eine Webseite erstellen, die AreaVIP (eine Boulevard-Website in Brasilien) imitiert, und um potenziellen Opfern ein gefälschtes Adobe Flash Player-Update unterzujubeln. Allerdings beobachteten wir eine solche Kampagne nicht und sind daher der Ansicht, dass es sich um ein Setup für die Zukunft gehandelt haben könnte.
Da die auf Brasilien abzielende Malware-Kampagne den URL Shortener Tiny.CC gebrauchte, waren wir in der Lage, ein paar Statistiken abzurufen. Wie in Abbildung 11 zu sehen, erreichte die Kampagne beinahe 100.000 Klicks allein von Brasilien aus. Die von Android ausgehenden Klicks sind höchstwahrscheinlich darauf zurückzuführen, dass die Werbung auf Facebook unabhängig vom Gerät des Benutzers angezeigt wird. Man kann auch sehen, dass die Kampagne noch einmal wiederkehrt - eine Phase endete in der zweiten Septemberhälfte 2019, um Anfang Oktober 2019 erneut aufzutreten.
Yandex.Mail Platform als Speicher für Schadcode
Sowohl die Spam-E-Mails als auch die falsche McDonald’s Landingpage haben mindestens einen weiteren Aspekt inne. Es geht dabei um woher die Fake Coupons heruntergeladen werden. Die Mispadu-Betreiber missbrauchten die russische Yandex.Mail-Plattform, um ihre Nutzlast zu speichern (siehe Abbildung 12). Wahrscheinlich legten die Cyberkriminellen ein Yandex.Mail-Account an und schickten sich den schädlichen „Coupon“ selbst als Mail, um einen Link zum Anhang zu generieren. Diesen direkten Link zum Schadcode verbreiteten sie dann unter den potenziellen Opfern.
Konfiguration von Mispadu
Die Verwendung der Konfigurationsdateien ist unter lateinamerikanischen Bankentrojanern sehr ungewöhnlich. Mispadu greift auf gleich drei unterschiedliche Dateien zurück und funktioniert ohne diese nicht. Alle Konfigurationsdateien sind entweder in dem zuvor beschriebenen Loader-Skript enthalten oder werden von diesem bezogen.
Die Ausführungskonfiguration von Mispadu wird ausschließlich mit Daten im Speicher versehen, die von einem der Download-Server (Remote-Server 1 in Abbildung 5) heruntergeladen wurden. Drei wichtige Informationen sind enthalten:
- Eine Zeichenfolge, die zum Erstellen der URL erforderlich ist, um den Injector herunterzuladen
- Der Name des Ordners, in dem die Malware installiert wird
- den Namen der exportierten Funktion des Injektors, die aufgerufen werden soll, damit der Bankentrojaner ausgeführt wird
Allgemeine Konfigurationsdaten werden unter C:\Users\Public\%COMPUTERNAME%[1] abgelegt, benannt nach dem zweiten Buchstaben des Computernamens des Opfers (Bei einem Computer mit dem Namen "JOHN-PC" würde die Datei den Namen "O" tragen). Der Ordner wird aus den im Loader-Skript und in der Ausführungskonfigurationsdatei enthaltenen Daten erstellt und enthält die Versionsinformationen, den kryptografischen Schlüssel und die Dateisystempfade.
Die C&C-Konfigurationsdaten werden in einer Datei am selben Speicherort wie die vorherige unter demselben Dateinamen mit dem Zusatz "_" gespeichert (wenn man bei unserem Beispiel bleibt, trägt die Datei dann den Namen "O_"). Die Datei beinhaltet:
- #ip# (Diesen Platzhalter für eine IP-Adresse verwendet der Bankentrojaner zum Empfangen von Backdoor-Befehlen)
- #wp[1-3]# (Ein Platzhalter für drei Ports, die in Verbindung mit #ip# stehen)
- Zwei Listen mit jeweils 31 Domains (Eine „Haupt-Liste“ und eine „Backup-Liste“)
Aus den eben genannten Listen wählt Mispadu die Haupt- und Backup-C&C-Serverdomain, basierend auf dem aktuellen Tag des Monats. Im Anschluss versucht die Malware alle paar Stunden die C&C-Konfigurationsdatei-Version zu aktualisieren. Wir glauben, dass man mit diesem Ansatz die Idee verfolgt, die Platzhalter mit Befehlen zu befüllen, um die Backdoor-Funktionen zu aktivieren.
Chrome Browser vor schädlicher Mispadu Erweiterung schützen
Generell ist es eine gute Idee, den Chrome Browser zusätzlich abzusichern – allerdings nicht mit der schädlichen Google Chrome Browser-Erweiterung, die in Verbindung mit dem Mispadu Bankentrojaner in Brasilien (Abb. 13) verbreitet wurde. Die Extension (Abb. 14), bezeichnet als “Securty [sic] System 1.0”, verspricht, den Chrome Browser zu schützen ("Protege seu Chrome"). Stattdessen besteht sie aus drei schädlichen JavaScript-Dateien, die wir nachfolgend beschreiben.
-
Komponente: Windows-Manipulation
Die einfachste Komponente besitzt nur eine einzige Funktion. Sie öffnet ein neues Google Chrome Fenster und schließt die anderen. Diese Komponente war nicht in allen Malware-Samples zu finden, weshalb wir davon ausgehen, dass sie noch in der Entwicklungsphase steckt.
-
Komponente: Diebstahl von Kreditkartendaten
Die zweite Komponente beinhaltet eine festcodierte Liste von Webseiten. Auf Sites, die von der Webseite ausgegeben werden, sucht das Skript nach Eingabe-Feldern die “text”, “email”, “tel”, “number”, “password” oder “radio”enthalten. Werden “CVV”, “CÓD SEG” oder andere Varianten davon auf der Website gefunden, übermittelt das Skript die Eingaben dieser Input-Felder an die Cyberangreifer. Hier zeigt sich schon deutlich eine Absicht der schädlichen Erweiterung – den Diebstahl von Kreditkartendaten.
-
Komponente: Diebstahl von Online-Banking und Boleto Daten
Die dritte Komponente ist am fortschrittlichsten. Zunächst werden mit einem DGS-ähnlichen Algorithmus zwei Zeichenfolgen basierend auf dem aktuellen Tag des Monats und der Monatsnummer generiert. Diese Zeichenfolgen verwendet das Script dann, um eine GitHub-URL in nachfolgender Form zu bilden: https://raw.githubusercontent.com/%FIRST_STRING%/w/master/%SECOND_STRING%, wobei %FIRST_STRING% einen GitHub Username darstellt. Von der generierten URL heruntergeladene Daten werden in eine andere URL entschlüsselt, die wir Payload-URL nennen.
Die Komponente enthält eine hartcodierte Liste mit Zielwebseiten, wie schon die vorherige. Besucht ein Opfer eine der gelisteten Zielwebseiten, wird über die Payload-URL ein für diese Webseite spezifisches JavaScript angefordert und mit Hilfe der eval-Funktion dynamisch nachgeladen.
Daneben versucht die Komponente auch das bekannte brasilianische Zahlungssystem Boleto zu kompromittieren. Das System befindet sich bereits seit geraumer Zeit im Visier von Cyberangreifern (mehr darüber in diesem Whitepaper von 2014). Um mit diesem System bezahlen zu können, muss man ein Ticket (Boleto) ausdrucken. Dieses enthält hauptsächlich eine ID-Nummer für das Bankkonto, auf das die Zahlung eingehen soll, sowie einen Barcode (siehe Abbildung 15). Die Zahlung erfolgt entweder durch Scannen des Barcodes oder durch manuelle Eingabe der ID-Nummer.
Mit Hilfe von Regex versucht die Malware die ID-Nummer aufzuspüren und mit der ID der Cyberangreifer (dynamisch nachgeladen) zu ersetzen. Zusätzlich missbraucht Mispadu eine legitime Webseite, um einen Zahlungsbarcode (enthält die Kontonummer der Angreifer) zu generieren und letztendlich mit der vom User angegeben Kontonummer im Hintergrund zu ersetzen. Der für die Boleto-Kompromittierung verantwortliche Code ist in Abbildung 16 dargestellt.
Unterschiede zwischen den Kampagnen
Abgesehen von den bereits erwähnten Unterschieden und der offensichtlichen Tatsache, dass jede Variante des Mispadu Bankentrojaners auf eine andere Bank abzielt (wohnsitzabhängig), unterscheidet sich die brasilianische Kampagne von der mexikanischen in mehreren anderen geringfügigen Aspekten.
Es scheint, als seien die Dateisystempfade und Dateinamen, in denen die Konfigurationsdateien und in denen die Bankentrojaner gespeichert sind, randomisiert. Darüber hinaus enthält das Loader-Skript einen bis zum Zeitpunkt des Verfassens dieses Beitrags nicht verwendeten Teil. Dieser ist allerdings soweit entwickelt, dass anstelle von rundll32.exe die Windows mshta.exe zum Ausführen des Bankentrojaners verwendet werden könnte.
Fazit
Dieser Blogbeitrag handelt von Mispadu, einer weiteren lateinamerikanischen Bankentrojaner-Familie, die wir während unserer Untersuchungen entdeckten. Wir zeigten charakteristische Merkmale der Malware und warum wir glauben, dass es ein Bankentrojaner aus Lateinamerika ist – geschrieben in Delphi, zielt auf Mexiko und Brasilien ab, benutzt Pop-up-Fenster und implementiert Backdoor-Funktionen.
Wir beschrieben die jüngste Vertriebskette und fokussierten uns auf einige interessante Aspekte, wie den Missbrauch von Yandex.Mail, um schädlichen Code extern zu speichern sowie den Einsatz von heimtückischen Facebook Werbeanzeigen. Außerdem analysierten wir die Konfigurationsdateien von Mispadu.
Zusätzlich diskutierten wir den Einsatz einer schädlichen Google Chrome-Erweiterung, welche die Mispadu Cyberkriminellen in Brasilien streuten. Das Ziel der Erweiterung: Kreditkartendaten und andere sensible Banking-Informationen stehlen und versuchen, das Boleto Zahlungssystem zu kompromittieren, um Geld von den Opfern zu ergaunern.
Fragen und Hinweise senden Sie bitte an threatintel@eset.com. Die IoCs finden Sie auch in unserem GitHub-Repository.
Indicators of Compromise (IoCs)
Hashes
Brazilian campaign
SHA-1 | Description | ESET detection name |
---|---|---|
A4EDA0DD2C33A644FEEF170F5C24CF7595C19017 | MSI installer | VBS/TrojanDownloader.Agent.RVY |
A9BADCBF3BD5C22EEB6FAF7DB8FC0A24CF18D121 | Mispadu injector | Win32/Injector.EHXF |
337892E76F3B2DF0CA851CCF4479E56EAF2DB8FD | Mispadu banking trojan (PE compilation timestamp 8 Sep, 2019) | Win32/Spy.Mispadu.C |
A8CD12CC0BBD06F14AA136EA5A9A2E299E450B18 | Mispadu banking trojan (PE compilation timestamp 2 Oct, 2019) | Win32/Spy.Mispadu.C |
Mexican campaign
SHA-1 | Description | ESET detection name |
---|---|---|
CFE21DBFB97C2E93F099D351DE54099A3FC0C98B | MSI installer | VBS/TrojanDownloader.Agent.RVY |
251AC7386D1B376FB1CB0E02BDFC45472387C7BC | Mispadu injector | Win32/Injector.EHXF |
A4FC4162162A02CE6FEADFE07B22465686A0EC39 | Mispadu banking trojan (PE compilation timestamp 10 Sep, 2019) | Win32/Spy.Mispadu.J |
710A20230B9774B3D725539385D714B2F80A5599 | Mispadu banking trojan (PE compilation timestamp 11 Sep, 2019) | Win32/Spy.Mispadu.J |
Google Chrome extension
SHA-1 | Description | ESET detection name |
---|---|---|
3486F6F21034A33C5425A398839DE80AC88FECA8 | Component 1 (manipulating windows) | JS/Spy.Banker.DQ |
1D19191FB2E9DED396B6352CBF5A6746193D05E8 | Component 2 (credit cards) | JS/Spy.Banker.DQ |
22E6EBDFAB7C2B07FF8748AFE264737C8260E81E | Component 3 (banking and Boleto data) | JS/Spy.Banker.DQ |
Potentially unwanted applications for credential theft
SHA-1 | Description | ESET detection name |
---|---|---|
63DCBE2DB9CC14564EB84D5E953F2F9F5C54ACD9 | Email client credential stealer | Win32/PSWTool.MailPassView.E |
8B950BF660AA7B5FB619E1F6E665D348BF56C86A | Google Chrome credential stealer | Win32/PSWTool.ChromePass.A |
F6021380AD6E26038B5629189A7ADA5E0022C313 | Mozilla Firefox credential stealer | Win32/PSWTool.PassFox.F |
76F70276EB95FFEC876010211B7198BCBC460646 | Internet Explorer credential stealer | Win32/PSWTool.IEPassView.NAH |
Filenames
- C:\Users\Public\%COMPUTERNAME%[1]
- C:\Users\Public\%COMPUTERNAME%[1]_
- C:\Users\Public\{winx86,libeay32,ssleay32}.dll (legitimate DLLs downloaded by the loader script; partial indicator)
Servers used
- http://18.219.25[.]133/br/mp1a{1,sq,sl,ss}.aj5
- http://3.19.223[.]147/br/mp1a{1,sq,sl,ss}.aj5
- http://51.75.95[.]179/la8a{1,sq,sl,ss}.ay2
Discount coupon URLs
- Brazil
- http://promoscupom[.]cf/
- http://mcdonalds.promoscupom[.]cf/index3.html
- Mexico
- http://mcdonalds.promoscupom[.]cf/index2.html
Bitcoin wallet
- 3QWffRcMw6mmwv4dCyYZsXYFq7Le9jpuWc
MITRE ATT&CK techniques
Tactic | ID | Name | Description |
---|---|---|---|
Initial Access | T1192 | Spearphishing Link | In Mispadu spam campaigns, the victim is led to the payload by a malicious link. |
Execution | T1085 | Rundll32 | Mispadu banking trojan is executed by an injector that is run via rundll32.exe. |
Persistence | T1176 | Browser Extensions | Mispadu variant targeting Brazil utilizes a Google Chrome browser extension. |
T1060 | Registry Run Keys / Startup Folder | Mispadu ensures persistence by creating a link in the startup folder. | |
Defense Evasion | T1140 | Deobfuscate/Decode Files or Information | Mispadu uses encoded configuration files. |
T1036 | Masquerading | Mispadu masquerades as a discount coupon. | |
T1064 | Scripting | Mispadu utilizes VBS exclusively in its distribution chains. | |
Credential Access | T1056 | Input Capture | Mispadu may execute a keylogger. Its Google Chrome extension tries to steal various sensitive information via input capturing. |
T1081 | Credentials in Files | Mispadu uses other tools to extract credentials for email clients and web browsers from files. | |
T1214 | Credentials in Registry | Mispadu uses other tools to extract credentials for email clients and web browsers from the Windows Registry. | |
Discovery | T1083 | File and Directory Discovery | Mispadu searches for various filesystem paths in order to determine what applications are installed on the victim's machine. |
T1057 | Process Discovery | Mispadu searches for various process names in order to determine what applications are running on the victim's machine. | |
T1063 | Security Software Discovery | Mispadu scans the system for installed security software. | |
T1082 | System Information Discovery | Mispadu extracts the version of the operating system, computer name and language ID. | |
Collection | T1115 | Clipboard Data | Mispadu captures and replaces bitcoin wallets in the clipboard. |
T1113 | Screen Capture | Mispadu contains a command to take screenshots. | |
Command and Control | T1024 | Custom Cryptographic Protocol | Mispadu uses a custom cryptographic protocol to protect its data. |
Exfiltration | T1041 | Exfiltration Over Command and Control Channel | Mispadu sends the data it collects to its C&C server. |