Utilisateur:Lunaat/Brouillon

Détection de malware

modifier

Introduction

modifier

Un logiciel malveillant (en anglais : malware)[1] est un programme développé dans le but de nuire à un système informatique, sans le consentement de l'utilisateur dont l'ordinateur est infecté. Ils ne sont plus rares de nos jours et ont un impact énorme sur notre monde.

Les détecteurs de logiciels malveillants sont les principaux outils de défense contre les logiciels malveillants. Leur qualité est déterminée par les techniques qu'il utilise. Il est donc impératif que nous étudions les différentes techniques de détection de malware, et que nous comprenions les forces et limites de chacune. C’est un domaine dont se préoccupe le milieu de la recherche mais également le domaine public.

Un détecteur de malware aide le système à se protéger en détectant des comportements malicieux. Il peut se situer sur le système qu’il essaie de protéger ou bien ailleurs. Il prend deux données en entrée. La première est sa connaissance de comportement malicieux. La deuxième est le programme à inspecter. Une fois que le détecteur prend connaissance de ce qui est considéré comme comportement malicieux et le programme à inspecter, il peut employer ses techniques de détection pour savoir si un programme est effectivement malicieux ou bénin.

Les méthodes existantes

modifier

Détection par statistique OP-codes[2]

modifier

La détection de malware par Opcode est une technique contemporaine qui permet d’obtenir de solides résultats. Cette méthode consiste à analyser les instructions assembleur du programme afin d’obtenir des statistiques de présence de chacune des instructions.

De façon générale, dans les malwares la couche code métier est très maigre ce qui implique la présence importante de certaine instructions assembleur primaire. On peut considérer que dans un malware, les instructions assembleur suivantes sont fort utilisées:

  • MOVE
  • JUMP
  • PACKED-SWITCH
  • SPARSE-SWITCH
  • INVOKE
  • IF

Les autres instructions plus avancées sont beaucoup moins présentes. Par exemple, dans un code avec une logique métier plus élaborée, le programme utilisera des fonctions assembleur secondaires à la même fréquence que les fonctions ci-dessus.

Grâce à ce ratio de présence, des systèmes de détection de malware ont vu le jour.

Détection par base de données virales[3]

modifier

La détection par base de données virale est la technique la plus utilisée aujourd’hui. Cette méthode consiste à stocker un maximum d’informations sur les programmes malveillants afin de les détecter lorsqu’un utilisateur les télécharge à son insu. Lorsque l’utilisateur va télécharger un fichier, le logiciel de défense va décomposer le contenu de ce fichier et comparer sa composition à sa base de données virale. Cette base de données virale est valorisée dans la plupart des cas par la société qui a mis en place l’anti-malware[4]. Il est en permanence à la recherche de nouveaux malwares et utilise les remontées de sa communauté afin d’être le plus efficace et d’obtenir des données toujours à jour.

Pour effectuer la comparaison entre la base de données et le fichier à analyser, il a fallu mettre en place une technique afin d’augmenter l’efficacité globale du programme :

La complexité naïve d’une telle comparaison est de O(N) ⇒ N représentant le nombre d’entrée dans la base. Ce qui peut être très important étant donné le nombre d’entrées dans ce genre de base de données.

Pour pallier ce problème, les systèmes anti-malware utilisent une méthode “fingerprint” qui consiste à extraire des “empreintes certaines” des programmes malveillants. Ces empreintes certaines, sont des éléments d’un programme (ou fichier) qui prouvent drastiquement la relation entre le fichier et le programme malveillant en base de données. Par exemple, cette empreinte peut être une signature de certificat falsifiée.

La détection par comportement[5]

modifier

La détection par comportement suspect n’essaie pas d'identifier un virus connu, mais plutôt de surveiller le comportement de tous les programmes. Si par exemple un programme essaie d’écrire des données sur un exécutable, l’anti-malware peut remarquer ce comportement suspect, alerter l’utilisateur, et lui demander quoi faire. L’outil guette donc en temps réel les actions malicieuses potentielles et les bloque avant qu’elle n’aient une chance d’affecter le système.

Avec l'arrivée des algorithmes de Machine learning[6], ce système de détection s'améliore de façon continue. Les algorithmes sont désormais capables d'apprendre automatiquement à reconnaître des malwares à partir des données déjà traitées.

Détection par simulation sur bac à sable[7]

modifier

La simulation par bac à sable consiste à déployer un programme sur un environnement clos qui est dédié à cela. Après installation sur l’environnement dit de “bac à sable”, un programme vérifie que les fonctionnalités système et que certaines applications n’ont pas été altérées. Ce fonctionnement rend cette méthode très efficace car elle permet un déploiement total de l'application en amont d’une installation sur un environnement critique. C’est une méthode très utilisée en entreprise car elle permet une couverture maximale des risques. Le coût est minime par rapport au coût qu'aurait pu engendrer le déploiement d’un programme malveillant en production.

De plus, avec la virtualisation, il est de plus en plus facile d’utiliser cette méthode car l’accès aux machines virtuelles est de plus en plus aisée.

Comparaisons

modifier

Les quatre méthodes présentées sont des méthodes bien différentes.

La détection par OP-codes est une technique très récente sur laquelle nous n'avons pas suffisamment de recul mais qui a déjà montré son potentiel. De plus, contrairement à la détection par base de données virales, elle a le fort avantage de ne pas avoir besoin de connaissance préalable du malware pour que celui-ci soit détecté.

La détection par base de données virales est la méthode la plus répandue et qui a fait ses preuves. Sa principale faiblesse vient du fait que le malware doit être connu et reconnu tel quel avant qu’il soit identifiable. La base de données virale doit donc être systématiquement à jour. Si le malware n’est pas référencé, il sera alors indétectable. Cependant, les entreprises d’édition d’antivirus ont un système de recherche de malware extrêmement développé qui permet de mettre à jour leurs bases de données virale très régulièrement.

La détection par comportement est une méthode qui permet de se protéger en temps réel contre les programmes malicieux. Il n’analyse pas les instructions assembleur, et ne compare pas les données avec une base de données virale. Il se contente de détecter des actions suspectes.

La détection sur environnement de bac à sable est extrêmement efficace mais demande des moyens plus importants pour sa mise en place. Il faut une machine dédiée à ce type de tâche (ce qui est rarement le cas pour un particulier) et il faut aussi un système de vérification qui est souvent propriétaire. En terme d’efficacité, cette méthode est plus efficace que les deux précédentes mais plus longue et coûteuse. Elle a aussi l’avantage d’être compatible avec toutes les autres méthodes en parallèle sur une machine.

Voir aussi

modifier

Liens externe

modifier

Références

modifier
  1. Francesco Mercaldo, Vittoria Nardone, Antonella Santone et Corrado Aaron Visaggio, « Download Malware? No, Thanks: How Formal Methods Can Block Update Attacks », Proceedings of the 4th FME Workshop on Formal Methods in Software Engineering, ACM, formaliSE '16,‎ , p. 22–28 (ISBN 9781450341592, DOI 10.1145/2897667.2897673, lire en ligne, consulté le )
  2. N. Sundareswaran et P. Vinoth, « The Network Model to Prevent the Mobile Malware in the Distributed Environment », 2014 3rd International Conference on Eco-friendly Computing and Communication Systems,‎ , p. 212–216 (DOI 10.1109/Eco-friendly.2014.50, lire en ligne, consulté le )
  3. (en) Xiaolei Wang, Yuexiang Yang et Yingzhi Zeng, « Accurate mobile malware detection and classification in the cloud », SpringerPlus, vol. 4, no 1,‎ (ISSN 2193-1801, PMID 26543718, PMCID 4628031, DOI 10.1186/s40064-015-1356-1, lire en ligne, consulté le )
  4. Baojiang Cui, Haifeng Jin, Giuliana Carullo et Zheli Liu, « Service-oriented mobile malware detection system based on mining strategies », Pervasive and Mobile Computing, special Issue on Secure Ubiquitous Computing, vol. 24,‎ , p. 101–116 (DOI 10.1016/j.pmcj.2015.06.006, lire en ligne, consulté le )
  5. (en) Qiguang Miao, Jiachen Liu, Ying Cao et Jianfeng Song, « Malware detection using bilayer behavior abstraction and improved one-class support vector machines », International Journal of Information Security, vol. 15, no 4,‎ , p. 361–379 (ISSN 1615-5262 et 1615-5270, DOI 10.1007/s10207-015-0297-6, lire en ligne, consulté le )
  6. Hyo-Sik Ham et Mi-Jung Choi, « Analysis of Android malware detection performance using machine learning classifiers », 2013 International Conference on ICT Convergence (ICTC),‎ , p. 490–495 (DOI 10.1109/ICTC.2013.6675404, lire en ligne, consulté le )
  7. Xuxian Jiang, Xinyuan Wang et Dongyan Xu, « Stealthy Malware Detection and Monitoring Through VMM-based “Out-of-the-box” Semantic View Reconstruction », ACM Trans. Inf. Syst. Secur., vol. 13, no 2,‎ , p. 12:1–12:28 (ISSN 1094-9224, DOI 10.1145/1698750.1698752, lire en ligne, consulté le )