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).