Vadokrist est un cheval de Troie bancaire latino-américain qu'ESET traque depuis 2018 et qui est actif presque exclusivement au Brésil. Dans cette partie de notre série, nous examinons ses principales caractéristiques et certains liens avec d'autres familles de chevaux de Troie bancaires latino-américains.

Vadokrist partage plusieurs caractéristiques importantes avec les familles que nous avons décrites précédemment dans la série, à savoir Amavaldo, Casbaneiro, Grandoreiro et Mekotio. Nous avons récemment publié un white paper consacré à la documentation des similitudes entre les chevaux de Troie bancaires latino-américains, alors que cette série de blogs se concentre davantage sur l'analyse détaillée d'une famille à la fois.

Caractéristiques

Vadokrist est écrit en Delphi. L'une des caractéristiques les plus remarquables est la quantité inhabituellement importante de code inutilisé dans les binaires. Après un examen plus approfondi, nous pensons qu'il s'agit d'une tentative d'échapper à la détection et de dissuader ou de ralentir l'analyse. Nous avons pu relier une partie du code à des projets Delphi existants, tels que QuickReport.

Vadokrist stocke les chaînes de caractères dans des tables de chaînes. Il contenait auparavant une implémentation d'une table de chaînes identique à celle de Casbaneiro (illustrée dans la figure 1). Cependant, certaines versions récentes de ce cheval de Troie bancaire sont passées à l'utilisation de plusieurs tables de chaînes, chacune ayant un objectif différent (liste de cibles, configuration générale, noms de commandes de backdoor, etc.)

Figure 1. Implémentation des tables de chaînes dans les binaires Vadokrist précédents

La grande majorité des chevaux de Troie bancaires latino-américains collectent des informations sur la machine victime (généralement le nom de l'ordinateur et la version du système d'exploitation Windows) lors de la première exécution. La seule information que Vadokrist collecte est le nom d'utilisateur de la victime et il ne le fait qu'après avoir lancé une attaque sur une institution financière ciblée, et non, comme la plupart des autres chevaux de Troie bancaires latino-américains, au moment de l'installation.

Pour assurer la persistance, Vadokrist utilise soit une clé d'exécution, soit il crée un fichier LNK dans le dossier de démarrage.

Ses capacités de porte dérobée sont typiques de ce type de menace, pouvant manipuler la souris et simuler une saisie au clavier, enregistrer les frappes, prendre des captures d'écran et redémarrer la machine. Il est également capable d'empêcher l'accès à certains sites web, ce qu'il fait de manière assez maladroite en tuant le processus de navigation lorsque la victime tente de visiter ces sites. Nous pensons que cette technique est utilisée pour empêcher les victimes d'accéder à leur compte bancaire en ligne une fois que les attaquants l'ont compromis, ce qui leur permet de garder le contrôle.

Cryptographie

La majorité des binaires de Vadokrist mettent en œuvre un algorithme cryptographique que nous avons vu dans d'autres chevaux de Troie bancaires d'Amérique latine (à savoir Amavaldo et Casbaneiro) que nous avons appelé TripleKey. Vadokrist utilise cet algorithme pour protéger ses chaînes de caractères, et parfois aussi les charges utiles et les configurations distantes (nous approfondirons ce sujet plus loin). Pour plus de clarté, nous avons implémenté l'algorithme en Python, comme le montre la figure 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

Figure 2. Schéma de chiffrement TripleKey utilisé par Vadokrist pour protéger les chaînes de caractères, les charges utiles et les configurations distantes

En outre, nous avons vu Vadokrist utiliser RC4 dans certains de ses binaires récents et, dans le passé, TwoFish également. C'est assez rare parmi les chevaux de Troie bancaires d'Amérique latine, car la plupart d'entre eux n'utilisent jamais les algorithmes de chifrrement généralement connus.

Distribution

Surcharge du MSI

Les récents courriels de spam distribuant Vadokrist contiennent deux archives ZIP imbriquées qui contiennent deux fichiers - un installateur MSI et une archive CAB. Si une victime exécute l'installateur MSI, elle localise l'archive CAB et extrait son contenu (un chargeur MSI) sur le disque. Elle exécute ensuite un fichier JavaScript intégré qui ajoute une entrée de clé Run, en s'assurant que le chargeur MSI est exécuté au démarrage du système. Enfin, le script redémarre la machine. Au démarrage, le chargeur MSI exécute une DLL intégrée - le cheval de Troie bancaire Vadokrist. L'ensemble du processus est illustré à la figure 3. Remarquez qu'aucun téléchargeur n'est réellement en place. Le cheval de Troie bancaire est distribué directement par ces spams.

Figure 3. Chaîne d'exécution récemment utilisée par Vadokrist

Le fichier JavaScript mérite d'être mentionné en raison de son obscurcissement. Il exploite la façon dont l'opérateur de virgule (,) fonctionne en JavaScript et en abuse pour réduire considérablement la lisibilité et éventuellement contourner l'émulation. Il obscurcit les conditions en utilisant l'opérateur logique AND (&&) de la même manière. Vous pouvez voir un exemple de ceci à la figure 4.

Figure 4. Installateur JavaScript utilisé par Vadokrist. La partie inférieure montre le script avec des opérateurs transformés pour une meilleure lisibilité

Anciennes techniques de distribution et d'exécution

Nous avons observé que Vadokrist, comme la plupart des autres chevaux de Troie bancaires latino-américains, utilisait plusieurs implémentations de la chaîne de distribution typique. Nous ne les couvrirons pas toutes, mais deux d'entre elles méritent d'être mentionnées. Nous avons vu Vadokrist partager un téléchargeur Delphi avec Grandoreiro et toute une chaîne de distribution avec Mekotio - en fait, celle marquée comme chaîne 1 dans notre article sur Mekotio.

Vadokrist utilise parfois la DLL à chargement latéral avec un injecteur spécifique pour déchiffrer et exécuter le cheval de Troie bancaire. Cet injecteur est identique à celui utilisé par Amavaldo et implémente l'algorithme TripleKey susmentionné pour le déchiffrement des données.

Configuration à distance

Vadokrist utilise la configuration à distance à la fois dans les téléchargeurs et le cheval de Troie bancaire réel, généralement hébergé sur des services de stockage publics tels que GitHub.

Le fichier de configuration est généralement chiffré, soit par TripleKey soit par RC4. La figure 5 montre que dans les deux cas, les données peuvent être déchiffrées sans connaissance supplémentaire - dans le cas de la méthode TripleKey, nous pouvons extraire les trois clés de la fin de la chaîne et dans le cas de la RC4, nous pouvons dériver la clé du mot de passe. Dans le cas de ce dernier, les données chiffrées sont ensuite codées par base64.

Le délimiteur change également de temps en temps. Jusqu'à présent, nous avons vu trois caractères différents utilisés : « | », « ! » et « / ».

Figure 5. Fichiers de configuration distants chiffrés utilisés par Vadokrist

Maintenant que nous savons comment déchiffrer le fichier de configuration, examinons son contenu. Dans le cas du cheval de Troie bancaire, le résultat est facile à comprendre, puisqu'il s'agit de l'adresse IP d'un serveur C&C. Pour les téléchargeurs, le format est un peu plus complexe, comme l'illustre la figure 6.

Figure 6. Les différents formats de configuration à distance utilisés par les téléchargeurs de Vadokrist

Pour simplifier, nous reconnaissons une configuration avec un identifiant optionnel et six champs :

  • [obligatoire] L'URL pour télécharger le cheval de Troie bancaire
  • [facultatif] Dossier spécial (première partie du chemin d'installation)
  • [facultatif] Drapeau d'installation (décrit ci-dessous)
  • [facultatif] Chemin (deuxième partie du chemin d'installation)
  • [facultatif] Nom de fichier (troisième et dernière partie du chemin d'installation)
  • [obligatoire] URL de notification

Deux de ces champs peuvent nécessiter des explications supplémentaires. Si le drapeau d'installation est ajusté sur les « T ». Les trois parties du chemin d'installation seront utilisées; sinon, la première sera ignorée. La seule chose qui est envoyée à l'URL de notification est de savoir si une application Core.exe est en cours d'exécution - une vérification bien connue des autres chevaux de Troie bancaires d'Amérique latine qui tentent de détecter la présence du logiciel anti-fraude Warsaw GAS Tecnologia.

Vous pouvez voir que la première variante utilise tous les champs, la seconde n'utilise pas l'ID, et la troisième n'utilise que les deux champs obligatoires de l'URL. L'utilisation du délimiteur est ici un peu plus complexe, car un délimiteur est utilisé pour séparer les différentes entrées et un autre pour séparer les champs d'une entrée. En outre, vous pouvez voir que les délimiteurs changent ici aussi.

Le changement dynamique du format du fichier de configuration indique que Vadokrist est en développement actif et continu.

Conclusion

Dans cet article, nous avons disséqué Vadokrist, un cheval de Troie bancaire latino-américain qui se concentre sur le Brésil. Nous avons montré qu'il présente les caractéristiques typiques d'un cheval de Troie bancaire latino-américain - il est écrit en Delphi, offre une fonctionnalité de porte dérobée et cible les institutions financières. Sa principale différence par rapport à la mise en œuvre habituelle est qu'il ne collecte pas d'informations sur les victimes juste après avoir réussi à compromettre leurs machines.

Nous avons couvert ses schémas de chiffrement, ses méthodes de distribution et d'exécution et ses formats de configuration à distance. Vadokrist semble être connecté à Amavaldo, Casbaneiro, Grandoreiro et Mekotio, d'autres chevaux de Troie bancaires d'Amérique latine décrits plus haut dans notre série.

Pour toute question, contactez-nous à l'adresse suivante : threatintel@eset.com. Des indicateurs de compromis sont également disponibles dans notre dépôt GitHub.

Indicateurs de compromission (IoCs)

Hashes

Campagne « Surcharge MSI »

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

Autre

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

Récents serveurs C&C

  • 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

Techniques MITRE ATT&CK

Note: Ce tableau a été créé en utilisant la version 8 de MITRE ATT&CK.

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.