Duqu : développé en bon vieux C
Les experts de Kaspersky continuent leur analyse du framework Duqu qui est présumé avoir servi notamment au développement du virus Stuxnet. Dernière découverte : une partie du code a été écrite en... C - orienté objet, mais en bon vieux C tout de même.
Le framework Duqu vient de livrer un autre de ses secrets. Depuis plusieurs mois, les experts de Kasperky Labs analysent d’arrache pied le code de ce framework. L’emploi de ce terme apparaît justifié par la l’étroite proximité de Duqu et de Stuxnet. En janvier dernier, la conclusion s’est ainsi imposée : Stuxnet et Duqu ont été créés à partir d’une même plateforme conçue fin 2007 ou début 2008 avant de faire l’objet de changements lourds entre l’été et l’automne 2010. Des changements qui «ont été motivés par des avancées dans le code et par le besoin d’éviter la détection par des anti-virus ».
Mais cette conclusion en a amené une autre, plus préoccupante : «il y a eu de nombreux projets de programme s’appuyant sur cette plateforme [dite ‘tilded’] de 2007 à 2011. Stuxnet et Duqu sont deux d’entre eux - il pourrait y en avoir eu d’autres qui sont encore inconnus.» Et d’ajouter que «la plateforme continue de se développer.»
Mais passé ce stade, les experts de Kaspersky ont buté sur un bout de code du framework Duqu dont ils ne parvenaient pas identifier le langage dans lequel il avait été écrit. Jusqu’à lancer un appel à la communauté internationale de la sécurité informatique. Début mars, l’éditeur a ainsi expliqué que l’essentiel du code de Duqu est écrit en C++, compilé avec Microsoft Visual C++ 2008 mais la partie de code intrigante est du C «intermédiaire», sans pouvoir préciser encore à partir de quels outils il a été généré et compilé : «il est possible que ses auteurs aient utilisé un framework développé par eux-mêmes pour générer du code C intermédiaire, ou qu’ils ont utilisé un langage de programmation complètement différent.
Et la démarche a fini par payer. Hier, avec l’aide de nombreuses suggestions et des exemples de code commentés, les experts de Kaspersky ont présenté leurs conclusions : le code visé a été généré par «un dialecte C orienté objet custom, généralement appelé OO C». L’ensemble a été compilé par Microsoft Visual Studio. Et l’éditeur de souligner les implications de la découverte. Pour lui, les auteurs de Duqu soit, «ne font pas confiance aux compilateurs C++; il s’agit généralement de personnes qui ont commencé à programmer il y a longtemps lorsque le l’assembleur était le meilleur choix [...],» soit ils recherchaient une «portabilité [du code] extrême», soit les deux. Début mars, les équipes de Kaspersky soulignaient d’aileurs la versatilité du code utilisé : «une architecture hautement orientée événements qui pointe vers un code conçu pour être utilisé dans quasiment toutes sortes de conditions, y compris des commutations asynchrones.» Dans tous les cas, pour l’éditeur, ces éléments indiquent que «le code a été écrit par une équipe de développeurs expérimentés “de l’ancienne école”.»
Et cela ressemble à une mauvaise nouvelle pour la communauté de la sécurité car ces résultats tendent à indiquer «une équipe de développeurs plutôt professionnelle, qui apparaît réutiliser du vieux code écrit par d’excellents développeurs “de la vieille école”.» Qui sait alors quelles surprises ils réservent encore...