Le mystère du "Framework Duqu" est résolu
Le malware aurait été écrit avec une extension C orientée objet créée sur mesure

Les rubriques (actu, forums, tutos) de Développez
Tags
Réseaux sociaux


 Discussion forum

Retrouvez le dossier complet de la rédaction
Sur le même sujet
Le , par MiaowZedong, Expert Confirmé
Mise à Jour du 20/03/2012 par MiaowZedong

Les chercheurs de Kaspersky ont annoncé hier (19/03/2012) qu’ils avaient résolu « avec un niveau de certitude très élevé » le mystère Duqu.

L’expert Igor Soumenkov commence par remercier les nombreux développeurs qui ont suggéré des pistes d’investigation : il annonce avoir reçu plus de 200 commentaires sur son blog et 60+ emails. Il dit donc « un grand merci » à tous ces participants. Parmi les différentes suggestions, le LISP, le Forth, Google Go, l’Erlang, Delphi, les compilateurs exotiques du C++ ainsi que la possibilité de programmer orienté objet directement en C sont tous revenus plusieurs fois.

C’est finalement cette dernière possibilité qui a été retenue. Suite à un commentaire, Soumenkov a expérimenté avec le compilateur pour C de Microsoft Visual Studio. Il a finalement trouvé une combinaison d’options qui permet, avec MSVC 2008, de reproduire à l’identique un segment de code machine de Duqu à partir d’un segment de code source C orienté objet. Avec d’autres compilateurs testés, y comprit MSVC 2005, il obtient un code machine légèrement différent.


Code de Duqu décompilé à la main en C

Étant données les similarités entre les différents constructeurs et les membres des classes, il semble très peu probable que le module communication de Duqu ait été codé entièrement à la main. Par contre, il n’existait pas, au moment où le trojan a été créé, de framework C orienté objet qui produise un code machine semblable à celui de Duqu. Soumenkov en conclut que les développeurs de Duqu utilisent un framework « maison ».

Pour les chercheurs de Kaspersky, la préférence du C par rapport au C++ reflète des programmeurs expérimentés, qui souhaitent un contrôle plus direct sur le code machine produit ainsi qu’une « extrême portabilité ».

Ils sont désormais certains que ce module de Duqu a été compilé avec MSVC 2008 et ses options /O1 et /Ob1. Il a « sans doute » été écrit avec une extension C orientée objet, créée sur mesure. L’architecture événementielle a été créée avec le Framework Duqu ou son extension OO du C. Il n’est pas impossible que le module communication de Duqu ait servi dans d’autres applications, puis ait été réutilisé pour le trojan.

Kaspersky souligne la très haute qualité du code de Duqu (et Stuxnet), selon eux absolument exceptionnelle par rapport aux malwares contemporains.

Il leur semble que ces programmes ont été créés par des équipes « plutôt professionnelles » qui utilisent du code produit par des « top » développeurs expérimentés. Ils n’hésitent pas à parler de « gemmes » au milieu d’ « une masse de malwares stupides ».

Source: Kaspersky

Le trojan Duqu utilise un langage de programmation inconnu
D'après Symantec, qui va jusqu'à parler d'un "Framework Duqu" et qui fait appel à la communauté pour le déchiffrer

Fin 2011, les chercheurs de Symantec avaient identifié un trojan baptisé "Duqu" qui cible les systèmes de type SCADA (Supervisory Control and Data Acquisition), utilisés dans l'industrie pour contrôler des machines-outils. Duqu aurait infecté principalement des organisations en Europe et au Moyen-Orient.

Les chercheurs Russes de Kaspersky avaient alors réussi à identifier des grandes similarités entre certaines parties du code source de Duqu et celui du ver Stuxnet, qui en 2010 avait saboté les centrifugeuses de cinq usines d'enrichissement d'uranium en Iran.

Contrairement à Stuxnet, Duqu ne sabote pas le fonctionnement du système SCADA. Il s'agit d'un outil d'espionnage, qui se connecte sur des serveurs distants pour leur remonter clandestinement des données collectées sur la machine hôte.

Mais ce qui interpelle aujourd'hui le plus les chercheurs du laboratoire Kaspersky, c'est qu'un des modules de Duqu a été écrit dans un language de programmation qu'ils n'ont pas pu identifier.

Duqu est composé de plusieurs modules, dont la plupart ont été écrits en C++ et compilés avec Microsoft Visual C++.

En revanche, le code qui permet à la charge utile de communiquer avec les serveurs distants n'est certainement pas écrit en C++ ou compilé avec MSVC++. Il s'agit d'un language ou d'un framework C orienté objet, que les chercheurs de Kaspersky n'ont jamais vu auparavant. Ils ont baptisé ce language/framework le "Framework Duqu".

Ce language présente les caracteristiques d'être orienté objet, évènementiel, et optimisé pour la programmation asynchrone et le réseau. Il y aurait des ressemblances avec l'Objective-C, mais pour Kaspersky "ce code ne ressemble pas à du code compilé à partir d'Objective-C".


Le modèle évènementiel du "Framework Duqu" d’après Igor Soumenkov de Symantec

Il est possible que le "Framework Duqu" ait été créé sur mesure.

Il pourrait y avoir plusieurs raisons pour cela. La plus évidente serait l'obfuscation, car le "Framework Duqu" rend la retro-ingéniérie de leur malware plus difficile que s'il n'utilisait que des languages connus. Mais il pourrait aussi avoir facilité le cloisonement des équipes qui ont travaillé sur le trojan : peut-être les intégrateurs n'ont-ils pas été techniquement capables de comprendre les sources du module de connexion, grâce à ce "Framework Duqu".

Les chercheurs de Kaspersky ont donc lancé un appel à tout developpeur qui reconnaîtrait des éléments familiers, dans l'espoir de résoudre le mystère Duqu et de son origine.

Comme Stuxnet, et vu son niveau de sophistication, Duqu est fortement suspecté d'avoir été developpé par une organisation disposant de moyens très importants, un service d'État par exemple.

Source : Kaspersky Labs

PS : au moment où j'écris, les derniers commentaires de Kaspersky disent qu'ils s'intéressent aux compilateurs pour LISP, suggérés par plusieurs commentateurs.


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de galyathee galyathee
http://www.developpez.com
Membre du Club
le 14/03/2012 21:43
J'imagine que les mordus d'Erlang ou de ooRexx auront quelques idées. Si ces chercheurs pensent à un nouveau langage, il peut très bien s'agir d'un langage - pourquoi pas codé en assembleur, clair - dont on aurait modifié les sources. On ne compte plus le nombre de langages tombés en désuétude et dont les sources sont libres ... avec un peu de motivation, tout un chacun est amené un jour à leur faire reprendre du service.
Avatar de MiaowZedong MiaowZedong
http://www.developpez.com
Expert Confirmé
le 20/03/2012 12:11
Le mystère du "Framework Duqu" est résolu
Le malware aurait été écrit avec une extension C orientée objet créée sur mesure

Mise à Jour du 2012/03/20 par MiaowZedong

Les chercheurs de Kaspersky ont annoncé hier (2012/03/19) qu’ils ont résolu « avec un niveau de certitude très élevé » le mystère Duqu.

L’expert Igor Soumenkov commence par remercier les nombreux développeurs qui ont suggéré des pistes d’investigation : il annonce avoir reçu plus de 200 commentaires sur son blog et 60+ emails. Il dit donc « un grand merci » à tous ces participants. Parmi les différentes suggestions, le LISP, le Forth, Google Go, l’Erlang, Delphi, les compilateurs exotiques du C++ ainsi que la possibilité de programmer orienté objet directement en C sont tous revenus plusieurs fois.

C’est finalement cette dernière possibilité qui a été retenue. Suite à un commentaire, Soumenkov a expérimenté avec le compilateur pour C de Microsoft Visual Studio. Il a finalement trouvé une combinaison d’options qui permet, avec MSVC 2008, de reproduire à l’identique un segment de code machine de Duqu à partir d’un segment de code source C orienté objet. Avec d’autres compilateurs testés, y comprit MSVC 2005, il obtient un code machine légèrement différent.


Code de Duqu décompilé à la main en C

Étant donné les similarités entre les différents constructeurs et les membres des classes, il semble très peu probable que le module communications de Duqu a été codé entièrement à la main. Par contre, il n’existait pas, au moment où le trojan a été créé, de framework C orienté objet qui produise un code machine semblable à celui de Duqu. Soumenkov en conclue que les développeurs de Duqu utilisent un framework « maison ».

Pour les chercheurs de Kaspersky, la préférence du C par rapport au C++ reflète des programmeurs expérimentés, qui souhaitent un contrôle plus direct sur le code machine produit ainsi qu’une « extrême portabilité ».

Ils sont désormais certains que ce module de Duqu a été compilé avec MSVC 2008 et ses options /O1 et /Ob1. Il a « sans doute » été écrit avec une extension C orientée objet, créée sur mesure. L’architecture événementielle a été crée avec le Framework Duqu ou son extension OO du C. Il n’est pas impossible que le module communications de Duqu ait servi dans d’autres applications, puis réutilisé pour le trojan.

Kaspersky soulignent la très haute qualité du code de Duqu (et Stuxnet), selon eux absolument exceptionnelle par rapport aux malwares contemporains.

Il leur semble que ces programmes ont été créés par des équipes « plutôt professionnelles » qui utilisent du code produit par des « top » développeurs expérimentés. Ils n’hésitent pas à parler de « gemmes » au milieu d’ « une masse de malwares stupides ».

Source: Kaspersky
Avatar de cd090580 cd090580
http://www.developpez.com
Membre habitué
le 20/03/2012 14:34
Les chercheurs de Kaspersky ont annoncé hier (2012/04/19) qu’ils ont résolu « avec un niveau de certitude très élevé » le mystère Duqu.

Ils ont vachement anticipé
Avatar de MiaowZedong MiaowZedong
http://www.developpez.com
Expert Confirmé
le 20/03/2012 15:30
mea culpa
Avatar de GLDavid GLDavid
http://www.developpez.com
Expert Confirmé
le 20/03/2012 15:52
En tout cas, c'est bien que Kaspersky puisse stopper ce trojan.
L'arrêt Duqu, on l'attend tous
Avatar de gagaches gagaches
http://www.developpez.com
Membre éclairé
le 21/03/2012 10:22
Ça me fait très nettement penser à des développeurs C embarqués.

pour en avoir fait, ça y ressemble étrangement.

C'est très intéressant en fait ce choix de développement.
Avatar de Freem Freem
http://www.developpez.com
Expert Confirmé
le 22/03/2012 9:48
En tout cas, on sent le respect pour les dev duqu...

Je serai curieux de voir à quoi ressemble ce framework en tout cas.
Avatar de Muchos Muchos
http://www.developpez.com
Expert Confirmé
le 22/03/2012 13:11
Citation Envoyé par Freem
En tout cas, on sent le respect pour les dev duqu...

Oui, c'est touchant. Les experts en sécu luttent contre les crackers, mais les respectent s'ils sont inventifs et codent bien. Il y a tout un esprit du hack : le défi, l'art presque…
Avatar de Traroth2 Traroth2
http://www.developpez.com
Expert Confirmé Sénior
le 22/03/2012 14:48
Ce type de moyen pour un ver, ça pue, je trouve...

Je suis déjà dehors.
Avatar de rhludovic rhludovic
http://www.developpez.com
Membre actif
le 23/03/2012 9:15
Les experts en sécu luttent contre les crackers, mais les respectent s'ils sont inventifs et codent bien.

C'est touchant, alors même pour un mauvais objectif (c'est quand même un malware), les développeurs savent apprécier du bon travail.
Avatar de Freem Freem
http://www.developpez.com
Expert Confirmé
le 26/03/2012 15:51
Citation Envoyé par Traroth2  Voir le message
Ce type de moyen pour un ver, ça pue, je trouve...

Je suis déjà dehors.

A ce rythme, tu vas faire ton vers solitaire dehors...
Offres d'emploi IT
Associé développeur
Mission
Whatabout - Rhône Alpes - Lyon (69000)
Parue le 05/10/2014
Développeur java h/f
CDI
ZENIKA - Ile de France - Paris (75000)
Parue le 13/10/2014
Moa - direction de programme h/f
Stage
Société Générale France - Ile de France - Paris (75000)
Parue le 21/10/2014

Voir plus d'offres Voir la carte des offres IT
 
 
 
 
Partenaires

PlanetHoster
Ikoula