Identification d'un malware 1. Présentation des malwares par familles 7 1.1 Introduction 7 1.2 Backdoor 8 1.3 Ransomware 9 1.4 Voleur 10 1.5 Rootkit 10 2. Scénario d'infection 12 2.1 Introduction 12 2.2 Scénario 1 : l'exécution d'une pièce jointe 12 2.3 Scénario 2 : le clic malencontreux 13 2.4 Scénario 3 : l'ouverture d'un document infecté 13 2.5 Scénario 4 : les attaques informatiques 14 3. Techniques de communication avec le C&C 14 3.1 Introduction 14 3.2 Mise à jour de la liste des noms de domaine 15 3.3 Fast flux 15 3.4 DGA (Domain Generation Algorithms) 16 4. Collecte d'informations 16 4.1 Introduction 16 4.2 Collecte et analyse de la base de registre 17 4.3 Collecte et analyse des journaux d'événements 19 4.4 Collecte et analyse des fichiers exécutés au démarrage 20 4.5 Collecte et analyse du système de fichiers 21 4.6 Framework d'investigation inforensique 27 5. Image mémoire 29 5.1 Présentation 29 5.2 Réalisation d'une image mémoire 30 5.3 Analyse d'une image mémoire 33 1/7
5.4 Analyse de l'image mémoire d'un processus 40 6. Fonctionnalités des malwares 41 6.1 Techniques pour rester persistant 41 6.2 Techniques pour se cacher 43 7. Conclusion 47 Analyse de base 1. Création d'un laboratoire d'analyse 49 1.1 Introduction 49 1.2 VirtualBox 50 2. Information sur un fichier 56 2.1 Format d'un fichier 56 2.2 Chaînes de caractères présentes dans un fichier 57 3. Analyse dans le cas d'un fichier PDF 59 3.1 Introduction 59 3.2 Extraire le code JavaScript 59 3.3 Désobfusquer du code JavaScript 64 3.4 Conclusion 68 4. Analyse dans le cas d'un fichier JAR 68 4.1 Introduction 68 4.2 Récupération du code source depuis les classes 70 5. Analyse dans le cas d'un binaire 71 5.1 Analyse de binaires développés AutoIt 71 5.2 Analyse de binaires développés avec le framework.net 73 5.3 Analyse de binaires développés en C ou C++ 74 2/7
6. Le format PE 74 6.1 Introduction 74 6.2 Schéma du format PE 75 6.3 Outil pour analyser un PE 83 6.4 API d'analyse d un PE 85 7. Suivre l'exécution d'un binaire 89 7.1 Introduction 89 7.2 Activité au niveau de la base de registre 89 7.3 Activité au niveau du système de fichiers 92 7.4 Activité réseau 92 8. Utilisation de Cuckoo Sandbox 102 8.1 Introduction 102 8.2 Configuration 102 8.3 Utilisation 108 8.4 Conclusion 117 9. Ressources sur Internet concernant les malwares 118 9.1 Introduction 118 9.2 Sites permettant des analyses en ligne 118 9.3 Sites présentant des analyses techniques 121 9.4 Sites permettant de télécharger des samples de malwares 124 Reverse engineering 1. Introduction 127 1.1 Présentation 127 1.2 Législation 128 2. Assembleur x86 129 2.1 Registres 129 3/7
2.2 Instructions et opérations 134 2.3 Gestion de la mémoire par la pile 141 2.4 Gestion de la mémoire par le tas 143 2.5 Optimisation du compilateur 144 3. Analyse statique 145 3.1 Présentation 145 3.2 IDA Pro 146 3.2.1 Présentation 146 3.2.2 Navigation 149 3.2.3 Renommages et commentaires 152 3.2.4 Script 153 3.2.5 Plug-ins 154 3.3 Techniques d'analyse 157 3.3.1 Commencer une analyse 157 3.3.2 Sauts conditionnels 159 3.3.3 Boucles 160 3.4 API Windows 161 3.4.1 Introduction 161 3.4.2 API d'accès aux fichiers 162 3.4.3 API d'accès à la base de registre 165 3.4.4 API de communication réseau 171 3.4.5 API de gestion des services 175 3.4.6 Exemples de l'utilisation de l'api 178 3.4.7 Conclusion 186 3.5 Limites de l'analyse statique 186 4. Analyse dynamique 186 4.1 Présentation 186 4.2 OllyDbg 187 4.2.1 Présentation 187 4.2.2 Contrôle du flux d'exécution 192 4.2.3 Points d'arrêt 195 4.2.4 Visualisation des valeurs en mémoire 198 4.2.5 Copie de la mémoire 199 4/7
4.2.6 Conclusion 200 4.3 Malwasm 200 4.3.1 Présentation 200 4.3.2 Installation 201 4.3.3 Utilisation 204 4.4 Limites de l'analyse dynamique 211 Techniques d'obfuscation 1. Introduction 213 2. Obfuscation des chaînes de caractères 215 2.1 Introduction 215 2.2 Cas de l'utilisation de ROT13 215 2.3 Cas de l'utilisation de la fonction XOR avec une clé statique 219 2.4 Cas de l'utilisation de la fonction XOR avec une clé dynamique 225 2.5 Cas de l'utilisation de fonctions cryptographiques 227 2.6 Cas de l'utilisation de fonctions personnalisées 234 3. Obfuscation de l'utilisation de l'api Windows 243 3.1 Introduction 243 3.2 Étude du cas duqu 244 4. Packers 249 4.1 Introduction 249 4.2 Packers utilisant la pile 250 4.3 Packers utilisant le tas 266 4.4 Encodeur metasploit 275 5. Autres techniques 277 5.1 Anti-VM 277 5.2 Anti-reverse engineering et anti-debug 278 5/7
6. Conclusion 281 Détection, confinement et éradication 1. Indicateurs de compromission 283 2. Indicateurs de compromission réseau 284 2.1 Présentation 284 2.2 Utilisation des proxys 285 2.3 Utilisation des détecteurs d'intrusions 288 2.4 Cas complexes 290 3. Détection de fichiers 291 3.1 Présentation 291 3.2 Empreintes (ou Hash) 292 3.3 Signatures avec Yara 294 3.4 Signatures avec ssdeep 301 4. Détection et éradication de malwares avec clamav 303 4.1 Présentation 303 4.2 Installation 303 4.3 Utilisation 306 5. Utilisation d'openioc 313 5.1 Présentation 313 5.2 Utilisation 314 5.3 Interface graphique d'édition 316 5.4 Détection 320 6. Conclusion 325 6/7
Index 327 7/7