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.
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.
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.
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.
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).
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.
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.
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.
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.
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.
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. |