Analysis of Obfuscation Transformations on Binary Code Matthieu Tofighi Shirazi
Total Page:16
File Type:pdf, Size:1020Kb
Analysis of obfuscation transformations on binary code Matthieu Tofighi Shirazi To cite this version: Matthieu Tofighi Shirazi. Analysis of obfuscation transformations on binary code. Cryptography and Security [cs.CR]. Université Grenoble Alpes, 2019. English. NNT : 2019GREAM069. tel-02907117 HAL Id: tel-02907117 https://tel.archives-ouvertes.fr/tel-02907117 Submitted on 6 Jan 2021 HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non, lished or not. The documents may come from émanant des établissements d’enseignement et de teaching and research institutions in France or recherche français ou étrangers, des laboratoires abroad, or from public or private research centers. publics ou privés. THÈSE Pour obtenir le grade de DOCTEUR DE LA COMMUNAUTÉ UNIVERSITÉ GRENOBLE ALPES Spécialité : Mathématiques et Informatique Arrêté ministérial : 25 mai 2016 Présentée par Ramtine TOFIGHI SHIRAZI Thèse dirigée par Philippe ELBAZ-VINCENT préparée au sein du Laboratoire Institut Fourier dans l’École Doctorale MSTII Evaluation des méthodes d’obscurcissement de binaire Thèse soutenue publiquement le 16 décembre 2019, devant le jury composé de : M, Louis GOUBIN Professeur à l’Université Versailles-Saint-Quentin-en-Yvelines, Versailles, Rapporteur M, Aurélien FRANCILLON Professeur associé à EURECOM, Biot, Rapporteur M, Sébastien JOSSE Chercheur à la Direction générale de l’armement, Rennes, Examinateur M, Igor MUTTIK Professeur invité à la Royal Holloway Université de Londres, Londres, Examinateur Mme, Marie-Laure POTET Professeur à l’Université Grenoble Alpes, Grenoble, Présidente M, Guénaël RENAULT Professeur à l’Ecole Polytechnique, Paris, Examinateur Mme, Irina-Mariuca ASAVOAE Consultante à Trusted Labs, Thales Group, Meudon, Encadrante de thèse M, Philippe ELBAZ-VINCENT Professeur à l’Université Grenoble Alpes, Grenoble, Directeur de thèse 2 Remerciements Je souhaite remercier en premier lieu mon directeur de thèse, M. Philippe Elbaz-Vincent, pour m’avoir encadré et soutenu tout au long de cette thèse. Je lui suis également reconnaissant pour le temps conséquent qu’il m’a accordé, ses qualités pédagogiques et scientifiques, sa franchise et sa sympathie. J’ai beaucoup appris à ses côtés et je lui adresse ma gratitude pour tout cela. J’adresse de chaleureux remerciements à ma co-encadrante de thèse, Irina-Marica Asavoae, pour son attention de tout instant sur mes travaux, pour ses conseils avisés et son écoute qui ont été prépondérants pour la bonne réussite de cette thèse. Je remercie également mes anciennes co-encadrantes, Maria Christofi et Thanh Ha Le, avec lesquelles l’experience fut courte mais très enrichissante. Un grand merci à Louis Goubin et à Aurelien Francillon pour avoir accepté de rapporter ma thèse et pour tous leurs conseils, ainsi qu’aux autres membres du jury. Je désire églament remercier Sebastien Josse pour ses remarques, son ouverture d’esprit, sa franchise, et sa gentillesse qui m’ont permis d’atteindre mes objectifs dans le cadre du doctorat. Bien sûr, atteindre ces objectifs n’aurait pas été possible sans l’aide de nombreux collègues. Je souhaite notamment remercier Aline Gouget, pour son soutien tout au long de cette thèse. Enfin, je remercie ma famille pour leur soutien au cours de ces trois années, et plus particulière- ment ma mère sans laquelle je n’en serais pas là aujourd’hui. 3 4 Résumé long Introduction Contexte L’ingénierie inverse, également appelée la rétro-ingénierie, est le processus d’analyse d’un système qui permet d’identifier les composants et leur relation afin de créer des représentations du système à un niveau d’abstraction supérieur ou différent. L’ingénierie inverse est utilisée sur des systèmes logiciels afin de comprendre leur fonctionnement interne. Cette pratique est courante concernant le développement de logiciels, l’étude de programmes malveillants, l’audit de sécurité et également dans le but de mettre en échec les systèmes de protection logicielle. Dans ce dernier cas, lorsque des utilisateurs malveillants ont un accès complet à un logiciel, l’ingénierie inverse est utilisée pour les attaques de type Man-At-The-End (MATE). Afin de se protéger contre l’ingénierie inverse, et plus généralement contre les attaques de type MATE, les techniques de protection des logiciels sont largement utilisées de sorte à préserver la valeur commerciale du logiciel. Les algorithmes de protection logicielle appartiennent à quatre catégories: • l’obscurcissement du code pour rendre l’ingénierie inverse plus difficile en les rendant inin- telligibles ; • des méthodes d’inviolabilité utilisées pour se protéger contre des modifications illicites d’un logiciel; • le tatouage numérique insérant des messages de vérification afin d’identifier le propriétaire et ses droits; • le marquage, dit de naissance, utilisé pour extraire les caractéristiques inhérentes au pro- gramme d’origine de maière à en détecter l’originalité. Dans cette thèse, nous nous concentrons principalement sur l’obscurcissement de code en tant que technique de protection des logiciels. 5 Défis Scientifiques L’obscurcissement de code est perçu comme une stratégie de gestion de l’information visant à masquer le sens pouvant être tiré d’un logiciel, tout en préservant ses fonctionnalités d’origines. Actuellement, l’obscurcissement est utilisé comme mécanisme de protection de la propriété in- tellectuelle, mais aussi pour dissimuler les comportements malveillants de certain code binaire. Par conséquent, l’évaluation des méthodes d’obscurcissement est une question ouverte à laquelle il est souvent répondu par des méthodologies de dés-obscurcissement. Le processus de dés- obscurcissement est constitué par des méthodes d’ingénierie inverse qui évaluent la force des protections d’obscurcissement appliquées. Cependant, ces méthodes se concentrent souvent sur des protections spécifiques. Cette thèse porte sur l’évaluation des transformations d’obscurcissement appliquées aux codes binaires. L’objectif est de fournir différentes études et méthodologies afin d’aider les évaluateurs et les rétro-concepteurs durant l’analyse des logiciels obscurcis. Contributions Le processus de dés-obscurcissement peut être vu sous différentes approches, telles que la sup- pression d’une ou plusieurs transformations, la simplification du programme ou encore la collecte d’informations dites « méta-données » à propos du code obscurci. Dans cette thèse, nous contribuons à chaque approche de dés-obscurcissement comme décrit dans les paragraphes suivants. Contribution 1 – DoSE, Dés-obscurcissement basée sur l’équivalence sémantique de code La première contribution consiste en une approche de simplification de programme. Il s’agit d’une méthodologie de dés-obscurcissement basée sur l’équivalence sémantique de code, appelée DoSE. DoSE permet principalement de simplifier le code binaire en vérifiant l’équivalence syntaxique et sémantique de portions d’un code binaire. Cette vérification permet de supprimer les nouvelles transformations d’obscurcissement qui entravent les analyses de dés-obscurcissement de pointe, basées sur l’analyse dynamique et symbolique d’un code. Contribution 2 – L’évaluation des prédicats opaques de manière statique grâce à l’apprentissage automatique et à l’analyse binaire La deuxième contribution consiste en une approche de suppression de transformation d’obscur- cissement. Basée sur une méthodologie d’apprentissage automatique et supervisée, notre approche vise à détecter puis supprimer des schémas d’obscurcissement spécifiques, mais largement utilisés, 6 nommé prédicat opaque. À notre connaissance, il s’agit de la première méthodologie d’élimination de transformation d’obscurcissement utilisant des techniques d’apprentissage automatique. Contribution 3 – La détection des transformations d’obscurcissement basées sur un ensemble de modèle d’apprentissage et le raisonnement sémantique La troisième contribution de cette thèse se base sur une méthode de collecte de méta-données du code protégé. En utilisant des techniques avancées d’apprentissage automatique et de raison- nement sémantique, la méthodologie proposée permet aux analystes d’identifier plusieurs couches de transformations d’obscurcissement appliquées au code binaire, ce qui représente une étape importante précédent la suppression de ces protections. État de l’art Obscurcissement du code L’obscurcissement de code est une stratégie de gestion de l’information visant à obscurcir la sig- nification du code, tout en préservant ses fonctionnalités. L’objectif principal est de protéger la propriété intellectuelle des auteurs de logiciels. Cependant, l’obscurcissement est également très utilisé par les auteurs de logiciels malveillants pour empêcher la détection et l’analyse de leurs codes. Par conséquent, la capacité d’évaluation de telles transformations d’obscurcissement est une étape importante vers une meilleure protection des logiciels. De ce fait, nous introduisons par la suite différentes définitions de l’obscurcissement. Puis nous décrivons brièvement différentes méthodes d’obscurcissement et de dés-obscurcissement, avant de présenter les outils en lien avec ce domaine d’étude. Obscurcissement en boîte noire virtuelle Une première définition de l’obscurcissement prend en compte la propriété d’indiscernabilité entre deux programmes. La propriété essentielle, appelée boîte noire virtuelle, nécessite