Analyse binaire des logiciels malveillants pour Linux et IoT
Auteur / Autrice : | Emanuele Cozzi |
Direction : | Davide Balzarotti |
Type : | Thèse de doctorat |
Discipline(s) : | Informatique, télécommunications et électronique |
Date : | Soutenance le 14/12/2020 |
Etablissement(s) : | Sorbonne université |
Ecole(s) doctorale(s) : | École doctorale Informatique, télécommunications et électronique de Paris (1992-...) |
Partenaire(s) de recherche : | Laboratoire : Institut EURECOM (Sophia-Antipolis, Alpes-Maritimes ; 1992-....) |
Jury : | Président / Présidente : Aurélien Francillon |
Examinateurs / Examinatrices : Mariano Graziano, Martina Lindorfer | |
Rapporteurs / Rapporteuses : Christian Rossow, Lorenzo Cavallaro |
Mots clés
Résumé
Au cours des deux dernières décennies, la communauté de la sécurité a lutté contre les programmes malveillants pour les systèmes d’exploitation basés sur Windows. Cependant, le nombre croissant de dispositifs embarqués interconnectés et la révolution de l’IoT modifient rapidement le paysage des logiciels malveillants. Les acteurs malveillants ne sont pas restés les bras croisés, mais ont rapidement réagi pour créer des “logiciels malveillants Linux”. Par cette thèse, nous naviguons dans le monde des logiciels malveillants basés sur Linux et mettons en évidence les problèmes que nous devons surmonter pour leur analyse correcte. Après une exploration systématique des défis liés à l’analyse des logiciels malveillants sous Linux, nous présentons la conception et la mise en œuvre du premier pipeline d’analyse des logiciels malveillants, spécialement conçu pour étudier ce phénomène émergent. Nous appliquons ensuite des techniques de similarité de code binaire pour reconstruire systématiquement la lignée des familles de logiciels malveillants de l’IoT, et suivre leurs relations, leur évolution et leurs variantes. Nous montrons comment la libre disponibilité du code source a entraîné une grand nombre de variantes, ce qui a souvent un impact sur la classification des systèmes antivirus. Enfin et surtout, nous abordons un problème majeur que nous avons rencontré dans l’analyse des exécutables liés statiquement. En particulier, nous présentons une nouvelle approche pour identifier la frontière entre le code utilisateur et les bibliothèques tierces.