Un paquet PyPI malveillant permettant d’ouvrir des portes dérobées sur Windows, Linux et Mac
Un nouveau paquet Python malveillant a été repéré dans le registre PyPI, permettant de déposer des balises Cobalt Strike et des portes dérobées sur les systèmes Windows, Linux et macOS.
Le 17 mai 2022, des acteurs de la menace ont téléchargé un paquet malveillant nommé "pymafka" sur PyPI. Ce nom est très similaire à celui de PyKafka, un client Apache Kafka largement utilisé qui compte plus de quatre millions de téléchargements sur le registre PyPI.
Le paquet en question a atteint 325 téléchargements avant d'être supprimé. Cependant, il pourrait encore causer des dommages importants aux personnes concernées, car il permet un accès initial au réseau interne des développeurs qui l'ont téléchargé. Ces derniers devront le remplacer immédiatement et vérifier que leurs systèmes ne contiennent pas de balises Cobalt Strike et de portes dérobées Linux.
Selon un rapport d'Ax Sharma, l'infection commence par l'exécution du script "setup.py" contenu dans le paquet. Ce script détecte le système d'exploitation de l'hôte et, selon qu'il s'agit de Windows, Linux ou Darwin (macOS), récupère une charge utile malveillante compatible qui est exécutée sur le système.
Pour les systèmes Linux, le script Python se connecte à une URL distante à l'adresse 39.107.154.72 et envoie la sortie vers le shell bash. Tandis que pour Windows et macOS, la charge utile est une balise Cobalt Strike, qui fournit un accès à distance à l'appareil infecté.
Cobalt Strike est une suite de tests de pénétration largement utilisée qui présente des caractéristiques puissantes telles que l'exécution de commandes, l'enregistrement de frappes, les actions sur les fichiers, le proxy SOCKS, l'élévation de privilèges, le vol d'informations d'identification, le balayage de ports, etc.
Ses "balises" sont des agents shellcodes sans fichier, difficiles à détecter, qui donnent aux acteurs distants un accès stable et fiable aux systèmes compromis, qu'ils utilisent à des fins d'espionnage, de mouvement latéral ou pour déployer des charges utiles de seconde étape comme les ransomwares.
"Sur les systèmes Windows, le script Python tente de déposer la balise Cobalt Strike dans 'C:UsersPubliciexplorer.exe'", détaille le rapport de Sonatype.
Cette faute d'orthographe est remarquable car le processus légitime de Microsoft Internet Explorer est généralement appelé "iexplore.exe" (sans "r" à la fin) et n'est pas présent dans le répertoire C:UsersPublic."
Les exécutables téléchargés correspondent au système d'exploitation qu'ils ciblent, à savoir "win.exe" et "macOS", et tentent de contacter une adresse IP chinoise une fois qu'ils sont lancés.
Du point de vue du développeur de logiciels, plusieurs choses sont mal faites lorsque quelqu'un utilise un paquet non fiable, mais la plus courante et, il faut bien l'admettre, la plus facile à faire est de mal saisir les noms de paquet pendant la construction.
Les développeurs de logiciels devraient examiner minutieusement les noms et les détails des paquets et revérifier leur sélection de blocs de construction lorsque quelque chose semble bizarre.
Dans ce cas, le paquet tente de se faire passer pour un projet renommé, mais il n'a aucune description sur la page PyPI, aucun lien vers la page d'accueil, un historique de publication extrêmement court et une date de publication inexplicablement récente.