mardi 20 mars 2012

DuQu : équipe old school et code sophistiqué passe-partout

Expert et éditeur de logiciels de sécurité, Kaspersky est l'un des principaux contributeurs à l'analyse du maliciel offensif Stuxnet et de sa lignée, le moins destructeur mais néanmoins sophistiqué DuQu. En début de mois, une anomalie sur l'un des composants (le Payload DLL) avait attiré l'attention et l'aide à la communauté des développeurs mais aussi des passionnés avait été sollicitée.

On peut dire que la moisson aura été bonne puisque plus de 150 commentaires sur le blog d'Igor Soumenkov ainsi qu'une soixantaine de mails ont été reçus et analysés par le chercheur de Kaspersky. De Java à Python en passant par ADA et même LISP, tout le monde aura tourné autour du pot jusqu'à se rapprocher de la solution. Il aura tout de même fallu tester durant quelques jours les nombreuses combinaisons langages / compilateurs.

Finalement, la solution semble du coup un peu moins sexy car le composant "mystérieux" en charge de la communication avec les serveurs de C&C (Contrôle et Commande) a été écrit en langage C compilé avec Microsoft Visual Studio Compiler 2008 (les options 01 et OB1* utilisées pour réduire un peu plus le code). Cette spécificité est à mettre en regard des autres parties de code de DuQu développées en C++ et compilées avec Microsoft Visual C++ 2008.

Pour Costin Raiu, le directeur de la recherche et de l'équipe d'analyse chez Kaspersky, l'utilisation du langage C au lieu du C++ peut avoir deux significations majeures. La première, à peu près sûre, est liée à un besoin d'optimisation de la vitesse d'exécution et de la taille finale de la charge logicielle (taille du code la plus petite possible). L'autre serait que l'on a affaire à une sorte d'équipe "old school" car le C n'est plus guère utilisé dans l'élaboration de maliciels.

Cette explication ne me semble pas vraiment convaincante et je pencherai plutôt pour l'explication rationnelle et technique : les développeurs de DuQu, brillants et expérimentés, savent que le langage C++ produit parfois des résultats imprédictibles. Ce qui n'est évidemment pas tolérable dans le cas d'une cyber-opération sensible de pénétration, de reconnaissance et d'extraction de donnés d'un système-cible censé être plus protégé et surveillé que la moyenne. De plus, le langage C possède une caractéristique, la versatilité, qui ne le lie à aucun compilateur en particulier. 

Ce qui fait dire à Costin Raiu que les développeurs ont intégré dès la conception de DuQu la possibilité que des variantes puissent fonctionner sur un téléphone mobile ou tout autre média, quel qu'il soit. Une équipe old school qui produit une code sophistiqué passe-partout : si un coin du mystère est levé, de nombreux autres demeurent.

* Bloc d'Organisation qui détermine la structure du programme avec une classe de priorité 1

Source : http://m.wired.com/threatlevel/2012/03/duqu-mystery-language-solved/ 

Edit : je remercie le lecteur attentif qui nous signale "qu'il ne s'agit pas de C pur utilisant un compilateur particulier, mais d'une façon d'utiliser le C pour faire un code orienté objet (custom object-oriented C dialect, generally called "OO C" sur l'article original de securelist.com)".

3 commentaires:

Benjamin a dit…

Bonjour

Quelques petites précisions:

-il ne s'agit pas de C pur utilisant un compilateur particulier, mais d'une façon d'utiliser le C pour faire un code orienté objet (custom object-oriented C dialect, generally called "OO C" sur l'article original de securelist.com).

-le C classique reste un des langages les plus utilisés en sécurité informatique (simplicité, maitrise de la mémoire, ...).

-on parlera plus de portabilité que de versatilité.

J'ai découvert ce matin le concept OOC. Un livre de 1993 le décrit et confirmerait l'hypothèse de portabilité: The techniques described here grew out of my disenchantment with C++ when
I needed object-oriented techniques to implement an interactive programming
language and realized that I could not forge a portable implementation in C++.

Cordialement

Si vis pacem a dit…

@Benjamin

Merci pour ces précisions, très intéressantes.

Si je ne m'abuse, vous êtes l'un des intervenants du blog DE de l'EMMST ? (http://ead-minerve.fr/WordPress3/?author=1)

Si vous êtes intéressé pour écrire un billet invité sur le site de l'Alliance Géostratégique, dites-le moi, je serais votre relais.
Bien à vous.

Benjamin a dit…

Ne pas publier.

Oui, c'est bien moi. En général je ne fais pas de grands article, fruits d'une réflexion personnelle et de recherche, mais plus du relais d'informations dans des domaines qui m'intéressent. Pas vraiment donc de quoi publier sur AGS. Mais je note la proposition.
Cordialement