No d’ordre :                                                          ´                                                   ...
tel-00660274, version 1 - 16 Jan 2012                                        ii
Sommairetel-00660274, version 1 - 16 Jan 2012                                        Remerciements                        ...
iv                                                                      SOMMAIRE                                          ...
SOMMAIRE                                                                           v                                      ...
vi                                                                     SOMMAIRE                                        3 I...
SOMMAIRE                                                                              vii                                 ...
tel-00660274, version 1 - 16 Jan 2012                                        viii                                        S...
Table des figurestel-00660274, version 1 - 16 Jan 2012                                         1      Fonctionnement d’un c...
x                                                            TABLE DES FIGURES                                            ...
Liste des tableauxtel-00660274, version 1 - 16 Jan 2012                                         1.1   Exemple de routines ...
tel-00660274, version 1 - 16 Jan 2012                                        xii                                        LI...
Liste des programmes et des                                        algorithmestel-00660274, version 1 - 16 Jan 2012       ...
xiv   LISTE DES PROGRAMMES ET DES ALGORITHMEStel-00660274, version 1 - 16 Jan 2012
tel-00660274, version 1 - 16 Jan 2012                                             Remerciementsxv
tel-00660274, version 1 - 16 Jan 2012                                        xvi                                        RE...
Introduction                                        `                                        A                            ...
xviii                                                                   INTRODUCTION                                      ...
xix                                        son origine semble plus accidentelle que volontaire, ce programme constitue le ...
xx                                                                 INTRODUCTION                                        par...
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Étude du métamorphisme viral
Prochain SlideShare
Chargement dans…5
×

Étude du métamorphisme viral

1 648 vues

Publié le

PhD thesis Rennes

0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
1 648
Sur SlideShare
0
Issues des intégrations
0
Intégrations
10
Actions
Partages
0
Téléchargements
10
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Étude du métamorphisme viral

  1. 1. No d’ordre : ´ ANNEE 2011 ` ´ THESE / UNIVERSITE DE RENNES 1 sous le sceau de l’Universit´ Europ´enne de Bretagne e e pour le grade de ´ DOCTEUR DE L’UNIVERSITE DE RENNES 1 Mention : INFORMATIQUE ´tel-00660274, version 1 - 16 Jan 2012 Ecole doctorale MATISSE pr´sent´e par e e Jean-Marie Borello pr´par´e a l’unit´ de recherche EA 4039 (SSIR) e e ` e S´curit´ des Syst`mes d’Information et R´seaux e e e e ´ SUPELEC Th`se soutenue ` Sup´lec e a e le 1er avril 2011 devant le jury compos´ de : e ´ Etude du Thomas Jensen Directeur de recherche ` l’INRIA / pr´sident a e m´tamorphisme e Guillaume Bonfante Maˆ de conf´rence ` l’Institut National Polytech- ıtre e a nique de Lorraine / rapporteur viral : mod´lisation, e Jean-Marc Steyaert Professeur ` l’´cole Polytechnique / rapporteur a e conception et d´tection e Marc Dacier Senior director in charge of the Collaborative Advan- ced Research Department (CARD) within Symantec Research Labs / examinateur Lo¨ Duflot ıc Docteur ` l’Agence Nationale de la S´curit´ des Sys- a e e t`mes d’Information (ANSSI) / examinateur e Fr´d´ric Valette e e Ing´nieur au centre DGA Maˆ e ıtrise de l’Information de la Direction G´n´rale de l’Armement / invit´ e e e Ludovic M´ e Professeur ` Sup´lec / directeur de th`se a e e ´ Eric Filiol Professeur ` l’ESIEA / co-directeur de th`se a e
  2. 2. tel-00660274, version 1 - 16 Jan 2012 ii
  3. 3. Sommairetel-00660274, version 1 - 16 Jan 2012 Remerciements xv Introduction xvii ´ 1 Etat de l’art 1 1.1 Vers un m´tamorphisme formel . . . . . . . . . . . . . . . . . . . e 1 1.1.1 D´finition historique d’un virus . . . . . . . . . . . . . . . e 2 1.1.1.1 Le mod`le viral de Cohen . . . . . . . . . . . . . e 2 1.1.1.2 R´sultats de Cohen . . . . . . . . . . . . . . . . e 3 1.1.2 Fonctions r´cursives et codes maveillants . . . . . . . . . . e 4 1.1.2.1 Le mod`le viral d’Adleman . . . . . . . . . . . . e 5 1.1.2.2 R´sultats d’Adleman . . . . . . . . . . . . . . . e 6 1.1.2.3 Le mod`le viral de Zuo et al. . . . . . . . . . . . e 7 1.1.2.3.a Virus non-r´sident . . . . . . . . . . . . e 7 1.1.2.3.b Virus polymorphes . . . . . . . . . . . . 8 1.1.2.3.c Virus m´tamorphes . . . . . . . . . . . e 9 1.1.3 Grammaires formelles et m´tamorphisme . . . . . . . . . e 9 1.1.3.1 Mutation de code et grammaires formelles . . . 10 1.1.3.2 Le m´tamorphisme selon Filiol . . . . . . . . . . e 13 1.1.4 Bilan des formalismes et discussion sur le m´tamorphisme e 14 1.2 Techniques de mutation de code . . . . . . . . . . . . . . . . . . 16 1.2.1 Qu’est-ce que l’obscurcissement de code ? . . . . . . . . . 16 1.2.2 Principaux r´sultats th´oriques sur l’obscurcissement de e e code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.2.2.1 Impossibilit´ de l’obscurcissement de code dans e le cas g´n´ral . . . . . . . . . . . . . . . . . . . . e e 18 1.2.2.2 Possibilit´ d’obscurcissement de fonctions parti- e culi`res . . . . . . . . . . . . . . . . . . . . . . . e 19 1.2.2.3 Possibilit´ d’un obscurcissement temporel . . . . e 20 1.2.3 Crit`res d’´valuation de l’efficacit´ d’un obscurcissement e e e de code . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 iii
  4. 4. iv SOMMAIRE 1.2.4 Taxonomie des techniques de base de l’obscurcissement de code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 1.2.4.1 Pr´dicats opaques et obscurcissement de code . e 23 1.2.4.1.a Pr´dicats opaques issus de la th´orie e e des nombres . . . . . . . . . . . . . . . 23 1.2.4.1.b Probl`mes d’analyse statique . . . . . . e 24 1.2.4.1.c Conjectures math´matiques . . . . . . . e 24 1.2.4.2 L’obscurcissement des symboles . . . . . . . . . 25 1.2.4.3 L’obscurcissement du flot de donn´es . . . . . . e 26 1.2.4.4 L’obscurcissement du flot de contrˆle . . . . . . o 27 1.2.4.5 L’obscurcissement pr´ventif . . . . . . . . . . . . e 28 1.2.5 Principales Approches d’obscurcissement de code . . . . . 28 1.2.5.1 Approche de Collberg et al. . . . . . . . . . . . . 28 1.2.5.2 Approche de Wang et al. compl´t´e par Ogiso et ee al. . . . . . . . . . . . . . . . . . . . . . . . . . . 28tel-00660274, version 1 - 16 Jan 2012 1.2.5.3 Approche de Chow et al. . . . . . . . . . . . . . 29 1.2.5.4 Approche de Linn et Debray . . . . . . . . . . . 29 1.2.5.5 Approche de Wroblewski . . . . . . . . . . . . . 30 1.2.6 Techniques d’obscurcissement de code employ´es par les e codes malveillants . . . . . . . . . . . . . . . . . . . . . . 30 1.2.6.1 L’insertion de code mort . . . . . . . . . . . . . 30 1.2.6.2 La substitution de variables . . . . . . . . . . . . 31 1.2.6.3 La permutation des instructions . . . . . . . . . 31 1.2.6.4 La substitution d’instructions . . . . . . . . . . . 31 1.2.6.5 L’insertion de branchements . . . . . . . . . . . 32 1.2.7 Fonctionnement des codes m´tamorphes connus . . . . . . e 33 1.2.7.1 Processus de r´plication d’un code m´tamorphe e e 34 ´ 1.2.7.2 Etude de cas : le virus MetaPHOR . . . . . . . . 35 1.2.8 Bilan des techniques de mutation par obscurcissement de code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 1.3 Techniques de d´tection des codes m´tamorphes . . . . . . . . . . e e 38 1.3.1 D´finition et propri´t´s d’un d´tecteur de codes malveillants e ee e 38 1.3.2 D´tection statique . . . . . . . . . . . . . . . . . . . . . . e 40 1.3.2.1 Le processus de r´tro-conception statique . . . . e 41 1.3.2.1.a Le d´sassemblage . . . . . . . . . . . . e 41 1.3.2.1.b Construction du graphe de flot de contrˆle o (CFG) . . . . . . . . . . . . . . . . . . 43 1.3.2.1.c Optimisation du flot de donn´es et du e CFG . . . . . . . . . . . . . . . . . . . 44 1.3.2.2 Approches par mod`les de Markov cach´s . . . . e e 45 1.3.2.3 Approches par model-checking . . . . . . . . . . 46 1.3.2.4 Approches par normalisation de code . . . . . . 47 1.3.2.4.a Approche de Christorodescu et al. . . . 48 1.3.2.4.b Approche de Walenstein et al. . . . . . 48 1.3.2.4.c Approche de Webster et al. . . . . . . . 49 1.3.2.5 Approches par comparaison de graphes . . . . . 49
  5. 5. SOMMAIRE v 1.3.2.5.a Approches de Christorodescu et al. . . 49 1.3.2.5.b Approche de Bruschi et al. . . . . . . . 50 1.3.2.5.c Approche de Zhang et al. . . . . . . . . 50 1.3.2.5.d Approche de Bonfante et al. . . . . . . 51 1.3.3 D´tection dynamique . . . . . . . . . . . . . . . . . . . . . e 51 1.3.3.1 Outils d’observation dynamique (Monitoring) . . 52 1.3.3.1.a L’instrumentation dynamique de binaires 52 1.3.3.1.b Les environnements bacs ` sable . . . . a 52 1.3.3.1.c Les machines virtuelles . . . . . . . . . 53 1.3.3.1.d La virtualisation mat´rielle . . . . . . . e 53 1.3.3.2 Approches par grammaires formelles . . . . . . . 54 1.3.3.3 Approches par comparaison dynamique de graphes 55 1.3.3.3.a Approche de Yin et al. . . . . . . . . . 56 1.3.3.3.b Approche de Kolbisch et al. . . . . . . . 56tel-00660274, version 1 - 16 Jan 2012 1.3.3.3.c Approche de Frederikson et al. . . . . . 56 1.3.4 Bilan de la d´tection . . . . . . . . . . . . . . . . . . . . . e 57 1.4 Bilan et probl´matique de la th`se . . . . . . . . . . . . . . . . . e e 58 I Conception d’un moteur de m´tamorphisme e 61 2 Approche d’obscurcissement de code 63 2.1 Difficult´ de d´tection des codes m´tamorphes . . . . . . . . . . . 64 e e e ´ 2.1.1 Equivalence fonctionnelle . . . . . . . . . . . . . . . . . . 64 2.1.2 Obscurcissement du flot de contrˆle . . . . . . . . . . . . 65 o 2.2 Approche de k -obscurcissement de code . . . . . . . . . . . . . . 70 2.2.1 Obscurcissement du flot de contrˆle . . . . . . . . . . . . 70 o 2.2.2 Protection des donn´es . . . . . . . . . . . . . . . . . . . . 73 e 2.2.2.1 Chiffrement ` la vol´e des donn´es . . . . . . . . 73 a e e 2.2.2.2 Protection par g´n´ration de cl´s environnemen- e e e tales . . . . . . . . . . . . . . . . . . . . . . . . . 73 2.2.3 Illustration de la difficult´ d’analyse statique d’un pro- e gramme obscurci . . . . . . . . . . . . . . . . . . . . . . . 74 2.3 Validation de l’hypoth`se d’analyse statique . . . . . . . . . . . . 76 e 2.3.1 Le contexte exp´rimental . . . . . . . . . . . . . . . . . . 77 e 2.3.1.1 La souche virale m´tamorphe . . . . . . . . . . . 77 e 2.3.1.2 Les programmes hˆtes . . . . . . . . . . . . . . . 77 o 2.3.1.3 Les anti-virus utilis´s . . . . . . . . . . . . . . . 78 e 2.3.2 Premi`re exp´rience : test d’un panel d’anti-virus . . . . . 78 e e 2.3.3 Deuxi`me exp´rience : localisation de la partie d´tect´e e e e e du virus . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 2.3.4 Troisi`me exp´rience : obscurcissement de code . . . . . . 81 e e 2.3.5 Quatri`me exp´rience : analyse statique ? . . . . . . . . . 83 e e 2.4 Bilan de notre approche d’obscurcissement . . . . . . . . . . . . . 84
  6. 6. vi SOMMAIRE 3 Impl´mentation et ´valuation e e 87 3.1 Impl´mentation d’un moteur de m´tamorphisme . . . . . . . . . e e 88 ´ 3.1.1 Etape d’obscurcissement de code . . . . . . . . . . . . . . 88 ´ 3.1.2 Etape de mod´lisation : retour ` l’arch´type . . . . . . . . e a e 91 3.1.2.1 La descriptions des blocs initiaux . . . . . . . . 91 3.1.2.2 La descriptions des blocs de donn´es chiffr´es . . e e 92 3.1.2.3 La descriptions des adresses absolues . . . . . . 92 3.1.3 R´plication du moteur sans forme constante . . . . . . . . e 93 3.1.4 Application du moteur de m´tamorphisme ` un autre pro- e a gramme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 3.2 R´sultats exp´rimentaux . . . . . . . . . . . . . . . . . . . . . . . e e 96 3.2.1 Construction d’une version m´tamorphe du ver MyDoom e 97 3.2.2 Plateforme d’´valuation . . . . . . . . . . . . . . . . . . . e 98 3.2.3 Protocole exp´rimental . . . . . . . . . . . . . . . . . . . . e 99tel-00660274, version 1 - 16 Jan 2012 3.2.4 R´sultats de d´tections obtenus . . . . . . . . . . . . . . . e e 100 3.2.4.1 R´sultats pour l’observation comportementale . e 101 3.2.4.2 R´sultats pour les bloqueurs comportementaux . e 102 3.2.4.3 R´sultats pour la d´tection heuristique . . . . . e e 102 3.3 Bilan des aspects impl´mentation et ´valuation . . . . . . . . . . e e 103 II Application de la complexit´ de Kolmogorov ` la d´- e a e tection des codes malveillants 105 4 Similarit´s par complexit´ de Kolmogorov e e 107 4.1 Les diff´rentes d´finitions de l’information . . . . . . . . . . e e . . . 108 4.1.1 Entropie de Shannon . . . . . . . . . . . . . . . . . . . . . 108 4.1.2 Complexit´ de Kolmogorov . . . . . . . . . . . . . . e . . . 111 4.2 Distances par complexit´ de Kolmogorov . . . . . . . . . . . e . . . 112 4.2.1 Distance informationnelle normalis´e (NID) . . . . . e . . . 113 4.2.2 Distance normalis´e de compression (NCD) . . . . . e . . . 113 4.3 Nouvelle mesure de similarit´ . . . . . . . . . . . . . . . . . e . . . 115 4.3.1 Degr´ d’inclusion . . . . . . . . . . . . . . . . . . . . e . . . 116 4.3.2 Degr´ d’inclusion par compression (CID) . . . . . . e . . . 117 4.3.3 Degr´ d’inclusion mutuelle par compression (CMID) e . . . 119 4.3.4 Exemple d’application . . . . . . . . . . . . . . . . . . . . 119 4.4 Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 4.5 Bilan des mesures de similarit´ . . . . . . . . . . . . . . . . e . . . 121 5 Architecture g´n´rique de d´tection e e e 123 5.1 G´n´ration des profils comportementaux . . . . . . . . e e . . . . . . 124 5.1.1 Obtention d’une trace d’ex´cution . . . . . . . e . . . . . . 125 5.1.2 Abstraction d’une trace d’ex´cution . . . . . . e . . . . . . 126 5.2 Construction d’une base optimale de d´tection . . . . e . . . . . . 127 5.2.1 D´finition d’une base de d´tection . . . . . . . e e . . . . . . 127 5.2.2 D´termination de la base de d´tection optimale e e . . . . . . 128
  7. 7. SOMMAIRE vii 5.3 ´ Evaluation de l’approche . . . . . . . . . . . . . . . . . . . . . . . 129 5.3.1 Choix d’un algorithme de compression . . . . . . . . . . . 130 5.3.2 Collecte des profils comportementaux . . . . . . . . . . . 132 5.3.2.1 Plateforme de collecte . . . . . . . . . . . . . . . 132 5.3.2.2 profils d’applications malveillantes . . . . . . . . 133 5.3.2.3 Profils d’applications inoffensives . . . . . . . . . 134 5.3.3 R´sultats exp´rimentaux . . . . . . . . . . . . . . . . . . e e . 135 5.3.3.1 R´sultats pour des codes malveillants connus . e . 135 5.3.3.2 R´sultats pour des codes malveillants inconnus e . 136 5.4 Bilan de la d´tection . . . . . . . . . . . . . . . . . . . . . . . . e . 138 Conclusion et perspectives 141 III Annexes 1tel-00660274, version 1 - 16 Jan 2012 A Virus m´tamorphes ` infinit´ de formes e a e 3 B R`gles de r´´critures du virus MetaPHOR e ee 5 C Outils d’analyse dynamique 9 D Illustration de la diff´rence entre NCS et CMID e 11
  8. 8. tel-00660274, version 1 - 16 Jan 2012 viii SOMMAIRE
  9. 9. Table des figurestel-00660274, version 1 - 16 Jan 2012 1 Fonctionnement d’un code auto-reproducteur chiffr´. . . . . . . . xx e 2 Illustration du fonctionnement d’un code polymorphe simple. . . xxi 1.1 Exemple de grammaire formelle. . . . . . . . . . . . . . . . . . . 10 1.2 Exemple de grammaire permettant de g´n´rer la routine de d´- e e e chiffrement d’un code malveillant polymorphe . . . . . . . . . . . 11 1.3 Automate permettant de d´tecter une routine polymorphe simple e 12 1.4 Matrice d’effort R pour l’´valuation de la r´silience. . . . . . . . e e 22 1.5 Exemples de pr´dicats opaques arithm´tiques toujours vrais. . . . e e 24 1.6 Sch´ma simplifi´ du processus d’auto-reproduction d’un code m´- e e e tamorphe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 1.7 Illustration du fonctionnement de l’amorce du virus MetaPHOR. 36 1.8 Matrice de confusion illustrant les quatre types de r´sultats pos- e sibles en d´tection. . . . . . . . . . . . . . . . . . . . . . . . . . . e 39 1.9 Sch´ma du lien existant entre une chaˆ de compilation et le e ıne processus de r´tro-conception. . . . . . . . . . . . . . . . . . . . . e 40 1.10 Exemple de programme avec son CFG associ´. . . . . . . . . . . e 44 1.11 Exemple de code auto-reproducteur avec sa formule CTLP. . . . 47 1.12 Illustration d’une r´duction de code sur le virus MetaPHOR. . e 48 1.13 Exemple de grammaire attribu´e d´crivant le comportement de e e duplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 1.14 Illustration de d’un graphe de d´pendances entre les appels sys- e t`mes repr´sentant le vers Netsky. . . . . . . . . . . . . . . . . . e e 55 1.15 Sch´ma r´capitulatif de l’´tat de l’art sur le m´tamorphisme . . . e e e e 60 2.1 R´duction polynomiale : construction du programme obscurci P e a ` partir de P et d’une instance S du probl`me 3-SAT. . . . . . . e 68 2.2 Exemple de d´coupage en blocs (Pi ) pour une amorce possible du e virus Win32.MetaPHOR. . . . . . . . . . . . . . . . . . . . . . 71 2.3 Exemples de blocs de code morts (Gi ). . . . . . . . . . . . . . . . 72 2.4 Exemple d’obscurcissement possible du programme P . . . . . . . 75 ix
  10. 10. x TABLE DES FIGURES 2.5 Taux de d´tection du virus Win32.MetaPHOR soumis ` 32 e a logiciels anti-virus. . . . . . . . . . . . . . . . . . . . . . . . . . . 79 2.6 ´ Evolution des taux de d´tection pour les 19 anti-virus restant e confront´s aux fichiers infect´s originaux (en clair) et inertes (en e e fonc´). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e 80 2.7 Processus d’obscurcissement de code. . . . . . . . . . . . . . . . . 81 2.8 Taux de d´tection des fichiers infect´s apr`s l’´tape d’obscurcis- e e e e sement de code pour les 19 anti-virus restant. . . . . . . . . . . . 82 2.9 Taux de d´tection des fichiers obscurcis pour les 6 anti-virus res- e tants (indirection en gris clair, « faux sauts » au milieu et τ - obscurcissement de code en gris fonc´. . . . . . . . . . . . . . . . e 84 3.1 Exemple illustrant la difficult´ de la d´termination des r´f´rences. 93 e e ee 3.2 Illustration du processus de r´plication du moteur de m´tamor- e e phisme. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94tel-00660274, version 1 - 16 Jan 2012 3.3 Illustration de la production du premier binaire m´tamorphe ` e a partir des sources du moteur de m´tamorphisme et de celles d’un e programme donn´. . . . . . . . . . . . . . . . . . . . . . . . . . . 96 e 3.4 Illustration de l’incorporation de la porte d´rob´e obscurcie (xproxy) e e dans le ver m´tamorphe MyDoom. . . . . . . . . . . . . . . . . . 98 e 3.5 Plateforme d’´valuation. . . . . . . . . . . . . . . . . . . . . . . . 99 e 3.6 Taux de d´tection de l’anti-virus AV9 en fonction de la taille des e blocs de code et des valeurs de τ . . . . . . . . . . . . . . . . . . . 103 5.1 Architecture du syst`me de d´tection . . . . . . . . . . . . . . . . e e 124 5.2 Trace d’ex´cution du cheval de Troie Trojan-PSW.Win32.- e Lmir.zr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 5.3 profil comportemental du cheval de Troie Trojan-PSW.Win32.- Lmir.zr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 5.4 Distribution des taux d’auto-similarit´ obtenus avec un ´chan- e e tillon de 5 000 profils malveillants. . . . . . . . . . . . . . . . . . 131 5.5 Plateforme de collecte de codes malveillants. . . . . . . . . . . . . 133 5.6 Courbes ROC pour la d´tection de profils malveillants connus e e e ` avec un temps d’ex´cution sup´rieur. A gauche les courbes en- ` droite, une vue d´taill´e. . . . . . . . . . . . . . . . . . . ti`res. A e e e 136 5.7 Courbe ROC pour la d´tection de profils malveillants inconnus ` e a gauche et taille de la base de d´tection de r´f´rence ` droite. . . . e ee a 137 5.8 Illustration des contributions de ce m´moire repr´sent´es en gris. 147 e e e
  11. 11. Liste des tableauxtel-00660274, version 1 - 16 Jan 2012 1.1 Exemple de routines polymorphes obtenues par la grammaire G de la figure 1.2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.2 Exemples de « code mort » en pseudo-assembleur x86. A gauche ` ` le code assembleur. A droite la signification correspondante. . . . 31 1.3 Exemple d’´change de registres pour le virus W95.Regswap. . . e 31 1.4 Exemple de permutations d’instructions dans deux programmes ´quivalents. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e 31 1.5 Exemples de substitutions d’instructions du virus MetaPHOR . 32 1.6 Exemple de branchements pseudo-conditionnels. . . . . . . . . . 32 1.7 Techniques d’obscurcissement de code employ´es dans des codes e malveillants m´tamorphes . . . . . . . . . . . . . . . . . . . . . . e 33 2.1 R´sultats de l’ex´cution du programme P pour diff´rentes va- e e e leurs de K. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 3.1 R´sultats de d´tection obtenus par 16 produits anti-viraux sur e e 100 vers obscurcis (premi`re colonne) et 100 vers m´tamorphes e e (deuxi`me colonne). Les techniques de d´tection d´duites des ob- e e e servations des anti-virus sont fournies en troisi`me colonne. . . . 101 e 4.1 Exemple de codage non uniquement d´codable. . . . . . . . . . . 109 e 4.2 Mesures de similarit´ obtenues entre TrueCrypt et la biblioth`que e e LZMA pour diff´rentes options de compilation. . . . . . . . . . . 120 e 5.1 R´sultats de compression pour diff´rentes biblioth`ques (zlib, bz- e e e lib2, LZMA et PPMZ2). . . . . . . . . . . . . . . . . . . . . . . . 131 C.1 R´capitulatif des outils d’analyse dynamique. . . . . . . . . . . . e 10 xi
  12. 12. tel-00660274, version 1 - 16 Jan 2012 xii LISTE DES TABLEAUX
  13. 13. Liste des programmes et des algorithmestel-00660274, version 1 - 16 Jan 2012 1.1 Exemple de la conjecture de Collatz comme pr´dicat opaque . . . e 25 1.2 Illustration de l’obscurcissement des noms de classes dans le virus MSIL/Gastropod. . . . . . . . . . . . . . . . . . . . . . . . . . 26 1.3 Algorithme de d´sassemblage r´cursif d’un programme. . . . . . . e e 42 1.4 Exemple de code assembleur permettant la d´tection de VMWare. e 53 2.1 Pseudo-code d’initialisation du bloc P0 . . . . . . . . . . . . . . . 69 2.2 Pseudo-code des blocs du programme P . . . . . . . . . . . . . . 69 3.1 Exemple de code assembleur x86 de τ -obscurcissement simple d’une adresse de destination. . . . . . . . . . . . . . . . . . . . . 90 3.2 Exemple de bloc obscurci Mi une fois d´sassembl´ . . . . . . . . e e 92 4.1 Programme C de 152 octets permettant de calculer les 32 372 premi`res d´cimales de π. . . . . . . . . . . . . . . . . . . . . . . e e 111 5.1 Algorithme glouton pour le probl`me du MSC. . . . . . . . . . . e 129 xiii
  14. 14. xiv LISTE DES PROGRAMMES ET DES ALGORITHMEStel-00660274, version 1 - 16 Jan 2012
  15. 15. tel-00660274, version 1 - 16 Jan 2012 Remerciementsxv
  16. 16. tel-00660274, version 1 - 16 Jan 2012 xvi REMERCIEMENTS
  17. 17. Introduction ` A l’origine r´serv´s aux infrastructures critiques pour lesquelles l’´change e e et la rapidit´ d’acc`s aux informations constituent une composante es- e e sentielle, les syst`mes d’informations se sont r´pandus avec le d´veloppe- e e e etel-00660274, version 1 - 16 Jan 2012 ment de l’informatique personnelle. Aujourd’hui, l’omnipr´sence de ces syst`mes e e dans des domaines aussi vari´s que la sant´, les t´l´communications, les trans- e e ee ports et les organisations gouvernementales, les rend particuli`rement critiques. e Leur interconnexion ainsi que la rapidit´ d’´change des informations qu’ils v´hi- e e e culent permettent une d´mat´rialisation des actions qui en font une proie toute e e d´sign´e pour des utilisateurs mal intentionn´s. La moindre d´faillance de ces e e e e syst`mes peut alors directement impacter la stabilit´ d’un pays, aussi bien sur e e e e e ` les plans ´conomiques, ´nerg´tiques, financiers que politiques. A titre d’exemple, la plus lourde attaque en d´nis de service distribu´ (« Distributed Denial of Ser- e e vice » ou DDoS) jamais observ´e en Europe a eu lieue le 27 avril 2007 [110]. e Cette attaque, ciblant l’Estonie, a paralys´ pendant plusieurs jours son admi- e nistration, ses banques ainsi qu’une bonne partie de ses m´dias. Cet exemple e illustre l’enjeu que repr´sente la s´curit´ des syst`mes d’information. e e e e Conform´ment ` la d´finition des crit`res de l’« Information Technology e a e e Security Evaluation Criteria » (ITSEC) [86], garantir la s´curit´ des syst`mes e e e d’information consiste ` assurer trois propri´t´s sur les informations manipul´es : a ee e – la confidentialit´, les informations ne doivent pas ˆtre r´v´l´es aux utilisa- e e e ee teurs non autoris´s ; e – l’int´grit´, les informations ne doivent pas ˆtre modifi´s par des utilisateurs e e e e non autoris´s ou par suite d’erreurs ; e – la disponibilit´, les informations doivent ˆtre accessibles ` tout utilisateur e e a autoris´, en toute circonstances. e Les actions men´es par des utilisateurs malveillants dans le but de por- e ter atteinte ` la s´curit´ d’un syst`me sont commun´ment d´sign´es sous le a e e e e e e terme d’attaques informatique. Ces attaques, peuvent ˆtre conduites de deux e mani`res : e – les attaques dites manuelles sont men´es par un ˆtre humain qui, par e e le biais d’un ensemble de programmes s’ex´cutant sous son identit´, lui e e permettent de porter atteinte au syst`me ; e – la seconde mani`re de conduire une attaque consiste ` l’automatiser. Dans e a ce cas, l’attaque est men´e de mani`re autonome par des logiciels d´sign´s e e e e xvii
  18. 18. xviii INTRODUCTION sous l’expression de codes malveillants. L’expression code malveillant provient de la traduction litt´rale du terme an- e glophone « malware », n´ologisme obtenu par la contraction du terme « ma- e licious » signifiant malveillant 1 et du terme « software » d´signant un logi- e ciel. Cette parenth`se ´tymologique nous permet de soulever le probl`me de la e e e terminologie li´e au domaine des codes malveillants. Bien que plusieurs orga- e nismes tels que le « Computer Antivirus Research’s Organization » (CARO), le « Common Malware Enumeration initiative » (CME) et l’« European Institute for Computer Antiviral Research » (EICAR) tentent d’harmoniser le vocabulaire associ´ au domaine de la lutte contre les codes malveillants, certaines d´finitions e e ne sont pas encore unanimement admises. Mˆme en cas de consensus, trouver e des ´quivalents fran¸ais pr´cis et explicites aux termes anglophones consacr´s e c e e est parfois une tˆche difficile. Tout au long de ce m´moire, un soin particulier a e sera apport´ ` la d´finition des termes employ´s. L’emploi des termes anglais e a e e sera r´serv´ au cas de non existence d’´quivalents fran¸ais officiels ou lorsque la e e e ctel-00660274, version 1 - 16 Jan 2012 d´finition fran¸aise ne nous semble pas suffisamment pr´cise et explicite. e c e Le panorama des codes malveillants apparait aujourd’hui riche et vari´ comme e en t´moignent les derniers rapports de s´curit´ de Microsoft (« Microsoft Secu- e e e rity Intelligence Report » (SIR)) [123, 124, 125, 126]. Ce panorama actuel refl`te e l’´volution rapide des codes malveillants depuis les d´buts de l’`re informatique, e e e en r´ponse aux ´volutions des outils employ´s pour les d´tecter. e e e e Les premiers travaux en lien avec les codes malveillants traitent d’un m´ca- e nisme fondamental intervenant dans l’´volution biologique : l’auto-reproduction. e C’est ainsi que les travaux pr´curseurs de von Neumann [169, 170] et de Burks [23], e portant sur la th´orie des automates cellulaires et visant ` mod´liser de mani`re e a e e simplifi´e l’auto-reproduction, introduisent une base th´orique pour les premiers e e ` codes malveillants connus. A partir de ces r´sultats, confort´s par la th´orie des e e e fonctions r´cursives de Kleene [96], et notamment par le th´or`me de r´cur- e e e e sion, preuve est alors faite qu’il est possible de concevoir des programmes dont l’ex´cution produit leur propre code. e En application de ces travaux th´oriques, les premi`res impl´mentations de e e e programmes auto-reproducteurs ` caract`re malveillant, historiquement d´si- a e e gn´es sous l’appellation « virus informatiques » par Cohen [43], sont apparues e dans les ann´es 80. En mˆme temps ont ´t´ initi´es les premi`res recherches e e ee e e acad´miques traitant de ce sujet avec les travaux de Kraus [102] en 1980 et ceux e de Cohen [43] en 1986. Parmi les premiers virus d´couverts, les plus c´l`bres e ee sont Elk Cloner tournant sous AppleDOS 3.3, apparu en 1983, ainsi que le virus d’amorce de disque Brain, d´couvert en 1986 [82]. e Peu ` peu, ces premiers programmes ont progressivement laiss´ la place ` a e a d’autres types de codes malveillants. L’utilisation des r´seaux comme moyen e de propagation est apparu avec le programme Xerox con¸u en 1981. Bien que c 1. Le terme malicieux est parfois employ´ comme ´quivalent fran¸ais. Dans ce cas, il corres- e e c e e c ´ pond ` sa d´finition premi`re selon le dictionnaire de la langue fran¸aise d’Emile Littr´ [116] a e ` savoir, une inclinaison ` malfaire. Pour lever toute ambigu¨ e, nous utiliserons uniquement a a ıt´ comme traduction le terme « malveillant ».
  19. 19. xix son origine semble plus accidentelle que volontaire, ce programme constitue le premier ver connu. L’auto-reproduction se fait alors de machine en machine par le biais du r´seau et non plus par infection d’autres programmes comme pour e le cas des virus. Le ver Morris [156] est le premier code malveillant publique a ` se propager ` travers l’Internet. Le d´but des ann´es 2000 est marqu´ par a e e e l’´mergence des vers ` propagation rapide tels que Code Red en 2001 [27] e a et Slammer en 2003 [127]. Avec l’essor de l’Internet, ces programmes se sont particuli`rement d´velopp´s pour toucher un maximum de machines le plus ra- e e e pidement possible. Par exemple, la deuxi`me version de Code Red a r´ussi ` e e a infecter, en moins de 24 heures, plus de 350 000 serveurs dans le monde [194]. La vitesse de propagation de Slammer a ´t´ ´valu´e au double de celle de Code eee e Red. Le nombre de machines connect´es ` Internet a aussi fortement influenc´ e a e l’´volution de la menace. Sont alors apparus des logiciels espions (« spyware ») e [130], des r´seaux de zombies (« botnets ») [77], des logiciels visant ` extorquer e atel-00660274, version 1 - 16 Jan 2012 de l’argent (« ransomware ») [19, 70]. Les codes malveillants repr´sentent aujourd’hui une menace s´rieuse pesant e e sur l’informatique moderne. Symantec ´value ` 5 millions le nombre de machines e a compromises impliqu´es dans des r´seaux de zombies pour l’ann´e 2008. Panda e e e Security estime ` 10 millions le nombre de machines infect´es par des codes a e malveillants en 2009. D’un point de vue ´conomique, les d´gˆts imput´s ` cette e e a e a menace ont ´t´ ´valu´s 9,3 milliards d’euros en Europe entre 2007 et 2008 [128] . e ee e Avec l’av`nement des premiers codes malveillants, sont aussi apparus les e premi`res variations de ces codes, d´sign´es sous le nom de variantes (de codes e e e malveillants). Pour notre propos, une variante est un programme qui partage une quantit´ de code suffisante avec un programme d’origine P , appel´ programme e e souche, pour ˆtre consid´r´ comme apparent´ ` P . Cette forme de diversification e ee ea a pour objectif de contourner les syst`mes de d´tection et principalement ceux ` e e a base de signatures. Si, ` l’origine, la g´n´ration de variantes r´sultait essentiel- a e e e lement de modifications manuelles, la situation actuelle est tout autre. En effet, ces derni`res ann´es t´moignent d’une augmentation significative du nombre de e e e variantes de codes malveillants connus d’apr`s Microsoft : au cours de la seconde e moiti´ de l’ann´e 2008, 95 millions de fichiers ` caract`re malveillant ont ´t´ r´- e e a e ee e pertori´s [125]. Six mois plus tard, ce nombre s’´levait alors ` 116 millions [124] e e a pour finalement atteindre 126 millions ` la fin de l’ann´e 2009 [126]. Devant a e cette augmentation, la lutte contre la prolif´ration des variantes est devenue un e enjeu majeur. Afin de produire de nouvelles variantes de codes malveillants ` partir d’une a souche originale, les attaquants ont recours ` des techniques de mutation de a code. Ces techniques de mutation peuvent ˆtre r´alis´es soit avant la mise en e e e « service » du code malveillant, soit apr`s. Dans le premier cas, on parle de e g´n´ration « hors-ligne » (« off-line »). Les variantes sont alors obtenues par e e des outils (« kits ») de g´n´ration automatique de codes malveillants ou alors e e par des outils de protection de code (« packers »). Dans le second cas, la mu- tation a lieu ` chaque r´plication dans le but de produire un code diff´rent. On a e e
  20. 20. xx INTRODUCTION parle alors de g´n´ration « en-ligne » (« in-line »). De notre point de vue, le e e cas des mutations « en-ligne » , c’est-`-dire celui des codes auto-reproducteurs a mutants, repr´sente une plus grande menace. Reconsid´rons ` titre d’exemple le e e a cas de Code Red. Supposons que nous disposions de n variantes de ce mˆme ver e produites « hors-ligne » . Le nombre de variantes ` d´tecter correspond alors, a e parmi les n g´n´r´es, aux m versions qui ont effectivement ´t´ « mises en ser- e ee ee vice » (en l’occurrence, celles qui ont ´t´ introduites sur l’Internet). Supposons ee maintenant que ce ver soit capable de muter lors de chaque r´plication. Dans ce e cas, en moins de 24 heures, ce sont 350 000 variantes qui sont obtenues ` partir a d’une souche initiale introduite en un seul nœud du r´seau. e Les codes capables de modifier leurs formes peuvent ˆtre class´s en codes e e chiffr´s, polymorphes, et enfin m´tamorphes [158]. Nous les pr´sentons de ma- e e e ni`re informelle, par ordre d’apparition. Cet ordre correspond aussi ` celui de e a la complexit´ des techniques mises en œuvre : etel-00660274, version 1 - 16 Jan 2012 – le chiffrement. Il s’agit de la premi`re technique historiquement employ´e e e afin de contourner la d´tection dite par signature. Cette d´tection par si- e e gnature consiste ` identifier un motif au sein d’un programme. Un motif a peut se d´finir de diverses fa¸ons, des formes les plus simples comme une e c expression r´guli`re sur la syntaxe d’un programme jusqu’` des formes e e a complexes d´crivant le comportement d’un programme. Dans le cas du e chiffrement de code, la technique de d´tection cibl´e est celle par signature e e statique portant sur le binaire d’un programme. Le chiffrement de code comporte au minimum trois parties distinctes : une routine de d´chiffre- e ment D, une charge « utile » U et enfin, une routine de chiffrement E. La figure 1 pr´sente le fonctionnement d’un code chiffr´ auto-reproducteur e e simple 2 note C. Avant son ex´cution (1), le programme C se pr´sente e e Routine de Routine de Routine de K1 K1 K2 déchiffrement D déchiffrement D déchiffrement D Programme Charge « utile » U Programme chiffré chiffré avec la clé K1 avec la clé K2 Routine de chiffrement E (1) (2) (3) Figure 1 – Fonctionnement d’un code auto-reproducteur chiffr´. e sous la forme d’une routine de d´chiffrement D contenant la cl´ K1 per- e e 2. On remarquera que le processus de r´plication d’un code chiffr´, tel que pr´sent´ en e e e e figure 1, peut ˆtre plus complexe. En effet, il est possible de l’imbriquer en cascade afin e d’obtenir des codes plus ´labor´s. e e

×