Dans cet épisode de notre série de blogues, nous nous concentrerons sur Mispadu, un ambitieux cheval de Troie bancaire latino-américain qui utilise une fausse publicité de McDonald pour ses actions malveillantes et qui étend sa surface d'attaque aux navigateurs Web.

Nous pensons que cette famille de logiciels malveillants cible le grand public. Ses principaux objectifs sont le vol d'argent et de titres de compétences. Au Brésil, nous l'avons vu distribuer une extension Google Chrome malveillante qui tente de voler les données de cartes de crédit et les données bancaires en ligne, et qui compromet le système de paiement Boleto.

Caractéristiques

Mispadu est une famille de logiciels malveillants identifiée au cours de notre recherche sur les chevaux de Troie bancaires latino-américains, qui cible le Brésil et le Mexique. Il est écrit en Delphi et attaque ses victimes en utilisant la même méthode que les familles décrites précédemment au cours de cette série: en affichant de fausses fenêtres pop-up et en essayant de convaincre les victimes potentielles de divulguer des informations sensibles.

Sa backdoor permet à Mispadu de faire des captures d'écran, simuler les actions de la souris et du clavier, et capturer des frappes. Il peut se mettre à jour lui-même via un fichier Visual Basic Script (VBS) qu'il télécharge et exécute.

Comme pour les autres chevaux de Troie bancaires latino-américains, Mispadu recueille également des informations sur ses victimes, à savoir :

  • Version du système d'exploitation
  • nom de l’appareil
  • ID de langue
  • si Diebold Warsaw GAS Tecnologia (une application populaire au Brésil pour protéger l'accès aux services bancaires en ligne) est installée
  • liste des applications bancaires communes installées en Amérique latine
  • liste des produits de sécurité installés

Comme Amavaldo et Casbaneiro, Mispadu peut également être identifié par l'utilisation d'un algorithme cryptographique unique et personnalisé pour masquer les chaînes dans son code. Ceci est utilisé dans tous les composants, ainsi que pour protéger ses fichiers de configuration et les communications C&C. La figure 1 illustre le code principal mettant en œuvre cet algorithme, et la figure 2 illustre le pseudocode de l'algorithme.

Figure 1. Cœur de l'algorithme de Mispadu pour le déchiffrage des données

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

Figure 2. Pseudocode de l'algorithme de Mispadu pour le déchiffrage des données

L'exécutable de cheval de Troie bancaire est livré avec quatre applications potentiellement indésirables stockées dans sa section ressources. Ces applications sont toutes des fichiers légitimes de Nirsoft, mais elles ont été corrigées pour fonctionner à partir de la ligne de commande sans interface graphique. Ils sont utilisés par les logiciels malveillants pour extraire les informations d'identification stockées :

  • navigateurs (Google Chrome, Mozilla Firefox, Internet Explorer), et
  • clients de messagerie (Microsoft Outlook, Mozilla Thunderbird et Windows Live Mail, entre autres).

Mispadu surveille également le contenu du presse-papiers et tente de remplacer les portefeuilles bitcoin potentiels par les siens, comme l'a fait Casbaneiro. Cependant, d'après l'examen du portefeuille de l'agresseur (voir Figure 3), il n'a pas été très efficace jusqu'à présent.

Figure 3. Portefeuille de bitcoin utilisé par l'opérateur de Mispadu

Distribution

Mispadu utilise deux méthodes de distribution : le spam (voir Figure 4) et la malvertising. Alors que la première méthode est très courante pour les chevaux de Troie bancaires latino-américains, la seconde ne l'est pas, alors examinons-la de plus près. La figure 5 montre le déroulement de l'attaque de Mispadu.

FiFigure 4. Exemples de courriers indésirables servant à la distribution de Mispadu. Celui qui cible le Brésil (à gauche) affirme que le destinataire a été absent pendant trois tentatives de livraison de colis et qu'il doit suivre l'URL pour obtenir un remboursement. Celui qui cible le Mexique (à droite) incite le destinataire à télécharger une facture pour éviter le « blocage » du compte

Figure 5. La chaîne de distribution et d'exécution de Mispadu

L'acteur de la menace a placé des publicités commanditées (voir la figure 6 pour un exemple brésilien) sur Facebook offrant de faux coupons de réduction pour McDonald's. En cliquant sur les annonces, la victime potentielle accède à l'une des pages Web illustrées à la Figure 7. Quel que soit le système d'exploitation d'un visiteur, cliquer sur le bouton permet de télécharger une archive ZIP contenant un installateur MSI. Parfois, cette archive contient aussi des logiciels légitimes comme Mozilla Firefox ou PuTTY, mais ce ne sont que des leurres et ne sont pas utilisés du tout.

Les opérateurs de Mispadu ont compilé deux versions différentes du cheval de Troie bancaire en fonction du pays qu'il attaque. En outre, ils ont décidé de faire appel à des installateurs différents pour chaque pays attaqué et les étapes suivantes. Cependant, la logique des deux chaînes est la même. Vous trouverez ci-dessous une description de cette forme générale.

Figure 6. Annonces Facebook mises en place par les opérateurs de Mispadu conduisant à de faux sites promettant des coupons rabais pour McDonald's (traduction du titre de l'annonce : « Utilisez-les n'importe quel jour de septembre! Coupons pour l'indépendance. Obtenez le vôtre maintenant »)

Figure 7. Pages Web malveillantes offrant de faux coupons de réduction pour McDonald's Brésil (à gauche) et Mexique (à droite) (traduction du texte principal des deux : « Ce coupon ne peut être utilisé qu'une seule fois. Je le veux! / Générer un coupon »)

Lorsque la victime potentielle exécute l'installateur MSI, une chaîne de trois scripts VBS suivants suit. Le premier script (décompresseur, ou unpacker) déchiffre et exécute le second script (téléchargeur, ou downloader) à partir de ses données internes, comme le montre la Figure 8. Le script de téléchargement récupère le troisième script (chargeur, ou loader) et l'exécute (voir Figure 9).

Figure 8. Script de déballage de la chaîne de distribution Mispadu (étape 1). Notez que la clé est calculée dans la variable w2 à la valeur 95.

Figure 9. Script de téléchargement de la chaîne de distribution Mispadu (étape 2). Notez que la clé codée en dur est la même que lors de l'étape précédente.

Le script du loader est plus compliqué que les deux premières étapes. Il s'agit d'un outil spécifique au pays; il vérifie l'identifiant linguistique de la machine de la victime potentielle pour s'assurer qu'elle provient bien du pays ciblé par la campagne en cours (Brésil ou Mexique, respectivement). Il peut également détecter certains environnements virtuels; si un environnement virtuel est détecté ou si la locale souhaitée n'est pas trouvée, le chargeur quitte.

Sinon, le script du chargeur continue en configurant les fichiers de configuration (décrits en détail plus loin) et en téléchargeant (i) un cheval de Troie bancaire Mispadu, (ii) un injecteur (DLL) utilisé pour l'exécuter et (iii) des DLLs de support légitimes. Chaque fichier est téléchargé dans une archive ZIP séparée comme illustré à la Figure 5. Nous fournissons un pseudocode pour l'algorithme de déchiffrement de la Figure 10.

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

Figure 10. Pseudocode de l'algorithme de déchiffrement de la charge utile de Mispadu

Les serveurs de téléchargement de Mispadu vérifient la validité des demandes qu'ils reçoivent. L'envoi d'une requête invalide entraîne une réponse d'image obscène que nous ne pouvons pas reproduire ici.

Enfin, le script du loader établit la persistance en créant un lien dans le dossier de démarrage et en exécutant l'injecteur. Ceci se fait via rundll32.exe en appelant une fonction exportée de la DLL de l'injecteur dont le nom provient d'un des fichiers de configuration précédemment configurés. L'injecteur localise le cheval de Troie bancaire chiffré, puis le déchiffre et l'exécute.

Nous avons trouvé un répertoire ouvert sur l'un des serveurs que Mispadu utilise, et les fichiers liés à une campagne très similaire y étaient stockés. Ces fichiers peuvent être utilisés pour créer une page web imitant AreaVIP (un site web tabloïd brésilien) et pour forcer une fausse mise à jour Adobe Flash Player sur ses victimes potentielles. Nous n'avons pas observé cette campagne dans la nature et nous pensons qu'il s'agit peut-être d'un coup monté pour l'avenir.

Depuis que la campagne Mispadu ciblant le Brésil a utilisé le raccourcisseur d'URL Tiny.CC, nous avons été en mesure de recueillir des statistiques. Comme le montre la Figure 11, cette campagne a produit près de 100 000 clics, exclusivement en provenance du Brésil. Les clics provenant d'Android sont très probablement le résultat du fait que la publicité est affichée sur Facebook quel que soit l'appareil de l'utilisateur. Vous pouvez également constater que la campagne est récurrente - une phase s'est achevée dans la seconde moitié de septembre 2019 et est réapparue au début du mois d'octobre 2019.

Figure 11. Statistiques de la campagne brésilienne Mispadu

Partager une pièce jointe à un courriel

Les messages de courrier indésirables et le faux site Web de McDonald's comportent un autre aspect intéressant : d'où le faux coupon est téléchargé. Les opérateurs de Mispadu ont abusé de la plate-forme russe Yandex.Mail pour stocker leur charge utile (voir Figure 12). Le scénario le plus probable est que les opérateurs ont créé un compte sur Yandex.mail, envoyé dans un courriel incluant le coupon malveillant en pièce jointe à eux-mêmes et ensuite dirigé la victime potentielle vers un lien direct vers cette pièce jointe.

Figure 12. L'URL à partir de laquelle l'archive contenant l'installateur MSI Mispadu malveillant est téléchargée.

Configuration

L'utilisation de fichiers de configuration est assez rare parmi les chevaux de Troie bancaires latino-américains; pourtant, dans l'ensemble, Mispadu en utilise trois différents et il ne peut fonctionner sans eux. Tous les fichiers de configuration sont soit contenus dans, soit obtenus par le script du chargeur décrit précédemment.

La configuration d'exécution de Mispadu est stockée uniquement en mémoire avec les données téléchargées depuis l'un de ses serveurs de téléchargement (serveur distant 1 de la Figure 5). Il contient trois éléments d'information essentiels :

  • une chaîne nécessaire pour créer l'URL de téléchargement de l'injecteur
  • le nom du dossier dans lequel le logiciel malveillant sera installé
  • le nom de la fonction exportée de l'injecteur à appeler pour qu'il puisse exécuter le cheval de Troie bancaire

Les données générales de configuration sont déposées dans C:\Users\Public\%COMPUTERNAME%[1], en tant que deuxième lettre du nom de l'ordinateur de la victime (donc pour un ordinateur nommé « JOHN-PC », le fichier serait nommé « O »). Il est créé à partir des données contenues dans le script du chargeur et dans le fichier de configuration de l'exécution et contient les informations de version, la clé cryptographique et les chemins du système de fichiers.

Les données de configuration de C&C sont stockées dans un fichier au même emplacement que le précédent sous le même nom de fichier avec "_" ajouté ("O_", pour reprendre l'exemple précédent). Il se compose de :

  • #ip# (un caractère de remplissage pour une adresse IP que le cheval de Troie bancaire utilise pour recevoir des commandes par la porte dérobée)
  • #wp[1-3]# (espaces réservés pour 3 ports associés à #ip#)
  • deux listes de 31 domaines chacune (liste principale et liste de sauvegarde)

Mispadu choisit ses domaines C&C principaux et de sauvegarde à partir de ces listes en fonction du jour du mois en cours. Il essaie ensuite d'obtenir une version mise à jour du fichier de configuration de C&C à partir de ce domaine toutes les quelques heures et remplace celui qui a été déposé par celui-ci. Nous pensons que l'idée principale derrière cette approche est de remplir les espaces réservés afin d'activer la fonctionnalité de la porte dérobée.

Protégez votre navigateur Chrome

C'est une bonne idée, mais ne le faites pas avec l'extension malveillante du navigateur Google Chrome que nous avons vu distribué avec le cheval de Troie bancaire Mispadu au Brésil (voir la Figure 13). L'extension (qu'on peut voir à la Figure 14) s'appelle « Securty[sic] System 1.0 » et prétend vous aider à « Protege seu Chrome » (qu’on peut traduire par « protéger votre Chrome »). Il se compose de trois fichiers JavaScript malveillants que nous décrivons ci-dessous.

Figure 13. Une partie de la chaîne de distribution de Mispadu qui change lorsque l'extension Google Chrome malveillante est également distribuée. Le reste de la chaîne de distribution reste le même.

 

Figure 14. L'extension Google Chrome malveillante installée par Mispadu

Première composante : Manipulation des fenêtres

Ce composant simple n'a qu'une seule fonctionnalité : il crée une nouvelle fenêtre Google Chrome et ferme toutes les autres. Ce composant n'était pas présent dans tous les échantillons que nous avons analysés et nous croyons qu'il est encore à l'étape des essais.

Deuxième composante : Vol de données de carte de crédit

Le deuxième volet contient une liste de sites Web codés en dur. Dans les pages servies à partir de ces sites, il recherche tout champ de saisie contenant « texte », « email », « tel », « numéro », « mot de passe » ou « radio ». Si le « CVV », « CÓD SEG » ou leurs variantes se trouvent n'importe où sur le site, le contenu de ces champs de saisie est envoyé à l'attaquant lorsque la victime soumet les informations. Cela révèle clairement l'intention de cette partie de l'extension - le vol de données de carte de crédit.

3e composant : Vol de données bancaires et de données Boleto

Le troisième composant est le plus avancé. Tout d'abord, à l'aide d'un algorithme de type DGS, il génère deux chaînes de caractères basées sur le jour du mois en cours et le numéro du mois. Ces chaînes sont ensuite utilisées pour former une URL GitHub sous la forme https://raw.githubusercontent.com/%FIRST_STRING%/w/master/%SECOND_STRING%, où %FIRST_STRING% est un nom d'utilisateur GitHub. Les données téléchargées à partir de l'URL générée sont déchiffrées dans une URL différente que nous appellerons payload URL.

Cette composante contient également une liste codée en dur des sites Web ciblés, comme la précédente. Si la victime visite l'un de ces sites Web, un fichier JavaScript malveillant spécifique à ce site Web est obtenu à partir de l'URL de la charge utile et chargé dynamiquement via la fonction d'évaluation JavaScript.

En outre, ce composant tente également de compromettre l'utilisation de Boleto, un système de paiement populaire commun au Brésil. Le système est une cible attrayante pour les attaquants depuis longtemps (vous pouvez en lire plus dans ce document de recherche datant de 2014). Pour payer avec ce système, vous devez imprimer un ticket (boleto). Il contient principalement un numéro d'identification spécifique au compte bancaire qui doit recevoir le paiement, ainsi qu'un code à barres (voir Figure 15). Le paiement est ensuite effectué soit en scannant le code-barres, soit en tapant le numéro d'identification manuellement.

Figure 15. Un exemple de boleto (source : Wikipedia)

En utilisant une expression régulière, le composant du logiciel malveillant tente de trouver le numéro d'identification et de le remplacer par celui de l'attaquant (obtenu de façon dynamique). De plus, il abuse d'un site Web légitime pour générer le code à barres de paiement en utilisant le numéro de compte de l'attaquant et remplace le numéro de compte légitime par celui-ci. La partie du code responsable de la compromission de Boleto est illustrée à la Figure 16.

Figure 16. L'extension Google Chrome de Mispadu qui compromet Boleto. Le code obtenant le numéro de compte de l'attaquant est marqué en rouge, la génération de codes à barres malveillants en vert.

Liste des différences entre les campagnes

Il semble randomiser les chemins du système de fichiers et les noms de fichiers où les fichiers de configuration sont stockés et le cheval de Troie bancaire est installé pour chaque victime. De plus, le script du chargeur contient une partie qui n'est pas utilisée au moment de l'écriture mais qui est prête à abuser de Windows mshta.exe pour exécuter le cheval de Troie bancaire réel au lieu de rundll.exe.

Il semble randomiser les chemins du système de fichiers et les noms de fichiers où les fichiers de configuration sont stockés et le cheval de Troie bancaire est installé pour chaque victime. De plus, le script du chargeur contient une partie qui n'est pas utilisée au moment de l'écriture mais qui est prête à abuser Windows mshta.exe pour exécuter le cheval de Troie bancaire réel au lieu de rundll.exe.

Conclusion

Dans ce blogue, nous avons parlé de Mispadu, une autre famille latino-américaine de troyens bancaires isolée pendant notre recherche. Nous avons montré ses principales caractéristiques, y compris les raisons pour lesquelles nous le considérons comme un cheval de Troie bancaire latino-américain - il est écrit en Delphi, cible le Brésil et le Mexique, utilise des fenêtres pop-up et contient des fonctionnalités de backdoor.

Nous avons décrit sa chaîne de distribution la plus récente et nous nous sommes concentrés sur certains aspects intéressants comme l'utilisation abusive de Yandex.Mail pour stocker les charges utiles malveillantes et l'utilisation de publicités Facebook malveillantes. Nous avons également analysé les fichiers de configuration utilisés par Mispadu.

Enfin, nous avons abordé une extension Google Chrome malveillante que nous avons vu Mispadu distribuer au Brésil. L'objectif de cette extension est de voler des informations sur les cartes de crédit, des informations bancaires sensibles et de tenter de voler de l'argent à ses victimes en compromettant le système de paiement Boleto au Brésil.

Pour toute demande de renseignements, contactez-nous à threatintel@eset.com Des indicateurs de compromis peuvent également être trouvés dans notre dépôt GitHub.

Indicateurs de compromission (IoC)

Hashes

Campagne brésilienne

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

Campagne mexicaine

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

Extension Google Chrome

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

Demandes potentiellement indésirables de vol de titres de compétences

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

Noms de fichier

  • C:\Users\Public\%COMPUTERNAME%[1]
  • C:\Users\Public\%COMPUTERNAME%[1]_
  • C:\Users\Public\{winx86,libeay32,ssleay32}.dll DLL légitimes téléchargées par le script du chargeur; indicateur partiel)

Serveurs utilisés

  • 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

URL des coupons-rabais

  • Brésil
    • http://promoscupom[.]cf/
    • http://mcdonalds.promoscupom[.]cf/index3.html
  • Mexique
    • http://mcdonalds.promoscupom[.]cf/index2.html

Portefeuille de Bitcoin

  • 3QWffRcMw6mmwv4dCyYZsXYFq7Le9jpuWc

Techniques MITRE ATT&CK

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.