Muse à jour (17 juillet 2017) : Les auteurs de cette recherche sur Industroyer, Anton Cherepanov et  Robert Lipovsky, présenteront les résultats de leurs recherches au Black Hat USA, qui se déroulera à Las Vegas le 26 juillet 2017. Cliquez ici pour plus de détails. 

L’attaque contre le réseau électrique d’Ukraine en 2016, qui a privé d’électricité pendant une heure Kiev, sa capitale, était en fait une cyberattaque. Les chercheurs d’ESET ont depuis analysé des échantillons du logiciel malveillant et ont conclu qu’il s’agissait de Win32/Industroyer, un programme capable d’exécuter ce type d’attaque.

Bien que l’on suspecte ce programme malveillant d’être responsable de ce que les spécialistes en cybersécurité considèrent comme un essai à grande échelle, la chose n’a toujours pas été confirmée. Dans tous les cas, ce logiciel malveillant peut endommager considérablement les réseaux électriques et pourrait aussi être revu pour cibler d’autres types d’infrastructures essentielles.

Figure 1 : Schéma opérationnel d'Industroyer

Industroyer présente une menace particulièrement importante, puisqu’il peut commander directement les disjoncteurs et les interrupteurs des postes électriques. Pour ce faire, il recourt à des protocoles de communication industrielle utilisés partout dans le monde dans les infrastructures d’alimentation en énergie, les systèmes de commande des transports et autres infrastructures essentielles, notamment pour l’eau et le gaz.

Les interrupteurs et disjoncteurs sont l’équivalent numérique des commutateurs analogiques; ils peuvent être conçus pour exécuter diverses fonctions. Ainsi, les conséquences peuvent aller de la simple coupure d’alimentation électrique à des défaillances en cascade et des dommages matériels importants. La gravité de ces incidences peut varier d’un poste à l’autre. Il va sans dire que la perturbation de telles infrastructures peut nuire de façon directe ou indirecte au bon fonctionnement de services essentiels.

La dangerosité de Industroyer réside dans le fait qu’il se sert de protocoles en respectant leur utilisation prévue. Ces protocoles ont été conçus il y a des décennies de cela. À cette époque, les systèmes industriels étaient isolés du reste du monde. Par conséquent, la sécurité n’était pas un enjeu pour la conception des protocoles de communication. Les assaillants n’avaient donc pas à trouver leurs vulnérabilités et n’avaient qu’à faire en sorte que leur logiciel malveillant communique correctement avec ceux-ci.

La plus récente panne de courant est survenue le 17 décembre 2016, soit presque un an jour pour jour après la cyberattaque bien connue du 23 décembre 2015, qui a privé environ 250 000 foyers d’électricité dans diverses régions de l’Ukraine.

En 2015, les responsables de l’attaque ont infiltré les réseaux de distribution d’électricité à l’aide des logiciels malveillants BlackEnergy et KillDisk et d’autres composants malveillants, ils ont accédé aux postes de travail des commandes grâce à un logiciel de prise de contrôle à distance, puis ont coupé le courant. Bien que BlackEnergy et Industroyer aient tous les deux servi à cibler le réseau électrique en Ukraine, il ne semble pas y avoir de similitudes dans leur code.

Structure et fonctions de base d'Industroyer

Industroyer consiste en un logiciel malveillant modulaire. La porte dérobée, son élément central, est utilisée pour gérer l’attaque : elle permet d’installer et de contrôler les autres éléments, puis de se connecter à un serveur à distance pour recevoir des commandes et envoyer des rapports aux assaillants.

Industroyer se distingue des autres logiciels malveillants qui ciblent les infrastructures par son utilisation de quatre composants de charge conçus pour obtenir un contrôle direct des interrupteurs et des disjoncteurs d’un poste électrique.

Chacun de ces composants cible des protocoles de communication particuliers précisés dans les normes suivantes : IEC 60870-5-101IEC 60870-5-104, IEC 61850 et OLE pour le contrôle des processus d’accès aux données (OPC DA).

De manière générale, les charges d’un virus travaillent par étape pour cartographier le réseau, puis créer et utiliser des commandes qui serviront dans les dispositifs de commande industriels en question. Les charges d’Industroyer sont un reflet du grand savoir et de la compréhension de leur auteur des systèmes de contrôle industriel.

Figure 2 : Les composantes du logiciel malveillant Industroyer

Figure 2 : Les composantes du logiciel malveillant Industroyer

Le logiciel malveillant inclut des fonctions qui lui permettent de ne pas se faire retracer, d’assurer sa persistance et d’effacer toute trace de sa présence après son méfait.

Par exemple, la communication avec des serveurs de commande et de contrôle cachés dans Tor peut n’avoir lieu qu’en dehors des heures de travail. De plus, il met en place une porte dérobée supplémentaire – déguisée en application Bloc-notes – conçue pour rétablir l’accès au réseau si la porte dérobée principale est détectée ou désactivée.

Le module de destruction sert à effacer les clés de registre indispensables au système et à écraser les fichiers pour empêcher le système de redémarrer et complexifier sa récupération. Un point digne de mention est le balayeur de ports qui cartographie le réseau pour tenter de trouver des ordinateurs contenant des renseignements intéressants. Dans le cas présent, les assaillants ont mis au point leur propre outil plutôt que d’utiliser un logiciel existant. Enfin, on trouve aussi un module visant le déni de service qui tire parti de la vulnérabilité CVE-2015-5374 des appareils SIPROTEC de Siemens et les rend impropres à toute action.

Conclusion

Industroyer est un logiciel malveillant hautement personnalisable. Bien qu’il soit universel, puisqu’il peut être utilisé pour attaquer tout système de contrôle industriel à l’aide de protocoles de communication ciblés, certains des composants trouvés dans les échantillons analysés servent à cibler du matériel spécifique. Par exemple, l’élément de destruction et une des charges sont destinés à être utilisés contre les systèmes intégrant certains produits de commande d’alimentation industrielle d’ABB, et la composante de déni de service cible les appareils SIPROTEC de Siemens utilisés dans les postes électriques et autres domaines d’application liés.

En principe, il est difficile d’imputer les attaques à un logiciel malveillant sans effectuer une intervention sur place après l’incident, mais il est fort probable qu’Industroyer soit derrière l’attaque de décembre 2016 contre le réseau électrique en Ukraine. Industroyer possède toutes les capacités spécifiques pour perpétrer ce genre d’attaque, d’autant plus que son activation est datée du 17 décembre 2016, jour de la panne.

L’attaque de 2016 sur le réseau électrique ukrainien a suscité beaucoup moins d’intérêt que la précédente, un an plus tôt. Pourtant, l’outil qui a probablement été utilisé, Win32/Industroyer, est un logiciel malveillant de pointe qui se trouve entre les mains d’un assaillant habile et déterminé.

Les assaillants peuvent adapter le logiciel malveillant à son environnement grâce à sa persistance dans le système et aux renseignements précieux qu’il fournit et qui aide à améliorer ses charges hautement personnalisables – il devient alors extrêmement dangereux. Qu’il s’agisse ou non d’un test, la récente attaque du réseau électrique ukrainien devrait sonner l’alarme chez les responsables de la sécurité des infrastructures essentielles partout dans le monde.

Des renseignements techniques supplémentaires sur le logiciel malveillant et les indicateurs de compromission sont présentés de façon exhaustive dans le document de présentation technique et sur github. Pour toutes questions ou pour envoyer des échantillons liés au sujet de cet article, communiquez avec nous à l’adresse suivante : threatintel@eset.com.