Sujet de M2 : Analyse de code exécutable et
Transcription
Sujet de M2 : Analyse de code exécutable et
Sujet de M2 : Analyse de code exécutable et détection de codes malveillants • Mots clés : sécurité, cyber-défense, détection de codes malveillants, compréhension de code obfusqué, combinaisons d’approches statiques et dynamiques • Encadrants : Sébastien Bardin (CEA), Jean-Yves Marion (LORIA) • Institut : CEA LIST (Saclay, région parisienne) • Durée : 5-6 mois. Rémunération : oui • Contact : [email protected], [email protected] • Continuation en thèse possible : oui (sujet disponible sur demande) • Contact industriel : oui Contexte. La sécurité logicielle est un problème majeure de la société de l’information, les conséquences d’un système non sécurisé pouvant affecter aussi bien des individus (phishing, paiement non autorisé, etc.) que des compagnies (fuite d’informations confidentielles) ou des états (attaques cybernétiques, virus stuxnet). Un des vecteurs d’attaque les plus privilégiés est l’utilisation de code malveillant (malware), tels que les virus ou les vers [4]. La contremesure classique consiste à détecter le malware par des techniques de signature syntaxique [4] (comparaison octet par octet de portions du code à analyser avec la “signature” de malware connus), puis à l’éradiquer. Cependant cette approche est très simple à contourner en utilisant des méthodes d’obfuscation (modifications automatiques d’un programme pour en altérer la forme sans modifier son comportement). Signature sémantique des virus, analyse statique de code binaire. La recherche en matière de détection de malware s’oriente actuellement vers des notions de signatures sémantiques plus robustes [3]. La signature est actuellement calculée à partir d’une fraction seulement du code du malware, obtenue par analyse dynamique. D’un autre côté, des progrès récents ont été obtenus dans le domaine de l’analyse automatique de code binaire, soit par exploration partielle des comportements [1], soit par analyse statique [2]. Sujet proposé. Notre but à long terme est de combiner les techniques récentes d’analyse de code exécutable [1, 2] avec les techniques récentes de détection de malware [3]. Le présent stage consiste à adapter les techniques d’analyse de code exécutable statiques [2] et dynamiques [1] à la reconstruction du Graphe de Flot de Contrôle (CFG) de programmes obfusqués. Le candidat devra tout d’abord établir une revue des divers obfuscations (niveau binaire) classiquement utilisées pour protéger les codes malveillants. Le coeur du sujet consistera ensuite à concevoir et mettre en oeuvre une approche mixte combinant analyse symbolique dynamique [1] et analyse statique [2] pour la reconstruction du CFG de codes obfusqués. Enfin, le candidat aura à évaluer expérimentalement son approche, idéalement sur de vrais malware, ou plus simplement sur des codes obfusqués par lui-même. Le candidat bénéficiera de l’expérience du Laboratoire de Haute Sécurité (LHS, LORIA) concernant l’obfuscation et l’analyse des codes malveillants, et de l’expérience du Laboratoire de Sécurité Logicielle (LSL, CEA) concernant l’analyse formelle de code exécutable. Références [1] Bardin, S., Herrmann, P. : OSMOSE : Automatic Structural Testing of Executables. International Journal of Software Testing, Verification and Reliability (STVR), 21(1), 2011 [2] Bardin, S., Herrmann, P., Védrine, F. : Refinement-based CFG Reconstruction from Unstructured Programs. In : VMCAI 2011. Springer (2011) [3] Bonfante, G., Kaczmarek, M., Marion, J.-Y. : Architecture of a morphological malware detector. In : Journal in Computer Virology (2009) [4] Filiol, É. : Les virus informatiques : théorie, pratique et applications. Springer, Heidelberg (2004).