Janeleiro, le voyageur du temps : Un nouveau cheval de Troie bancaire au Brésil

by chebbi abir

ESET Recherche a suivi un nouveau trojan bancaire qui cible les utilisateurs d’entreprise au Brésil depuis 2019 à travers de nombreux verticaux touchant des secteurs tels que l’ingénierie, la santé, la vente au détail, la fabrication, la finance, le transport et le gouvernement.

Cette nouvelle menace, que nous avons nommée Janeleiro, tente de tromper ses victimes avec des fenêtres pop-up conçues pour ressembler aux sites Web de certaines des plus grandes banques du Brésil. Ces fenêtres pop-up contiennent de faux formulaires visant à inciter les victimes du logiciel malveillant à saisir leurs informations d’identification bancaires et leurs informations personnelles que le malware capture et exfiltre vers ses serveurs C&C. Pour la mise en œuvre de cette technique, Janeleiro suit exactement le même schéma que certaines des familles de logiciels malveillants les plus importantes ciblant la région, notamment CasbaneiroGrandoreiroMekotioAmavaldo, et Vadokrist

Contrairement à ces familles de logiciels malveillants bien connues, Janeleiro est écrit en Visual Basic .NET, ce qui constitue un écart important par rapport au langage de programmation Delphi que les acteurs de la menace utilisent depuis des années dans la région. Janeleiro a évolué vers l’objectif de donner plus de contrôle aux opérateurs pour manipuler et ajuster ses fausses fenêtres pop-up en fonction de ce dont ils ont besoin pour mener à bien l’attaque, envoyer des clics de souris et des frappes au clavier, et enregistrer les entrées de l’utilisateur et l’écran en temps réel. La nature de ces types d’attaques ne se caractérise pas par leurs capacités d’automatisation, mais plutôt par leur approche pratique : dans bien des cas, l’opérateur doit ajuster les fenêtres via des commandes en temps réel.

Les opérateurs semblent à l’aise avec l’utilisation de GitHub pour stocker leurs modules, administrer leur page d’organisation et télécharger chaque jour de nouveaux dépôts où ils stockent les fichiers contenant les listes de serveurs C&C que les trojans récupèrent pour se connecter à leurs opérateurs. Le fait que votre logiciel malveillant dépende d’une source unique est une démarche intéressante. Mais que diriez-vous si nous vous disions que la dernière version de Janeleiro ne vit qu’un jour?

La cible : le Brésil

D’après nos données télémétriques, nous pouvons affirmer que ce malware ne cible que les utilisateurs professionnels. Les e-mails malveillants sont envoyés à des entreprises au Brésil et, même si nous ne pensons pas qu’il s’agisse d’attaques ciblées, ils semblent être envoyés en petits lots. D’après notre télémétrie, les secteurs touchés sont l’ingénierie, la santé, la vente au détail, la fabrication, la finance, le transport et le gouvernement.

La figure 1 présente un exemple d’e-mail d’hameçonnage : une fausse notification concernant une facture impayée. Il contient un lien qui mène à un serveur compromis. La page récupérée redirige simplement vers le téléchargement d’une archive ZIP hébergée dans Azure. Certains autres courriels envoyés par ces attaquants ne comportent pas de redirection via un serveur compromis mais mènent directement à l’archive ZIP.

Figure 1. Exemple de courriel malveillant

Les serveurs qui hébergent ces archives ZIP avec Janeleiro ont des URL qui suivent la même convention que d’autres URL que nous avons vues délivrer d’autres familles de chevaux de Troie bancaires (voir la section Indicateurs de compromission). Dans certains cas, ces URL ont distribué à la fois Janeleiro et d’autres banquiers Delphi à des moments différents. Cela suggère que soit les différents groupes criminels partagent le même fournisseur pour l’envoi d’e-mails de spam et pour l’hébergement de leurs logiciels malveillants, soit il s’agit du même groupe. Nous n’avons pas encore déterminé quelle hypothèse est la bonne.

La figure 2 donne un aperçu de l’attaque.

Figure 2. Vue d’ensemble de l’attaque Janeleiro (simplifiée)

L’archive ZIP contient un programme d’installation MSI qui charge la DLL principale du cheval de Troie. L’utilisation d’un installateur MSI est une technique privilégiée par plusieurs familles de logiciels malveillants dans la région. Janeleiro récupère l’adresse IP publique de l’ordinateur et utilise un service Web pour tenter de le géolocaliser. Si la valeur du code pays renvoyée ne correspond pas à BR, le malware s’arrête. Si la vérification de la géolocalisation passe, Janeleiro recueille des informations sur la machine compromise, notamment :

  • La date et l’heure actuelles
  • Le nom de la machine et le nom d’utilisateur
  • Le nom complet et l’architecture du système d’exploitation
  • La version du logiciel malveillant
  • Le nom de la région obtenu lors de la géolocalisation de l’ordinateur.

Les informations sont téléchargées sur un site web dans le but de suivre les attaques réussies. Ensuite, Janeleiro récupère les adresses IP des serveurs C&C sur une page d’organisation GitHub apparemment créée par les criminels. Il est alors prêt à démarrer ses fonctionnalités principales et à attendre les commandes d’un opérateur.

En 2020, ESET a publié un white paper détaillant les résultats de l’interconnexion des familles latino-américaines de chevaux de Troie bancaires les plus importantes, notamment CasbaneiroGrandoreiro et Amavaldo.  Les similitudes décrites dans ce document résident dans la mise en œuvre du noyau du cheval de Troie : notification à l’opérateur lorsqu’il y a une fenêtre active avec un nom ou un titre intéressant basé sur une liste de mots clés prédéfinie, et utilisation d’une fausse fenêtre pop-up pour tromper les victimes potentielles en leur faisant croire qu’elles saisissent des informations sensibles sur un site Web légitime. Ce processus est illustré par l’organigramme de la figure 3.

Figure 3. Mise en œuvre typique du noyau des trojans bancaires d’Amérique latine

Janeleiro suit le même schéma que onze autres familles de logiciels malveillants ciblant le Brésil. Comme le montre la Figure 4, nous pouvons voir certaines des fausses fenêtres pop-up créées par Janeleiro.

Figure 4. Fausses fenêtres pop-up utilisées par Janeleiro

Janeleiro in action

Janeleiro commence à énumérer les fenêtres et à vérifier leurs titres pour trouver des mots-clés intéressants (comme le montre la figure 5) qui indiqueraient que l’utilisateur visite le site Web d’une entité bancaire intéressante, en particulier ceux qui sont pris en charge par sa mise en œuvre de fausses fenêtres pop-up.

Figure 5. Liste des mots-clés que Janeleiro recherche dans les titres de fenêtres

Lorsqu’un de ces mots-clés est trouvé, Janeleiro tente immédiatement de récupérer les adresses de ses serveurs C&C sur GitHub et s’y connecte. Ces fausses fenêtres pop-up sont créées dynamiquement à la demande et contrôlées par l’attaquant via des commandes adressées au logiciel malveillant. Elles passent par plusieurs étapes pour tromper l’utilisateur tandis que l’attaquant reçoit en temps réel des captures d’écran, les frappes au clavier enregistrées et les informations saisies dans les faux formulaires.

Le fait que les acteurs de la menace abusent de GitHub n’a rien de nouveau; toutefois, Janeleiro le fait de manière assez intéressante : les opérateurs ont créé une page d’organisation GitHub qu’ils renomment chaque jour sous la forme SLK<dd/mm/yyyy>, où <dd/mm/yyyy> correspond à la date du jour.

Une capture d’écran de la page d’organisation GitHub telle qu’elle se présentait le 15 mars 2021 est présentée à la figure 6.

Figure 6. Page d’organisation GitHub avec les dépôts utilisés par les opérateurs de Janeleiro

Tous les jours, l’opérateur novoescritorio1-alberto crée un nouveau référentiel en suivant ce format de dénomination. L’objectif de ce dépôt est de contenir un fichier contenant la liste des adresses IP des serveurs C&C de Janeleiro, où il se connecte pour rendre compte à ses opérateurs, recevoir des commandes et exfiltrer des informations en temps réel.

Une capture d’écran montrant l’un des dépôts de la page d’organisation GitHub attribués aux opérateurs de Janeleiro est présentée dans la Figure 7, y compris le nom d’utilisateur du compte qui effectue les commits.

Figure 7. Branche principale avec le fichier SLK pour Janeleiro version 3

Une capture d’écran de la branche secondaire du dépôt est présentée dans la Figure 8.

Figure 8. Branche SLK avec le fichier SLK </spanpour Janeleiro version 2

Nous avons informé GitHub de cette activité, mais au moment de la rédaction de ce document, aucune action n’a été entreprise contre la page de l’organisation ni contre le compte qui crée le dépôt avec de nouvelles adresses de serveurs C&C.

Dans la dernière version de Janeleiro, la version 0.0.3, les développeurs ont introduit une fonction intéressante de chiffrement/déchiffrement à l’aide d’une bibliothèque open-source appelée EncryptDecryptUtils. La nouvelle procédure de déchiffrement est présentée dans la Figure 9.

Figure 9. Procédure de déchiffrement implémentée par Janeleiro version 0.0.3

Pour déchiffrer une chaîne, Janeleiro chiffre la chaîne résultant de la date actuelle et le résultat est ensuite utilisé comme phrase de passe et valeur de sel pour créer une nouvelle clé pour le déchiffrage. Cela a un effet extrêmement important : la dernière version de Janeleiro ne peut déchiffrer ses chaînes que le jour prévu. Il peut s’agir du jour même où les chaînes ont été chiffrées ou d’un jour ultérieur, mais le déchiffrage échoue dès le lendemain.

Ceci est également vrai pour le contenu du fichier SLK de la branche principale : la liste chiffrée et codée en base 64 des serveurs C&C, comme le montre la Figure 10.

Figure 10. Contenu du fichier SLK dans la branche principale.

Le contenu est chiffré selon la même procédure : lorsque Janeleiro déchiffre le contenu du fichier, il doit être à une date précise – la date du jour – pour fonctionner comme prévu.

L’évolution de Janeleiro

Janeleiro possède une valeur de version interne (comme le montre la figure 11) qui peut être utilisée par les attaquants pour identifier la version de leur logiciel malveillant qui a réussi à compromettre une machine. En mars 2021, nous avons identifié quatre versions, mais deux d’entre elles partagent le même numéro de version interne.

Figure 11. Valeurs de configuration utilisées par la version 0.0.2A de 2020

Alors qu’en 2021, nous avons vu les versions 0.0.2 et 0.0.3, nous étions intéressés par la recherche d’une pièce maîtresse manquante dans l’évolution de Janeleiro : la version 0.0.1, qui aurait dû exister fin 2019 ou début 2020. À notre grande surprise, nous avons trouvé des échantillons de la version 0.0.4 datant de 2019. Ces nouveaux échantillons du cheval de Troie ont été déployés par un composant chargeur de DLL en tandem avec un voleur de mots de passe, ce qui signifie que le groupe derrière Janeleiro a d’autres outils dans son arsenal.

La figure 12 présente un aperçu des versions de Janeleiro de 2019 à 2021.

 

Figure 12. L’étrange chronologie de l’évolution de Janeleiro, basée sur la version interne du logiciel malveillant.

L’incohérence de la chronologie et de la version interne du logiciel malveillant suggère qu’il était en cours de développement dès 2018, et qu’en 2020, ils ont décidé de passer à une version antérieure de leur code et d’améliorer celle-ci et d’affiner son traitement des commandes pour que l’opérateur ait un meilleur contrôle du trojan pendant l’attaque

Destructeur et gardien des traditions

Bien que Janeleiro suive le même schéma pour la mise en œuvre de ses fausses fenêtres pop-up, ainsi que d’autres familles de logiciels malveillants qu’ESET a répertoriées dans la région, il se distingue de ces familles de logiciels malveillants de plusieurs façons :

  • Il est écrit en Visual Basic .NET : Le cas curieux du Brésil est qu’il est surtout visé par des chevaux de Troie bancaires développés en Delphi – le langage de programmation de prédilection de plusieurs acteurs de la menace qui travaillent apparemment ensemble en partageant des outils et des infrastructures. La préférence de Janeleiro pour VB.NET est un écart notable par rapport à ce qui semble être la norme dans la région.
  • Pas d’obfuscation binaire : Bien que Janeleiro ait recours à une légère obfuscation en générant des noms aléatoires pour ses classes, modules, noms de méthodes, paramètres et chiffrement de chaînes, il n’utilise pas d’empaqueteurs pour rendre la détection et l’analyse plus difficiles. D’autres chevaux de Troie, tels que Grandoreiro, Mekotio, Ousaban, Vadokrist et Guildma, font un usage intensif des techniques de Themida et de remplissage binaire.
  • Aucun algorithme de chiffrement personnalisé : Les développeurs de Janeleiro s’appuient sur les fonctions cryptographiques fournies par le .NET Framework ainsi que sur des projets open-source pour le chiffrement/déchiffrement des chaînes de caractères, avec une préférence pour les algorithmes AES et RSA. Les chevaux de Troie tels que Casbaneiro, Grandoreiro, Amavaldo, Mispadu et Guildma, entre autres, utilisent des algorithmes de chiffrement personnalisés, y compris des techniques d’obscurcissement utilisant des tables de chaînes.
  • Méthode d’exécution simple : Le programme d’installation MSI ne déploie pas d’autres composants que la DLL principale du cheval de Troie et n’exécute pas d’autres instructions que le chargement et l’exécution de l’une des exportations de la DLL qui s’installe dans le système. Nous n’avons trouvé aucun échantillon d’un installateur MSI exécutant des scripts obfusqués, des outils d’aide au déballage ou des composants pour le chargement latéral de DLL, qui est populaire auprès d’autres familles de logiciels malveillants dans la région.
  • Aucune défense contre les logiciels de sécurité : Certaines des plus grandes banques du Brésil exigent que leurs clients installent un module de sécurité avant de leur permettre d’accéder à leurs comptes bancaires en ligne. Par exemple, le logiciel anti-fraude Warsaw. Il arrive souvent que les chevaux de Troie bancaires LATAM essaient de savoir si un tel logiciel est installé sur la machine compromise et le signalent aux attaquants. Certaines familles de logiciels malveillants comme Grandoreiro et Guildma tentent de le désactiver dans le pare-feu Windows ou de désactiver son pilote.
  • Utilise du code de NjRAT : Janeleiro est loin d’être une autre incarnation du célèbre NjRAT, mais il utilise les fonctions de capture SocketClient et Remote Desktop de NjRAT, ainsi que d’autres fonctions diverses. NjRAT n’est pas couramment utilisé – du moins par les trojans de cuisson LATAM – peut-être en raison de leur préférence pour l’utilisation de trojans personnalisés en Delphi. Cependant, parmi d’autres logiciels malveillants, NjRAT a été utilisé dans le cadre de l’Opération Spalax, une campagne qui cible spécifiquement la Colombie.

Commandes

Les commandes avec paramètres sont reçues du serveur C&C sous forme chiffrée avec le même algorithme que celui utilisé pour chiffrer les chaînes de caractères (voir section Annexe A). Voici un format de commande typique : %CommandName%%PredefinedSeparatorKeyword%%Parameters%.

Après le déchiffrement, la commande est divisée en un tableau de chaînes de caractères. Chaque partie de la commande est séparée par un mot-clé prédéfini codé en dur dans la configuration du logiciel malveillant – toutes les versions que nous avons analysées utilisent |’meio’|, qui sépare le nom de la commande et chaque paramètre.

La Figure 13 montre comment Janeleiro vérifie le nom de la commande et exécute l’action demandée.

Figure 13.  Exemple de la version 0.0.2B traitant la commande startinfo

Lorsque Janeleiro renvoie des données à l’opérateur, il le fait dans un format similaire : %CommandName%%PredefinedSeparatorKeyword%%Encoded data%.

La majorité des commandes de Janeleiro servent à contrôler les fenêtres, la souris et le clavier, ainsi que ses fausses fenêtres pop-up. Au fur et à mesure de l’évolution de la version 0.0.2A à 0.0.3, d’autres commandes ont été ajoutées, offrant à l’opérateur un contrôle plus fin :

  • Commandes pour contrôler une fenêtre spécifique
  • Énumérer et envoyer des informations sur les fenêtres (titre, classe, poignée)
  • Ajuster la taille d’une fenêtre spécifique, minimisation, maximisation
  • Modifier les dimensions de l’écran
  • Fermer tous les processus exe, et redémarrer chrome.exe avec les arguments -disable-gpu
  • Capture de l’écran en temps réel
  • Enregistreur de frappes en temps réel
  • Envoyer des touches et clics de souris
  • Afficher ou fermer une fausse fenêtre pop-up spécifique
  • Commandes diverses telles que : envoi de la date et de l’heure, déconnexion de la socket, fin de son propre processus.

Conclusion

La nature expérimentale de Janeleiro, qui fait des allers-retours entre différentes versions, nous montre un acteur qui essaie toujours de trouver la bonne façon de faire, mais qui n’est pas moins expérimenté que ses concurrents : Janeleiro suit le même schéma pour la mise en œuvre des fausses fenêtres pop-up que de nombreux chevaux de Troie bancaires du LATAM, ce qui ne semble pas être une coïncidence ou une inspiration : cet acteur emploie et distribue Janeleiro en partageant la même infrastructure que certaines des familles de logiciels malveillants les plus importantes. Comme nous continuons à suivre les activités de cet acteur, le temps nous dira quels nouveaux développements ils proposeront à l’avenir.


Pour en savoir plus:

https://www.welivesecurity.com/fr/2021/04/07/janeleiro-cheval-de-troie-bancaire-bresil/

Top

Interdit de copier  ce contenu