THÈSE présentée à L’ÉCOLE POLYTECHNIQUE pour obtenir le titre de DOCTEUR Specialité MATHÉMATIQUES APPLIQUÉES ET INFORMATIQUE par Sébastien JOSSE Titre de la thèse Analyse et détection dynamique de code viraux dans un contexte cryptographique et application à l’évaluation de logiciels antivirus Soutenue le 10 Avril 2009 devant le jury composé de : Président du jury Jean-Marc Steyaert Professeur Ecole Polytechnique Directeur de thèse Éric Filiol Professeur ESIEA LAVAL Rapporteurs Hervé Debar Professeur France Telecom R&D Jean-Jacques Quisquater Professeur UCL Examinateurs Robert Erra Docteur ESIEA PARIS Caroline Fontaine Docteur IRISA Cédric Lauradoux Docteur UCL Frédéric Raynal Docteur Sogeti ESECRemerciements Les années consacrées à cette thèse constituent à mes yeux une expérience aussi éprouvante que passionnante. Réa- lisée sur mon temps libre, alors que je mène à temps plein une vie professionnelle et familiale déjà très dense, j’ai souvent douté pouvoir la mener à son terme. Aux vues des obstacles franchis et à présent que l’exercice est terminé, je prends conscience du soutien important dont nombre de collègues, proches et amis m’ont gratifié. À tous je veux dire ma gratitude. Je voudrais remercier en premier lieu mon directeur de thèse, Eric Filiol, pour avoir guidé mes premiers pas dans les arènes de la recherche. C’est son expérience, sa confiance et son amitié qui m’ont permis de mener à terme cette aventure. J’ai particulièrement apprécié sa franchise et son ...
THÈSE
présentée à
L’ÉCOLE POLYTECHNIQUE
pour obtenir le titre de
DOCTEUR
Specialité
MATHÉMATIQUES APPLIQUÉES ET INFORMATIQUE
par
Sébastien JOSSE
Titre de la thèse
Analyse et détection dynamique de code viraux
dans un contexte cryptographique
et application à l’évaluation
de logiciels antivirus
Soutenue le 10 Avril 2009 devant le jury composé de :
Président du jury Jean-Marc Steyaert Professeur Ecole Polytechnique
Directeur de thèse Éric Filiol Professeur ESIEA LAVAL
Rapporteurs Hervé Debar Professeur France Telecom R&D
Jean-Jacques Quisquater Professeur UCL
Examinateurs Robert Erra Docteur ESIEA PARIS
Caroline Fontaine Docteur IRISA
Cédric Lauradoux Docteur UCL
Frédéric Raynal Docteur Sogeti ESECRemerciements
Les années consacrées à cette thèse constituent à mes yeux une expérience aussi éprouvante que passionnante. Réa-
lisée sur mon temps libre, alors que je mène à temps plein une vie professionnelle et familiale déjà très dense, j’ai
souvent douté pouvoir la mener à son terme. Aux vues des obstacles franchis et à présent que l’exercice est terminé,
je prends conscience du soutien important dont nombre de collègues, proches et amis m’ont gratifié. À tous je veux
dire ma gratitude.
Je voudrais remercier en premier lieu mon directeur de thèse, Eric Filiol, pour avoir guidé mes premiers pas dans
les arènes de la recherche. C’est son expérience, sa confiance et son amitié qui m’ont permis de mener à terme cette
aventure. J’ai particulièrement apprécié sa franchise et son soutien inconditionnel face aux difficultés de tous ordres
qui peuvent jalonner la route du thésard. Je tiens également à le remercier de son implication et de la disponibilité
dont il a su faire preuve dans la direction de mon travail. Enfin, Eric a su me communiquer une partie de la passion
scientifique qui l’habite et de son goût du travail, parfois acharné. J’espère avoir l’opportunité de poursuivre avec
lui cette collaboration le plus longtemps possible.
Mes remerciements vont ensuite aux autres membres du jury, pour avoir bien voulu lire et valider mes travaux. À
Jean-JacquesQuisquateretHervéDebarjeveuxdiremagratitudepourm’avoirfaitl’honneurd’êtrelesrapporteurs
de cette thèse. Je les remercie pour leur bienveillance et leurs conseils avisés. Je remercie aussi très chaleureusement
Jean-Marc Stayaert pour avoir bien voulu présider le jury. Sa bonne humeur contagieuse m’a permis de passer cette
épreuve dans les meilleurs conditions. Je remercie enfin Robert Erra, Frédéric Raynal, Caroline Fontaine et Cédric
Lauradoux pour leur examen attentif du manuscrit et la qualité de leurs questions et remarques, qui devraient me
permettre de progresser dans mes futures activités de recherche.
Je voudrais remercier Guillaume Dabosville et Guillaume Geffard, avec qui j’ai eu l’opportunité de collaborer
sur plusieurs travaux. Leur décontraction et leur amitié m’ont été précieuses.
Je remercie également l’ensembles des membres du Laboratoire de Virologie et Cryptologie Opérationnelles, avec
qui j’ai pu collaborer, et en particulier Philippe Beaucamps et Grégoire Jacob pour les intéressantes conversations
que nous avons eu sur le sujet.
Je tiens à remercier Dominique Chauveau, Lionel Van Aertryck, Alexandre Gazet et David Boucher pour avoir
pris le temps de relire certaines de mes soumissions. Leurs remarques m’ont clairement permis d’en améliorer la
qualité.
JeremercieAlainMarcayetBenoîtJeanninpouravoirrespectivementencouragépuisrendupossiblelefinancement
de certains déplacements, parfois à l’autre bout du monde.
Je remercie également les personnes des secteurs civil et de Défense avec qui j’ai eu l’occasion de travailler ces
trois dernières années au cours de missions d’étude sur les problématiques de protection logicielle et de rétro-
ingénierie, pour l’enrichissement que m’a apportée leur collaboration. Je pense en particulier à François Daudé,
Olivier Vivolo, Gaëtan Le Gouelvic, Antoine Monsifrot et Briag Morange.
Je remercie enfin ma femme, Stéphanie, qui a su s’armer de patience durant la rédaction de cette thèse. Puisse-t-elle
me pardonner ce temps que je ne lui ai pas consacré.
iIntroduction
Motivations
L’utilisateur final d’un produit antivirus ne sait pas toujours quelle confiance il peut placer dans son produit an-
tivirus pour parer convenablement la menace virale. Pour répondre à cette question, il est nécessaire de formuler
la problématique de sécurité à laquelle doit répondre un tel produit et de disposer d’outils et de critères méthodo-
logiques, techniques et théoriques permettant d’évaluer la robustesse des fonctions de sécurité et la pertinence des
choix de conception au regard d’une menace virale identifiée.
Une bonne compréhension de la menace virale rend indispensable une veille technologique continue. Nous avons
observé ces dernières années une tendance à l’utilisation de plus en plus systématique d’applications de protection
1logicielle du marché par les auteurs de virus. Par ailleurs, la mise à la disposition du plus grand nombre de généra-
teurs automatiques de variantes d’un même programme viral (kits de génération de virus) de plus en plus évolués
[Szö05] impose un nouveau défi à relever pour les éditeurs de produits antivirus et une remise en cause profonde de
leur choix de conception. Je pense que ces outils ne sont pas encore représentatifs de l’état de l’art dans le domaine
delaprotectionlogicielle,dontl’essorrécentestprobablementdûauxnouvellesapplicationscivilesdeprotectionde
contenu (gestion numérique des droits). Si les concepteurs de programmes malicieux utilisent volontier les packers
d’exécutables, ils n’utilisent pas encore (pour les codes viraux identifiés) d’outils plus évolués, comme les chaînes
de compilation spécialisées, dont la distribution reste encore très discrétionnaire. Nous avons choisi d’analyser la
menace potentielle que représenterait l’utilisation de ce type d’outils spécialisés par les auteurs de virus.
Les programmes viraux font un usage intensif de la cryptographie, tant pour contrôler l’intégrité de leur code
ou de leur environnement d’exécution, que pour protéger leurs données critiques en confidentialité et échapper à la
détection. Ces mécanismes crypographiques doivent être évalués dans un contexte cryptographique particulier, ap-
pelé contexte d’attaque boîte blanche, dans lequel l’environnement d’exécution est supposé complètement maîtrisé
par l’attaquant. Dans ce contexte cryptographique, l’attaquant est en mesure de mener une analyse dynamique du
programme viral et d’instrumenter le système d’exploitation.
L’identification de la menace virale et sa modélisation sont des étapes cruciales avant toute organisation d’une
ligne de défense. L’évaluation d’un produit anti-virus doit se faire sur la base de l’énoncé d’une problématique de
sécurité, permettant de définir des objectifs de sécurité. Un tel produit propose plusieurs fonctions de sécurité,
permettant de couvrir les objectifs de sécurité.
Parmi les différentes fonctions de sécurité proposées par un produit antivirus, l’une d’entre elles revêt une impor-
tance cruciale et concentre le savoir-faire des éditeurs de produits antivirus : la fonction de détection virale.
Les schémas 1 et 2 présentent de manière synthétique l’architecture générale et le fonctionnement du moteur
de détection virale d’un produit antivirus. Nous pouvons remarquer que le processus de détection se fonde toujours
sur une base de connaissance.
1 Près de 200 kits de génération de virus sont téléchargeables sur le site web Vx Heavens [Hea08].
1Introduction
Nous avons représenté sur le schéma 1 le processus d’élaboration du schéma de détection d’un virus. Nous pouvons
observerquel’extractiond’informationestleplussouventprécédéed’uneétaped’analyse,automatiqueoumanuelle,
lors de laquelle la protection fournie par un outil du marché est supprimée ou contournée (unpacking), puis d’une
phase de désassemblage, permettant d’extraire une représentation intermédiaire du code. Cette représentation est
ensuite normalisée, pour aboutir à un schéma de détection, destiné à être stocké dans une base d’information. Nous
adoptons la définition suivante d’un schéma de détection :
Définition 0.0.1 (Schéma de détection [Fil06]). Un schéma de détection d’un malwareM est défini comme la
donnée d’un motif et d’une fonction de détection{S ,f }.M M
Nous pouvons voir une base de signatures virales comme un ensemble de schémas de détection{S ,f }. CetteM M
base de signatures peut être constituée de différents types d’informations :
– des séquences d’octets;
– des sces d’instructions assembleur;
– des séquences d’appels à des fonctions externes du système d’exploitation;
– des données liées aux interactions du programme avec certains objets du système d’exploitation, comme le
système de fichiers ou la base de registre;
– des graphes de flots de contrôle, c’est-à-dire la représentation sous forme de graphes des branchements entre
blocs de code de programmes (ou de portions de programmes).
Un schéma de détection d’un virusM peut être vu [Fil07b] comme la donnée :
– du langage L produit par une grammaire G ,M M
– d’un automate à états finis, capable de reconnaître le langage L .M
Le langage L peut être constitué de séquences d’octets ou d’instructions assembleur. Il peut être constitué deM
séquences d’appels à des fonctions externes. Il peut être constitué de termes représentant des graphes de flots de
contrôle [BKM08].
Avec ce formalisme (celui des grammaires formelles), le problème de détection se ramène au problème d’apparte-
nance d’un mot au langage L . La fonction de détection f est un automate à états finis capable de reconnaîtreM M
le langage L , ce dernier définissant le motif de détectionS .M M
Un schéma de détection d’un virusM peut être vu [FJ07] comme la donnée :
– deladistributiond’uneloideprobabilitécaractérisantl’informationoud’unmodèleλ formésurdesdonnéesM
d’apprentissage (c’est-à-dire que les paramètres du modèle sont estimés sur les données d’apprentissage);
– d’une règle de décision générée sur la base de d