Analyse et extraction de configuration de Lu0Bot, un malware Node.js aux capacités considérables


De nos jours, de plus en plus de développeurs de logiciels malveillants utilisent des langages de programmation non conventionnels pour contourner les systèmes de détection avancés. Le malware Node.js Lu0Bot témoigne de cette tendance.

En ciblant un environnement d’exécution indépendant de la plate-forme, courant dans les applications Web modernes et en utilisant une obscurcissement multicouche, Lu0Bot constitue une menace sérieuse pour les organisations et les individus.

Même si le malware est actuellement peu actif, les attaquants attendent probablement le bon moment pour frapper.

Pour se préparer à tout scénario futur, une équipe d’analystes a mené une analyse technique approfondie de l’un des échantillons récents de Lu0Bot et a publié un article documenter leur processus.

Voici un aperçu de leurs recherches.

Analyse statique de l’échantillon Lu0Bot

Le échantillon l’objet de l’enquête a utilisé un packer SFX, une archive auto-extractible qui peut être ouverte avec n’importe quel utilitaire d’archivage. Son contenu a été exploré individuellement.

Archiver le contenu

1. Fichier BAT

    Le contenu du fichier BAT

    La première ligne du dossier contenait un commentaire qui restait flou et n’a pas été référencé par la suite.

    Ensuite, le fichier EXE regroupait plusieurs fichiers, y compris un interpréteur Node appelé fjlpexyjauf.exe.

    Ensuite, l’interprète a reçu un fichier avec des octets et un nombre (%1% dans la capture d’écran) qui a probablement servi de clé de cryptage pour le fichier d’octets.

    2. Fichiers eqnyiodbs.dat

      Le fichier a été divisé en blocs d’octets, qui ont ensuite été fusionnés pour créer l’interpréteur Node.

      Contenu des fichiers eqnyiodbs

      3. Fichier lknidtnqmg.dat

        Ce fichier contenait des octets chiffrés en Base64, qui pouvaient être déchiffrés à l’aide du numéro d’entrée donné.

        Contenu du fichier lknidtnqmg.dat

        4. Fichier gyvdcniwvlu.dat

          Ce pilote permettait aux programmes 32 bits sur les systèmes x64 de convertir les codes d’analyse de clé en caractères Unicode, probablement utilisés pour la fonctionnalité d’enregistrement de frappe dans le processus principal.

          Analyse dynamique des logiciels malveillants de Lu0Bot dans ANY.RUN

          L’étape suivante consistait à examiner le fichier EXE et lknidtnqmg.dat dans le malware interactif ANY.RUN sandbox pour surveiller leur comportement et soit décrypter les octets, soit les localiser décryptés dans la mémoire du processus.

          L’analyse a révélé que, lors de l’exécution, le processus principal démarrait un fichier BAT qui lançait un fichier EXE. Le code a accepté l’entrée JS cryptée et a collecté des données système à l’aide de WMIC, y compris des informations sur l’emplacement d’exécution du processus, alignées sur la technique T1047 MITRE.

          L’arborescence des processus pendant l’exécution de l’exemple

          Il a été découvert que l’interpréteur avait été copié dans le dossier de démarrage. La connexion au domaine s’est poursuivie après le redémarrage du système, permettant au bot de rester opérationnel.

          De plus, le malware a démontré une approche unique de la connexion de domaine en assemblant diverses parties en une seule entité au sein du code JS.

          Requêtes DNS
          Analyse des logiciels malveillants

          Utilisez un essai gratuit de 14 jours pour analyser les logiciels malveillants dans le bac à sable interactif ANY.RUN.

          Travaillez avec votre équipe en mode privé. Interagissez avec les fichiers et les liens dans une VM dédiée pour exposer leur comportement malveillant. Collectez de nouveaux IOC et configurations en quelques secondes.

          Commencez un essai gratuit

          Analyse technique du malware Lu0Bot à l’aide d’un désassembleur et d’un débogueur

          Pour accéder au code JS principal, l’équipe :

          • Déballé l’archive SFX
          • Exécuté une commande pour collecter le fichier Node.js
          • Lancement de fjlpexyjauf.exe dans x32dbg, en entrant les données entrantes dans la ligne de commande
          • Arrivé au point où l’exécution du code JS a commencé
          • Localisé le code en mémoire et enregistré un dump

          Pour voir comment les processus de déballage et d’extraction des vidages ont été menés, reportez-vous à l’article original. Pour cet aperçu, concentrons-nous sur l’analyse du code.

          Analyser le code JS

          Le code JavaScript initialement inintelligible a été rendu clair en supprimant les octets inutiles et en utilisant un désobfuscateur JavaScript.

          Résultat de la transformation du code

          Le code commençait par un tableau de chaînes cryptées. Ensuite, des éléments spécifiques ont été déplacés vers la fin du tableau par manipulation. Après cela, une fonction a été implémentée pour déchiffrer les chaînes du tableau en utilisant une forme alternative de BASE64 (T1132.002), suivie par l’encodage-décodage d’URL et enfin, RC4.

          Cette fonction a été appelée à l’aide de deux variables :

          1. Un élément du tableau.

          2. La clé RC4.

          Avec l’aide de un script spécialles lignes ont été déchiffrées, révélant que des parties des domaines étaient codées en dur dans l’échantillon.

          Après la désobscurcissement du code

          Suite à cela, la section du code responsable de l’assemblage du domaine a été découverte.

          Création de domaine

          Débogage du code JavaScript

          Pour déboguer, l’équipe a utilisé Node.js avec son paramètre inspect-brk (node.exe –inspect-brk *obfuscate dump without garbage bytes*), en plaçant un point d’arrêt sur le mot-clé « var » et en observant la sortie générée par chaque ligne.

          Il a été constaté que la première fonction (ginf) a collecté des informations sur le système et produit un tableau de 15 éléments avec les détails du système.

          Un tableau contenant la sortie de la fonction ginf

          La deuxième fonction (hwco) a utilisé le tableau de 15 éléments du ginf fonction comme entrée, qui a généré une sortie comprenant la fin du domaine jusqu’au point. Une analyse plus approfondie a révélé que ce résultat était un hachage des données système collectées.

          Sortie de chaîne de la fonction hwco

          Le port, le numéro et le segment de domaine après le point ont été extraits du tableau acc puis attribués aux variables.

          Extraire des éléments du tableau acc

          Un nombre aléatoire a été ajouté au segment de domaine après le point. La ligne suivante sélectionnait un domaine alternatif si certaines conditions étaient remplies.

          Choisissez le domaine après le point

          Après plusieurs autres opérations, le domaine a été entièrement assemblé et tous les éléments nécessaires ont été regroupés dans un objet JSON.

          Après son exécution, le malware a recherché une adresse pour la transmission des données. Une fois que le serveur a reçu le trafic, il a envoyé le code JS.

          Détection Lu0bot

          Dans le cadre de leurs efforts, l’équipe a réussi à découvrir une richesse de renseignements et d’IOC, et a également rédigé les règles YARA, Sigma et Suricata. Vous pouvez y accéder dans l’article.

          Tous les résultats ont été intégrés dans ANY.RUN, permettant au service d’identifier rapidement n’importe quel échantillon Lu0Bot et de révéler les domaines C2 après avoir déchiffré les chaînes.

          Conclusion

          Lu0bot est un malware inhabituel qui combine Node.js et du code JS exécutable. Il possède une structure de domaine unique et utilise des méthodes de cryptage personnalisées pour les chaînes.

          Bien qu’il présente actuellement un faible niveau d’activité, Lu0bot peut présenter un risque important si sa campagne évolue et que le serveur C2 commence à répondre activement.

          Protégez votre organisation contre ce malware et d’autres logiciels malveillants en utilisant TOUT.RUN pour analyser rapidement tout fichier ou lien suspect et obtenir un verdict concluant en quelques secondes.

          Vous avez trouvé cet article intéressant ? Suivez-nous sur Twitter et LinkedIn pour lire plus de contenu exclusif que nous publions.





          ttn-fr-57