Vadokrist ist ein lateinamerikanischer Banking-Trojaner, den ESET seit 2018 beobachtet und der fast ausschließlich in Brasilien aktiv ist. In diesem Teil unserer Serie untersuchen wir seine Hauptmerkmale und einige Verbindungen zu anderen lateinamerikanischen Banking-Trojaner-Familien.

Vadokrist teilt einige wichtige Merkmale mit Trojaner-Familien, die wir in vorherigen Artikeln der Serie beschrieben haben, nämlich Amavaldo, Casbaneiro, Grandoreiro und Mekotio. Wir haben kürzlich ein Whitepaper veröffentlicht, das die Ähnlichkeiten zwischen lateinamerikanischen Bankentrojanern dokumentier. Diese Artikel-Reihe konzentriert sich dagegen mehr auf die detaillierte Analyse einer bestimmten Trojaner-Familie.

Charakteristische Eigenschaften

Vadokrist ist in Delphi geschrieben. Eines der bemerkenswertesten Merkmale ist die ungewöhnlich große Menge an nicht verwendetem Code in den Binärdateien. Nach genauerer Prüfung glauben wir, dass dies ein Versuch ist, die Erkennung zu vermeiden und davon abzubringen oder die Analyse zu verlangsamen. Wir konnten einen Teil des Codes mit vorhandenen Delphi-Projekten wie QuickReport verknüpfen.

Vadokrist speichert Zeichenfolgen in Zeichenfolgentabellen. Früher enthielt es eine mit Casbaneiro identische Implementierung einer Zeichenfolgentabelle (siehe Abbildung 1). Einige neuere Versionen dieses Banking-Trojaners verwendeten jedoch mehrere Zeichenfolgentabellen, jede für einen anderen Zweck (Liste der Ziele, allgemeine Konfiguration, Backdoor-Befehlsnamen usw.).

Abbildung 1. Implementierung einer Zeichenfolgentabelle in früheren Vadokrist-Binärdateien

Die überwiegende Mehrheit der lateinamerikanischen Bankentrojaner sammelt beim ersten Start Informationen über den Computer des Opfers (normalerweise den Computernamen und die Version des Windows-Betriebssystems). Die einzige Information, die Vadokrist sammelt, ist der Benutzername des Opfers. Dies geschieht erst, nach der Initiierung eines Angriffs auf ein Finanzinstitut und nicht, wie bei den meisten anderen lateinamerikanischen Banking-Trojanern, zur Installationszeit.

Um die Persistenz sicherzustellen, verwendet Vadokrist entweder einen Run-Key oder erstellt eine LNK-Datei im Startordner.

Die Backdoor-Funktionen sind typisch für diese Art von Malware. Sie kann die Maus manipulieren und Tastatureingaben simulieren, Tastenanschläge protokollieren, Screenshots machen und den Computer neu starten. Sie ist auch in der Lage, den Zugriff auf einige Websites zu verhindern, was auf ziemlich ungeschickte Weise geschieht, indem der Browserprozess abgebrochen wird, wenn das Opfer versucht, solche Websites zu besuchen. Wir glauben, dass diese Technik verwendet wird, um zu verhindern, dass die Opfer auf ihre Online-Banking-Konten zugreifen, sobald sie von den Angreifern kompromittiert wurden. Es soll den Kriminellen dabei helfen, die Kontrolle zu behalten.

Kryptographie

Die Mehrheit der Vadokrist-Binärdateien implementiert einen kryptografischen Algorithmus, den wir auch in anderen lateinamerikanischen Bankentrojanern (nämlich Amavaldo und Casbaneiro) gesehen und TripleKey genannt haben. Vadokrist verwendet diesen Algorithmus, um seine Zeichenfolgen und gelegentlich auch Nutzdaten und Remote-Konfigurationen zu schützen (wir werden uns später eingehender mit diesem Thema befassen). Aus Gründen der Übersichtlichkeit haben wir den Algorithmus in Python implementiert (siehe Abbildung 2).

def decrypt_payload(data_enc, key1, key2, key3):
    data_dec = str()

    for c in data_enc:
		x = data_enc[i] ^ (key3 >> 8) & 0xFF
		data_dec += chr(x)
		key3 = ((x + key3) & 0xFF) * key1 + key2

    return data_dec

def decrypt_string(data_enc, key1, key2, key3):
    data_dec = str()

    for c in data_enc:
		x = data_enc[i] ^ (key3 >> 8) & 0xFF
		data_dec += chr(x)
		key3 = ((data_enc[i] + key3) & 0xFFFF) * key1 + key2

    return data_dec

Abbildung 2. TripleKey-Verschlüsselungsschema, das von Vadokrist zum Schutz von Zeichenfolgen, Nutzdaten und Remote-Konfigurationen verwendet wird

Außerdem haben wir gesehen, dass Vadokrist in einigen seiner jüngsten Binärdateien RC4 und, in der Vergangenheit, auch in TwoFish verwendet hat. Dies ist unter lateinamerikanischen Bankentrojanern ziemlich selten, da die meisten von ihnen niemals allgemein bekannte kryptografische Algorithmen verwenden.

Malware-Distribution

MSI-Überlastung

Aktuelle Spam-E-Mails, die Vadokrist verteilen, enthalten zwei verschachtelte ZIP-Archive, die zwei Dateien enthalten - ein MSI-Installationsprogramm und ein CAB-Archiv. Wenn ein Opfer das MSI-Installationsprogramm ausführt, sucht es das CAB-Archiv und extrahiert seinen Inhalt (einen MSI-Loader) auf die Festplatte. Anschließend wird eine eingebettete JavaScript-Datei ausgeführt, die einen Run-Key-Eintrag hinzufügt, um sicherzustellen, dass der MSI-Loader beim Systemstart ausgeführt wird. Schließlich startet das Skript den Computer neu. Beim Start führt der MSI-Loader eine eingebettete DLL aus - den Vadokrist-Banking-Trojaner. Der gesamte Vorgang ist in Abbildung 3 dargestellt. Beachten Sie, dass kein tatsächlicher Downloader vorhanden ist. Der Banking-Trojaner wird direkt über diese Spam-E-Mails verteilt.

Abbildung 3. In der letzten Zeit von Vadokrist verwendete Ausführungskette

Die JavaScript-Datei ist wegen ihrer Verschleierungtaktik erwähnenswert. Sie nutzt die Funktionsweise des Kommaoperators (,) in JavaScript aus, um die Lesbarkeit erheblich zu verringern und möglicherweise die Emulation zu umgehen. Auf ähnliche Weise werden Bedingungen mit dem logischen AND-Operator (&&) verschleiert. Abbildung 4 zeigt ein Beispiel dafür.

Abbildung 4. Von Vadokrist verwendetes JavaScript-Installationsprogramm. Der untere Teil zeigt das Skript mit transformierten Operatoren zur besseren Lesbarkeit.

Ältere Distributions- und Ausführungstechniken

Wir beobachteten bei Vadokrist, wie bei den meisten anderen lateinamerikanischen Bankentrojaner, mehrere Implementierungen der typischen Vertriebskette. Wir werden hier nicht alle behandeln, aber zwei sind erwähnenswert. Wir haben gesehen, dass Vadokrist einen Delphi-Downloader mit Grandoreiro und eine ganze Vertriebskette mit Mekotio geteilt hat - tatsächlich die, die in unserem Blogpost über Mekotio als Kette 1 markiert ist.

Vadokrist verlässt sich gelegentlich auf das Laden von DLL-Seiten mit einem bestimmten Injektor, um den Banking-Trojaner zu entschlüsseln und auszuführen. Dieser Injektor ist identisch mit dem von Amavaldo verwendeten und implementiert den oben genannten TripleKey-Algorithmus zur Datenentschlüsselung.

Remote-Konfiguration

Vadokrist verwendet die Remote-Konfiguration sowohl in Downloadern als auch im eigentlichen Banking-Trojaner, der normalerweise auf öffentlichen Speicherdiensten wie GitHub gehostet wird.

Die Konfigurationsdatei wird normalerweise entweder mit TripleKey oder RC4 verschlüsselt. In Abbildung 5 sehen Sie, dass die Daten in beiden Fällen ohne zusätzliches Wissen entschlüsselt werden können. Bei der TripleKey-Methode können wir alle drei Schlüssel aus dem Ende der Zeichenfolge extrahieren und bei RC4 leiten wir den Schlüssel aus dem Passwort ab. Im letzteren Fall werden die verschlüsselten Daten weiter von base64 codiert.

Das Trennzeichen ändert sich auch von Zeit zu Zeit. Bisher wurden drei verschiedene Zeichen verwendet: "|", "!" und "/".

Abbildung 5. Von Vadokrist verwendete verschlüsselte Remote-Konfigurationsdateien

Nachdem wir nun wissen, wie die Konfigurationsdatei entschlüsselt wird, untersuchen wir ihren Inhalt. Im Fall des Banking-Trojaners ist das Ergebnis leicht zu verstehen, da es sich um die IP-Adresse eines C&C-Servers handelt. Für Downloader ist das Format etwas komplexer, wie in Abbildung 6 dargestellt.

Abbildung 6. Verschiedene Formate der Remote-Konfiguration, die von Vadokrist-Downloadern verwendet werden

Zur Vereinfachung betrachten wir eine Konfiguration mit einer optionalen ID und sechs Feldern:

  • [obligatorisch] Die URL, von der der Banking-Trojaner heruntergeladen werden soll
  • [optional] Spezialordner (erster Teil des Installationspfads)
  • [optional] Installations-Flag (unten beschrieben)
  • [optional] Pfad (zweiter Teil des Installationspfads)
  • [optional] Dateiname (dritter und letzter Teil des Installationspfads)
  • [obligatorisch] Benachrichtigungs-URL

Zwei dieser Felder müssen möglicherweise näher erläutert werden. Wenn das Installations-Flag auf "T" gesetzt ist, werden alle drei Teile des Installationspfads verwendet. Andernfalls wird der erste ignoriert. An die Benachrichtigungs-URL wird nur gesendet, ob eine Anwendung namens Core.exe ausgeführt wird - eine Prüfung, die von anderen lateinamerikanischen Bankentrojanern bekannt ist, die versuchen, das Vorhandensein der Betrugsbekämpfungssoftware Warsaw GAS Tecnologia festzustellen.

Man sieht, dass die erste Variante alle Felder verwendet, die zweite nicht die ID und die dritte nur die beiden obligatorischen URL-Felder nutzt. Die Verwendung des Trennzeichens ist hier etwas komplexer, da ein Trennzeichen zum Trennen verschiedener Einträge und ein anderes zum Trennen von Feldern eines Eintrags verwendet wird. Außerdem können Sie sehen, dass sich die Trennzeichen auch hier ändern.

Das sich dynamisch ändernde Format der Konfigurationsdatei zeigt an, dass Vadokrist aktiv und kontinuierlich weiterentwickelt wird.

Fazit

In diesem Artikel haben wir Vadokrist analysiert, einen lateinamerikanischen Bankentrojaner, der hauptsächlich in Brasilien im Einsatz ist. Wir haben gezeigt, dass er typische Merkmale eines lateinamerikanischen Bankentrojaners aufweist - er ist in Delphi geschrieben, bietet Backdoor-Funktionen und zielt auf Finanzinstitute ab. Der Hauptunterschied von der typischen Implementierung besteht darin, dass keine Informationen über Opfer direkt nach erfolgreicher Kompromittierung ihrer Maschinen erfasst werden.

Wir haben die Verschlüsselungsschemata, Verteilungs- und Ausführungsmethoden und Remote-Konfigurationsformate behandelt. Vadokrist scheint mit den lateinamerikanischen Banking-Trojanern Amavaldo, Casbaneiro, Grandoreiro und Mekotio verbunden zu sein, die in früheren Artikeln unserer Serie beschrieben wurden.

Bei Fragen kontaktieren Sie uns unter threatintel@eset.com. Kompromissindikatoren finden Sie auch in unserem GitHub-Repository.

Indicators of Compromise (IoCs)

Hashes

Campaign “MSI overload”

SHA-1 Description ESET detection name
D8C6DDACC42645DF0F760489C5A4C3AA686998A1 MSI installer JS/TrojanDownloader.Banload.ABD
01ECACF490F303891118893242F5600EF9154184 MSI loader Win32/Spy.Vadokrist.T
F81A58C11AF26BDAFAC1EB2DD1D468C5A80F8F28 Vadokrist banking trojan Win32/Spy.Vadokrist.T

Other

SHA-1 Description ESET detection name
8D7E133530E4CCECE9CD4FD8C544E0913D26FE4B Vadokrist banking trojan Win32/Spy.Vadokrist.AF
AD4289E61642A4A724C9F44356540DF76A35B741 Vadokrist banking trojan Win32/Spy.Vadokrist.T
BD71A9D09F7E445BE5ACDF412657C8CFCE0F717D Vadokrist banking trojan Win32/Spy.Vadokrist.AD
06C0A039DEDBEF4B9013F8A35AACD7F33CD47524 Downloader (MSI/JS) JS/TrojanDownloader.Banload.AAO
FADA4C27B78DDE798F1E917F82226B983C5B74D8 Downloader (Delphi) Win32/Spy.Vadokrist.Y
525FCAA13E3867B58E442B4B1B612664AFB5A5C0 Injector shared with Amavaldo Win32/Spy.Amavaldo.L

Recent C&C servers

  • 104.41.26[.]216
  • 104.41.41[.]216
  • 104.41.47[.]53
  • 191.232.212[.]242
  • 191.232.243[.]100
  • 191.235.78[.]249
  • 191.237.255[.]155
  • 191.239.244[.]141
  • 191.239.245[.]87
  • 191.239.255[.]102

MITRE ATT&CK techniques

Note: This table was built using version 8 of the MITRE ATT&CK framework.

Tactic ID Name Description
Resource Development T1583.001 Acquire Infrastructure: Domains Vadokrist registers its own domains to be used as C&C servers.
T1587.001 Develop Capabilities: Malware Vadokrist is operated by the same group that develops it.
Initial Access T1566.001 Phishing: Spearphishing Attachment Vadokrist is distributed as a spam attachment.
Execution T1059.001 Command and Scripting Interpreter: PowerShell Vadokrist uses PowerShell in some distribution chains.
T1059.005 Command and Scripting Interpreter: Visual Basic Vadokrist uses VBScript in some distribution chains.
T1059.007 Command and Scripting Interpreter: JavaScript/JScript Vadokrist uses JavaScript in its recent distribution chains.
T1204.002 User Execution: Malicious File Vadokrist relies on the user to execute the malicious binary.
Persistence T1547.001 Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder Vadokrist ensures persistence via Run key or LNK file in the startup folder.
Defense Evasion T1140 Deobfuscate/Decode Files or Information Vadokrist is often distributed encrypted and encrypts its remote configuration.
T1574.002 Hijack Execution Flow: DLL Side-Loading Vadokrist is sometimes executed by this technique.
T1036.005 Masquerading: Match Legitimate Name or Location Vadokrist masquerades as legitimate software.
T1218.007 Signed Binary Proxy Execution: Msiexec Vadokrist uses the MSI format for execution.
Credential Access T1056.001 Input Capture: Keylogging Vadokrist can capture keystrokes.
Discovery T1010 Application Window Discovery Vadokrist looks for bank-related windows based on their names.
T1057 Process Discovery Vadokrist tries to discover anti-fraud software by process name.
T1082 System Information Discovery Vadokrist discovers victim’s username.
T1113 Screen Capture Vadokrist can take screenshots.
Command and Control T1132.002 Data Encoding: Non-Standard Encoding Vadokrist communicates via a custom protocol encrypted with the TripleKey algorithm.
Exfiltration T1041 Exfiltration Over C2 Channel Vadokrist exfiltrates data via C&C server.