Détection de logiciels malveillants renforcée par apprentissage automatique
La détection de logiciels malveillants renforcée 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.
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. Cette méthode traditionnelle peut échouer à identifier de nouvelles formes de logiciels malveillants et 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. 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 ». Ces modèles sont conçus pour détecter les menaces dès leur première apparition, offrant une protection plus dynamique et adaptative contre l'évolution rapide des menaces informatiques.
Enjeux
[modifier | modifier le code]Depuis 2008, on remarque une augmentation significative de la présence de logiciels malveillants sur Internet[1].
Les logiciels malveillants peuvent être issus de nombreuses sources différentes (infection de systèmes distribués, téléchargement, réseau, internet des objets...) et 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. Un programme malveillant exécuté sur une machine peut (dans le pire des scénarios) compromettre complètement un système informatique, et provoquer des dégâts proportionnels à son niveau de privilège[2].
Les méthodes actuelles de détection de programmes malveillants reposent majoritairement sur la discrimination par signature virale. Très efficaces sur les menaces déjà recensées, elles se révèlent inefficaces face à un programme inconnu. Il devient 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. 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].
Avec la volonté de proposer des règles plus universelles et évolutives, 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 divise généralement en deux grandes étapes :
- L'extraction de caractéristiques, appliquée à un large corpus d'analyse constitué d'une proportion variable de logiciels malicieux et bénins ;
- 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, et de statuer sur le degré de menace 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 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 :
- Extraction de termes n-gramme ;
- Normalisation de la fréquence d’apparition () ;
- Classification (Artificial Neural Networks, Decision Trees, Naïve Bayes, Support Vector Machines[16]).
Autres approches
[modifier | modifier le code]- Analyse graphique : une représentation graphique en nuances de gris du fichier à analyser est générée, et l'analyse s'appuie 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] ;
- Analyse des métadonnées[18],[19] ;
- 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. Ce type d'informations permet, de façon relativement commode, de statuer par la suite sur le niveau de danger que représente son exécution au sein du système. De plus, l'analyse dynamique présente l'avantage d'être 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].
Cette méthode permet une étude plus fine que celle de l'analyse statique, mais elle présente un risque 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 runtime a été un sujet largement étudié dans la littérature scientifique, avec l'optique de construire des modèles prédictifs de détection au plus bas niveau, insensibles 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. Il vise à construire une base de connaissances fiable ; elle 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 fichiers malicieux et bénins 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 est plus difficile dans un système de production[33] avec de nombreux processus s'exécutant parallèlement, ou dans un trafic réseau chargé. Elle générera potentiellement plus de résultats erronés que dans un environnement isolé[34].
Les auteurs de programmes malveillants utilisent aussi des techniques qui permettent d'échapper à la détection, ou qui modifient le comportement de leur logiciel, afin qu'il soit catégorisé comme sûr , ce qui dégrade les résultats du détecteur.
Difficulté de construction du modèle
[modifier | modifier le code]Les logiciels malveillants sont de plus en 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. Cela augmente significativement les coûts énergétiques des systèmes qui élaborent et utilisent les algorithmes de détection de logiciels malveillants[35].
Les techniques d'évasion sont toujours 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 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 logiciels malveillants utilisant l'apprentissage automatique requiert des compétences techniques poussées, et les solutions déjà présentes sont généralement des détecteurs dits en « boîte noire ». Dans ce cas, 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 que l'on ait 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 le logiciel malveillant s’exécute dans un environnement surveillé, il analyse l'environnement à la recherche d'empreintes telles que la présence de logiciels d'analyse (débuggeurs), dans la liste des processus qui cohabitent avec le logiciel malveillant[38],[39].
Lorsqu'il détecte qu'il est dans un bac à sable surveillé, il lui est possible de changer de comportement et de ne pas tenter d'actions (par exemple, ne pas s’exécuter) afin que le détecteur le catégorise comme logiciel sûr[38].
Les logiciels malveillants peuvent aussi mesurer le temps de chaque instruction qu'ils exécutent dans l'environnement ; ils peuvent alors 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 aussi toujours 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 rapidement obsolètes[33],[41].
Évasion par escalade de privilège
[modifier | modifier le code]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 pouvoir effectuer ses actions malveillantes en laissant le moins d'informations possible dans le 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érielles du système[42].
Évasion par offuscation de code
[modifier | modifier le code]Un logiciel malveillant peut cacher les éventuelles empreintes qu'il laisse lors de son exécution, et 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 cela permet que différentes copies de ce même logiciel paraissent différentes pour le système de surveillance lors de son exécution.
Évasion par absence de fichier
[modifier | modifier le code]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].
Évasion par le réseau
[modifier | modifier le code]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éralisées 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]- Sethi 2018, p. 1
- Ye 2017, p. 4
- Xu 2017, p. 1
- Egele 2008, p. 2
- Moskovitch 2008, p. 1
- Or-Meir 2019, p. 3
- Ye 2017, p. 1
- Or-Meir 2019, p. 1
- Amer 2020, p. 1
- Moskovitch 2008, p. 157
- Shafiq 2008, p. 88-107
- Zhou 2008, p. 53-60
- Santos 2009, p. 317-320
- Kolter 2004, p. 470-478
- Mayr 2014, p. 419-427
- Moskovitch 2008, p. 158
- Saad 2019, p. 2.
- Ahmadi 2016, p. 4
- Wang 2020, p. 394
- Ahmadi 2016, p. 5
- Okane 2014, p. 44
- Okane 2014, p. 42
- Or-Meir 2019, p. 2
- Santos 2011, p. 220
- Carlin 2018, p. 17745
- Runwal 2012, p. 1
- Blake 2021, p. 248
- Egele 2008, p. 23
- Amer 2020, p. 2
- Egele 2008, p. 8
- Grosse 2017, p. 1
- Sewak 2018, p. 9
- Saad 2019, p. 5
- Saad 2019, p. 1
- Carlin 2019, p. 1
- Saad 2019, p. 4
- Saad 2019, p. 6
- Or-Meir 2019, p. 102
- Afianian 2019, p. 4
- Afianian 2019, p. 17
- Afianian 2019, p. 3
- Or-Meir 2019, p. 101
- Or-Meir 2019, p. 104
- Handaya 2020, p. 2
- Or-Meir 2019, p. 105
- Suciu 2018, p. 1
- Neugschwandtner 2010, p. 41
- Vasudevan 2008, p. 41
- Polino 2017, p. 73
- Rhee 2010, p. 178
- Gorecki 2011, p. 208
- Karbab 2019, p. 77
- Ye 2018, p. 265
Bibliographie
[modifier | modifier le code]- (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)
- (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)
- (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)
- (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) Philip Okane, Sakir Sezer, Kieran McLaughlin et Eul Gyu Im, « Malware detection: program run length against detection rate », IET Software, vol. 8, , p. 42-51 (ISSN 1751-8814, DOI https://doi.org/10.1049/iet-sen.2013.0020, lire en ligne)
- (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