Au cours des dernières années, les cyberattaquants épaulés par des Etats ont renforcé leurs capacités à frapper les infrastructures critiques, comme les réseaux électriques, pour provoquer de graves perturbations. Cet arsenal s'est enrichi d'une boîte à outils qui semble avoir été mise au point par une société russe de cybersécurité pour des exercices red team. Baptisé Cosmienergy par les chercheurs de Mandiant, le malware peut interagir avec des unités terminales distantes (RTU) et d'autres dispositifs de technologie opérationnelle (OT) qui communiquent via le protocole spécialisé IEC 60870-5-104 (IEC-104) et sont couramment utilisés pour l'ingénierie électrique et l'automatisation de la production d'énergie. « Cosmicenergy est le dernier exemple en date de logiciels malveillants spécialisés dans l'OT, capables de provoquer des impacts qui sont rarement découverts ou divulgués », expliquent les chercheurs de Mandian dans leur rapport. « L'analyse du malwware et de ses fonctionnalités révèle que ses capacités sont comparables à celles employées dans des incidents et des programmes antérieurs, tels que Industroyer et Industroyer.V2, deux variantes déployées dans le passé pour avoir un impact sur la transmission et la distribution d'électricité via la norme CEI-104 ».

Egalement connu sous le nom de Crashoverride, Industroyer est un logiciel malveillant qui a été utilisé en 2016 contre le réseau électrique ukrainien et a privé d'électricité un cinquième de Kiev, la capitale du pays, pendant une heure. Le malware atteignait les RTUs sur le réseau OT via des serveurs MS-SQL puis émettait des commandes On/Off via la CEI-104 pour impacter les interrupteurs et les disjoncteurs des lignes électriques. La création et l'utilisation d'Industroyer sont attribuées à Sandworm, un groupe APT qui serait une unité de cyberguerre au sein du GRU, le service de renseignement militaire russe. En 2022, Sandworm a tenté une nouvelle attaque contre le réseau électrique ukrainien en utilisant une version actualisée du malware, baptisée Industroyer.V2.

Caché derrière une offre red team d'un éditeur

La dernière trousse à outils Cosmicenergy découverte par Mandiant a été téléchargée sur un service public d'analyse de logiciels malveillants en décembre 2021 par une personne en Russie. Une analyse du code suggère qu'il a été créé pour les exercices red team hébergés par une société russe de cybersécurité appelée Rostelecom-Solar ayant des liens avec le gouvernement russe. « Bien que nous n'ayons pas identifié de preuves suffisantes pour déterminer l'origine ou l'objectif de Cosmicernergy, nous pensons qu'il a peut-être été développé par Rostelecom-Solar ou une partie associée pour recréer des scénarios d'attaque réels contre des actifs du réseau énergétique », ont déclaré les chercheurs. « Il est possible que le programme ait été utilisé pour soutenir des exercices tels que ceux organisés par Rostelecom-Solar en 2021 en collaboration avec le ministère russe de l'énergie ou en 2022 pour le Forum économique international de Saint-Pétersbourg (SPIEF) ».

Rostelecom-Solar a reçu des fonds du gouvernement russe pour former des experts en cybersécurité et mener des exercices de perturbation du réseau électrique et de réponse aux situations d'urgence. Un module de la boîte à outils du logiciel malveillant contient une référence à Solar Polygon et les personnes qui recherchent ce terme le relient à Rostelecom-Solar. Selon Mandiant, malgré ses liens apparents avec des exercices red team, il est possible que ce kit de logiciels malveillants ait été ou puisse être réutilisé pour des attaques réelles, y compris par des acteurs étatiques russes qui ont déjà fait appel à des entrepreneurs privés pour développer des outils.

Charge utile de logiciel malveillant à double détente déployée manuellement

Cosmicernergy se compose de deux éléments, l'un écrit en Python et l'autre en C++. Le premier, que Mandiant a baptisé PIEHOP, est conçu pour se connecter à des serveurs MS-SQL et télécharger des fichiers ou émettre des commandes. Une fois connecté, il déploie le second composant, baptisé LIGHTWORK, qui est conçu pour émettre des commandes On/Off aux RTU connectés via IEC-104 sur TCP. « Il utilise des messages configurables IEC-104 Application Service Data Unit (ASDU) pour modifier l'état des adresses d'objets d'information (IOA) des RTU en les activant ou en les désactivant », expliquent les chercheurs. « LIGHTWORK utilise des entrées de ligne de commande pour le dispositif cible, le port et la commande IEC-104. Les IOA correspondent aux entrées et sorties des RTU, qui, selon la configuration et le déploiement, peuvent correspondre à des disjoncteurs ou à des interrupteurs de lignes électriques ». Cependant, selon Mandiant, les mappings des IOA peuvent varier d'un fabricant de RTU à l'autre, d'un appareil à l'autre et même d'un environnement à l'autre, ce qui signifie que les attaquants doivent disposer d'informations de reconnaissance préexistantes sur le déploiement qu'ils ciblent. L'échantillon analysé de LIGHTWORK comportait huit IOA codés en dur, mais il est difficile de déterminer quelle était l'intention des attaquants lorsqu'ils ont émis des commandes sans connaître les actifs ciblés exacts.

En outre, le composant PIEHOP et le logiciel malveillant lui-même ne disposent d'aucune capacité de découverte de réseau intégrée, ce qui signifie que les attaquants doivent déjà disposer d'informations sur les serveurs MSSQL et les RTU ciblés, telles que les identifiants et les adresses IP, pour déployer les composants avec succès. Il s'agit donc d'une boîte à outils post-intrusion. Bien que Cosmicenergy ne partage aucun code avec les outils malveillants OT précédents, il emprunte des techniques à plusieurs d'entre eux, outre Industroyer : l'utilisation de Python pour le développement de logiciels malveillants OT a également été observée avec IRONGATE et TRITON ; l'utilisation de bibliothèques open source qui mettent en œuvre des protocoles OT propriétaires et abaissent la barre pour le développement de telles menaces ; et l'utilisation abusive de protocoles qui ne sont pas sécurisés de par leur conception, tels que IEC-104, et qui manquent de mécanismes d'authentification ou de chiffrement.

Atténuer et détecter les attaques Cosmicernergy

Bien qu'il n'y ait aucune preuve que Cosmicernergy ait été utilisé dans des attaques sauvages, la possibilité ne peut être écartée et, à tout le moins, il peut inspirer d'autres développeurs de malwares OT, tout comme Industroyer a servi à inspirer ses créateurs. L'enquête de Mandiant contient des indicateurs de compromission et des hachages de fichiers, mais l'entreprise recommande également aux organisations de mener une chasse active aux menaces. Les voici :

1/ Mettre en place la collecte et l'agrégation des journaux basés sur l'hôte pour les systèmes de la couronne tels que les interfaces homme-machine (HMI), les stations de travail d'ingénierie (EWS) et les serveurs clients OPC au sein de leurs environnements et examiner les journaux afin de prouver l'exécution de scripts Python ou de codes non autorisés sur ces systèmes ;

2/ Identifier et enquêter sur la création, le transfert et/ou l'exécution d'exécutables Python non autorisés (par exemple, PyInstaller ou Py2Exe) sur des systèmes d'OT ou des systèmes ayant accès à des ressources d'OT ;

3/ Surveiller les systèmes ayant accès aux ressources de l'OT pour détecter la création de dossiers temporaires légitimes, de fichiers, d'artefacts et de bibliothèques externes nécessaires pour prouver l'exécution de scripts Python, par exemple la création d'un dossier PyInstaller temporaire "_MEIPASS" ,

4/ Surveiller les serveurs MSSQL ayant accès aux systèmes et réseaux d'OT afin de détecter les éléments suivants : activités de reconnaissance et d'énumération des serveurs MSSQL et des informations d'identification, connexions réseau non autorisées aux serveurs MSSQL (TCP/1433) et authentification irrégulière ou non autorisée, activation et utilisation de procédures stockées SQL étendues pour l'exécution de commandes shell Windows et le transfert, la création, la mise en scène et le décodage d'exécutables codés en base64.