ArticleCybersécurité & Conformité
Comment le malware Perfctl a infecté des millions de serveurs Linux
Pendant plusieurs années, le malware de cryptominage perfctl a infecté des serveurs Linux sans presque se faire remarquer. Selon des chercheurs, il pourrait servir à d'autres attaques via du proxyjacking.

Des experts de la société Aqua Security ont découvert une campagne de malwares baptisés « perfctl » actives au cours des 3 ou 4 dernières années. Elle a ciblé des millions de serveurs Linux en tentant d’exploiter environ 20 000 configurations erronées exposant des informations d’identification ou des interfaces d’administration non sécurisées. Doté d'une porte dérobée, perfectl offre aux attaquants une grande latitude d’actions. Il semble que le malware est surtout utilisé pour le vol de ressources. Ses principales charges utiles comprennent un mineur de crypto-monnaie Monero et un logiciel de proxyjacking qui permet à d'autres personnes d'utiliser la bande passante d'un système.
« Nous avons constaté que de nombreux rapports d'incidents dans les forums communautaires décrivaient tous des indicateurs de compromission liés à ce logiciel malveillant », ont écrit les chercheurs d'Aqua Security dans leur rapport sur perfctl. Ce nom est lié au processus de minage de crypto-monnaie du malware, majoritairement signalé sur les forums par les utilisateurs concernés. Mais la famille de malware comporte de multiples composants, notamment un dropper, une porte dérobée et un rootkit qui dissimule ses fichiers et processus et tente d'utiliser un exploit d'élévation de privilèges.
Vulnérabilités et mauvaises configurations pour l'accès initial
Pour obtenir l'accès initial, les attaquants à l'origine de cette campagne exploitent des configurations erronées et des vulnérabilités connues dans des logiciels populaires. Les chercheurs d'Aqua ont découvert le malware après ciblage de l'un de leurs serveurs de veille en exploitant la vulnérabilité CVE-2023-33246 présente dans la messagerie distribuée et de streamaing open source Apache RocketMQ. Après avoir analysé les serveurs utilisés par les attaquants, les chercheurs ont également trouvé une liste de 20 000 chemins de traversée de répertoires (path ou directory traversal) à la recherche de fichiers d'identification et de configuration stockés de manière non sécurisée sur les serveurs. Il s'agit notamment de fichiers contenant des configurations conf, .ini, .json et .xml.
Nombre de ces fichiers accompagnent les applications déployées et contiennent des informations sensibles, en particulier des données d'identification ou des jetons d'accès, mais ils ne devraient pas être lisibles par des utilisateurs externes. Malheureusement, ces erreurs de configuration sont fréquentes. Ainsi, des chercheurs en sécurité ont récemment signalé que des attaquants avaient collecté des fichiers .env provenant d'environ 110 000 domaines, conduisant à l'exposition de plus de 90 000 variables d'environnement uniques, dont 7 000 correspondent à des services cloud.
Un déploiement en plusieurs étapes
Après avoir accédé à un système, les attaquants tentent d'exécuter un script shell appelé rconf pour effectuer plusieurs vérifications, définir des variables d'environnement et télécharger la charge utile principale. Par exemple, il vérifie si le répertoire /tmp existe, s'il est accessible en écriture et s'il dispose des autorisations d'exécution. Si ce n'est pas le cas, il tente de le monter. Il vérifie également si l'architecture du système est x86_64, car il ne fonctionnera pas sur ARM ou d'autres types de CPU. Le script télécharge ensuite un fichier appelé avatar.php, l'enregistre dans le répertoire /tmp sous le nom httpd - nom généralement utilisé par le processus du serveur web Apache - et l'exécute. Il est intéressant de noter que la demande de téléchargement du fichier avatar.php à partir des serveurs des attaquants doit comporter un User-Agent spécifique pour recevoir la charge utile malveillante. Dans le cas contraire, le serveur fournira un fichier php bénin. La charge utile httpd est un exécutable Linux détecté comme un malwware par plusieurs antivirus. Ce dropper de logiciels malveillants polyvalents sert de composant principal. Après son exécution, il utilise le masquage de processus pour créer une copie de lui-même avec le nom du processus qui l'a exécuté à l'origine - dans ce cas, sh, l'interpréteur de commandes Linux - puis s'exécute à nouveau avec ce nom, effaçant la copie précédente.
Le logiciel malveillant tente également d'exploiter la vulnérabilité d’élévation de privilèges CVE-2021-4043 dans le paquet Linux polkit, afin d'obtenir les privilèges d'administrateur. « En supprimant le binaire d'origine et en se recopiant ailleurs, le malware évite d'être détecté par les mesures de sécurité statiques basées sur les fichiers qui pourraient surveiller l'emplacement d'origine », ont expliqué les chercheurs. « Le répertoire /tmp est une cible courante, car il est généralement accessible en écriture et fréquemment utilisé pour des fichiers temporaires, ce qui le rend moins suspect. En supprimant le binaire d'origine et en le tuant lui-même, les analystes peuvent avoir plus de mal à remonter jusqu'à la charge utile d'origine, ce qui complique l'analyse médico-légale. » La nouvelle copie sh recueille des informations sur le système d'exploitation et dépose neuf binaires : quatre copies d'elle-même à différents endroits, utilisant des noms différents pour se faire passer pour des binaires et des bibliothèques légitimes, plusieurs rootkits, le cryptomineur et un autre fichier utilisé pour la persistance afin de s'assurer que le processus principal est bien exécuté.
Rootkits et escalade des privilèges
Le principal composant du rootkit, appelé libgcwrap.so, utilise la variable d'environnement LD_PRELOAD pour se charger avant que d'autres bibliothèques ne soient chargées. Une fois en mémoire, il s'accroche aux symboles Libpam et Libpcap, en écrasant la fonction pam_authenticate liée au processus de connexion de l'utilisateur, et la fonction pcap_loop liée à la bibliothèque de capture du trafic réseau libpcap. En manipulant ces fonctions, le rootkit pourrait injecter un accès malveillant dans le processus de connexion de l'utilisateur, comme la capture d'informations d'identification. Il pourrait également interférer avec les outils de surveillance de la sécurité, les analyseurs de réseau et d'autres systèmes qui effectuent un scan des paquets à l'aide de la bibliothèque libpcap. Le logiciel malveillant dépose aussi des copies modifiées de top, ldd, lsof et crontab. Ces utilitaires système proposent à un administrateur d'inspecter un système. Par exemple, top peut aider à surveiller la consommation de ressources des processus, de sorte que si un administrateur fait appel à top pour enquêter sur un ralentissement du système, la version modifiée cachera le processus de cryptomining.
L'utilitaire ldd affiche les dépendances dynamiques requises par un exécutable. La modification de ldd permet aux attaquants de cacher leurs propres bibliothèques malveillantes si quelqu'un examine leur exécutable malveillant. Crontab est utilisé pour planifier et exécuter des tâches (cron jobs) à des moments précis. Les auteurs de malware en abusent souvent comme mécanisme de persistance pour s'assurer que leurs logiciels sont redémarrés. L'utilitaire lsof répertorie les fichiers, les sockets et les connexions réseau ouverts par différents processus. « Il est tout à fait logique qu’un attaquant tente de modifier les résultats de ces utilitaires, car ils peuvent être utilisés par des développeurs ou des ingénieurs en sécurité pour évaluer le serveur et comprendre ce qui attaque la machine », ont indiqué les chercheurs.
Cryptomining et portes dérobées
Le cryptomineur Monero déposé, appelé perfctl, est censé se faire passer pour l'outil de contrôle des performances perf Linux avec le préfixe commun ctl, qui signifie « contrôle », et qui est exploité par de nombreux utilitaires de gestion comme systemctl et journalctl. Il s’appuie sur Tor pour la commande et le contrôle, et il écoute les commandes des attaquants, ce qui en fait également une porte dérobée qui sert parfois pour l'accès à distance. « Au cours de l'un de nos tests en bac à sable, un attaquant a utilisé l'une des portes dérobées du malware pour accéder au pot de miel et a commencé à déployer de nouveaux utilitaires pour mieux comprendre la nature de notre serveur, en essayant de voir exactement ce que nous faisons à son logiciel », ont encore écrit les chercheurs.
Dans certains cas, ces derniers ont par ailleurs remarqué le déploiement d'un logiciel proxy qui permet aux attaquants de vendre la bande passante inutilisée de leurs victimes à leur insu par l'intermédiaire de réseaux proxy. Cette technique est connue sous le nom de proxyjacking. Le rapport Aqua Security comprend une liste d'indicateurs de compromission dont des hachages de fichiers, des noms de domaine et des adresses IP, ainsi que des stratégies de détection faisant appel à la surveillance du comportement du système, à l'analyse des journaux, à la surveillance de l'intégrité des fichiers et des processus et à l'analyse du trafic réseau.

