Les films et les émissions de télévision nous ont appris à associer les pirates informatiques à des tâches difficiles, des intrigues détaillées et des schémas élaborés.
Ce que le chercheur en sécurité Carlos Fernández et moi avons récemment découvert sur les registres open source raconte une histoire différente : les mauvais acteurs privilégient la simplicité, l'efficacité et la pensée centrée sur l'utilisateur. Et pour faire passer leur code malveillant au niveau supérieur, ils ajoutent également de nouvelles fonctionnalités assistées par ChatGPT.
Tout comme le logiciel en tant que service ( SaaS ), une partie de la raison pour laquelle les offres de logiciels malveillants en tant que service ( MaaS ) telles que DuckLogs , Redline Stealer et Racoon Stealer sont devenues si populaires sur les marchés clandestins est qu'elles ont les canaux de support client actifs et leurs produits ont tendance à être simples et conviviaux. Cochez ces cases, remplissez ce formulaire, cliquez sur ce bouton… Voici votre échantillon de malware prêt à l'emploi ! Inutile de dire que ces produits sont souvent construits par des cybercriminels professionnels.
Dans les offres MaaS moins populaires que nous avons trouvées dans la nature, telles que le récupérateur de jetons Discord Z3US , il y a une tentative d'incorporer des principes de conception centrés sur l'humain, mais le produit échoue dans le support client. Principalement exploités et consommés par des adolescents, les comptes Telegram associés regorgent de plaintes et de "bro-speak" hostiles en raison d'une promesse non tenue d'une "garantie à vie":
Avant même de rejoindre Sonatype, je me demandais à quoi ressemblait le visage moderne de la cybercriminalité . Et maintenant que je suis une série de campagnes et de mauvais acteurs du monde entier, quelque chose s'est éclairci pour moi : la plupart des paquets malveillants que l'équipe de recherche en sécurité porte à mon attention ne sont pas le produit d'un génie excentrique en sweat à capuche. codage depuis un sous-sol sombre rempli d'écrans. Grâce à la nature simpliste de MaaS, n'importe qui peut facilement créer et télécharger des échantillons de logiciels malveillants dans des registres open source avec un coût d'installation et des connaissances techniques minimes.
Les chercheurs d'Avast ont observé que depuis le début de la pandémie actuelle de Covid-19, des plateformes comme Discord et Telegram sont devenues de plus en plus populaires parmi la population plus jeune. Plutôt que d'utiliser les médias sociaux grand public, ces adolescents créent des communautés de logiciels malveillants dans Discord dans le but de jouer, de discuter et de socialiser loin de la surveillance parentale. Ces communautés sont généralement dirigées par les membres les plus compétents sur le plan technique, qui se montrent en prenant possession de serveurs concurrents, ou même en partageant des captures d'écran contenant des informations qu'ils ont volées à des victimes sans méfiance. Ils recherchent également activement d'autres membres en fonction de leurs compétences en programmation ou de leur potentiel à contribuer à leurs campagnes.
Conséquence involontaire de ces activités, les registres open source résilients sur lesquels nous nous appuyons sont confrontés à une surcharge de ressources. Rien que le mois dernier, nos chercheurs en sécurité ont confirmé qu'ils étaient malveillants, 6 933 paquets téléchargés sur les registres npm et PyPI.
Nous avons récemment suivi la campagne d'un groupe hispanophone appelé EsqueleSquad qui a téléchargé plus de 5 000 packages sur PyPI. La charge utile de ces packages a tenté de télécharger un cheval de Troie Windows à partir de Dropbox, GitHub et Discord à l'aide d'une commande PowerShell.
Nous avons ensuite enquêté sur les activités d'un autre groupe appelé SylexSquad, peut-être espagnol, qui a créé des packages contenant des logiciels malveillants conçus pour exfiltrer des informations sensibles. En plus de faire la publicité de leurs produits avec des vidéos YouTube et de les vendre sur un marché, ils ont une petite communauté Discord pour recruter de nouveaux membres. Et ils semblent avoir largement le temps de polluer la chaîne d'approvisionnement des logiciels open source.
Au cours de la première semaine d'avril, notre système d'IA a signalé une série de paquets téléchargés sur PyPI comme suspects, confirmés plus tard comme malveillants par nos chercheurs en sécurité. Ces packages avaient un modèle de nommage composé du préfixe « py » suivi de références à un logiciel antivirus : pydefenderultra , pyjunkerpro , pyanalisate et pydefenderpro .
Carlos Fernández a remarqué que les packages étaient crédités au groupe SylexSquad, suggérant la poursuite d'une campagne que nous avions suivie auparavant impliquant les packages reverse_shell et sintaxisoyyo . Après avoir fait cette découverte, nous avons commencé à cartographier leurs activités.
Dans un jeu du chat et de la souris, chaque fois que nous confirmions qu'un de ces packages était malveillant, l'équipe PyPI nous aidait à le supprimer, et quelques heures plus tard, les mauvais acteurs se faufilaient dans un package portant le même nom.
Pour vous donner une image complète de cette campagne, récapitulons nos premières constatations :
Si les développeurs devaient installer le package PyPI reverse_shell , setup.py
exécuterait bypass.py
, un script légèrement obscurci hébergé sur GitHub et encodé sous la forme d'une série de nombres correspondant aux codes ASCII.
Après désobscurcissement, il créerait de nouvelles valeurs de registre sur Windows pour la persistance, et par conséquent, il appellerait un autre fichier hébergé sur GitHub, WindowsDefender.py
, un voleur d'informations. Les données sensibles telles que les informations du navigateur (historique, cookies, mots de passe…), les comptes Steam, les comptes Telegram, les cartes de crédit et même une capture d'écran du bureau de la victime seraient téléchargées à l'aide du webhook Discord de l'attaquant.
Avance rapide vers les nouveaux packages crédités à ce groupe et nous trouvons un setup.py
complètement différent composé de code fortement obscurci (cryptage AES 256) généré avec Pyobfuscate , un service qui promet une "protection par 4 couches d'algorithme". Avant que Carlos ne retrousse ses manches pour le processus de désobscurcissement, nous ne pouvions distinguer que deux informations de l'océan de code camouflé : l'URL du service et un message lisible : " why, are, you, reading, this, thing, huh
' Chaque mot de ce message était une variable utilisée pour le processus de désobscurcissement :
Je n'entrerai pas dans les détails du fonctionnement de Pyobfuscate, mais avec de la patience et de l'expertise, Carlos a réussi à désobscurcir le code et à révéler sa véritable forme. Il a trouvé intrigant que le contenu obscurci ne soit pas seulement présent dans setup.py
mais aussi dans le WindowsDefender.py
précédemment lisible qui a été saisi initialement à partir de GitHub, et maintenant à partir du service transfer.sh .
Lorsque les mauvais acteurs n'agissent pas assez rapidement, il y a de fortes chances que des chercheurs en sécurité comme nous – et les règles de GitHub interdisant l'utilisation de la plate-forme comme un CDN malveillant – ruinent leurs plans. C'est le cas de WindowsDefender.py
, initialement hébergé sur le repo GitHub "joeldev27" lorsqu'il était utilisé par les packages PyPI pycracker et pyobfpremium , et rendu inactif peu de temps après.
Étant donné que ce nom de fichier était utilisé de manière cohérente, j'ai fait quelques recherches et j'ai découvert que WindowsDefender.py
était hébergé sur un référentiel GitHub appelé CosasRandoms480 . Lorsque j'ai partagé cette découverte avec Carlos, il a répondu avec émerveillement : « Dans les prochaines heures, un nouveau paquet apparaîtra sur PyPI avec un setup.py
obscurci. Après l'installation, il téléchargera à partir de ce référentiel que vous venez de trouver un script fortement obscurci nommé WindowsDefender.py
qui établira un mécanisme de persistance et téléchargera le voleur d'informations que nous avons étudié précédemment, également nommé WindowsDefender.py
.
Sa prédiction s'est transformée en réalité lorsque le package pyobfadvance est apparu moins de 30 minutes plus tard sur PyPI, utilisant efficacement "CosasRandoms480" comme CDN malveillant. Nous l'avons signalé à l'équipe PyPI et il a été supprimé peu de temps après.
Des scientifiques et des philosophes se sont demandé si nous vivions dans une simulation informatique . Travailler en tant que chercheur en sécurité se sent certainement de cette façon. Vous êtes coincé dans une boucle de recherche, de découverte et de signalement, et les mêmes menaces reviennent sans cesse.
Deux jours plus tard, un nouveau package crédité par SylexSquad a été signalé sur notre système : pydefenderpro. Même setup.py
obscurci. Même URL du même référentiel GitHub exécutant le même WindowsDefender.py
avec le même code de mécanisme de persistance et la même exécution du voleur d'informations dans WindowsDefender.py
. Tout se ressemblait, mais le fichier n'était plus obscurci et un nouveau script était invoqué depuis transfer.sh :
"C'est un RAT !" Carlos m'a envoyé un message sur Slack . "Et aussi un voleur d'informations-"
"Un RAT mutant ?" J'ai répondu, faisant référence à une tendance que nous avons suivie dans la nature d'un type de malware qui combine des chevaux de Troie d'accès à distance et des voleurs d'informations.
"Exactement", a déclaré Carlos.
Les recherches OSINT ont révélé que le nouveau code RAT n'était pas original, mais une copie d' une copie de DiscordRAT :
Rincez et répétez : un paquet malveillant est signalé à l'équipe PyPI, et l'équipe PyPy le supprime.
Bien sûr, un nouveau package, pydefenderultra, est entré en scène peu de temps après. Ce qui était différent ici, c'est que les mauvais acteurs ont migré vers le service pastebin.pl au lieu de GitHub pour télécharger WindowsDefender.py
, probablement en raison de la désactivation du référentiel « CosasRandoms480 ».
Nous soupçonnons que la version lisible de WindowsDefender.py
a permis de confirmer plus facilement qu'il enfreignait les règles de GitHub . Mais pourquoi les mauvais acteurs ont-ils décidé de désobscurcir le scénario ? Était-ce trop compliqué pour leur processus simpliste ?
Le RAT n'arrêtait pas de muter. Le menu et les commentaires étaient désormais traduits en espagnol et disposaient de fonctionnalités supplémentaires.
Le cycle s'est poursuivi lorsqu'ils ont téléchargé un autre package, pyjunkerpro . Cette fois, les fonctionnalités ajoutées comprenaient un enregistreur de frappe, un enregistreur audio, l'exfiltration des données du système d'exploitation et la possibilité de télécharger n'importe quel fichier de la victime sur le canal Discord de l'attaquant. Les commentaires sur le code étaient exceptionnellement abondants, ce qui n'est généralement associé qu'au code du didacticiel et non à un logiciel malveillant.
"Attendez," dit Carlos, pensant à haute voix, "Et s'ils utilisent l'IA pour créer de nouvelles fonctionnalités?"
Des outils comme GPTZero et Copyleaks fournissent un bon point de départ pour détecter le texte généré par l'IA. Cependant, l'identification du code généré par l'IA reste difficile, car il n'existe actuellement aucun outil disponible (à ma connaissance) capable de le faire avec précision. Heureusement, les humains sont encore très doués pour reconnaître les modèles…
J'ai rapidement ouvert un onglet ChatGPT et tapé une invite en espagnol, qui se traduisait par : "Écrivez du code Python pour un bot Discord qui télécharge de l'audio depuis un ordinateur distant à l'aide de PyAudio." La sortie que j'ai obtenue était étrangement similaire:
Il semble que nous suivions des script kiddies qui copiaient du code à partir de diverses sources, puis utilisaient ChatGPT pour ajouter de nouvelles fonctionnalités. Le code unique qui en a résulté leur a donné la confiance nécessaire pour en faire la publicité sur YouTube ou le vendre sur leur propre place de marché. Et personne ne soupçonnerait que ce n'était pas une création originale.
Cela soulève une question intrigante : comment devrions-nous appeler ces mauvais acteurs ? Des enfants scénarisés par l'IA ? Des enfants rapides ?
J'ai demandé à ChatGPT, et il m'a répondu : si une personne utilise ChatGPT pour ajouter de nouvelles fonctionnalités à son logiciel malveillant, elle peut être considérée comme un type de pirate informatique plus avancé qu'un script kiddie traditionnel. Il peut être plus exact de les appeler "hackers" ou "hackers assistés par l'IA".
Fascinant.
ChatGPT leur donne plus de statut.
Dans un souci d'expérimentation, Carlos a voulu essayer une invite pour voir si l'outil nous aiderait également à mieux comprendre les activités des mauvais acteurs.
"J'ai besoin d'un code Python capable d'utiliser l'API Discord en tant que bot (à l'aide d'un jeton). Le script doit se connecter au bot et afficher les informations de la guilde, les membres de la guilde, les canaux de la guilde et l'historique des messages.
Comme prévu, ChatGPT a généré un code fortement commenté et des instructions claires pour commencer : pour utiliser ce code, remplacez "your_bot_token_here" par votre jeton de bot et exécutez le script Python . Nous avons donc copié le jeton que les "hackers assistés par l'IA" ont ajouté dans MicrosoftUpdate.py
et l'avons collé dans notre script Python généré par l'IA.
Nous avons exécuté ce code…
… et nous étions dedans ! Nous avons recueilli des informations sur les membres (MEE6, $Demon666, $̷y̷n̷t̷a̷x̷E̷r̷r̷o̷r̷, aitanaxx05 + 4 reps, Esmeralda, SylexNaranjoDomina et AI Image Generator), les canaux et l'historique des messages. Il s'avère qu'ils avaient déjà infecté quelques utilisateurs - nous avons identifié une adresse IP de Cuba et une autre d'Inde. Et les informations du système d'exploitation étaient exfiltrées vers des canaux nommés d'après le nom d'utilisateur de la victime infectée :
Nous avons découvert que nous étions connectés à un bot appelé "SylexNaranjoDomina" qui avait des privilèges d'administrateur. Cela pourrait permettre à quelqu'un d'ajouter des membres, de supprimer des webhooks ou de modifier des canaux existants.
Quelqu'un pourrait facilement changer le nom de la guilde de "Le serveur de Demon666" en "Le serveur d'un Script Kiddie" - une description appropriée pour ce type de mauvais acteur, même si je pense que ChatGPT peut désapprouver cette idée.
Il ressort clairement de cette enquête que la prolifération du MaaS et l'utilisation de code assisté par l'IA ont créé de nouvelles opportunités pour les mauvais acteurs moins compétents sur le plan technique. Avec plus d'utilisateurs profitant de ces outils et offres, il y a encore plus de possibilités que des packages malveillants infectent votre environnement de construction. Alors que le paysage de la cybersécurité continue d'évoluer, nos défenses doivent également évoluer. En restant informés, prudents et protégés, nous pouvons avoir une longueur d'avance contre la menace en constante évolution de la cybercriminalité.