Produits et services Central

MalwareGuard : le modèle de machine learning de FireEye pour la prévention et la détection des malwares

FireEye a pour mission de placer ses technologies innovantes et son expertise de terrain au service d'une protection sans relâche de ses clients et de leurs données. Pour la protection des terminaux de nos clients, FireEye Endpoint Security s’impose comme une solution pionnière et leader du marché EDR (Endpoint Detection and Response). Ces 12 derniers mois, nous avons considérablement étendu ses fonctionnalités en y intégrant une protection antivirus. Ainsi, nous avons ajouté des fonctionnalités de prévention anti-malware à notre suite d’outils de détection existante (ExploitGuard pour la traque des comportements anormaux, identification d’indicateurs de compromission, etc.).

Aujourd’hui marque un nouveau tournant avec l'arrivée de MalwareGuard, une technologie de machine learning signée FireEye. Avec MalwareGuard, nos clients vont non seulement pouvoir détecter les malwares, mais aussi les « tuer dans l'œuf ». MalwareGuard répond à un besoin pressant de détection des menaces zero-day qui échappent aux antivirus traditionnels.

Capable de prédire l'éventuelle nocivité d'un fichier exécutable Windows avant son exécution, MalwareGuard neutralise les malwares avant même qu'ils ne s'infiltrent. La puissance de détection de MalwareGuard est telle que nous allons aussi l'intégrer à nos solutions Network Security et Email Security. Les capacités de détection statique de ce modèle de machine learning s'inscrivent en parfait complément de notre moteur d’analyse dynamique MVX (Multi-Vector Virtual Execution), présent sur ces deux solutions. En effet, l’alliance d’analyses statiques et dynamiques accroît les chances de détection et de neutralisation des malwares. En clair, elle complique la tâche des attaquants.

Ce billet vous invite à découvrir les objectifs de ce nouveau modèle, ainsi que le processus de création et d’évaluation de notre solution.

Objectifs

Dès les prémisses de la création de MalwareGuard, nous nous sommes fixés un certain nombre d’objectifs :

  • Le champ d’application actuel des fonctionnalités de prévention et de détection correspond aux fichiers Windows PE (Portable Executable) (EXE, DLL, SYS etc.). Cette structure contient les informations dont Windows a besoin pour charger du code exécutable. Comme le montre la répartition des types de fichiers soumis à VirusTotal (cf. Figure 1), les fichiers PE représentent encore une grande partie des malwares recensés.
  • L’algorithme de machine learning a pour mission d’analyser les fichiers PE en entrée pour établir leur caractère malveillant ou inoffensif.
  • La notation d’un fichier PE doit prendre moins d’une seconde, le tout avec une consommation mémoire et CPU minimale. Seuls ces délais très courts permettent de prévenir l’exécution de fichiers suspects.
  • Le modèle de machine learning doit intégrer des configurations permettant aux utilisateurs de paramétrer le niveau de sensibilité de leur analyse. La plupart des utilisateurs privilégient un taux de faux positifs extrêmement bas. Toutefois, nous devons aussi prévoir des cas d’utilisation où le modèle de machine learning doit se montrer plus strict dans son analyse.

FireEye a toutes les cartes en main pour être présent sur tous ces fronts. Notre expérience de première ligne nous confronte tous les jours aux malwares les plus divers. Au-delà des menaces de base, FireEye a une connaissance étendue des malwares ciblés et menaces APT, notamment au travers de Mandiant et de ses missions de réponse à incident (IR). Quant aux experts de notre équipe FireEye Labs Advanced Reverse Engineering (FLARE), ils ont tout le bagage et les compétences nécessaires pour disséquer la menace dans ses moindres détails. Grâce à cette alliance d’expérience et de Threat Intelligence, nous sommes en capacité de créer un ensemble de données unique. En ce sens, le partenariat étroit entre nos data scientists et nos experts en rétroingénierie s’est avéré essentiel pour la création d’un modèle MalwareGuard optimal.


Figure 1 : Fichiers soumis à VirusTotal du 6 au 13 mai 2018 (Les fichiers Win32 EXE et Win32 DLL sont des fichiers Windows PE.)

Développement

Tout d’abord, nous avons compilé un ensemble de données et créé les pipelines d’ingestion des flux de fichiers PE et de leurs métadonnées. Nous avons constitué une base d’informations unique et complète sur les malwares à partir de sources internes et externes couvrant plusieurs années d’activité. Pour cela, nous avons mis à contribution deux ressources essentielles de FireEye : 1) son moteur d’analyse dynamique MVX pour l’identification et la catégorisation d’une partie des malwares ; et 2) les rapports d’analyse de l’équipe FLARE, fruit du travail de nos experts en rétroingénierie.

En revanche, la création d’une collection d’échantillons inoffensifs a représenté un véritable casse-tête. Nous avons commencé par y inclure des échantillons fiables dont nous connaissions la provenance. Toutefois, compte tenu de la diversité des fichiers PE inoffensifs, nous devions élargir notre base initiale à d’autres échantillons plus représentatifs de la variabilité des cas rencontrés par FireEye en conditions réelles. À l’heure actuelle, notre ensemble de données contient plus de 300 millions d’échantillons. Pour entraîner un modèle IA, nous divisons cet ensemble de données en trois groupes (apprentissage, validation et tests), en fonction de la date d’apparition des différents échantillons. L’ensemble d’apprentissage contient ainsi les échantillons les plus anciens. Quant à l’ensemble de validation, il est constitué d’échantillons plus récents, tandis que l’ensemble de tests renferme les tout derniers malwares recensés. Cette répartition chronologique des données nous permet de juger de la pérennité de tel ou tel modèle testé.

Dans l’étape suivante, nous avons sélectionné une méthode d’encodage des fichiers PE en tant que données d’entrée de l’algorithme de machine learning. Nous avons alors envisagé deux options :

  1. Une approche de machine learning traditionnelle, qui consiste à établir une série de caractéristiques en fonction de l’analyse statique du fichier PE.
  2. Une approche de deep learning, axée sur l’utilisation des octets bruts du fichier PE comme données d’entrée de l’algorithme.

Pour évaluer la première option, nous avons étroitement collaboré avec nos experts de l’équipe FLARE afin d’identifier des indicateurs et de capturer les caractéristiques pertinentes des données. Parmi ces caractéristiques :

  • Degré d’imprévisibilité des octets (entropie) de la section « .text » d’un fichier PE
  • Nombre de sections d’un fichier PE
  • Présence ou absence de certains appels à des API

Ces caractéristiques reflètent une partie de la structure et du contenu d’un fichier. Elles peuvent donc s’avérer utiles pour déterminer l'éventuelle malveillance du fichier. Le processus itératif de création de ces caractéristiques statiques porte le nom de « feature engineering ». Il suit une approche à l’opposé de celle du deep learning, notre deuxième option. En effet, l’algorithme de deep learning utilise tout simplement la suite d’octets du fichier PE comme données d’entrée. Il lui revient de transformer ces octets en une représentation lisible qui permettra de distinguer les fichiers malveillants des échantillons inoffensifs. Notons que les recherches dans ce domaine explosent, et pas uniquement dans l’univers de la sécurité informatique. L’année dernière, nous avons présenté nos différentes découvertes sur les algorithmes de deep learning lors d’une conférence sur le machine learning appliqué. Au final, nous avons obtenu des résultats concluants en conjuguant les deux options, traditionnelle et deep learning.

Par la suite, nous avons entraîné une grande variété de modèles de machine learning supervisés. Parmi eux, des forêts aléatoires, le gradient boosting d’arbres de décisions, des réseaux de neurones et des modèles de régression logistique pour l’option d’identification de caractéristiques par nos experts, ainsi que des réseaux de neurones récurrents et à convolution pour le deep learning. En règle générale, nous avons entraîné chaque modèle à partir des fichiers PE de l’ensemble d’apprentissage, tout en nous appuyant sur l’ensemble de validation pour optimiser ses hyperparamètres. Ensuite, nous avons évalué le modèle apprenant à l’aide de l’ensemble de tests, en fonction du nombre de prédictions correctes, de faux positifs et de faux négatifs qu’il renvoyait. Pour comparer les résultats des différents modèles, nous avons utilisé la surface (ou l’aire) sous la courbe ROC (Area Under the Curve, AUC). Il s’agit d’un nombre situé entre 0 et 1. Un modèle aux prédictions toujours fausses affiche un score AUC de 0, tandis qu’un modèle toujours correct atteint un AUC de 1. Sachant cela, nos meilleurs modèles de détection des malwares ont obtenu un score de 0,9998. Nous avons alors sélectionné plusieurs d’entre eux pour une évaluation plus approfondie.

Évaluation interne

Nous avons passé ces douze derniers mois à tester plusieurs de ces candidats prometteurs sur nos missions Managed Defense et Mandiant IR, l'objectif étant de collecter le plus d'indicateurs de performance possible. Nous avons également créé un service interne pour permettre à nos propres équipes de soumettre leurs propres fichiers PE. À ce jour, les modèles de machine learning évalués ont déjà traité plus de 20 millions de nouveaux fichiers PE. Nous en avons tiré des éclairages inestimables, qui nous ont permis d’identifier et de combler les lacunes de notre ensemble de données. L’analyse des faux négatifs et des faux positifs nous a également permis d’affiner notre feature engineering. Il s’agit là d’étapes importantes du processus itératif de création d’un modèle de machine learning robuste et fiable. Enfin, nous avons dû sélectionner le modèle final, de nouveau à l’aide de l’AUC.

Pendant notre évaluation interne, nous avons également développé l’infrastructure indispensable à un suivi et une maintenance pérennes de MalwareGuard. L'objectif est ici d'établir une visibilité temps réel sur les performances du modèle afin de le réentraîner en cas de franchissement de seuils de performances établis. Pour cela, nous avons développé des pipelines de données pour chaque phase du processus de machine learning, avec à la clé un système entièrement automatisé.

Perspectives

Les clients de FireEye Endpoint Security, Network Security ou Email Security vont tous bénéficier de MalwareGuard. Ils vont ainsi pouvoir renforcer considérablement leurs capacités de détection des malwares – y compris les vulnérabilités zero-day. Pour nos clients Endpoint Security en particulier, MalwareGuard représente une nouveauté importante dans leur dispositif intégré de défense en profondeur (DID, Defense-in-Depth). Détection des indicateurs de compromission, prévention et détection des signatures de malwares, fonction ExploitGuard d’identification et de blocage des comportements suspects... toutes ces fonctions d'Endpoint Security sont désormais renforcées par les capacités de détection et de prévention d’un modèle de machine learning.

Si nous sommes fiers des progrès déjà accomplis, nous avons aussi à cœur d’améliorer sans cesse notre modèle MalwareGuard. Dans un contexte d’évolution rapide des cybermenaces, le machine learning représente selon nous une méthode de détection et de neutralisation des nouveaux malwares plus véloce que les approches traditionnelles basées sur les signatures.