Evaluation des méthodes d'obscurcissement de binaire

par Matthieu Tofighi shirazi

Thèse de doctorat en Mathématiques et Informatique

Sous la direction de Philippe Elbaz-Vincent.

Thèses en préparation à Grenoble Alpes , dans le cadre de École doctorale mathématiques, sciences et technologies de l'information, informatique (Grenoble) , en partenariat avec Institut Fourier (laboratoire) .


  • Résumé

    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é intellectuelle, 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. Le processus de dés-obscurcissement peut être vu sous différentes approches, telles que la suppression 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. 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. La deuxième contribution consiste en une approche de suppression de transformation d'obscurcissement. 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, 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. 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 raisonnement 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. Dans cette thèse, nous avons étudié différentes approches de dés-obscurcissement en vue d'une évaluation statique des transformations d'obscurcissement. Nous nous sommes principalement concentrés sur le raisonnement sémantique statique, en le combinant avec des techniques bien connues issues d'autres domaines de recherche, telles que la différenciation binaire et l'apprentissage automatique. Nous avons également étudié et développé plusieurs quadriciels de dés-obscurcissement, un pour chacune des approches suivantes: simplifier le code obscurci, supprimer les transformations d'obscurcissement ou collecter des informations sur les protections appliquées. Nos méthodologies et nos outils ont été évalués sur des logiciels malveillants bien connus et des outils d'obscurcissement mettant en œuvre des transformations d'obscurcissement complexes ainsi que largement utilisées.

  • Titre traduit

    Analysis of obfuscation transformations on binary code


  • Résumé

    In this thesis we have studied different deobfuscation approaches toward a static evaluation of obfuscation transformations. We mainly focused on static semantic reasoning, combining it with well known techniques from other research areas such as binary diffing and machine learning. We studied and developed several deobfuscation frameworks, one for each of the followings approaches; simplifying the obfuscated code, removing the obfuscation transformations or gathering informations about the protections applied. This thesis contributions are made to answer the following questions: 1. How can we contribute to existing generic deobfuscation methodologies? 2. How can we use machine learning techniques for the purpose of removing widely used obfuscation transformations? 3. How can we help reverse-engineers select the adequate deobfuscation analyses? In order to answer the first question, we transposed semantic-based binary diffing techniques for the purpose of statically simplifying obfuscated binaries. We developed our methodology, called DoSE, as an IDA Pro plug-in and for three major applications. We evaluated each applications against real-world and well-known malwares such as Cryptowall and Flame. Our evaluations underlines the efficiency of DoSE for each applications, with up to 63% of control-flow graph reduction or 1954 cloned functions detected on Flame. We demonstrated that DoSE can be efficiently extended to the detection of two-way opaque predicates, which until then were not detected by any known technique. Therefore, this contribution paves the way for combining semantic equivalence methodologies with existing generic deobfuscation techniques, in order to improve their efficiency and scalability. Our second contribution is, to the best of our knowledge, the first deobfuscation technique based on machine learning for the purpose of removing obfuscation transformations. By introducing the different constructions of opaque predicates and the limitations from dynamic symbolic execution techniques and SMT solvers, we underlined the importance of studying other alternatives for generic evaluations of these transformations. We developed an IDA Pro plug-in, a new approach that bridges a thresholded static symbolic execution with machine learning classification to evaluate both the stealth and resilience of invariant opaque predicates constructions. The use of static symbolic execution allows us to have a better code coverage and scalability, which combined with a machine learning model, permits a generic approach by discarding the use of SMT solvers. Our studies illustrate that our choices conduct towards the implementation of an efficient and accurate evaluation framework against state of the art obfuscators. We created two models for the evaluation of stealth and resiliency of state-of-the-art opaque predicates constructions, with results up to 99% for detection and 95% for deobfuscation. Moreover, we extended our work to a deobfuscation plug-in and compared our results to other tools, showing the efficiency of machine learning for the deobfuscation of most invariant opaque predicates constructions. The third contribution of this thesis aims at improving existing metadata recovery attack. Existing technique syntax-oriented and thus suffers from several limitations. We presented the efficiency of semantic reasoning combined with advanced machine learning techniques. This combination is motivated by the construction of a fine-grained detection framework of obfuscation transformations and constructions. By extending our approach to multi-label and multi-output classification, we enhanced metadata recovery attacks to the detection of multiple layers of obfuscation transformations, as well as their constructions. Our results are promising, with overall accuracies up to 91% for the transformations and 100% for the constructions.