Détection de logiciels malveillants renforcée par apprentissage automatique

Un article de Wikipédia, l'encyclopédie libre.

La détection de logiciels malveillants renforcés par apprentissage automatique représente une avancée significative dans la lutte contre les menaces informatiques. Cette méthode s'appuie sur des algorithmes d'apprentissage pour identifier et contrer les attaques.

Traditionnellement, les logiciels antivirus se basent sur la détection de signature virale, une approche largement adoptée mais qui montre ses limites face à des menaces nouvelles et en constante évolution. En effet, il est empiriquement prouvé que cette méthode traditionnelle peut échouer à identifier de nouvelles formes de logiciels malveillants. Face à ce défi, l'adoption de modèles d'analyse en temps réel basés sur l'apprentissage automatique a émergé comme une solution prometteuse, cette approche est souvent désignée sous le nom de "Machine Learning-based Malware Detection" en anglais, que l'on peut traduire par "Détection de Malwares basée sur l'Apprentissage Automatique" en français.. Ces modèles sont conçus pour détecter les menaces dès leur première apparition, offrant ainsi une protection plus dynamique et adaptative face à l'évolution rapide du paysage des menaces informatiques.

Enjeux[modifier | modifier le code]

Depuis 2008, on remarque une augmentation significative de la présence de logiciel malveillant sur Internet[1].

Les logiciels malveillants peuvent être issus d'un large spectre de sources (infection de systèmes distribués, téléchargement, réseau, internet des objets...) et peuvent se présenter sous différentes formes (binaire exécutable, script, shellcode, firmware...). Ils représentent une menace considérable pour les particuliers comme les industriels, dans la mesure où un programme malveillant exécuté sur une machine peut (dans le pire des scenarios) compromettre complètement un système informatique potentiellement critique, et provoquer des dégâts proportionnels à son niveau de privilège[2].

Les méthodes actuelles de détection de programme malveillants reposent majoritairement sur de la discrimination par signature virale. Bien qu'étant très efficace sur les menaces d’ores et déjà recensées, elles se révèlent parfaitement inefficace face à un programme encore inconnu. De plus, le nombre de programmes malveillants en circulation augmentant considérablement chaque année, il devient de plus en plus délicat de maintenir des bases de signatures fiables et riches. Les grands acteurs des solutions anti-virus proposent donc depuis des années de renforcer les algorithmes de détections par des règles heuristiques. Bien que plus efficaces sur les programmes inconnus, ces règles présentent le désavantage d'être statiques et de reposer sur l'appréciation des développeurs qui les rédigent[3],[4],[5].

C'est dans une volonté de proposer des règles plus universelles et évolutives que s'est construite l'idée de proposer des solutions de détection de menaces renforcées par apprentissage automatique[6].

Approches et méthodes d'analyse[modifier | modifier le code]

Le processus de construction d'une taxonomie de classification virale par apprentissage automatique se déconstruit généralement en deux grandes étapes :

  1. L'extraction de caractéristiques appliquée à un large corpus d'analyse constitué d'une proportion variable de logiciels malicieux et bénins.
  2. La classification stochastique de chaque programme dans la catégorie qui le définit le mieux

La pertinence de l'implémentation de ces deux étapes déterminera de façon critique la performance du modèle produit[7].

Extraction de caractéristiques[modifier | modifier le code]

Analyse statique[modifier | modifier le code]

L'approche statique se veut être une approche formelle d'analyse prédictive du comportement d'un fichier brut. Il s'agit d'extraire et de traiter les informations relatives à une ressource afin d'en déduire son comportement, afin de statuer sur le degré de menace qu'il représente pour le système hôte[8].

Cette méthode d'analyse se veut dans un premier temps relativement sûre puisqu'elle n'implique pas l'exécution de code sur le matériel. Elle sera cependant naturellement moins consistante qu'une analyse virale in situ dans la mesure où il est très délicat de déterminer précisément, avant son exécution, les intentions d'un programme compilé.[9]

Analyse du code binaire[modifier | modifier le code]

Tout fichier de taille octets peut être représenté par un sous-ensemble de mots de taille (avec ) appelé "N-gramme". Par exemple, la séquence 0xCAFE peut est représentée par trois 2-gramme (respectivement 0xCA, 0xAF, 0xFE) ou encore deux 3-gramme (respectivement 0xCAF et 0xAFE).

En s'appuyant sur des méthodes d'exploration de données[10],[11],[12],[13], il est possible de s'intéresser à la distribution "N-gramme" d'octets au sein d'un fichier pour en faire ressortir des mots typiquement associés à du code malveillant. Cette méthode a la particularité de ne faire aucune interprétation fonctionnelle des données qu'elle analyse.

Travail complété par cette étude[14] qui met à l'épreuve plusieurs algorithmes et conclut sur un résultat optimal avec un "Boosted Decision Tree" (voir boosting[15]).

Un processus d'analyse naïf pourrait prendre la forme de :

  1. Extraction de termes n-gramme
  2. Normalisation de la fréquence d'appartion ()
  3. Classification (Artificial Neural Networks, Decision Trees, Naïve Bayes, Support Vector Machines[16])

[16]


Autres approches[modifier | modifier le code]
  • Analyse graphique : Il a été proposé, en générant une représentation graphique en nuances de gris du fichier à analyser, de s'appuyer sur des algorithmes de reconnaissance d'images afin de classifier les fichiers en fonction de leurs similarités visuelles avec celles des fichiers malveillants présents dans le corpus d'analyse[17],[18].
  • Mesure de l'entropie pour détecter une tentative d'obfuscation[18]
  • Interaction avec les registres du processeur[20]
  • Analyse des opérations de contrôle de flot (call, ret, jump ..)[21]

Analyse dynamique[modifier | modifier le code]

L'analyse dynamique désigne le processus d'observation comportementale d'un programme en provoquant volontairement son exécution au sein d'un environnement surveillé, isolé du reste du système (type « bac à sable »). Il est de ce fait possible de prendre connaissance des interactions du programme avec le système, et de la façon dont il l'affecte de façon plus globale. Grâce à ce type d'information, il relativement commode de statuer par la suite sur le niveau de danger que peut représenter son exécution au sein du système. De plus, l'analyse dynamique présente l'avantage d'être parfaitement robuste face aux méthodes de maquillage des fichiers statiques (obfuscation de code, chargement de code dynamique, chiffrement, packing...)[8],[22],[9].

L'observation comportementale peut prendre plusieurs perspectives et s'intéresser à différents niveaux d'exécution, du plus bas pour le code machine, aux niveaux plus élevés pour le système de fichiers ou les registres du système d'exploitation[23].

Permettant une étude plus fine que celle proposée par l'analyse statique, cette méthode présente cependant un risque plus important pour le système hôte dans la mesure où elle implique l'exécution de code étranger sur du matériel (physique ou virtuel) sensible. Une faiblesse de conception dans les outils d'analyse pourrait introduire, pour un programme qui en aurait connaissance, la capacité de réaliser une évasion et de compromettre la plateforme en élevant son niveau de privilèges (voir furtivité et méthodes d'évasion).

Analyse des codes d'opération[modifier | modifier le code]

L'application d'algorithme de machine learning au code d'opération révélés au runtinme a été un sujet vastement étudié dans la littérature scientifique dans l'optique de construire des modèles prédictifs de détection au plus bas niveau, insensible aux mécanismes de furtivité. Par nature, ces données offrent une représentation exacte du code qui va être exécuté sur le CPU. Bien que techniquement très précis, une des grandes difficultés réside dans l'interprétation qui en sera faite pour discriminer le code malveillant du code bénin.

Plusieurs approches ont été proposées :

  • étude de la distribution de petites séquences N-Gramme des codes d'opérations générés[24],[25],[18].
  • étude de similarités entre fichiers exécutables appuyés sur des graphes de codes d'opération[21],[26],[27]
Analyse des appels de fonction[modifier | modifier le code]

Afin de mieux comprendre le comportement d'un programme, il peut être intéressant d'avoir une vision précise de son flot d'exécution, et notamment monitorer les appels de fonctions qui sont effectués. Pour ce faire, il est par exemple possible dans un environnement Windows d'effectuer au préalable un appel à la fonction système LoadLibrary afin d'injecter un DLL en charge de l'introspection du programme en temps réel[28].

La fréquence des appels à l'API système est un élément étudié avec beaucoup d'attention car il peut se montrer très révélateur des intentions d'un programme[29],[30].

Analyse de la mémoire[modifier | modifier le code]

Analyse forensique de la mémoire volatile lors de l'exécution du programme.

Analyse du réseau[modifier | modifier le code]

Cette méthode de détection repose sur l'analyse du trafic réseau généré par le programme, généralement la communication effectuée avec le centre de contrôle . Il a par exemple été proposé de découper le flot réseau en séquences sur lesquelles appliquer le modèle en comparant l'alignement avec du trafic malveillant témoin[17]

Classification[modifier | modifier le code]

Après normalisation des données issues de l'étape d'extraction de caractéristiques intervient le processus de classification, qui vise à construire une base de connaissances fiable qui permettra de déterminer, à l'aide d'algorithmes de classification renforcés par apprentissage statistique, si la ressource concernée est bénigne ou présente une menace réelle pour le système[10].

À l'image de la majorité des projets conditionnés par l'apprentissage automatique, ce travail se divise en deux étapes : la construction (ou "entraînement") du modèle de détection, puis l'application de ce modèle au monde réel. Lors de la première étape, le système est alimenté par le corpus d'analyse constitué précédemment afin de "l'entraîner" et de construire un classifieur. La seconde étape consiste à confronter ce classifieur à des fichiers aléatoires afin de trancher entre menace et inoffensivité[7].

Plus le modèle sera pertinent et le corpus d'analyse complet, plus la discrimination entre fichier malicieux et bénin sera fine.

Limites et contre mesures[modifier | modifier le code]

Crédibilité des résultats[modifier | modifier le code]

La qualité des résultats d'un détecteur de programme malveillant dépend de la complexité des fonctions de détection[31] et des fonctions de classifications utilisées dans le modèle de conception du réseau neuronal[32].

L'environnement de détection est aussi sujet à une baisse de la précision des algorithmes de détection. En effet, la mise en place de tels algorithmes et plus difficile dans un système de production[33] avec de nombreux processus s'exécutant parallèlement ou avec un trafic réseau chargé et générera potentiellement plus de résultats erronés que dans un environnement isolé[34].

Les auteurs de programme malveillant utilisent aussi des techniques qui permettent d'échapper à la détection ou alors de modifier le comportement de leurs logiciels afin qu'il soit catégorisé comme sûr et dégradent ainsi les résultats du détecteur.

Difficulté de construction du modèle[modifier | modifier le code]

Les logiciels malveillants sont plus nombreux, proviennent d'une multitude de sources, exploitent un grand nombre de failles toutes différentes les unes des autres. Par conséquent, collecter des informations sur leur comportement et anticiper les menaces possibles sont des tâches complexes qui requièrent un temps considérable[34].

Du fait de l'homogénéité des comportements des différents logiciels et de leur capacité à changer ces comportements, les algorithmes de détection sont rapidement obsolètes[33] et ont besoin d'être régulièrement entraînés/ré-entraînés, ce qui augmente significativement les coûts énergétiques des systèmes qui élaborent et utilisent les d'algorithmes de détection de logiciels malveillants[35].

Les techniques d'évasion sont plus nombreuses et plus sophistiquées ce qui augmente la difficulté de conception des modèles et des algorithmes de détection[36].

Généralement, les analystes utilisent des détecteurs dits en "boîte blanche" afin de maîtriser le comportement des détecteurs et de pouvoir affiner les résultats sur des cas spécifiques, ce qui nécessite de concevoir le détecteur.

La conception d'un détecteur de logiciel malveillant utilisant l'apprentissage automatique requièrent cependant des compétences techniques poussées et les solutions déjà présentes sont généralement des détecteurs en dit en "boîte noire" où on ne contrôle pas le comportement du détecteur mais on lui fournit simplement des entrées et il produit un résultat, sans avoir connaissance des états intermédiaires. Il est souvent difficile d'interpréter les résultats fournis par ce type de détecteurs[37].

Furtivité et méthodes d'évasion[modifier | modifier le code]

Analyse de l'environnement d'exécution[modifier | modifier le code]

Les logiciels malveillants sont capables d'analyser leur environnement de détection afin de déterminer s'ils sont dans un véritable système ou dans un bac à sable surveillé.

Afin de déterminer si les logiciels malveillants s’exécutent dans un environnement surveillé, ils analysent l'environnement à la recherche d'empreintes telles que la présence de logiciels d'analyse (débuggeur), la liste des processus qui cohabitent avec le logiciel malveillant[38],[39].

Lorsqu'ils détectent qu'ils sont dans un bac à sable surveillé, il est possible pour les logiciels de changer de comportement et de ne pas tenter d'actions (exemple : ne pas s’exécuter) afin que le détecteur les catégorisent comme logiciels sûrs[38].

Les logiciels malveillants peuvent aussi mesurer le temps de chaque instruction qu'ils exécutent dans l'environnement afin de déterminer si la durée est plus longue que dans un système classique et en déduire qu'ils sont surveillés[38].

Les logiciels malveillants peuvent mettre en place un test de Turing inversé, afin d'analyser l'environnement à la recherche de traces d'un utilisateur pour déterminer s'ils sont dans un environnement surveillé ou dans un véritable système.

Un bac à sable est généralement un système récemment instancié, de manière automatique, sans action humaine courante (visites de sites internet, déplacement de curseurs, entrées au clavier, présence de moniteurs etc)[38],[40]. Si le logiciel ne trouve pas ces actions, il peut en déduire qu'il se trouve dans un environnement surveillé.

Méthodes d'évasion[modifier | modifier le code]

Les techniques d'évasions sont plus nombreuses et plus sophistiquées[36] ce qui augmente la difficulté de conception des modèles et des algorithmes de détection ou des antivirus, de plus même après leur développement, ils deviennent très rapidement obsolètes[33],[41].

Évasion par escalade de privilège

Un logiciel malveillant peut s'évader d'un environnement surveillé, avec des privilèges restreints, en tentant d'infecter le système dans lequel il s’exécute pour obtenir des privilèges de plus haut niveau et ainsi pouvoir effectuer ses actions malveillantes en laissant le moins d'informations possible au système de surveillance[42].

Les logiciels malveillants peuvent infecter le système en utilisant diverses techniques : Installation d'un pilote de kernel infecté, hyperviseur corrompu, utilisation de failles matériel du système[42]...

Évasion par offuscation de code

Un logiciel malveillant peut cacher les éventuelles empreintes qu'il laisse lors de son exécution pour tromper le système de détection en utilisant l'offuscation de code.

Il existe plusieurs techniques d'offuscation de code telles que le polymorphisme, le métamorphisme[7],[43].

Le polymorphisme est une technique qui permet de chiffrer le code binaire du logiciel malveillant afin que ce code ne puisse être interprété qu'en possession de la clé de déchiffrement[43].

Le métamorphisme est une technique qui permet de modifier les instructions du logiciel malveillant tels que l'insertion de code d'opérations ou le changement de registre[43], mais sans changer la finalité des instructions. Cela a pour but de masquer les empreintes du logiciel et que de différentes copies de ce même logiciel paraissent différentes, pour le système de surveillance, lors de son exécution.

Evasion par absence de fichier

La plupart des antivirus classiques effectuent une analyse des fichiers présents sur le disque dur du système à la recherche de logiciels malveillants. Une approche possible pour ces logiciels pour masquer leur présence est de ne stocker aucun fichier sur le disque mais plutôt dans la mémoire vive. Le point faible de cette technique est la fréquence de redémarrage du système c'est pourquoi elle est plus efficace sur les serveurs que sur les ordinateurs personnels[43].

Cette technique est majoritairement utilisée par les virus de type "Cryptojacking"[44].

Avec la démocratisation du Big Data et l'utilisation massive des outils de grilles en mémoire tels qu'Apache Spark ou Redis, ce genre d'attaque est particulièrement redoutable car le programme malveillant est présent dans la mémoire du système et son redémarrage est synonyme de perte d'informations[36],[43].

Evasion par le réseau

Généralement les pare-feu bloquent le trafic entrant sur un serveur et laisse le trafic sortant pour communiquer avec les autres machines sur Internet. Si un programme malveillant réussit à infecter le système, il peut aisément communiquer avec l'extérieur pour recevoir des instructions grâce aux tunnels ou communiquer de manière chiffrée afin de ne pas laisser d'empreintes[45].

Généralement, les logiciels malveillants tels que les botnets ont recours à la technique d'évasion par le réseau.

Dans d'autres mesures, les différentes librairies et méthodes utilisées pour faciliter la mise en place de l'apprentissage automatique permettent aux auteurs de programmes malveillants de découvrir et d'utiliser de nouvelles techniques d'évasion[36].

D'autres techniques, plus générales dans le monde de l'apprentissage automatique, existent et sont utilisées pour diminuer la précision des détecteurs, c'est le cas notamment du adversarial machine learning (en)[37],[31],[46].

Projets et outils notoires[modifier | modifier le code]

Références[modifier | modifier le code]

  1. Sethi 2018, p. 1
  2. Ye 2017, p. 4
  3. Xu 2017, p. 1
  4. Egele 2008, p. 2
  5. Moskovitch 2008, p. 1
  6. Or-Meir 2019, p. 3
  7. a b et c Ye 2017, p. 1
  8. a et b Or-Meir 2019, p. 1
  9. a et b Amer 2020, p. 1
  10. a et b Moskovitch 2008, p. 157
  11. Shafiq 2008, p. 88-107
  12. Zhou 2008, p. 53-60
  13. Santos 2009, p. 317-320
  14. Kolter 2004, p. 470-478
  15. Mayr 2014, p. 419-427
  16. a et b Moskovitch 2008, p. 158
  17. a et b Saad 2019, p. 2.
  18. a b c et d Ahmadi 2016, p. 4
  19. Wang 2020, p. 394
  20. Ahmadi 2016, p. 5
  21. a et b Okane 2014, p. 44
  22. Okane 2014, p. 42
  23. Or-Meir 2019, p. 2
  24. Santos 2011, p. 220
  25. Carlin 2018, p. 17745
  26. Runwal 2012, p. 1
  27. Blake 2021, p. 248
  28. Egele 2008, p. 23
  29. Amer 2020, p. 2
  30. Egele 2008, p. 8
  31. a et b Grosse 2017, p. 1
  32. Sewak 2018, p. 9
  33. a b et c Saad 2019, p. 5
  34. a et b Saad 2019, p. 1
  35. Carlin 2019, p. 1
  36. a b c et d Saad 2019, p. 4
  37. a et b Saad 2019, p. 6
  38. a b c et d Or-Meir 2019, p. 102
  39. Afianian 2019, p. 4
  40. Afianian 2019, p. 17
  41. Afianian 2019, p. 3
  42. a et b Or-Meir 2019, p. 101
  43. a b c d et e Or-Meir 2019, p. 104
  44. Handaya 2020, p. 2
  45. Or-Meir 2019, p. 105
  46. Suciu 2018, p. 1
  47. Neugschwandtner 2010, p. 41
  48. Vasudevan 2008, p. 41
  49. Polino 2017, p. 73
  50. Rhee 2010, p. 178
  51. Gorecki 2011, p. 208
  52. Karbab 2019, p. 77
  53. Ye 2018, p. 265

Bibliographie[modifier | modifier le code]

  • Document utilisé pour la rédaction de l’article (en) Kamalakanta Sethi, Shankar Kumar Chaudhary, Bata Krishan Tripathy et Padmalochan Bera, « A Novel Malware Analysis Framework for Malware Detection and Classification using Machine Learning Approach », Proceedings of the 19th International Conference on Distributed Computing and Networking,‎ , p. 1–4 (DOI 10.1145/3154273.3154326)
  • Document utilisé pour la rédaction de l’article (en) Mohit Sewak, Sanjay K. Sahay et Hemant Rathore, « An investigation of a deep learning based malware detection system », Proceedings of the 13th International Conference on Availability, Reliability and Security,‎ , p. 1–5 (DOI 10.1145/3230833.3230835)
  • (en) I. Santos, F. Brezo, B. Sanz, C. Laorden et P.G. Bringas, « Using opcode sequences in single-class learning to detect unknown malware », IET Information Security, vol. 5,‎ , p. 220–227 (ISSN 1751-8717, DOI 10.1049/iet-ifs.2010.0180)
  • (en) R. Moskovitch, D. Stopel, C. Feher, N. Nissim et Y. Elovici, « Unknown malcode detection via text categorization and the imbalance problem », 2008 IEEE International Conference on Intelligence and Security Informatics,‎ , p. 156-161 (DOI 10.1109/ISI.2008.4565046)
  • Document utilisé pour la rédaction de l’article (en) Ori Or-Meir, Nir Nissim, Yuval Elovici et Lior Rokach, « Dynamic Malware Analysis in the Modern Era-A State of the Art Survey », ACM Computing Surveys, vol. 52,‎ , p. 1-48 (ISSN 0360-0300, DOI 10.1145/3329786)
  • (en) Yanfang Ye, Tao Li, Donald Adjeroh et S. Sitharama Iyengar, « A Survey on Malware Detection Using Data Mining Techniques », ACM Computing Surveys, vol. 50,‎ , p. 1-40 (ISSN 0360-0300, DOI 10.1145/3073559)
  • (en) M. G. Schultz, E. Eskin, F. Zadok et S. J. Stolfo, « Data mining methods for detection of new malicious executables », Proceedings 2001 IEEE Symposium on Security and Privacy. S P 2001,‎ , p. 38-49 (DOI 10.1109/SECPRI.2001.924286)
  • (en) Jeremy Z. Kolter et Marcus A. Maloof, « Learning to detect malicious executables in the wild », Proceedings of the tenth ACM SIGKDD international conference on Knowledge discovery and data mining,‎ , p. 470-478 (DOI 10.1145/1014052.1014105, lire en ligne)
  • (en) Andreas Mayr, Harald Binder, Olaf Gefeller et Matthias Schmid, « The Evolution of Boosting Algorithms - From Machine Learning to Statistical Modelling », Methods of Information in Medicine, vol. 53,‎ , p. 419-427 (DOI 10.3414/ME13-01-0122, lire en ligne)
  • Document utilisé pour la rédaction de l’article (en) Sherif Saad, William Briguglio et Haytham Elmiligi, « The Curious Case of Machine Learning In Malware Detection », 5th International Conference on Information Systems Security and Privacy,‎ , p. 1-9 (lire en ligne)
  • (en) M. Zubair Shafiq, Syed Ali Khayam et Muddassar Farooq, « Embedded Malware Detection Using Markov N-Grams », Proceedings of the 5th International Conference on Detection of Intrusions and Malware, and Vulnerability Assessment,‎ , p. 88-107 (DOI 10.1007/978-3-540-70542-0_5)
  • (en) Yan Zhou et W. Meador Inge, « Malware detection using adaptive data compression », Proceedings of the 1st ACM workshop on Workshop on AISec,‎ , p. 53-60 (DOI 10.1145/1456377.1456393, lire en ligne)
  • (en) Domhnall Carlin, Philip O’Kane et Sakir Sezer, « A cost analysis of machine learning using dynamic runtime opcodes for malware detection », Computers & Security, vol. 85,‎ , p. 138–155 (ISSN 0167-4048, DOI 10.1016/j.cose.2019.04.018)
  • (en) Amir Afianian, Salman Niksefat, Babak Sadeghiyan et David Baptiste, « Malware Dynamic Analysis Evasion Techniques: A Survey », ACM Computing Surveys, vol. 52,‎ , p. 1-28 (ISSN 0360-0300, DOI 10.1145/3365001)
  • (en) W.B.T Handaya, M.N Yusoff et A. Jantan, « Machine learning approach for detection of fileless cryptocurrency mining malware », Journal of Physics: Conference Series, vol. 1450,‎ , p. 1-8 (DOI 10.1088/1742-6596/1450/1/012075)
  • (en) Kathrin Grosse, Nicolas Papernot, Praveen Manoharan, Michael Backes et Patrick McDaniel, « Adversarial Examples for Malware Detection », European Symposium on Research in Computer Security,‎ , p. 62-79
  • (en) Octavian Suciu, Scott.E Cull et Jeffrey Johns, « Exploring Adversarial Examples in Malware Detection », ?,‎ , p. 1-7 (lire en ligne)
  • (en) Matthias Neugschwandtner, Christian Platzer et Paolo Milani Comparetti, « d Anubis – Dynamic Device Driver Analysis Based on Virtual Machine Introspection », Proceedings of the 7th international conference on Detection of intrusions and malware, and vulnerability assessment,‎ , p. 41-60 (DOI 10.1007/978-3-642-14215-4_3)
  • (en) Amit Vasudevan, « MalTRAK: Tracking and Eliminating Unknown Malware », Annual Computer Security Applications Conference,‎ , p. 41-60
  • (en) Mario Polino, Andrea Continella, Sebastiano Mariano, Stefano d'Alessio, Lorenzo Fontana, Fabio Gritti et Stefano Zanero, « Measuring and Defeating Anti-Instrumentation-Equipped Malware », Detection of Intrusions and Malware, and Vulnerability Assessment,‎ , p. 73-96
  • (en) Junghwan Rhee, Ryan Riley, Dongyan Xu et Xuxian Jiang, « Kernel Malware Analysis with Un-tampered and Temporal Views of Dynamic Kernel Memory », International Workshop on Recent Advances in Intrusion Detection,‎ , p. 178-197
  • (en) Junghwan Rhee, Ryan Riley, Dongyan Xu et Xuxian Jiang, « Kernel Malware Analysis with Un-tampered and Temporal Views of Dynamic Kernel Memory », International Workshop on Recent Advances in Intrusion Detection,‎ , p. 178-197
  • (en) Christian Gorecki, Felix C. Freiling, Marc Kührer et Throsten Holz, « TrumanBox: Improving Dynamic Malware Analysis by Emulating the Internet », Symposium on Self-Stabilizing Systems:Stabilization, Safety, and Security of Distributed Systems,‎ , p. 208-222
  • (en) ElMouatez Billah Karbab et Mourad Debbabi, « MalDy: Portable, data-driven malware detection using natural language processing and machine learning techniques on behavioral analysis reports », Digital Investigation, vol. 28,‎ , p. 77-87 (ISSN 1742-2876, DOI 10.1016/j.diin.2019.01.017)
  • (en) Yanfang Ye, Lingwei Chen, Shifu Hou, William Hardy et Xin Li, « DeepAM: a heterogeneous deep learning framework for intelligent malware detection », Knowledge and Information Systems, vol. 54,‎ , p. 265–285 (ISSN 0219-3116, DOI 10.1007/s10115-017-1058-9)
  • (en) Igor Santos, W. Yoseba Penya et Jaime Devesa « N-grams-based File Signatures for Malware Detection. » ()
  • (en) Mansour Ahmadi, Dmitry Ulyanov, Stanislav Semenov, Mikhail Trofimov et Giorgio Giacinto, « Novel Feature Extraction, Selection and Fusion for Effective Malware Family Classification », arXiv:1511.04317 [cs],‎ (lire en ligne)
  • (en) Manuel Egele, Theodoor Scholte, Engin Kirda et Christopher Kruegel, « A survey on automated dynamic malware-analysis techniques and tools », ACM Computing Surveys,‎ , p. 1-42 (DOI 10.1145/2089125.2089126, lire en ligne)
  • (en) Eslam Amer et Ivan Zelinka, « A dynamic Windows malware detection and prediction method based on contextual understanding of API call sequence », Computers & Security, vol. 92,‎ , p. 1-15 (DOI 10.1016/j.cose.2020.101760, lire en ligne)
  • (en) Neha Runwal, Richard M. Low et Mark Stamp, « Opcode graph similarity and metamorphic detection », Journal in Computer Virology, vol. 8,‎ , p. 37-52 (DOI 10.1007/s11416-012-0160-5, lire en ligne)
  • (en) Blake Anderson, Daniel Quist, Joshua Neil, Curtis Storlie et Terran Lane, « Graph-based malware detection using dynamic analysis », Journal in Computer Virology, vol. 7,‎ , p. 247-258 (DOI 10.1007/s11416-011-0152-x, lire en ligne)
  • (en) Domhnall Carlin, Alexandra Cowan, Philip O’Kane et Sakir Sezer, « The Effects of Traditional Anti-Virus Labels on Malware Detection Using Dynamic Runtime Opcodes », IEEE Access, vol. 5,‎ , p. 17742–17752 (ISSN 2169-3536, DOI 10.1109/ACCESS.2017.2749538)
  • (en) Domhnall Carlin, Philip O'Kane et Sakir Sezer, « Dynamic Runtime Opcode Dataset Generation for Improving Malware Classification », 19th International Symposium on Research in Attacks, Intrusions and Defenses,‎
  • (en) Zhixing Xu, Sayak Ray, Pramod Subramanyan et Sharad Malik, « Malware detection using machine learning based analysis of virtual memory access patterns », Design, Automation Test in Europe Conference Exhibition (DATE), 2017,‎ , p. 169–174 (DOI 10.23919/DATE.2017.7926977)
  • (en) Hyrum S Anderson, Anant Kharkar et Bobby Filar, « Evading Machine Learning Malware Detection », ?,‎ , p. 1-6 (lire en ligne)
  • (en) Daniel Scofield, Craig Miles et Stephen Kuhn, « Automated Model Learning for Accurate Detection of Malicious Digital Documents », Digital Threats: Research and Practice, vol. 1,‎ , p. 15–1–15:21 (ISSN 2692-1626, DOI 10.1145/3379505)
  • (en) Konrad Rieck, Philipp Trinius, Carsten Willems et Thorsten Holz, « Automatic analysis of malware behavior using machine learning », Journal of Computer Security, vol. 19,‎ , p. 639–668 (ISSN 0926-227X, DOI 10.3233/JCS-2010-0410)
  • (en) Z. Wang, P. Cong et W. Yu « Malicious Code Detection Technology Based on Metadata Machine Learning » () (DOI 10.1109/DSC50466.2020.00068)
    2020 IEEE Fifth International Conference on Data Science in Cyberspace (DSC)
    « (ibid.) », dans 2020 IEEE Fifth International Conference on Data Science in Cyberspace (DSC), p. 394-399