Détection du phishing : un modèle hybride pour une précision renforcée

Cet article est le troisième d’une série de quatre portant sur les difficultés inhérentes à la détection des attaques de phishing dans le cadre de fortes contraintes de volume, précision et performance. Dans le premier article, nous présentions notre méthode de détection des liens suspects au sein d’un flux d’emails, ainsi que la récupération de la page web associée, afin de former une paire URL/page web. Dans notre deuxième article, nous nous sommes penchés sur l’analyse et l’évaluation de cette paire par différentes technologies de détection. Nous avons ainsi évoqué l’extraction manuelle des caractéristiques, l’ajustement du modèle, ainsi que l’entraînement et l’évaluation d’un modèle de forêts d’arbres décisionnels (Random Forest) dans un contexte d’Apprentissage Supervisé.

Dans cet article, nous allons tout d’abord revenir sur l’évolution des techniques de Machine Learning au fil du temps : depuis les algorithmes traditionnels nécessitant une connaissance experte du domaine, aux techniques modernes combinant Traitement Automatique du Langage (Natural Language Processing) et modèles d’Apprentissage Profond (Deep Learning). Nous présenterons ensuite les modèles hybrides, qui combinent le meilleur des deux mondes, avant de présenter l’architecture de notre propre modèle hybride. Enfin, nous verrons comment ce modèle nous permet d’améliorer la précision de notre technologie.

Algorithmes de Machine Learning traditionnels

Les algorithmes de Machine Learning dits ‘traditionnels’, ou ‘conventionnels’, sont des modèles encore très utilisés de nos jours, malgré leur relative simplicité. On pourra citer par exemple les forêts d’arbres décisionnels (Random Forest), les séparateurs à vaste marge (SVM) et les modèles de régression logistique (Logistic Regression). Ces modèles disposent de qualités essentielles. Tout d’abord, ils ne nécessitent pas de quantités importantes de données d’entraînement : ils se montrent relativement efficaces, même avec un jeu de données limité. Ils sont par conséquent peu dépendants de la disponibilité des données, et permettent de réduire les coûts liés à l’étiquetage des données dans le cadre d’un Apprentissage Supervisé. Ensuite, ces modèles sont dits ‘explicables’ : un être humain peut comprendre pourquoi un modèle a pris telle ou telle décision.

Toutefois, ils présentent aussi un inconvénient majeur : ils ne sont pas capables de traiter des données brutes. Par conséquent, ils nécessitent une connaissance experte du domaine pour transformer les données brutes en représentations numériques – ou caractéristiques - pertinentes et exploitables. En effet, des caractéristiques mal choisies entraîneraient des performances médiocres, quels que soient le degré de sophistication des algorithmes et la taille du jeu de données utilisé pour l’entraînement et l’évaluation.

Dans notre article précédent, nous avons indiqué avoir extrait de chaque paire URL/page web un jeu de 52 caractéristiques, et que le choix de ces caractéristiques était guidé par notre connaissance experte du domaine. En identifiant ces caractéristiques manuellement, nous avons en réalité transféré notre expertise. Pour le dire autrement, nous avons traduit sous forme programmatique les différents indices que nous utilisons dans notre processus mental lorsque nous évaluons une page de phishing. L’extraction manuelle des caractéristiques est une stratégie vivement conseillée dans la mesure où elle est réalisée par un expert, car elle permet d’obtenir un petit ensemble de caractéristiques très efficace pour la tâche de classification qui nous intéresse.

Il est néanmoins possible de détecter de nouvelles caractéristiques de manière automatisée. En effet, l’expert peut échouer à identifier certaines caractéristiques, par exemple si ces dernières sont très rares. En revanche, un programme informatique parviendrait à détecter ces corrélations statistiques au sein des données brutes. Par ailleurs, en fonction de la tâche de classification, une tâche ponctuelle d’extraction manuelle des caractéristiques peut ne pas suffire. C’est notamment le cas dans le monde de la cybersécurité, du fait du caractère dynamique des menaces numériques. Il convient donc de renouveler régulièrement cette tâche pour suivre les évolutions des menaces numériques. L’extraction manuelle des caractéristiques étant coûteuse et chronophage, son automatisation permet de s’affranchir de cette nécessité.

Une méthode usuelle pour extraire des caractéristiques d’un texte est le modèle de représentation par sac de mots (Bag of Words). Il consiste à créer un vocabulaire à partir d’un corpus de texte, puis à modéliser un document en évaluant l’importance de chaque mot qu’il contient. Ce modèle simple et intuitif se décline en de nombreuses variantes. L’importance d’un mot peut être calculée en comptant le nombre d'occurrences du mot, en calculant la fréquence du mot ou encore en calculant le poids TF-IDF (Term Frequency-Inverse Document Frequency) associé. Étant donné que la taille du vocabulaire augmente rapidement avec le nombre de documents, on effectue habituellement un prétraitement du texte, par exemple en ignorant la casse et la ponctuation, en supprimant les stop words, ou en réduisant les mots à leur racine, voire à leur lemme. La taille du vocabulaire peut aussi être fixée de sorte à ne contenir que les mots les plus fréquents.

Intuitif et polyvalent, le modèle de représentation par sac de mots présente néanmoins quelques inconvénients. Tout d’abord, l’élimination de l’ordre des mots entraîne la perte de contexte et de contenu sémantique. Ensuite, ce modèle produit des représentations numériques ‘creuses’ - c’est-à-dire des représentations numériques dont la plupart des composantes sont nulles - et de grande dimension, pour lesquelles les algorithmes de Machine Learning ne sont pas efficaces. Les récents progrès de l’Apprentissage Profond et du Traitement Automatique du Langage ont naturellement poussé la communauté de la cybersécurité à s’intéresser à des techniques plus sophistiquées pour améliorer la détection des cyberattaques.

Méthodes basées sur le Traitement Automatique du Langage et l’Apprentissage Profond

L’Apprentissage Profond est une sous-catégorie de l'Apprentissage des Représentations (Representation Learning) qui permet au modèle de détecter automatiquement à partir des données brutes les représentations, ou caractéristiques, nécessaires à la tâche de classification. Les modèles d’Apprentissage Profond sont constitués de plusieurs couches de nœuds interconnectés permettant de construire une représentation de plus en plus abstraite des données brutes. Par exemple, si les données brutes en entrée sont une image, un modèle d’Apprentissage Profond extrait typiquement dans la première couche de représentation les contours contenus dans l’image, dans la deuxième couche des motifs résultant de l’association de certains contours, et enfin dans la troisième couche des combinaisons de ces motifs. Bref, le modèle construit progressivement une représentation toujours plus abstraite de l’image. Cette capacité à découvrir des représentations pertinentes est essentielle. En théorie, elle évite de devoir faire appel à un expert pour effectuer cette tâche.

Un autre avantage de l’Apprentissage Profond réside dans le fait qu’il est possible d’améliorer la précision du modèle en l’entraînant sur des jeux de données de plus en plus volumineux. A contrario, les algorithmes de Machine Learning ont tendance à atteindre un plafond de performance assez rapidement. L’Apprentissage Profond a toutefois lui aussi ses inconvénients. Tout d’abord, les modèles d’Apprentissage Profond sont peu efficaces lorsque les jeux de données d’entraînement sont de petite taille. Dans ce type de situation, les algorithmes de Machine Learning font mieux. Cette dépendance à la quantité de données peut en outre s’avérer coûteuse si les données d’entraînement doivent être étiquetées. Ensuite, les modèles d’Apprentissage Profond sont difficiles à interpréter. Enfin, leur réglage est parfois complexe. Seule une expertise avancée en la matière permet d’obtenir des résultats de qualité.

Dans le contexte de la détection du phishing, nous devons transformer la paire URL/page web de sorte qu’elle puisse être traitée par le modèle d’Apprentissage Profond. Cette paire étant composée d’éléments textuels, nous pouvons utiliser des techniques de Traitement Automatique du Langage. Le modèle de représentation par sac de mots dont nous avons parlé précédemment constitue une première approche simple, mais ses limitations sont problématiques. Des modèles plus sophistiqués existent. Tout d’abord, les modèles de Word Embedding, comme Word2vec. Dans ces modèles, chaque mot est représenté par un vecteur numérique unique et les mots ayant un sens voisin sont proches dans l’espace vectoriel. La Figure 1 illustre comment les vecteurs des mots sont représentés et leurs liens les uns avec les autres dans l’espace vectoriel, après une projection dans un espace à deux dimensions réalisée à l’aide de l’algorithme t-SNE.

Capture d’écran 2022-11-28 à 14.11.10

Figure 1 Word Embedding : les mots similaires d’un point de vue sémantique sont proches dans l’espace vectoriel (Source : ‘Deep Learning’)

Un des principaux avantages des techniques basées sur le Word Embedding est leur capacité à produire un vecteur numérique dense de petite dimension, ce qui rend le calcul numérique très efficace, prérequis essentiel pour l’Apprentissage Profond. La principale limitation de cette approche réside dans le fait qu’un mot étant représenté par un seul vecteur, il est impossible de gérer correctement les mots polysémiques, autrement dit les mots dont le sens varie selon le contexte. Le modèle de Word Embedding est dit « sans contexte », car le contexte d’un mot donné n’est pas pris en compte.

Des modèles ont été mis au point pour résoudre ce problème d’ambiguïté polysémique. Ces modèles dits « contextualisés » sont les modèles de langage les plus sophistiqués. Le modèle BERT (Bidirectional Encoder Representations from Transformers) en fait partie. Dans ce modèle, le vecteur attribué à un mot dépend du contexte. S’il est possible d’entraîner des modèles de langage comme Word2vec et BERT en partant de zéro, on utilise habituellement un modèle pré-entraîné, que l’on spécialise ensuite avec un corpus de données supplémentaire pour la tâche souhaitée. L’utilisation d’un modèle pré-entraîné est vivement recommandée, car elle réduit considérablement les coûts d’entraînement. Le modèle 'BERT case-sensitive base model for English language' est un exemple de modèle BERT pré-entrainé. Il a été introduit par Google dans sa publication de référence sur le sujet, 'BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding'. De nombreux modèles pré-entraînés sont disponibles pour différentes langues et tâches.

Modèles hybrides

Pour combiner le meilleur des deux mondes, les spécialistes ont mis au point des modèles hybrides, par exemple ceux proposés par Ozcan et al. et Afzal et al., dont la précision peut être supérieure aux modèles non-hybrides. L’idée principale consiste à utiliser des caractéristiques de différents types, par exemple celles identifiées manuellement par un expert du domaine, et celles extraites par des techniques de Traitement Automatique du Langage, puis de les combiner au sein d’un modèle d’Apprentissage Profond. Il est illusoire de penser que toutes les connaissances expertes d’un domaine donné peuvent être extraites automatiquement. Cela est particulièrement vrai dans un domaine aussi technique que la cybersécurité, dans lequel des caractéristiques complexes peuvent être créées en combinant différents types de données. Par exemple, des caractéristiques liées à l’hôte de la page web peuvent être dérivées de l’URL en utilisant des enregistrements DNS, des informations WHOIS ou des éléments de géolocalisation.

 Lorsque nous avons mis au point notre modèle hybride, nous avions dans l’idée de réutiliser les caractéristiques de la paire URL/page web que nous avions déjà extraites pour notre modèle Random Forest, puis de calculer un autre ensemble de caractéristiques en appliquant des techniques de Traitement Automatique du Langage sur l’URL. En utilisant ensuite un modèle d’Apprentissage Profond sur cet ensemble combiné de caractéristiques, nous espérions découvrir de nouveaux patterns et obtenir une meilleure précision que notre modèle Random Forest. Ainsi, en appliquant le modèle Random Forest, puis le modèle hybride pour confirmer les décisions du modèle précédent lorsque le niveau de confiance est insuffisant, nous avons pu améliorer l’efficacité globale de notre technologie de détection du phishing. La Figure 2 présente l’architecture de notre modèle hybride.

Capture d’écran 2022-11-28 à 14.13.21

Figure 2 Architecture du modèle hybride

Le modèle hybride se compose de deux parties bien distinctes. Côté gauche, le jeu de 52 caractéristiques, extraites manuellement de la paire URL/page web et utilisées par le modèle Random Forest, est transformé par une suite de couches de traitement en vecteur de dimension 16. Le pipeline de traitement inclut une couche de dropout, technique de régularisation qui permet de limiter le surapprentissage et d’améliorer la généralisation du modèle, un sujet que nous avons abordé dans notre précédent article. Le dropout consiste à supprimer de manière aléatoire et temporaire certaines unités ainsi que leurs connexions entrantes et sortantes. La Figure 3 présente un exemple de dropout sur un Réseau Neuronal avec deux couches cachées.

Capture d’écran 2022-11-28 à 14.15.25

Figure 3 Dropout sur un Réseau Neuronal avec deux couches cachées (Source : ‘Dropout: A Simple Way to Prevent Neural Networks from Overfitting’)

Côté droit, l’URL est traitée par une multitude de couches pour produire un vecteur de dimension 128. Tout d’abord, grâce aux avancées récentes du Traitement Automatique du Langage, l’URL est transformée à l’aide d’un tokenizer BERT WordPiece en une séquence de sous-mots issus d’un vocabulaire de taille fixe de 30 522 sous-mots. Comme le tokenizer BERT WordPiece produit un vecteur creux d’indices du vocabulaire, il est ensuite transformé en vecteur dense par une couche d'embedding, suivie par une couche de dropout. Les couches suivantes sont ensuite typiques d’une architecture de Réseau Neuronal Convolutif (CNN ou ConvNet), avec une succession de couches de convolution et de couches de pooling, pour bâtir progressivement une représentation abstraite des données. La Figure 4 présente une architecture ConvNet classique pour la reconnaissance d’images, dans laquelle l’entrée est constituée par les 3 canaux de couleur RVB de l’image, et la sortie par la probabilité associée à chaque classe.

Capture d’écran 2022-11-28 à 14.16.57

Figure 4 Architecture ConvNet pour la reconnaissance d’image (Source : ‘CS231n Convolutional Neural Networks for Visual Recognition’)

Le rôle de la couche de convolution est d’extraire les motifs locaux des données, ces données pouvant prendre la forme d’un tableau à n dimensions. Par exemple, les signaux et séquences - dont les documents texte qui sont une séquence de caractères - peuvent être représentés par un tableau à 1 dimension (1D), tandis que des tableaux à 2 (2D) et 3 dimensions (3D) sont utilisés respectivement pour les images et les vidéos. Dans la Figure 4, une image étant constituée de 2 dimensions, des couches de convolution 2D sont appliquées. Dans notre cas, comme nous traitons du texte, nous utilisons des couches de convolution 1D avec une fenêtre de convolution, ou noyau, de taille 6. La couche de pooling est appliquée à la suite de la couche de convolution. Son objectif est de sous-échantillonner la représentation.

L’avantage du pooling est double. Tout d’abord, il synthétise les caractéristiques présentes dans la région locale de la carte des caractéristiques, ce qui rend le modèle plus résilient aux variations locales de faible amplitude. Ensuite, il réduit le nombre de paramètres et par conséquent la quantité de calcul nécessaire. La Figure 5 présente, dans le cas de la reconnaissance d’image, un exemple de pooling 2D de type ‘maximal’, où seule la valeur ‘maximale’ de chaque région locale est conservée. Encore une fois, en ce qui nous concerne, nous utilisons des couches de pooling 1D, car nous traitons du texte.

Capture d’écran 2022-11-28 à 14.18.26

Figure 5 Pooling 2D de type ‘maximal’ (Source : ‘CS231n Convolutional Neural Networks for Visual Recognition’)

Après plusieurs passes de convolution et de pooling, la représentation de l’URL est réduite à un vecteur à 128 dimensions. Les deux vecteurs sont ensuite fusionnés en un vecteur à 144 dimensions qui est injecté dans une couche entièrement connectée, suivie d’un traitement par une fonction sigmoïde. Le résultat final est la probabilité que l’URL analysée soit malveillante.

Impact

Notre scanner d’URL combine plusieurs technologies de détection. La première couche, Smart Pattern, détecte les menaces connues et leurs variantes. La deuxième est basée sur un modèle Random Forest en mesure de détecter de nombreuses menaces inconnues grâce à sa capacité de généralisation. La troisième couche est le modèle hybride que nous avons présenté. Il est capable de détecter des menaces encore plus complexes, car l’Apprentissage Profond est à même d’identifier des corrélations qui restent hors de portée des algorithmes de Machine Learning traditionnels. Enfin, les analystes du SOC constituent la dernière ligne de défense. Ils peuvent bloquer les menaces les plus complexes et mettre à jour les différentes technologies pour adapter notre solution à l’évolution des menaces.

A ce titre, l’impact du modèle hybride sur la charge de travail des analystes du SOC n’est pas négligeable. En effet, les analystes doivent traiter plus de 250 000 URL suspectes par an, un chiffre déjà réduit d’environ 30 % par ce modèle. De plus, le modèle hybride est capable de prendre une décision en 15 ms en moyenne, alors qu’un analyste a besoin de plus de temps pour déterminer s’il faut ou non bloquer une URL. Le temps est un facteur clé en cybersécurité, et le modèle hybride permet de bloquer certaines des attaques les plus élaborées presque sans délai. Dans notre prochain article, le dernier de cette série, nous continuerons notre étude des modèles d’Apprentissage Profond. Nous nous intéresserons plus particulièrement à la spécialisation de modèles VGG-16 et ResNet afin de construire une technologie de détection de logos.