Au cours des dernières années, les pirates ont ciblé les périphériques réseau publics tels que les routeurs, les concentrateurs VPN et les équilibreurs de charge pour s’introduire dans les réseaux d’entreprise. S’il n’est pas rare de trouver des vulnérabilités d’exécution de code à distance dans ces dispositifs, les incidents au cours desquels les attaquants ont pu y déployer des logiciels malveillants capables de survivre à des redémarrages ou à des mises à jour de firmware sont rares et généralement attribués à des groupes APT sophistiqués. Parce qu’ils utilisent une mémoire flash qui se dégrade au fil du temps si elle est soumise à de nombreuses opérations d’écriture, les périphériques réseau embarqués stockent généralement leur micrologiciel dans des systèmes de fichiers en lecture seule et chargent leur contenu dans la RAM à chaque redémarrage. Cela signifie que toutes les modifications et tous les fichiers générés par les différents services en cours d’exécution pendant le fonctionnement normal du dispositif sont temporaires, car ils se produisent uniquement dans la RAM et ne sont jamais enregistrés dans le système de fichiers, qui est restauré à son état initial lorsque le dispositif est redémarré.
Les exceptions sont les fichiers de configuration et les scripts qui sont générés par l’interface d’administration du dispositif et sont stockés dans une zone de stockage limitée connue sous le nom de NVRAM (mémoire vive non volatile). Du point de vue de l’attaquant, cette limitation rend beaucoup plus difficile la compromission des dispositifs de mise en réseau de manière persistante. C’est pourquoi les attaques de masse contre les routeurs domestiques, par exemple, impliquent des botnets automatisés qui rescannent et réinfectent périodiquement les routeurs qui ont été redémarrés.
Cependant, dans un scénario d’attaque ciblée contre des réseaux d’entreprise, les attaquants préféreraient rester furtifs et ne pas attaquer plusieurs fois le même dispositif afin de ne pas déclencher les détections qui pourraient être mises en place après la publication d’une vulnérabilité. Ils préféreraient également avoir un accès à long terme à ces dispositifs et les utiliser comme ponts vers les réseaux internes, ainsi que comme points de pivot à partir desquels ils pourraient effectuer des mouvements latéraux et étendre leur accès à d’autres dispositifs non publics.
Opportunités de persistance dans les équilibreurs de charge Citrix et F5
Depuis 2019, trois vulnérabilités critiques dans les équilibreurs de charge Citrix et F5 Networks (CVE-2019-19781, CVE-2020-5902 et CVE-2022-1388) ont été publiquement documentées et exploitées dans la nature, déclenchant des avertissements de l’Agence américaine de cybersécurité et de sécurité des infrastructures (Cisa) et d’autres organisations. C’est pourquoi les chercheurs de la société de sécurité informatique Eclypsium ont récemment étudié les possibilités de persistance dont disposent les attaquants sur ces équipements. Leurs conclusions ont été publiées dans un rapport mercredi. En mai 2022, la société de sécurité Mandiant a signalé qu’un acteur de cyberespionnage - identifié à l’époque sous le nom de UNC3524 mais corrélé depuis à l’APT29 (Cozy Bear) géré par l’État russe - a compromis des réseaux d’entreprise et n’a pas été détecté pendant de longues périodes en déployant des back doors sur des équipements réseau, notamment des équilibreurs de charge, qui ne prennent pas en charge l’exécution d’outils tels que la détection et la réponse aux points d’accès (EDR) et qui utilisent des versions anciennes de CentOS et BSD. Bien que Mandiant n’ait pas nommé les équipements ou leurs fournisseurs, les chercheurs d’Eclypsium pensent qu’il s’agit d’appareils F5 Networks et Citrix, puisque les équilibreurs de charge F5 fonctionnent sous CentOS et Citrix (anciennement Netscaler) sous FreeBSD.
« Une caractéristique de l’UNC3524 est ressortie : Leurs TTP n’étaient pas fiables, ils utilisaient des logiciels open source modifiés pour établir leur porte dérobée, et semblaient ne posséder qu’une compréhension suffisante des systèmes pour atteindre les objectifs les plus basiques », ont déclaré les chercheurs d’Eclypsium dans leur rapport. « Leurs implants étaient si peu fiables qu’ils installaient des shells web dans le seul but de les redémarrer lorsqu’ils mouraient. C’est cette caractéristique qui a été le catalyseur de la recherche, la question sans réponse étant : Est-il possible d’utiliser un framework C2 standard sur un équilibreur de charge ? Le logiciel malveillant peut-il être suffisamment résilient pour persister malgré les redémarrages et même les mises à niveau ? Est-il possible d’infecter le dispositif si profondément qu’un nettoyage et une réinstallation ne suffisent pas ? »
De nombreux cybergroupes choisissent d’utiliser des versions piratées de cadres d’attaques tels que Cobalt Strike ou Brute Ratel, mais les chercheurs d’Eclypsium voulaient quelque chose qui soit open source et facilement accessible aux attaquants moins sophistiqués. Ils ont donc choisi Sliver, un cadre d’émulation d’adversaire open source, pour leur implant de test. Sliver est écrit en Go, il est donc multiplateforme et offre des fonctionnalités de pivotement et de tunneling. Pour étudier les fichiers que les équilibreurs de charge F5 conservent lors des redémarrages et des mises à jour du micrologiciel, les chercheurs ont examiné la fonctionnalité de sauvegarde de la configuration disponible dans l’interface d’administration, qui peut être utilisée pour générer une archive contenant toutes les configurations et tous les paramètres qui peuvent ensuite être déployés sur une nouvelle installation. À l’intérieur de l’archive, qui comprenait des centaines de fichiers, les chercheurs ont choisi trois scripts exécutables et des fichiers de configuration qui peuvent exécuter des scripts lors de certains événements.
« Une découverte inattendue au cours de cette recherche a été la documentation du fournisseur ; elle s’est avérée être une mine d’informations sur les caractéristiques et les fonctionnalités non documentées intégrées à ces équipements au fil des ans », ont déclaré les chercheurs. « Sans cette documentation, cette recherche aurait été beaucoup plus difficile. Il est important de comprendre comment les appareils gèrent leurs fichiers de configuration. »
3 façons de stocker et de lancer des scripts malveillants
Après avoir parcouru la documentation et les fichiers de configuration, l’équipe disposait désormais de trois méthodes différentes pour stocker et lancer des scripts après le redémarrage, qui survivraient même à la réinstallation, car ils seraient inclus dans les sauvegardes de configuration. Le stockage de l’implant de 12 Mo directement dans l’archive de sauvegarde n’aurait pas été discret. Les chercheurs ont donc opté pour le stockage d’un script qui téléchargerait ultérieurement l’implant sur Internet, supprimerait toute version existante et le déploierait. « Le fait d’opter pour le téléchargement de l’implant suppose que l’appareil peut se connecter à Internet », expliquent-ils. "Si l’attaquant n’avait pas ce luxe mais avait un pied à terre sur un autre système du réseau, un implant plus petit pourrait être stocké dans la structure du répertoire de configuration sans alerter les administrateurs. Cet implant pourrait se connecter au système "jump box" sous le contrôle de l’attaquant. »
Pour plus de discrétion, les chercheurs ont découvert que le service Linux runsv sur les applianvce F5 était configuré pour exécuter un service dont la configuration pointait vers un fichier binaire appelé restjavad qui n’existait pas sur le système. Ils ont utilisé ce nom de fichier pour leur implantation afin qu’il ne paraisse pas suspect dans une liste de processus. Si un administrateur repérait le processus et recherchait le nom, il trouverait probablement la documentation de F5 pour le service légitime restjavad. La recherche sur le système Citrix s’est avérée un peu plus difficile, car la documentation n’était pas aussi détaillée. Cependant, dans le manuel de l’utilisateur, ils ont trouvé une note sur la configuration de la synchronisation NTP (Network Time Protocol). Les instructions impliquaient la création d’un fichier appelé rc.netscaler dans le répertoire /nsconfig, qui est sauvegardé lors d’une sauvegarde, puis l’ajout d’une ligne appelée /bin/sh /etc/ntpd_ctl full_start. Cependant, les scripts dans le répertoire /etc/ n’étaient pas définis comme exécutables et il n’y avait aucun moyen de changer cela. Au cours du processus, les chercheurs ont découvert que le système utilisait un paquet appelé Monit pour démarrer, arrêter et surveiller l’état des processus système et que Monit stockait sa configuration dans /nsconfig.
Un malware renouvelé
« Nous avons fini par écrire un wrapper pour notre implant afin qu’il fonctionne comme un service et nous avons réutilisé la même logique que le chargeur F5 », ont déclaré les chercheurs. « A partir de là, nous avons simplement déposé ce fichier et le fichier monit modifié dans /nsconfig et vérifié que l’implant démarrerait au démarrage et que notre wrapper serait inclus dans les fichiers de sauvegarde. » Un autre effet secondaire de l’utilisation de Monit a été de rendre l’implant encore plus persistant, Monit redémarrant automatiquement le service toutes les quelques secondes si jamais il était tué manuellement. Les chercheurs ont également testé la capacité de pivotement, qui permet aux attaquants d’utiliser l’appareil compromis comme un proxy pour accéder à d’autres appareils du réseau qui n’auraient normalement pas accès à Internet. Le système F5 a permis de lier l’implant à un port sur l’une des IP de l’appareil, puis d’utiliser une ACL pour autoriser l’accès à ce port.
« La barre pour les attaquants avancés ne cesse de s’abaisser et comme le coût imposé pour attaquer des systèmes durcis comme les serveurs ou les postes de travail est de plus en plus élevé, les attaquants se tournent vers des moyens plus originaux d’infiltrer les systèmes », concluent les chercheurs. « L’époque des microprogrammes propriétaires et spécialisés utilisés par les routeurs et les commutateurs est révolue, remplacée par un microprogramme qui est un système d’exploitation entièrement fonctionnel. Cette évolution introduit le risque de niveau de serveur de commodité sur des dispositifs qui ont historiquement été hors de portée pour tous les attaquants, sauf les plus habiles.