Thèse soutenue

Analyse du flot de données pour la construction du graphe de flot de contrôle des codes obfusqués
FR  |  
EN
Accès à la thèse
Auteur / Autrice : Sylvain Cecchetto
Direction : Jean-Yves MarionGuillaume Bonfante
Type : Thèse de doctorat
Discipline(s) : Informatique
Date : Soutenance le 22/02/2021
Etablissement(s) : Université de Lorraine
Ecole(s) doctorale(s) : École doctorale IAEM Lorraine - Informatique, Automatique, Électronique - Électrotechnique, Mathématiques de Lorraine
Partenaire(s) de recherche : Laboratoire : Laboratoire lorrain de recherche en informatique et ses applications
Jury : Président / Présidente : Stephan Merz
Examinateurs / Examinatrices : Jean-Yves Marion, Guillaume Bonfante, José M. Fernandez, Valérie Viêt Triêm Tông, Christophe Hauser, Sarah Zennou, Nadia Tawbi
Rapporteurs / Rapporteuses : José M. Fernandez, Valérie Viêt Triêm Tông

Résumé

FR  |  
EN

L’augmentation des cyberattaques dans le monde fait de l’analyse des codes malveillants un domaine de recherche prioritaire. Ces logiciels utilisent diverses méthodes de protection, encore appelées obfuscations, visant à contourner les antivirus et à ralentir le travail d’analyse. Dans ce contexte, cette thèse apporte une solution à la construction du Graphe de Flot de Contrôle (GFC) d’un code binaire obfusqué. Nous avons développé la plateforme BOA (Basic blOck Analysis) qui effectue une analyse statique d’un code binaire protégé. Pour cela, nous avons défini une sémantique s’appuyant sur l’outil BINSEC à laquelle nous avons ajouté des continuations. Ces dernières permettent d’une part de contrôler les auto-modifications, et d’autre part de simuler le système d’exploitation pour traiter les appels et interruptions système. L’analyse statique est faite en exécutant symboliquement le code binaire et en calculant les valeurs des états du système à l’aide de solveur SMT. Ainsi, nous effectuons une analyse du flot de données afin de construire le GFC en calculant les adresses de transfert. Enfin, la gestion des boucles est réalisée en transformant un GFC en un automate à pile. BOA est capable de calculer les adresses des sauts dynamiques, de détecter les prédicats opaques, de calculer les adresses de retour sur une pile même si elles ont été falsifiées, de gérer les falsifications des gestionnaires d’interruption, reconstruire à la volée les tables d’importation, et pour finir, de gérer les auto-modifications. Nous avons validé la correction de BOA en utilisant l’obfuscateur de code Tigress. Ensuite, nous avons testé BOA sur 35 packers connus et nous avons montré que dans 30 cas, BOA était capable de reconstruire complètement ou partiellement le binaire initialement masqué. Pour finir, nous avons détecté les prédicats opaques protégeant XTunnel, un malware utilisé lors des élections américaines de 2016, et nous avons partiellement dépacké un échantillon du cheval de Troie Emotet, qui, le 14/10/2020 n’était détecté que par 7 antivirus sur les 63 que propose VirusTotal. Ce travail contribue au développement des outils d’analyse statique des codes malveillants. Contrairement aux analyses dynamiques, cette solution permet une analyse sans exécution du binaire, ce qui offre un double avantage : d’une part une approche statique est plus facile à déployer, et d’autre part le code malveillant n’étant pas exécuté, il ne peut pas prévenir son auteur.