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.)
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.
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.
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 « / ».
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.
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. |