FR 3009407 A1 20150206 FR 1301843 A 20130731 Procédé de détection d'évènements suspects dans un fichier de collecte d'informations relatives à un flux de données ; support d'enregistrement et système associés. L'invention a pour domaine celui de la sécurité des réseaux de communication, et plus particulièrement des réseaux de communication IP, tels qu'un réseau local d'entreprise. Dans le présent document, par « paquet de données », on entend un datagramme transmis sur le réseau de communication surveillé. Un paquet comporte une partie d'entête, contenant des données permettant l'acheminement du paquet depuis un émetteur vers un destinataire à travers le réseau, ainsi qu'une partie de charge utile, contenant les données d'application, ou message, que l'émetteur souhaite partager avec le destinataire. Dans le présent document, par « session », on entend l'ensemble des paquets de données échangés, selon un même protocole (FTP, HTTP, etc.), entre une première machine (identifiée par une adresse IP et un port) et une seconde machine (identifiée par une adresse IP et un port). Dans ce domaine, on connait des composants logiciels de surveillance du réseau, tels que des systèmes de détection d'intrusion, aussi dénommés systèmes IDS (selon l'acronyme anglais « Intrusion Detection System »). Un tel composant est paramétré par l'éditeur, qui y incorpore un certain nombre de règles d'alerte de base, ainsi que par l'opérateur, qui définit des règles d'alerte spécifiques. Lorsque le composant détecte qu'un évènement capturé sur le réseau surveillé satisfait à l'ensemble des critères d'une règle d'alerte, il consigne l'évènement suspect dans une table d'une base de données. Un exemple d'un tel composant de surveillance est donné par le logiciel libre SNORT. On connait également des composants logiciels de collecte d'informations relatives au flux de données circulant sur le réseau de communication surveillé. Un tel composant de collecte génère périodiquement un fichier, dont chaque ligne correspond à un évènement. Pour chaque paire de machines ayant échangé au moins un paquet de données au cours de la période correspondant au fichier, un évènement représente le flux élémentaire de la session de communication entre ces deux machines, au cours cette période. Ainsi, un évènement correspond à l'agrégation des paquets transmis, selon un même protocole, entre deux machines au cours de la période de collecte. Un exemple d'un tel composant de collecte est donné par le logiciel NETFLOW développé par la société CISCO SYSTEMS. Le fichier généré par ce logiciel respecte le protocole NETFLOW, dont les caractéristiques de la version 9 sont publiées dans le document RFC 3954 accessible en ligne. L'IETF (selon l'acronyme anglais « Internet Engineering Task Force ») a généralisé le protocole NETFLOW dans la norme IPFIX (selon l'acronyme anglais « IP Flow Information Export »), définie dans les documents RFC 5101, RFC 5102 et RFC 5103 accessibles en ligne. Dans ce qui suit, on parle de « fichier NETFLOW » pour tout fichier répondant à la norme IPFIX. Un fichier NETFLOW comporte ainsi des informations relatives à un flux élémentaire échangé entre deux machines, mais il ne comporte pas d'information indiquant si un flux élémentaire semble correspondre à une attaque ou à une intrusion sur le réseau surveillé. L'invention a donc pour but de répondre à ce besoin en proposant un procédé permettant, sur la seule base d'au moins un fichier NETFLOW, de détecter si un évènement est suspect et de lui associer une alerte. Pour cela, l'invention a pour objet un procédé de détection d'évènements suspects dans un fichier d'évènements généré par un composant logiciel de collecte d'informations relatives à un flux de données circulant sur un réseau de communications IP, un évènement étant caractérisé par une pluralité de paramètres, caractérisé en ce qu'il comporte une étape d'estimation d'une probabilité (P) d'occurrence d'un évènement (X) à partir d'un échantillon constitué des évènements (X(n)) du fichier, et une étape d'association d'une alerte à un évènement particulier du fichier lorsque ledit évènement particulier respecte une règle d'alerte fondée sur la valeur de la probabilité d'occurrence dudit évènement particulier calculée en utilisant la probabilité d'occurrence estimée. Suivant des modes particuliers de réalisation, le procédé comporte une ou plusieurs des caractéristiques suivantes, prise(s) isolément ou suivant toutes les combinaisons techniquement possibles : l'estimation d'une probabilité d'occurrence d'un évènement comporte, pour chaque paramètre d'un évènement, une étape d'estimation d'une probabilité individuelle d'occurrence dudit paramètre, considérée comme indépendente de l'estimation des autres paramètres , à partir d'un échantillon constitué par les valeurs dudit paramètre pour des évènements du fichier, et une étape d'estimation d'une dépendance entre les paramètres d'un évènement. ledit paramètre est assimilable à une variable aléatoire quantitative, l'estimation de la probabilité individuelle dudit paramètre met en oeuvre un estimateur à noyau. l'estimateur à noyau mis en oeuvre est un estimateur de Parzen-Rozenblatt. l'estimation d'une dépendance entre les paramètres d'un évènement met en oeuvre une copule. la copule mise en oeuvre est une copule de Farlie-Gumbel-Morgenstern, faisant intervenir, pour chaque paire de paramètres d'un évènement, un paramètre de dépendance entre les deux paramètres de ladite paire. le paramètre de dépendance O, entre le paramètre X, et le paramètre X1 de la copule de Farlie-Gumbel-Morgenstern est donné par la relation : V(Fi(X,)+ Fi(XJ))-V(F;(4)-V(Fi(XJ)) -3 2VV(Fi(X1))V(F1(X1)) Où F(Y) est la fonction de répartition de la variable aléatoire Y. l'estimation d'une probabilité d'occurrence d'un évènement est réalisée de manière incrémentale, en mettant à jour une estimation courante de ladite probabilité en tenant compte d'un nouvel évènement du fichier. l'étape d'association d'une alerte à un évènement particulier du fichier consiste à calculer la probabilité d'occurrence de cet évènement particulier en utilisant la probabilité estimée et à comparer cette probailité calculée avec une probabitié de référence, déterminée dynamiquement à partir du fichier. le fichier d'évènements est un fichier NETFLOW. L'invention a également pour objet un support d'enregistrement d'informations, caractérisé en ce qu'il comporte des instructions pour l'exécution d'un procédé conforme au procédé présenté ci-dessus, lorsque ces instructions sont exécutées par un calculateur électronique. L'invention a également pour objet un système comportant une unité de commande, caractérisé en ce que l'unité de commande est programmée pour exécuter un procédé conforme au procédé présenté ci-dessus. D'autres caractéristiques et avantages de l'invention ressortiront plus clairement de la description détaillée qui va suivre d'un mode de réalisation particulier, donné à titre indicatif et nullement limitatif, et faite en se référant au dessin annexé représentant schématiquement, sous forme de blocs, un mode de réalisation particulier d'un procédé de détection d'évènements suspects dans un fichier d'évènements généré par un composant logiciel de collecte d'informations relatives à un flux de données circulant sur un réseau de communications IP surveillé. Un composant NETFLOW est implanté en un point d'un réseau local de communication IP, par exemple au niveau d'une passerelle de connexion de ce réseau local à un réseau de communication IP public, tel que l'INTERNET. Le composant NETFLOW est propre à analyse le flux de données transitant sur la passerelle. Le composant NETFLOW est propre à générer périodiquement un fichier NETFLOW. Par exemple, le composant NETFLOW génère un fichier NETFLOW toutes le quinze minutes. Un fichier NETFLOW comporte des informations relatives au flux de données sur une période de surveillance qui correspond aux quinze minutes qui précèdent la création du fichier. Les informations du fichier NETFLOW sont datées avec la date de génération du fichier NETFLOW. Un fichier NETFLOW comporte une pluralité de lignes, chaque ligne correspondant à un évènement. Chaque ligne est identifiée par un entier n. Chaque évènement X(n) correspond à une session sur la période de surveillance, c'est-à-dire à l'agrégation des paquets échangées, selon un même protocole, entre une première machine (identifiée par son adresse IP et son port de communication) et une seconde machine (identifiée par son adresse IP et son port de communication), une machine pouvant, au cours d'une même session, fonctionner en émetteur d'un paquet ou en destinataire d'un paquet. Dans le fichier NETFLOW, chaque évènement X(n) est caractérisé par une pluralité de L paramètres Xi(n) . Par exemple, dans un mode de réalisation actuel, un évènement X(n) est défini par sept paramètres : - Xi(n) correspond au protocole de la quatrième couche du modèle OSI (en général égal TCP ou UDP, mais d'autres protocoles sont possibles) ; X2(n) correspond à l'adresse IP de la première machine ; X3(n) correspond à l'adresse IP de la seconde machine ; X4(n) correspond au port de la première machine ; X5(n) correspond au port de la seconde machine ; X6(n) correspond au nombre de paquets échangés durant la session ; et, X7(n) correspond au nombre d'octets échangés durant la session. Une fois un fichier NETFLOW stocké sur un disque dur, il est accessible à un système comportant une unité de calcul, qui est programmée pour exécuter un procédé 100 de détection d'évènements suspects. De manière générale, le procédé 100 est conçu pour permettre de détecter, dans un fichier NETFLOW, les évènements X(n) anormaux ou suspects. Un évènement est considéré comme suspect lorsque, comparativement à l'historique de l'utilisation du réseau surveillé, cet évènement correspond à une utilisation marginale du réseau. Pour détecter ces évènements suspects, une approche probabiliste est utilisée. En effet, les probabilités permettent de quantifier le niveau de normalité d'un événement. Un évènement suspect apparaît alors comme un évènement rare, c'est-à-dire dont la probabilité d'occurrence est faible. Ainsi, le procédé 100 comporte d'abord une estimation de la probabilité P d'occurrence d'un évènement X à partir d'un échantillon constitué par des évènements X(n) du fichier NETFLOW source. Le procédé 100 comporte ensuite un calcul de la valeur de la probabilité d'occurrence d'un évènement X(n) particulier, en utilisant l'estimation précédente de la probabilité P . Enfin, le procédé 100 comporte l'étiquetage de l'évènement X(n) particulier en tant qu'évènement suspect lorsque la valeur calculée de la probabilité d'occurrence satisfait à une règle d'alerte. D'une manière générale, un estimateur d'une grandeur G sera noté âs . Un estimateur peut être obtenu à partir d'un échantillon de N valeurs de la grandeur G . Il sera alors noté GN D'un point de vue mathématique, un évènement X est une variable aléatoire multi-variée. Chaque paramètre X, d'un évènement est une variable aléatoire mono- variée. L'estimation de la probabilité P d'un évènement X consiste d'abord à estimer une probabilité individuelle pour chaque paramètre X,. Les probabilités individuelles Pi sont souvent dénommées « probabilités marginales » de la probabilité P . Lorsque le paramètre X, est une variable aléatoire qualitative, c'est-à-dire à valeur dans un ensemble discret et fini d'éléments notés xi*, alors un estimateur P, de la probabilité individuelle Pi est donné par la relation : N ( = k \ = 1 vN NLd n=1 X i(n)=x,k (1) où N est le nombre d'évènements pris en compte dans l'estimation; et 1X(n)_X; est la fonction indicatrice, elle vaut 1 lorsque sa condition est réalisée, 0 sinon Selon la relation (1), il s'agit de compter le nombre d'évènements du fichier NETFLOW pour lesquels X ,(n)= x,* , ramené à la longueur N de l'historique. Dans une mise en oeuvre incrémentale, permettant de mettre à jour les différents estimateurs pour tenir compte d'un nouvel évènement X(N) du fichier NETFLOW, la relation (1) devient : N(xi = xik)= N-1 + 1 NN Xi(n)=xf Lorsque le paramètre Xi est une variable aléatoire quantitative, c'est-à-dire à valeur dans un ensemble continu, la procédure qui est utilisée pour estimer la probabilité individuelle Pi, qui est alors une fonction continue de X,, met en oeuvre un estimateur dit « à noyau ». Plus particulièrement, dans le présent mode de réalisation, l'estimateur à noyau mis en oeuvre est celui dit de Parzen-Rozenblatt. L'estimateur Pi est donné par la relation suivante : r 1 N - x (n)] P,N(X, = x,)= E K ' (2) Nh,,N n=1 h,,N Où N est le nombre d'évènements pris en compte dans l'estimation ; x,(n) , la valeur du paramètre Xi pour la nième observation , Xi(n) ; K est une fonction de noyau ; et îlor , une estimation sur un échantillon de N évènements, d'un paramètre de lissage 4. Ou encore, dans une mise en oeuvre incrémentale par la relation : N-1 1 ([x, )(IO/A\ , ') N( = xi) = N ArkNn h (2 I,N La fonction de noyau K est choisie comme étant une fonction gaussienne standard, c'est-à-dire à espérance nulle et à variance unitaire : 1 -1-t2 K(0= e 2 Le paramètre de lissage h, est obtenu en utilisant la relation usuellement associée à ce noyau : h, =1,06.0-1.N où Q est l'écart type de la distribution des X1(n) , qui est égal à la racine carrée de la variance y de cette distribution. L'estimateur hi N est ainsi déterminé au moyen d'une estimation de la variance 17IN , donnée par la relation suivante, qui correspond à un estimateur sans biais: (3) où Xi est la valeur moyenne de la variable aléatoire Xi, dont une estimation est donnée par : 1 N ;1(1,N= -E X i(n) N n=i Pour une mise à jour incrémentale, la relation (3) devient : (3') N -2 = N _10/1,N-1± (X i(N)- :1(1)2) Une fois les estimateurs Pi N des probabilités individuelles obtenus, il s'agit d'estimer la probabilité P globale. Les variables aléatoires Xi ne sont pas indépendantes entre elles, de sorte que la probabilité P de la variable X n'est pas le simple produit des probabilités individuelles Pour estimer la dépendance entre les variables aléatoires Xi, la notion de copule est utilisée. De manière générale, pour une variable X deux-variée dans les variables XI et X2 la fonction de copule C permet d'écrire : F(X) = C(F(X); F2(X2)) Où, de manière générale, F désigne la fonction de répartition de la variable X de probabilité P , définie par : F(X) = r P(X )dX Dans le mode de réalisation actuellement envisagé, est utilisée la copule de Farlie- Gumbel-Morgenstern, dont l'expression mathématique est donnée par la relation suivante : C(FI(X1);F2(X2))= Fi(X1).F2(X2).(1+0(1-P;(4)(1-F2(X2))) dans laquelle le couplage entre les variables X1 et X2 est faible, et la copule correspond à une approximation à l'ordre un de l'équation aux dérivées partielles modélisant la dépendance entre les deux variables. Toute l'information relative à la dépendance entre les variables Xi et X2 se trouve dans le paramètre 9. Dans le cas présent, où la variable aléatoire X est L-variée (avec L valant 7), l'approche précédente conduit à l'expression : F(X)=C(Fi(X1);F2(X2);...;F,(4;...;FL(XL)) Soit F(X)=(11 F,(X,))(1+ E (1- Fi(X1))(1- Fj(X j))) (4) 1=1 1,J#1 Cette approche permet de simplifier les calculs, et de résumer l'information de dépendance entre les paramètres X, d'un évènement X par un petit nombre de paramètres Ou (L valant 7, 21 paramètres Ou sont à calculer). L'homme du métier sait que chaque paramètre Ou est lié à la notion de corrélation pu au sens des rangs de Spearman, selon la relation : 011 = 3pu où pe est un coefficient de corrélation linéaire, non pas entre les variables X, et X1, mais entre les fonctions de répartition Fi et Fj des variables X, et X 1. Ainsi, compte tenu de la relation connue entre un coefficient linéaire et la variance, on a: 3 V(F,(X,)+ Ff(X1))-V(F,(4)--V(Fi(X J)) o (5) e 2.\117(F1(4)V(FJ(XJ)) Pour pouvoir mettre à jour une estimation de chaque paramètre Ou pour tenir compte d'un nouvel évènement X(N) du fichier NETFLOW, on utilise la formule incrémentale de l'estimation de la variance V donnée par la relation (3') ci-dessus. En se référant maintenant à la figure, le mode de réalisation du procédé 100 actuellement envisagé va être présenté. A l'étape 110 une nouvelle ligne du fichier NETFLOW est lue. Cette ligne correspond à un nouvel évènement X(N). A l'étape 112, pour chaque paramètre X1, l'estimateur de la probabilité individuelle, P, est mis à jour en tenant compte de la valeur Xi(N) du paramètre Xi pour le nouvel évènement X(N). Si le paramètre Xi est une variable qualitative, la relation (1') est utilisée. Si le paramètre Xi est une variable quantitative, la relation (2') est utilisée. Une fonction PN est obtenue. A l'étape 114, pour chaque paramètre X,, un estimateur de la fonction de répartition individuelle, F, est mis à jour à partir de PN calculées à l'étape 112. Une fonction Piy est obtenue. A l'étape 116, pour chaque paire de paramètres Xi et Xj, un estimateur du paramètre O, est mis à jour en utilisant la relation (5) sous une forme incrémentale et les 'Fly calculées à l'étape 114. Les vingt-et-un coefficient ijiy sont obtenus. A l'étape 118, la valeur de la probabilité d'occurrence p(X(N)) de l'évènement X(N) est calculée en utilisant la relation (4) et les PIN et j'or déterminés respectivement aux étapes 114 et 116. Puis, à l'étape 120 est vérifié si l'évènement X(N) respecte une règle d'alerte. Dans un mode de réalisation, la règle d'alerte consiste à considérer que l'évènement X(N) est suspect si la valeur de la probabilité d'occurrence calculée, p(X(N)), est inférieure à une probabilité de référence poy , qui de préférence est déterminée dynamiquement. Par exemple, poy est déterminée de manière à ce que les évènements suspects correspondent au 5% des évènements ayant les probabilités d'occurrence les plus faibles. Un tel mode de réalisation fait intervenir une méthode d'estimation des quantiles, permettant de déterminer poy à partir de l'estimation de la probabilité globale P(X), c'est-à-dire de la relation (4) et les frjN et biy En variante, le nombre No d'évènements étiquetés comme suspects à extraire du fichier NETFLOW source est prédéterminé. Ainsi, à l'étape 120, lorsque la valeur p(X(N)) fait partie des No probabilités les plus faibles du fichier NETFLOW source, l'évènement X(N) est étiqueté comme suspect. A l'étape 122, lorsque l'événement X(N) vérifie la règle d'alerte, la ligne correspondante du fichier NETFLOW est augmentée d'un champ Alerte prenant la valeur unité. Puis, l'entier N est augmenté d'une unité, et les différentes étapes 110 à 122 sont exécutées sur l'évènement suivant du fichier NETFLOW source. L'homme du métier comprendra que le présent procédé ne fait aucune hypothèse a priori sur les évènements suspects. En particulier, le présent procédé ne prévoit aucune phase préalable d'apprentissage de ce que pourrait être un évènement suspect. La seule hypothèse prise est la faiblesse de la probabilité d'occurrence des événements considérés comme des attaques. L'homme du métier, spécialiste des probabilités, constatera que le présent procédé est particulièrement bien adapté à un évènement décrit par le mélange de variables qualitatives et de variables quantitatives. Au cours des premières itérations du procédé, les différentes estimations évoluent rapidement. Cependant, plus la profondeur de l'historique pris en compte augmente, plus les estimateurs sont stables et plus l'étiquetage d'un évènement comme suspect est pertinent. En pratique, il faut plus d'un fichier NETFLOW pour atteindre une convergence, de sorte qu'avantageusement plusieurs fichiers NETFLOW sont parsés successivement, sans réinitialisation des estimateurs entre chaque fichier. REVENDICATIONS1.- Procédé de détection d'évènements suspects dans un fichier d'évènements généré par un composant logiciel de collecte d'informations relatives à un flux de données circulant sur un réseau de communications IP, un évènement étant caractérisé par une pluralité de paramètres, caractérisé en ce qu'il comporte une étape d'estimation d'une probabilité (P) d'occurrence d'un évènement (X) à partir d'un échantillon constitué des évènements (X(n)) du fichier, et une étape d'association d'une alerte à un évènement particulier du fichier lorsque ledit évènement particulier respecte une règle d'alerte fondée sur la valeur de la probabilité d'occurrence dudit évènement particulier calculée en utilisant la probabilité d'occurrence estimée. 2.- Procédé selon la revendication 1, dans lequel l'estimation d'une probabilité (P) d'occurrence d'un évènement comporte, pour chaque paramètre (Xi) d'un évènement (X), une étape (112) d'estimation d'une probabilité individuelle (Pi) d'occurrence dudit paramètre, considérée comme indépendente de l'estimation des autres paramètres, à partir d'un échantillon constitué par les valeurs (Xi(n)) dudit paramètre pour des évènements du fichier, et une étape (114) d'estimation d'une dépendance (0e ) entre les paramètres d'un évènement. 3.- Procédé selon la revendication 2, dans lequel, lorsque ledit paramètre (Xi) est assimilable à une variable aléatoire quantitative, l'estimation de la probabilité individuelle dudit paramètre met en oeuvre un estimateur à noyau. 4.- Procédé selon la revendication 3, dans lequel l'estimateur à noyau mis en oeuvre est un estimateur de Parzen-Rozenblatt. 5.- Procédé selon l'une quelconque des revendications 2 à 4, dans lequel l'estimation d'une dépendance entre les paramètres d'un évènement met en oeuvre une copule (C). 6.- Procédé selon la revendication 5, dans laquelle la copule mise en oeuvre est une copule de Farlie-Gumbel-Morgenstern, faisant intervenir, pour chaque paire de paramètres d'un évènement, un paramètre de dépendance entre les deux paramètres de ladite paire. 7.- Procédé selon la revendication 6, dans lequel le paramètre de dépendance Ou entre le paramètre Xi et le paramètre Xj de la copule de Farlie-Gumbel-Morgenstern est donné par la relation : V(F,(X1)+Fi(XJ))-V(F1(X,))-V(Fi(XJ)) Ou= 3 211V(F,(X,))V(F1(XJ)) Où F(Y) est la fonction de répartition de la variable aléatoire Y. 8.- Procédé selon l'une quelconque des revendications précédentes, dans lequel l'estimation d'une probabilité d'occurrence d'un évènement est réalisée de manière incrémentale, en mettant à jour une estimation courante de ladite probabilité en tenant compte d'un nouvel évènement (X(N)) du fichier. 9.- Procédé selon l'une quelconque des revendications 1 à 8, dans lequel l'étape (124) d'association d'une alerte à un évènement particulier du fichier consiste à calculer la probabilité d'occurrence de cet évènement particulier en utilisant la probabilité estimée et à comparer cette probailité calculée avec une probabitié de référence ( po ), déterminée dynamiquement à partir du fichier. 10.- Procédé selon l'une quelconque des revendications 1 à 9, dans lequel le fichier d'évènements est un fichier NETFLOW. 11.- Support d'enregistrement d'informations, caractérisé en ce qu'il comporte des instructions pour l'exécution d'un procédé conforme au procédé selon l'une quelconque des revendications 1 à 10, lorsque ces instructions sont exécutées par un calculateur électronique. 12.- Système comportant une unité de commande, caractérisé en ce que ladite unité de commande est programmée pour exécuter un procédé conforme au procédé selon l'une quelconque des revendications 1 à 10. 25 30