Les systèmes de détection d`intrusion basés sur du machine learning
Transcription
Les systèmes de détection d`intrusion basés sur du machine learning
UNIVERSITÉ LIBRE DE BRUXELLES Faculté des Sciences Département d'Informatique Les systèmes de détection d'intrusion basés sur du machine learning Liran LERMAN Promoteurs : Prof. Olivier Markowitch & Prof. Gianluca Bontempi Contents 1 Introduction 1 2 Sécurité informatique et outils cryptographiques[13] 3 3 Systèmes de détection d'intrusion 4 3.1 Composition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Positionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.3 Schéma d'une attaque 4 3.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.4.1 HIDS ou NIDS 5 3.4.2 Approche comportementale ou par scénario . . . . . . . . . . . . . . . . . 6 3.4.3 Online ou Oine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.4.4 Réponse active ou passive . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5 Attaques contre les IDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.6 Erreurs de classication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.7 Tests des IDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.8 Logiciels existants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Machine learning 4.1 9 10 11 Obtention des données et pré-processing . . . . . . . . . . . . . . . . . . . . . . . 11 4.1.1 12 Feature selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Réalisation du modèle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 4.3 Phase d'apprentissage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 4.4 4.3.1 Phase de validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 4.5 Performance du modèle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 4.6 Sur-Apprentissage Types de modèle 4.6.1 Modèle supervisé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 4.6.2 Modèle non supervisé 15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Systèmes de détection d'intrusion basés sur le machine learning 16 5.1 Obtention des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 5.2 Supervisé ou non supervisé 16 5.3 Hypothèse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 5.4 Implémentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 5.5 Problématiques des modèles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.5.1 Non périodicité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 5.5.2 Espacement des attaques . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 5.6 Optimisation 5.7 Outils 6 DataSets 20 7 Conclusion 21 1 Abstract Les systèmes de détection d'intrusion sont largement répandus de nos jours pour la sécurité de systèmes informatiques. Ils permettent à la fois de détecter et de répondre à une attaque en temps réel ou en hors-ligne. Cet état de l'art présente un mélange prometteur : les systèmes de détection d'intrusion basés sur le machine learning. Chapter 1 Introduction Historiquement, internet a débuté par un réseau privé connectant les gouvernements, les militaires et les chercheurs académiques. C'est pourquoi il y avait de faibles besoins de protocoles sécurisés. A la base, on ne pensait pas au virus, au vers, au spam, au phishing, aux zombies, aux spywares, aux attaques par déni de service,... De plus, le coût de subir une telle attaque n'était pas signicatif. Petit à petit, le réseau s'est ouvert au monde et sa taille a empêché la création d'un mécanisme totalement sécurisé. De plus, une facilité venant des programmes tout faits et supportant une automatisation des attaques a permis de réaliser rapidement des agressions par n'importe qui. Ainsi, depuis plusieurs années, une multitude d'attaques informatiques ont eu lieu : 1. 11 mai 1999 : Le site web de la Maison Blanche des Etats-Unis d'Amérique a été fermé durant plusieurs heures pour déterminer si un hacker avait pu falsier les pages du site [N1]. 2. 7 octobre 1999 : Des hackers venant apparemment de Russie ont réussi à rentrer dans les ordinateurs du département de la défense aux Etats-Unis d'Amérique, prenant ainsi connaissance de données hautement condentielles [N2]. 3. 27 avril 2007 : Plusieurs attaques contre des ordinateurs de l'Estonie ont été réalisées venant apparemment de Russie. [N3] 4. 29 mars 2009 : Une vague d'inltrations de plusieurs ordinateurs dans le monde venant essentiellement de Chine, dont ceux d'ambassades, d'organisations internationales, d'ONG et des représentants du Dalaï Lama a été détectée. [N4] 5. 29 mai 2009 : L'administration américaine a annoncé une amélioration du dispositif de défense contre les attaques visant les réseaux de communication et d'information américains. Ceci fait face à une augmentation de la menace venant de pirates isolés, de cyberespions et d'organisations terroristes utilisant les nouvelles technologies. [N5] Une attaque peut se faire par un individu ou un groupe de personnes, contre l'ordinateur d'un individu ou d'un groupe de personnes morale ou physique. La dépendance contemporaine de l'humain aux réseaux informatiques 1 a généré une motivation non seulement pour le goût de la réussite de l'exploit, mais aussi pour le gain d'argent, pour des convictions politiques, pour des buts militaires et pour la curiosité. La cause d'une faille dans un système peut être due à un manque de budget, de temps d'installation, de personnes qualiées, de politique de sécurité, de protections ecaces sur le marché,. . . Néanmoins, de nos jours, le coût d'une attaque et de sa réparation 2 peut être très élevé. C'est pourquoi les entreprises et l'ensemble des organisations s'intéressent de près à la sécurité informatique. L'idée intuitive de la sécurité informatique est de limiter l'accès à un système informatique. Avec une sécurité parfaite, les informations ne sont jamais compromises puisqu'un utilisateur non-autorisé n'y a jamais accès. Néanmoins, la sécurité parfaite n'est pas réaliste. C'est pourquoi on va essayer de prévenir, détecter et répondre à une attaque 3 an de ne pas permettre qu'une même agression se reproduise. La prévention permet de limiter les cas où une oensive se produit. Pour cela, on utilise des techniques d'authentication, de chirement, ou même de camouage 4 1. Tel que internet 2. Tel que la récupération d'une bonne image d'une entreprise ou la remise en état de documents. 3. Une attaque n'est pas seulement une intrusion dans un système informatique mais aussi une augmentation anormale des privilèges d'un utilisateur, ou d'un abus de privilèges. 4. Par exemple en faisant dévier l'attaquant vers un pot de miel ou en essayant de le dissuader. 1 faisant croire à un éventuel attaquant que l'initiative n'en vaut pas le coup. Puisque la prévention n'est pas parfaite, la détection permet l'identication d'une certaine caractéristique qui viole les politiques de sécurité. Les détecteurs d'intrusion (IDS) sont apparus dans les années 1980 et sont utilisés à cause du manque de sécurité dans les systèmes d'exploitation contemporains 5 ou dans 6 les programmes actuels . Leurs buts peuvent êtres variés : la protection de documents condentiels, trouver de nouvelles attaques, satisfaire des contraintes légales telles que la condentialité. Après avoir détecté une violation, il est intéressant de réagir. Les réponses peuvent être variées mais le but est de réduire l'apparition de pénétrations en améliorant la prévention et la détection du système, ainsi que de réparer les dommages générés par l'intrusion avec éventuellement des poursuites judiciaires. Le but de ce travail est un état de l'art d'un mélange récent entre la sécurité et le machine learning qui permettrait d'améliorer les capacités de détection d'intrusion. Il introduit le sujet de mémoire qui sera développé en deuxième master en science informatique. Ce document a été inspiré par certaines sources telles que de [4],[1],[3] ainsi que de [12]. Il traîte d'abord de la sécurité informatique et des outils cryptographiques en général pour justier par la suite l'utilité et le fonctionnement des IDS. Un chapitre sur le machine learning permettra de comprendre son mécanisme et son intérêt. Le lien entre les IDS et le machine learning sera décrit par après. Un chapitre sur les datasets suivra, pour nir avec la conclusion. 5. La volonté de sécuriser les systèmes d'exploitation (OS) semble être en opposition avec la facilité d'utilisation d'un OS. Ainsi, les OS commerciaux négligent souvent le côté sécuritaire. 6. Il est souvent dicile, voire impossible, de supprimer toutes les erreurs d'un programme. Les raisons sont économiques, techniques. . . 2 Chapter 2 Sécurité informatique et outils cryptographiques[13] La sécurité informatique est l'utilisation de la technologie, des politiques et de l'éducation des personnes pour assurer la condentialité, l'intégrité et l'accessibilité des données durant leur stockage, leur traitement et leur transmission. La protection des données doit dépendre du système à protéger. Ainsi, selon ce dernier, on insistera plus ou moins sur l'intégrité, la condentialité ou la disponibilité. Condentialité La condentialité spécie que seules les personnes autorisées à accéder à une certaine information ont la possibilité de l'atteindre. Pour cela, on utilise les contrôles d'accès et le chirement. La violation de la condentialité peut se voir quand une information condentielle est devenue publique, grâce aux logs du système ou aux changements de comportement d'une certaine personne envers l'organisation.[13] Intégrité L'intégrité spécie que seules les personnes autorisées peuvent modier l'information dans le système. Sa protection est souvent la même que celle qui est garantie par la condentialité. En eet, en contrôlant l'accès à une donnée, on assure aussi son intégrité. La détection d'une violation de cette dernière est, par exemple, la comparaison entre l'information et ses copies ou ses données de hashing. Une réponse à cela est la réparation de cette donnée.[13] Disponibilité La disponibilité est le fait qu'une information est obtenue quand on en a besoin. Une des ces attaques connues est le déni de service. On peut le limiter en limitant les ressources consommables du système par une personne. Une réponse à cela est la réduction de la charge ou l'augmentation des capacités du système.[13] Assurer la condentialité, l'intégrité et la disponibilité Pour assurer tous ceux-ci, on utilise un ensemble de règles de sécurité : enlever les programmes non utilisés, utiliser des rewalls, utiliser des contrôles d'accès, congurer correctement les programmes, utiliser des anti-virus, utiliser des IDS,... Nous allons nous focaliser sur les IDS. Les IDS surveillent le système, ce qui implique leur limitation pour rester dans la légalité 1 du pays où le détecteur est implémenté. 1. Protection de la vie privée, connaissance de ce qu'il faut pour constituer une preuve d'attaque à présenter à un juge,. . . 3 Chapter 3 Systèmes de détection d'intrusion 3.1 Composition Il existe essentiellement trois composants dans un IDS : 1. Senseur : Le senseur est responsable de la collecte 1 d'informations du système, telles que des paquets d'un réseau ou des données de log. 2. Analyseur : L'analyseur reçoit l'ensemble des informations venant des senseurs. Il est responsable de les analyser et d'indiquer si une attaque a lieu ainsi qu'éventuellement sa réponse. C'est essentiellement cette partie de l'IDS que ce document exposera. 3. Interface utilisateur : L'interface utilisateur permet aux utilisateurs de l'IDS de visualiser ou/et de dénir le comportement du système. 3.2 Positionnement Bien que l'emplacement des IDS soit primordial pour une bonne sécurité du réseau, ce document ne va pas rentrer dans les détails. Ainsi, il est conseillé de s'assurer que l'ensemble des informations transitant dans le système soit capturable par les IDS et que ceux-ci soient placés de 2 manière optimale . De plus, il existe deux approches pour positionner des IDS dans un système : l'approche décentralisée ou celle centralisée. La première 3 permet de réduire la dépendance sur un seul IDS alors que la seconde amène une simplication d'implémentation. 3.3 Schéma d'une attaque Une attaque peut être schématisée en six points : 1. La collecte d'informations sur le système 2. L'intrusion dans le système grâce à ces informations 3. La mise en place d'un système permettant une ré-intrusion future, tel que l'insertion de code dans l'EEPROM 4 4. La recherche d'une propagation de l'intrusion dans un autre système et ainsi permettre des attaques distribuées 5. La paralysie du système 6. L'eacement des traces de l'attaquant Il existe essentiellement deux types d'attaques : les attaques réseau et applicatives. 1. Le programme TCPdump (utilisant la bibliothèque libpcap pour la capture de paquet réseau au niveau de la couche de liaison sous Linux) est un logiciel permettant de capturer ce qui passe sur le réseau. D'autres outils existent tels que PCAP, qui permet de réaliser un snier de manière plus ciblée. 2. En ne surprotégeant ni en ne sous-protégeant certaines parties du système. 3. Où chaque IDS ne voit qu'une partie du système. 4. Electrically-Erasable Programmable Read-Only Memory 4 Les attaques réseau Ces attaques sont souvent dues à une faille du protocole ou de son implémentation. Pour réaliser une telle attaque, une première étape est la récolte d'informations. Cette récolte d'informations peut se faire grâce au social engineering ou grâce à des outils de scan. Bien que la récolte d'informations ne puisse être précisément dénie comme une intrusion, les IDS réussissent parfois à la détecter. Néanmoins, certaines informations (telles que celles provenant des fournisseurs d'accès à internet qui peuvent être piratées, des informations publiques,. . . ) ne se trouvent pas nécessairement dans le réseau qui va être attaqué. Ainsi, ce genre de récolte ne peut pas toujours être détecté. Le but de ces récoltes est par exemple l'obtention de la version des programmes, les services fonctionnels, les adresses IP ou les ports ouverts dans le système. Tout ceci facilite la recherche de failles connues dans le système. Les scans peuvent se faire de plusieurs manières selon la volonté d'être plus ou moins visible lors du scan, et plus ou moins informé de la topologie du réseau. Il existe plusieurs méthodes 5 telles que le scan simple, le scan SYN, le scan XMAS, le scan NULL, le scan FIN, le scan à l'aveugle, le scan très lent et le scan passif. Après la récolte d'informations, l'attaque peut se réaliser. Il existe plusieurs techniques d'attaques connues 6 telles que le IP Spoong, le ARP Spoong, le DNS Spoong, le fragments attack, le TCP Session Hijacking, le man in the middle et le déni de service tel que les SYN ooding, les UDP ooding, . . . Les attaques applicatives Ces attaques 7 sont souvent dues à une faille d'un logiciel ou d'une conguration. La première est essentiellement liée à des injections SQL ou à des buer overows. Ces derniers permettent l'utilisation de shellcode qui donne la possibilité d'exécuter un code à distance. Les injections SQL sont des introductions de code SQL malveillant dans des requêtes de base de données permettant d'obtenir des informations privées. Enn, les problèmes dus à une mauvaise conguration sont très répandus. En eet, beaucoup d'administrateurs réseaux préfèrent laisser la conguration par défaut que de la modier en risquant de mal l'établir. 3.4 Protection Nous venons de voir qu'il existe un grand nombre d'attaques connues. Une première idée est de vouloir lutter contre celles déjà existantes. Pour cela, on utilise un IDS qui surveille l'état de l'ensemble du système à protéger. Il existe plusieurs manières pour diérencier les types d'IDS. Ainsi, certains s'implémentent de manière software alors que d'autres le sont en hardware. Une autre diérenciation se fait sur ce que l'IDS regarde. Il peut être HIDS (Host-based Intrusion Detection System), NIDS (Network-based Intrusion Detection System) ou un mélange des deux types. 3.4.1 HIDS ou NIDS Système de détection d'intrusion machine (HIDS) L'objectif des HIDS est de se focaliser sur une seule machine. Pour cela, il regarde les logs ainsi que toute information se trouvant sur la machine pour déduire si une attaque a lieu. Il existe des HIDS implémentés au sein du noyau pour protéger le système dès son installation, très ecaces contre les buer overows, tels que le KIDS (Kernel Intrusion Detection System) et le KIPS (Kernel Intrusion Prevention System). Malheureusement, ces HIDS noyau ralentissent fortement le système. Système de détection d'intrusion réseau (NIDS) Le but des NIDS est de regarder les paquets transitant dans le réseau pour déterminer si une attaque a lieu. Ainsi, un NIDS ne pourra protéger que les ordinateurs se trouvant sur le même réseau que lui, sauf dans le cas où il existe des machines routant les informations d'un système diérent vers l'IDS. Un désavantage des NIDS est que tout paquet chiré 8 ne pourra pas être compris par les NIDS, qui doivent lire le contenu des paquets. Ce désavantage peut disparaître en utilisant des HIDS qui vont obtenir les informations après leur déchirement sur la machine. Néanmoins, les NIDS sont faciles à installer pour la détection d'intrusion d'un ensemble de machines. 5. Cette liste est détaillée dans [4] 6. Ces exemples sont détaillés dans [4] 7. Ceci est détaillé dans [4] 8. Le chirage des données est permis par IPv6 et par d'autres protocoles tels que le réseau privé virtuel (RPV). 5 En d'autres termes, les NIDS détectent plus facilement des attaques sur plusieurs machines que ne le ferait un HIDS. L'article [2] décrit un NIDS qui regarde l'ensemble des ports utilisés pour détecter une anomalie dans le réseau. Système de détection d'intrusion hybride (Hybrid IDS) Dans ce type d'IDS, les sources d'information viennent à la fois du réseau et des machines sur le réseau. Ainsi, la complexité du système grandit mais les avantages des NIDS et des HIDS sont combinés. De plus, ils permettent 9 une meilleure détection d'attaques distribuées . 3.4.2 Approche comportementale ou par scénario Une autre diérenciation se fait sur la manière de détecter une attaque. Elle peut se baser sur ses signatures (aussi appelée approche par scénario) ou en se basant sur des prols normaux d'utilisation (aussi appelée approche comportementale). Dans le premier cas, on regarde la suite d'actions eectuées par une personne et on la compare à une attaque connue. Dans le deuxième cas, on regarde le comportement d'une personne et on le compare à son comportement normal. En d'autres mots, l'un sait ce qui est mal et l'autre ce qui est bien. Approche par scénario Ce type d'IDS contient une base de données des signatures d'attaques 10 et essaye de faire correspondre une donnée, obtenue par les sources d'information du système, avec celles connues. Ces signatures sont les caractéristiques d'une attaque, c'est-à-dire l'empreinte d'une attaque connue, et peuvent varier d'un système à l'autre. Pour la correspondance, on utilise les algorithmes de pattern matching tel qu'E2xB, Boyer-Moore et Knuth-Morris-Pratt[5]. Un avantage de cette approche est la normalisation possible de la description des signatures et ainsi la possibilité de diuser et de congurer rapidement et facilement les IDS. De plus, ceci permet d'avoir un faible taux de fausses alarmes. Néanmoins, la problématique est le besoin d'une mise à jour régulière de la base de données des signatures pour détecter de nouvelles attaques . Ils sont donc faillibles aux attaques 0day qui sont des exploitations d'une faiblesse le jour de leur publication. De plus, une même attaque peut être faite de plusieurs manières légèrement diérentes. Ainsi, le pattern matching ne semble pas très ecace. A sa place, on peut utiliser le machine learning pour apprendre leurs signatures de manière générique et ainsi les repérer même si celles-ci évoluent légèrement au cours du temps. Approche comportementale Le but de cette technique est la prédiction de comportement. Pour cela, cette technique utilise une base de données des comportements normaux des utilisateurs, d'un groupe d'utilisateurs, des services ou d'un système entier pour constituer un prol. Des attaques inconnues peuvent donc être détectées contrairement à l'approche par scénario qui est biaisé par l'empreinte des signatures connues. Quand un comportement s'éloigne trop du comportement normal, une alarme se déclenche. Néanmoins, cet éloignement ne signie pas forcément un comportement hostile, ce qui semble générer un taux élevé de fausses alarmes. La création du prol peut se faire grâce à plusieurs métriques : les commandes utilisées, la charge CPU, les heures de connexions,. . . Un des inconvénients de cette méthode est l'obligation d'un temps d'apprentissage pour réaliser le prol des utilisateurs. D'autres techniques existent pour implémenter un comportement. Par exemple, on peut utiliser les techniques de machine learning à qui on va apprendre les dierents prols. De plus, on peut réaliser un IDS totalement distribué se basant sur le système immunitaire des êtres vivants, ou sur les algorithmes génétiques se basant sur la sélection naturelle d'une population[1]. Le système immunitaire représente l'IDS par un ensemble de systèmes distribués, diversiés, autonomes et auto-réparants pouvant détecter un intrus représenté par un corps étranger inconnu du système immunitaire. La vérication qu'une certaine propriété 11 est toujours respectée est parfois utilisée. Une dernière technique est la découverte d'un comportement anormal quand le protocole réalisé ne suit pas le protocole habituel. Ces deux manières peuvent être combinées au sein d'un même système pour augmenter l'ecacité. Ainsi, on pourrait utiliser une méthode comportementale pour agrandir la base de données des attaques connues de la méthode par scénario. Par conséquent, le temps d'apprentissage 9. Un exemple typique est l'authentication locale échouée sur plusieurs machines. Ainsi, un HIDS ne voit rien, un NIDS non plus, alors qu'un IDS hybride peut conclure à une attaque distribuée. 10. Ou plus précisément l'ensemble des points faibles du système. 11. Par exemple un nombre maximum de connexions 6 se fait tout au long du temps et non seulement à un certain moment. Néanmoins, le manque de normes 12 et d'interopérabilité sur les données échangées fait qu'il est souvent complexe d'assembler plusieurs IDS dans un même réseau, ce qui implique une détection complexe d'une attaque distribuée sur plusieurs systèmes protégés individuellement. De plus, la coopération entre systèmes 13 diérents permet de mieux détecter une attaque distribuée dans l'espace. Néanmoins, ces derniers sont très réticents à la publication de telles données. 3.4.3 Online ou Oine Une autre diérenciation peut se faire sur la caractéristique online ou oine de l'IDS. Le premier détecte une attaque au moment où elle se produit alors que le deuxième s'exécute périodiquement et ne voit que son résultat. La deuxième méthode est préférable pour avoir une dépense plus faible du point de vue du temps de calcul que la première, dû à l'aspect temps-réel de l'online. Néanmoins, la deuxième méthode, contrairement à la première, soure du fait qu'une attaque ne peut pas être détectée le plus tôt possible pour l'éviter. Plus une attaque est détectée tardivement, plus les dommages sont importants. Dans la plupart des cas, avant d'attaquer un réseau, l'attaquant doit scanner l'environnement pour récolter des informations. Par conséquent, en voyant cela, on peut détecter une attaque avant même qu'elle ne se produise et ainsi y répondre le plus tôt possible. 3.4.4 Réponse active ou passive Enn, une dernière diérenciation est le type de réponse réalisée par l'IDS. Certains IDS préfèrent laisser l'être humain répondre à l'attaque. Néanmoins, ça implique une surveillance continue de l'IDS par un être humain. D'autres préfèrent une réponse, dite active, plus rapide venant de l'IDS pour arrêter au plus vite l'oensive. Enn, il est possible d'unir ces deux méthodes pour obtenir un système hybride. Les réponses d'un IDS peuvent être variées. Celles-ci peuvent être une modication de la politique de sécurité, un arrêt d'un service sur le réseau, une augmentation de l'audit du système, un backup du système pour pouvoir revenir en arrière en cas d'attaque, une reconguration d'un rewall, un achage d'une alerte à un responsable,... Néanmoins, ceci peut être dangereux. En eet, supposons qu'un attaquant pénètre dans un système A et lui demande d'attaquer un autre système B. Cette situation est semblable à celle où l'attaquant usurpe l'identité de A. Si l'IDS de B répond à l'oensive en attaquant A, ceci peut avoir des répercutions dramatiques, ce qui fait qu'un pirate peut s'en servir pour réaliser un déni de service. De plus, dû à la possible apparition de fausses alarmes, il existe un grand potentiel de réponse inappropriée. Enn, il est intéressant de se pencher sur le fait de savoir s'il est normal qu'un système de détection d'intrusion (IDS) réponde à une attaque. 3.5 Attaques contre les IDS Un IDS étant le moyen de protéger un système, les attaquants voudront souvent l'attaquer avant de s'attaquer au système qu'il protège, et puisque les IDS sont des systèmes informatiques, ils contiennent des failles. Il existe plusieurs types d'attaques telles que le déni de service, l'insertion, l'évasion et la modication des paquets transitant du senseur jusqu'à l'analyseur. Déni de service On rend l'IDS non fonctionnel en le saturant d'information. Pour contrer cela, il est nécessaire de ltrer et stocker correctement les informations et avoir un IDS performant qui gère un ensemble de paquets sans perte. De plus, un système de monitoring permet de vérier l'ecacité réelle de l'IDS. Insertion On insère des paquets d'informations supplémentaires que l'IDS va accepter alors que les machines vont les rejeter. Ainsi, en les regroupant ensemble, le message nal dans les machines cibles pourra être diérent de celui dans les IDS. Un exemple de cette oensive est l'insertion de checksum erroné dans des paquets que les machines cibles vont refuser alors que l'IDS va les accepter. En eet, pour des raisons de performances, les IDS ne les refusent pas même s'ils ont de mauvais checksums. Des exemples d'insertion sont détaillés dans l'article [4]. 12. La norme IDMEF (The Intrusion Detection Message Exchange Format) est une norme pour l'échange d'information entre les IDS mais elle n'est pas toujours suivie. 13. Dans ce cas, un système représente une entreprise. 7 Evasion Les paquets sont ignorés par l'IDS mais pris en compte par le système attaqué. Des exemples d'évasion sont détaillés dans l'article [4]. Modication On modie des paquets envoyés du senseur jusqu'à l'analyseur. Il est donc pri- mordial de s'assurer qu'ils sont protégés. Ainsi, on pourrait utiliser les techniques contemporaines de chirement tel que TLS 14 . Les raisons de la possibilité de ce genre d'attaques sont variées : raison de performance 15 , ambiguïté de la norme d'un protocole, ignorance des normes des protocoles par les constructeurs de l'IDS,. . . Détection d'un IDS Tout comme pour attaquer une machine, pour attaquer un IDS il faut pouvoir le détecter. En voici quelques exemples : 1. Usurpation d'adresse MAC 16 : les NIDS mettent l'interface de capture de paquet réseau 17 où ils voient tout paquet qui transite. Ainsi, en envoyant un paquet en mode promiscuité 18 ICMP de type echo request où la machine le recevant doit émettre un paquet ICMP de type echo reply , avec une adresse MAC destinataire inexistante dans le réseau, on peut vérier si la machine répond. Ainsi, puisque le NIDS est en mode promiscuité, il verra le paquet et renverra un echo reply sans même vérier qu'il est bien le destinataire du paquet ICMP. 2. Mesure de temps de latence : puisque les NIDS sont en mode promiscuité, ils doivent gérer l'ensemble des paquets du réseau. Ainsi, si après un envoi massif de paquets à toute les machines, une machine devient de plus en plus lente à répondre, on peut supposer qu'elle est en mode promiscuité et qu'elle est donc probablement un NIDS. 3. Observation des requêtes : après une attaque, les IDS envoient généralement des messages à un ordinateur central qui va gérer l'ensemble des alertes. Ainsi, en observant les paquets, on peut essayer de retrouver la centrale. Un des problèmes de ce genre d'attaques est que, dans la plupart des cas, l'IDS ne prévient pas l'ensemble du système qu'il ne fonctionne plus. Ceci est d'autant plus dangereux quand l'IDS ne sait pas s'il fonctionne correctement ou pas. Ainsi, après avoir attaqué l'IDS, le pirate peut attaquer le système en toute impunité. Par conséquent, un IDS doit pouvoir distinguer si un pirate attaque l'IDS ou le système des machines protégées par l'IDS pour éventuellement prévenir le système. 3.6 Erreurs de classication Il existe plusieurs types d'erreurs venant d'un détecteur, inuençant plus ou moins sa puissance. Les vrais positifs sont les cas où une alarme se déclenche quand il y a une violation des politiques de sécurité. Les vrais négatif sont les cas où aucune alarme ne se déclenche et rien d'anormal ne se produit. Les faux positifs sont les cas où une alarme se déclenche alors qu'il ne se produit rien d'anormal. Les faux négatifs sont les cas où une alarme ne se déclenche pas alors qu'il se produit une chose anormale. A première vue, on pourrait supposer qu'un faux positif est moins dangereux qu'un faux négatif. Pour être plus précis, il faut regarder les coûts de ces erreurs. Coût des erreurs Le coût d'une erreur peut être positif ou négatif. Quand celui-ci est négatif, l'erreur est préjudiciable. Inversement, quand celui-ci est positif, l'erreur est bénéque. Il existe quatre types de coûts : 1. DCost : le coût inigé par une attaque quand elle a lieu et que l'IDS n'est pas susamment performant pour l'arrêter. 14. Transport Layer Security 15. En vériant des checksums par exemple, les performances au niveau de la rapidité de l'IDS sont fortement réduites. 16. Media Access Control 17. Le mode promiscuité est une conguration de la carte réseau permettant à cette dernière d'accepter tous les paquets qu'elle capte, même si ils ne lui sont pas destinés. 18. Internet Control Message Protocol 8 2. RCost : Le coût pour agir contre une attaque quand elle a lieu. 3. CCost : Le coût total d'une erreur. C'est-à-dire pour les faux négatifs, les faux positifs, les vrais positifs, les vrais négatifs et les non classables. Ainsi, les faux négatifs ont un DCost, les vrais positifs et les faux positifs ont un RCost, les vrais négatifs ont un coût nul. Enn, le coût d'une mauvaise classication d'une attaque, c'est-à-dire d'une détection d'une agression alors qu'une autre intrusion a lieu, est supposé négatif. Ainsi, on aura un DCost de la vraie attaque et un RCost de l'agression supposée mais non apparue, tous deux étant inecaces. 4. OpCost : Le coût pour mettre en place l'IDS. Ceci incorpore le coût d'extraction des données, le coût d'analyse des données,. . . lors de l'apprentissage et lors de l'exécution réelle de l'IDS. Pour calculer les RCost et les CCost, il faut classier 19 les diérents types d'attaques où chaque partition aura son propre RCost et son propre CCost. Ainsi, pour augmenter l'ecacité de l'IDS, on pourra se demander si une attaque ayant un RCost plus négatif que le DCost doit être détectée. Le livre [12] conclut qu'il est préférable d'utiliser plusieurs modèles spécialisés dans un IDS pour réduire les coûts des OpCost et ainsi augmenter la rapidité de l'IDS plutôt qu'un modèle généralisé. 3.7 Tests des IDS Avent la mise en place d'un IDS, il est nécessaire de tester ses limites. Pour cela, il existe plusieurs méthodes : 1. Attaque : on va utiliser les outils 20 exploités par les attaquants pour détecter une faille dans le système ou dans l'IDS, telles que les techniques d'évasion ou d'insertion. 2. Alarme : on va regarder le taux des alarmes telles que les faux positifs 3. Qualité des informations : on va regarder la qualité 21 . 22 des informations fournies par l'IDS lors d'une alarme. 4. Réalisme : il est nécessaire de tester l'IDS dans un milieu réel et non pas uniquement avec un générateur d'informations tel que Network Security Auditor . 5. Flexibilité et mise à jour : il est souvent intéressant de pouvoir modier les congurations d'un IDS telles que la base de signature,. . . C'est pourquoi il est aussi nécessaire d'avoir une bonne réactivité du constructeur en cas de nouvelle attaque non encore détectée par l'IDS. 6. Qualité des signatures : dans le cas des IDS se basant sur les signatures, il est nécessaire de pouvoir évaluer la qualité des signatures. 7. Rapidité du système : il est nécessaire que l'IDS soit capable de gérer 23 un grand nombre de données en un temps raisonnable et de détecter l'attaque en un minimum de temps pour réduire les dommages causés. 8. Intégration : puisque les IDS ne susent pas pour garantir l'ensemble de la sécurité, ils doivent être facilement installés et intégrés à son infrastructure. 9. Interaction : le nombre d'interactions entre un IDS et l'administrateur système doit être minime. 10. Dataset : on va comparer les performances de l'IDS avec d'autres IDS grâce à des datasets, décrits au chapitre 6. 19. Un exemple de classication est la classication utilisée par DARPA où il y a quatre partitions : PRB, DoS, R2L, U2R. 20. Beaucoup d'outils existent tel que Nessus et Nmap. 21. Néanmoins, il est nécessaire de garder un certain taux de vrais positifs pour stimuler les analystes. 22. Un problème récurrent des IDS est la diculté d'analyse par un être humain de grandes quantités d'information venant de l'IDS. Néanmoins, l'être humain est plus rapide pour traiter des informations complexes de manière graphique. Ainsi, on pourrait utiliser un SOM (ou tout autre méthode de visualisation telle que celle décrite dans [17] qui décrit chaque machine du réseau comme un objet qui grossit en cas de danger sur la machine dans un espace en 3D) pour détecter et répondre à une attaque. 23. Par exemple en utilisant des bases de données plus performantes pour la lecture de données que pour l'écriture, ou par exemple en compressant les données transitant entre le senseur et l'analyseur. 9 3.8 Logiciels existants Le marché des IDS est très vaste. Certains produits sont gratuits et d'autres payants. Voici une liste non-exhaustive : 1. Ossec : HIDS gratuit et facilement congurable qui fonctionne sur plusieurs OS tels que Windows, Linux et MacOS. [L1] 2. Bro : NIDS gratuit construit par des groupes de recherche fonctionnant sur Unix. Il mélange des signatures d'attaques connues et des comportements normaux pour détecter une intrusion. [L2] 3. IDSNet : NIDS basé sur le machine learning, créé par le département the Informatics and Mathematical Modelling de l'université technique du Danemark (DTU) qui a permis à [15] d'implémenter son propre modèle de machine learning pour créer un NIDS. [L3] 4. Snort : NIDS gratuit mélangeant les signatures d'attaques et des comportements normaux des utilisateurs. [L4] 5. Prelude : IDS hybride utilisant le format IDMEF parties. [L5] 24. Intrusion Detection Message Exchange Format 10 24 pour faire communiquer ses diérentes Chapter 4 Machine learning Le domaine du machine learning inclut la construction d'un modèle à partir de données grâce à l'utilisation d'un algorithme. Ce modèle va au mieux généraliser, en représentant ou en approximant les données. Il permet, selon les données qu'on lui donne en input, de prédire celles inconnues ainsi que de mieux comprendre celles existantes. Le domaine d'application du machine learning est très varié : la prédiction de valeurs nancières, la détection d'intrusion dans le domaine de la sécurité informatique, le moteur de recherche inuençable par le prol de l'utilisateur, la détection 1 de vols de machine, l'implémentation d'un anti-virus et la cryptanalyse 2 . Le cycle de vie d'une implémentation du machine learning est la suivante : 1. Obtention et nettoyage des données 2. Réalisation du modèle 3. Phase d'apprentissage 4. Phase de validation 5. Phase d'exécution 4.1 Obtention des données et pré-processing La première étape à réaliser est donc l'obtention de données en susance, représentatives du problème à résoudre. Ceci n'est pas toujours aisé. Certaines informations sont plus coûteuses à obtenir que d'autres. Par exemple, un header d'un paquet réseau est plus simple à obtenir qu'une information dans la partie data quand celle-ci est chirée. La deuxième étape est le nettoyage, appelé aussi pré-processing , de la donnée récoltée, c'est-à-dire une réduction de ce qui est strictement intéressant, ainsi que leur traduction. Le but de cette étape est une meilleure précision du modèle, une optimisation de son temps d'exécution et de son apprentissage ainsi que de sa taille. Voici quelques exemples de nettoyage : 1. Transposer un ensemble de nombres vers un range [0,1] 2. Transposer un ensemble de réels vers un ensemble de naturels 3. Ajouter des valeurs qui ont été calculées à partir des données récoltées 4. Sélectionner un résumé des informations 5. Enlever les informations inutiles représentant du bruit Ce nettoyage est souvent très compliqué à mettre en ÷uvre et demande une bonne connaissance des données à traiter. C'est pourquoi des techniques automatiques ont fait l'objet de recherches : ce sont les techniques de feature selection . L'article [6] donne un exemple d'une méthode pour choisir les bonnes informations à présenter à un IDS. 1. La détection peut se faire au moyen des informations récoltées par un GPS embarqué dans le système à protéger. 2. Le machine learning permettrait de réaliser des attaques de type DPA (Dierential Power Analysis) sur des algorithmes de cryptographie tels que le DES (Data Encryption Standard) pour retrouver une clé secrète. Ceci est réalisé en corrélant la consommation énergétique de l'algorithme de chirement avec la clé utilisée. 11 4.1.1 Feature selection Il existe essentiellement 3 types de méthodes de feature selection . On retrouve d'abord 3 les Filter methods , qui ne se basent que sur l'utilité d'une variable sans tenir compte de son impact dans le modèle. Ensuite on a les Wrapper methods 4 qui tiennent compte de l'algorithme d'apprentissage pour déduire l'apport des variables. Enn, on distingue aussi les Embedded methods 5 qui sont spéciques à un modèle et sont exécutées lors de la procédure d'apprentissage. Ces méthodes peuvent être combinées pour obtenir de meilleurs résultats. Il est conseillé de ne pas utiliser les mêmes données pour les phases de feature selection et d'évaluation, pour éviter un biais au niveau des performances estimées du système. Après avoir obtenu les données nettes du problème, la prochaine étape est la réalisation du modèle. 4.2 Réalisation du modèle Elle consiste en une recherche de la meilleure structure ainsi que l'ensemble des paramètres à initialiser dedans. La complexité, et plus précisément la qualité, du modèle aura une inuence directe sur la précision de la généralisation des données. Plusieurs types de modèles vont être présentés dans la suite. Après avoir construit le modèle, il est nécessaire de le congurer selon le problème à traiter grâce à la phase d'apprentissage. 4.3 Phase d'apprentissage Un sous-ensemble de l'ensemble des informations nettoyées forme les données d'entrainement, permettant d'exécuter la phase d'apprentissage du modèle. Ceci permet d'ajuster les paramètres du modèle. Il existe plusieurs sortes d'algorithmes d'apprentissage. Certains de ces algorithmes sont supervisés et d'autres non supervisés. Un algorithme supervisé est un algorithme à qui on présente l'entrée et la sortie (ou la cible) désirée en supposant qu'il y a une relation inconnue mais réelle entre les deux. Il devra minimiser l'erreur entre la sortie désirée et celle qu'il produit. Ils sont souvent utilisés pour des problèmes de reconnaissance. Un algorithme non supervisé est un algorithme à qui on présente l'entrée mais dont la sortie est inconnue. Ce type d'algorithmes est souvent utilisé pour des problèmes de partitionnement où le nombre et la nature des partitions ne sont pas connus a priori. Néanmoins, ce dernier ne donne aucun résultat si les données ne contiennent pas de partitions. Après avoir entraîné le modèle, il est important de le valider pour éviter le sur-apprentissage. 4.3.1 Sur-Apprentissage Le sur-apprentissage a lieu quand le modèle prédit correctement les données présentées lors de la phase d'apprentissage mais a des mauvais résultats lors de la phase d'exécution. Pour éviter le sur-apprentissage, on peut utiliser l'une des méthodes suivantes : 1. On regarde empiriquement le nombre de périodes de la phase d'apprentissage pour qu'il n'y ait pas de sur-apprentissage. 2. Le early stopping est une technique où on divise les informations en deux parties. La première partie permet d'entraîner le modèle, la deuxième permet de le tester. On procède ainsi en le réalisant plusieurs fois et on regarde les erreurs. Au début, les fautes vont diminuer mais, petit à petit, les erreurs sur la partie test vont commencer à augmenter lorsqu'il y aura un sur-apprentissage. Et c'est à ce moment qu'il faut arrêter l'apprentissage. Ainsi, on gagne aussi sur le temps nécessaire pour l'apprentissage. D'autres méthodes existent et sont présentées dans la section de validation. 3. Tel que la méthode Principal Component Analysis ( PCA ) ou de clustering (SOM, K-means,. . . ) 4. Tel que la méthode Forward selection , la méthode Backward selection et la méthode Stepwise selection . 5. Tel que les classication trees , les random forests , . . . 12 4.4 Phase de validation Durant cette phase, on va tester et valider le modèle et ses paramètres selon des critères se basant sur ses résultats. Il permet d'obtenir le meilleur modèle généralisant les données obtenues lors de la phase d'apprentissage. Pour cela, on a un ensemble d'exemples pour l'apprentissage et un autre pour les tests. Voici quelques méthodes pour les tests : 1. Hold-out : On coupe aléatoirement l'ensemble des informations en deux groupes : groupe d'apprentissage et groupe de tests. 2. Leave-one-out : Cette méthode sort de l'ensemble des informations une donnée en particulier et la laisse de côté, puis construit le modèle avec celles restantes et enn évalue la structure avec l'exemple laissé de côté. On répète le processus pour chacune des données de l'ensemble de données. Ainsi, on peut avoir une moyenne globale de la précision du modèle. 3. Cross-validation : Cette méthode réalise un partitionnement des données de manière aléatoire en n groupes. On utilise une partition comme un ensemble de test et le reste pour former celui d'entraînement. Comme précédemment, on applique un algorithme à l'ensemble d'entraînement et on évalue le modèle résultant sur celui de tests. On répète ce processus pour chaque partition et on regarde l'erreur moyenne. D'autres méthodes existent telles que le bootstrap. Enn, après avoir validé le modèle, il reste à quantier ses performances en pratique. 4.5 Performance du modèle Apres avoir choisi et évalué notre modèle, il est intéressant de pouvoir quantier ses performances. Pour cela, on compare plusieurs modèles sur un même jeu de données. En eet, certains sont plus adaptés pour certains problèmes. Lors de cette phase, il est primordial de ne pas enlever de données 6 pour ne pas biaiser l'évaluation. Pour cette phase, on s'intéresse au pourcentage de vrais positifs, de vrais négatifs, de faux négatifs et enn de faux positifs. Néanmoins, ça n'inclut pas la taille du modèle ni son temps d'apprentissage ou son temps d'exécution. La technique receiver operating characteristic (ROC) est largement utilisée et permet de tester une structure. Concrètement, un ROC est une courbe d'un modèle représentant ses vrais positifs par rapport à ses faux positif. L'aire sous cette courbe représente la performance du modèle. 4.6 Types de modèle Il existe plusieurs types de modèles. Outre le fait qu'ils sont diérenciables par leur côté supervisé ou non supervisé, ils le sont aussi par leur côté classication ou régression . Le premier classie les données et le deuxième prédit des valeurs pour chaque donnée. Puisque le problème de l'IDS semble être un problème de classication, ce qui suit est une liste nonexhaustive de modèles de classication qui pourraient être envisagées pour la mise en place d'un IDS. 4.6.1 Modèle supervisé Neural network Les réseaux neuronaux permettent d'approximer toutes les fonctions. Ils sont largement utilisés grâce à leur capacité de traiter de grandes quantités d'informations et à leur stabilité face au bruit. Les réseaux neuronaux sont un ensemble de petit processeurs, appelés neurones, travaillant en pseudo-parallèle. Ces neurones reçoivent des données et les renvoient, après une transformation 7 appelée fonction d'activation, à d'autres neurones ou à une source externe. Les canaux de communication entre eux contiennent chacune une certaine valeur représentant la capacité de transfert d'information. Ces valeurs sont modiées lors de la phase d'apprentissage. L'ensemble de neurones est partitionné par couche : une d'entrée, des cachées et enn une de sortie. Il existe plusieurs manières de diérencier les réseaux neuronaux. Ils peuvent l'être par leur côté feed-forward ou feed-back, le deuxième permettant de réaliser un comportement plus dynamique et complexe que le premier en prenant en compte l'écoulement du temps 8 et en 6. On pourrait supposer qu'en enlevant des informations, on gagnerait en temps d'exécution sur cette phase. 7. Cette transformation peut être la fonction seuil, la sigmoïde, la tangente hyperbolique,. . . 8. Les réseaux feed-back, contrairement aux réseaux feed-forward, sont donc dépendants de l'ordre des informations qu'on leur donne lors des diérentes phases (phase d'apprentissage, d'exécution,. . . ). 13 permettant d'avoir des boucles dans le réseau. Le réseau feed-forward semble être plus ecace pour des problèmes de classication et de reconnaissance de forme. L'algorithme d'apprentissage permet aussi de diérencier les réseaux neuronaux. Il y a l'apprentissage par descente du gradient et par l'algorithme de Widrow-Ho pour les réseaux feed-forward. Pour les réseaux feed-back, il y a la rétropropagation récurrente, la rétropropagation dans le temps (BPTT) et l'apprentissage temporel récurrent en temps réel (RTRL). Il existe d'autres types d'apprentissage selon que le réseau est supervisé ou non supervisé. Pour le cas non supervisé, on peut utiliser le Hebbian Learning Rule ou le Competitive Learning Rule. Le Hebbian Learning Rule augmente les valeurs des connexions entre deux neurones qui s'activent simultanément 9 et les diminue dans le cas inverse. Le Competitive Learning Rule dénit des neurones spécialisés pour certains cas d'input. Pour le cas supervisé, on peut utiliser des algorithmes tels que la rétropropagation ou le Boltzman learning rule. Le choix du nombre de neurones ainsi que du nombre de couches est empirique et est dépendant de plusieurs facteurs tels que le volume de données à traîter, la puissance du CPU, la précision voulue, le temps d'apprentissage maximum,. . . Instance-Based Learning L'apprentissage consiste seulement à stocker les informations dans un ensemble. Ce genre de méthodes s'appelle également lazy learning. La classication d'une nouvelle observation se fait en regardant la distance entre les informations et l'observation. Le résultat est la classe la plus proche de l'observation. Pour un grand nombre d'exemples, la performance d'exécution peut être prohibitive mais l'indexation est rapide. k-nearest neighbor Ce modèle appartient à la famille du Instance-Based Learning . Les k plus proches voisins de l'exemple à prédire sont cherchés. La classe majoritaire de ces voisins est retournée comme réponse pour cet exemple. La distance peut être calculée grâce à une distance Euclidienne ou autre. L'apprentissage est simple puisqu'il faut uniquement mémoriser les exemples. Mais la prédiction peut être très lente puisqu'il faut chercher les k plus proches voisins, dans un espace à dimension potentiellement très élevée. Naive Bayes Cette méthode utilise les règles de Bayes. Une hypothèse est que chaque classe d'exemples est indépendante. La phase d'apprentissage calcule chacune de leurs probabilité et celle de chaque attribut la connaissant. Ceci se fait en regardant dans les exemples d'entraînement la fréquence d'apparition de la classe et de la valeur de l'attribut pour chaque classe. La phase d'exécution regarde la plus grande probabilité conditionnelle pour déterminer que telle instance inconnue appartient à telle classe connue. Un des points fort est le besoin d'une faible quantité d'informations pour la phase d'apprentissage. Learning Decision Rules Une règle de décision se compose d'un antécédent et d'une con- séquence. Le premier est simplement une conjonction des attributs des exemples. Le second se compose d'un nom de label de classe. La méthode d'apprentissage choisit un exemple d'une classe et le généralise autant que possible sans avoir une intersection avec des exemples venant d'autres classes. Par la suite, l'algorithme enlève chaque exemple de la même classe qui satisfait la règle. Ceci est itéré jusqu'il n'y ait plus d'exemples. AQ19[12] est une implémentation du spécique-au-général. CN2[12] en est une du général-au-spécique. RIPPER[12] construit des règles en agrandissant les conditions de chacune d'entres elles. La phase d'exécution compare les valeurs des attributs de l'observation et des conditions de chaque règle. Si elle satisfait toutes les conditions d'une règle, le résultat est le label de la classe se trouvant dans le conséquent. Si elle ne satisfait aucune des règles, on prend la règle où les conditions sont les plus respectées. Learning Decision Trees Cette méthode est équivalente au Learning Decision Rules . L'arbre acyclique contient des n÷uds étiquetés par des attributs. Chaque arrête est étiquetée par un prédicat qui s'applique au n÷ud parent. Chaque feuille est étiquetée par une classe qui est l'attribut cible. L'apprentissage construit un arbre récursivement en choisissant l'attribut qui coupe au mieux les exemples dans leurs propres classes, créant des n÷uds enfants pour chaque valeur de l'attribut choisi. Itérativement, l'algorithme enlève ceux choisis en créant des n÷uds enfants. Les algorithmes pour créer un arbre de décision sont : ID3, C4.5, CART. Pour classier un exemple, il faut partir de la racine de l'arbre et descendre jusqu'à une feuille en respectant les prédicats. 9. C'est-à-dire qui reçoivent des données en input simultanément 14 Machine à vecteur de support (SVM) Ce sont des généralisations des classicateurs linéaires. Le but est de séparer un espace grâce à un hyperplan. Dans le cas où un hyperplan séparateur n'existe pas 10 , on passe l'ensemble à une dimension supérieure. Quarter-sphere SVM Cette méthode englobe tous les exemples d'une classe dans une sphère alors que ceux qui se retrouvent en dehors de la sphère sont étiquetés comme appartenant à une autre classe. Le paramètre du modèle est son rayon. 4.6.2 Modèle non supervisé K-means Cette méthode réalise un partitionnement des informations en k classes. Pour cela, Il faut choisir k centroïdes aléatoirement, qui sont des représentants des k partitions. Chaque exemple est associé au centroïde le plus proche. Après ça, un nouveau centroïde est formé en calculant la moyenne des exemples d'une même partition. Et ainsi de suite jusqu'à se qu'il y ait une stabilisation. Le point fort de cette méthode est la rapidité de convergence vers une stabilisation quand elle est possible. Néanmoins, la valeur k est dicile à déterminer ainsi que l'emplacement initial des centroïdes. Single Linkage Clustering Ceci est une variante de K-means. Elle vérie qu'un exemple n'excède pas une certaine distance W de toute classe. Dans le cas contraire, elle lui en assigne une nouvelle. Self organizing map ou self organizing Feature Maps (SOFM) Ce modèle est un réseau de neurones feedforward à une couche non supervisé, permettant de mieux visualiser les informations données en entrée. On obtient une vue respectant la distance entre les informations initiales. C'est-à-dire qu'un ensemble d'informations diérentes sera visiblement séparé sur la carte alors que des données semblables seront visiblement proches. Ce modèle est souvent utilisé pour cartographier des données de grandes dimensions en 1D, en 2D ou en 3D. L'apprentissage est de type compétitif, ce qui signie que les neurones sont en compétition pour représenter les données. Ainsi, ils se spécialisent pour certains types de données. L'augmentation du nombre de neurones améliore la précision du réseau mais accroît aussi drastiquement le temps d'exécution. De plus, un de ses points faibles est son temps d'exécution pour des données de grande dimension puisque la distance entre tous les neurones doit être calculée pour chaque input. Par ailleurs, lors de l'apprentissage, les connexions du neurone gagnant et des neurones avoisinants doivent être modiées. Gamma-algorithm Ce modèle assigne une valeur à chaque exemple. Cette valeur est sa dis- tance moyenne par rapport à ses k plus proches voisins. 10. Par exemple quand on a un cercle où se qui se trouve dedans appartient à une classe et se qui se trouve dehors appartient à une autre classe. 15 Chapter 5 Systèmes de détection d'intrusion basés sur le machine learning Le machines learning est utilisé pour reconnaitre des attaques dicilement représentables via une simple signature 1 ou pour en découvrir des cachées. Pour cela, il faut d'abord obtenir les données qui permettent d'en détecter une. 5.1 Obtention des données La première étape est l'obtention des données. Lors de la phase d'apprentissage, ces informations permettent de connaître les habitudes des utilisateurs ou les diérents types d'attaques de manière générale. Lors de la phase d'exécution, ils permettent de détecter une attaque. Néanmoins, la question est de savoir s'il existe une mesure de la quantité de données nécessaire pour avoir un modèle correct, c'est-à-dire qui respecte un certain taux d'erreur accepté. Cette question est encore ouverte à ce jour. Toutefois, le choix des informations à prendre en compte dépendra du type d'apprentissage. 5.2 Supervisé ou non supervisé Les apprentissages supervisés utilisent généralement des datasets représentant des attaques connues. Les apprentissages non supervisés se basent uniquement sur les comportements des utilisateurs pour détecter une variation par rapport aux comportements normaux qui représentent une attaque. Selon l'article [11], les algorithmes supervisés 2 réalisent d'excellents résultats 3 pour des intrusions connues , ils sont meilleurs que les algorithmes non supervisés. Inversement, pour des agressions inconnues, les algorithmes supervisés voient une réduction drastique de leur ecacité 4 contrairement aux algorithmes non supervisés 5 . Ceci peut s'expliquer par le fait que, puisque les algorithmes non supervisés ne font que partitionner des données, les attaques leur sont toujours inconnues. En eet, étant donné que ces derniers ne font que regrouper des données proches, ils ne savent pas quand elles représentent une attaque. Bien que les algorithmes supervisés et non supervisés obtiennent des résultats semblables pour des attaques inconnues, les modèles non supervisés sont préférés pour leur robustesse. En eet, ceux-ci ne changent pas drastiquement leur taux de réussite selon que l'intrusion est connue ou non. De plus, ils n'ont pas d'oracle leur disant à quelle classe appartient telle donnée. Ils réalisent solitairement les classes. Ils sont donc plus indépendants que les techniques supervisées qui ont besoin d'un oracle. Leur point fort est la classication d'attaques appartenant à un label inconnu. En eet, on ne doit pas leur présenter l'ensemble des labels. De plus, il est parfois très dur de classier univoquement une information dans une classe. C'est pourquoi cette méthode est parfois préférée pour les IDS. La thèse [15] parle d'une implémentation du modèle SOM sur les IDS. Les résultats de cette thèse sont néanmoins peu encourageants pour ce type de structure. Par ailleurs, les algorithmes 1. Néanmoins, la lecture des signatures sut à comprendre leur fonctionnement contrairement aux techniques de machine learning qui sont souvent considérées comme une boîte noir. 2. Plus précisément les algorithmes non linéaires tels que l'algorithme C4.5 suivit du MLP et enn le SVM. 3. C'est-à-dire des attaques découvertes dans les données d'apprentissage. 4. Le plus robuste des algorithmes supervisés étant le SVM suivit des k plus proches voisins. 5. Plus précisément le gamma-algorithme. 16 supervisés et non supervisés peuvent être combinés pour obtenir un apprentissage semi-supervisé où on utilise les avantages des deux techniques précédentes pour réaliser un IDS. Cependant, une hypothèse sur les IDS supervisés reste à lever. 5.3 Hypothèse Dans le cas des algorithmes supervisés, une hypothèse dicile à respecter lors de l'apprentissage est qu'il n'y a pas d'attaque contenue dans les informations modélisant le comportement normal des programmes qui peuvent pourtant avoir beaucoup d'irrégularités. En eet, dans le cas contraire, on insérerait des propriétés d'une attaque comme comportement normal. Par conséquent, cette dernière ne sera pas détectée. Inversement, comme précisé dans le livre [12], un algorithme non supervisé peut lever cette hypothèse en nettoyant les données pour enlever les informations d'attaque. Pour cela, on recherche un ensemble d'enchaînement, appelé motif, de système call fortement présent dans le système et on les range suivant leur dangerosité d'attaquer le système. Par après, on regarde l'ensemble des séquences des systèmes calls présentes pour les comparer aux motifs découverts précédemment, réalisant ainsi une sorte d'empreinte des diérentes séquences de système calls par rapport aux motifs qu'ils contiennent. Par après, on regarde la distance de toutes les empreintes par rapport à une autre an d'avoir un graphique unique pour l'ensemble. Ceci nous permet de mieux visualiser celles de même nature (qui sont donc très proches les unes des autres) par rapport à celles très diérentes. Ainsi, un espacement très grand entre deux groupes d'empreintes où l'un en contient beaucoup et l'autre très peu permet de supposer que l'un en est une attaque alors que l'autre ne l'est pas. De plus, comme on suppose qu'il y a moins d'empreintes d'attaques que de non-attaques, on retrouve facilement l'ensemble de celles d'attaques. C'est pourquoi on utilise un algorithme non supervisé oine 6 pour détecter les anomalies dans les données. Par après, un algorithme supervisé peut utiliser ces données nettoyées pour concevoir et implémenter le modèle. 5.4 Implémentation Une méthode généralement utilisée, qui est basée sur l'approche comportementale, est la prise d'empreintes des utilisateurs, c'est-à-dire de leur comportement, et de regarder quand elle ne lui correspond pas sur le système. Ainsi, on peut détecter un comportement anormal et donc une attaque éventuelle. Inversement, on peut prendre l'empreinte de certains pirates 7 connus pour les détecter. Cette dernière peut être apprise par le machine learning. Toutefois, une autre méthode, basée sur l'approche par scénario, est l'utilisation de données représentant des attaques. Pour que cela soit réaliste, il faut que l'IDS soit susamment rapide, ecace et exible aux petits changements normaux des utilisateurs, sans toutefois permettre de dévier vers une situation d'attaque. Dans le cas contraire, soit elle ne sera pas détectée soit le nombre de faux positifs pourrait exponentiellement augmenter. De manière globale, on réalise un tel IDS en trois étapes : on modélise tous les comportements normaux de chaque utilisateur ou les signatures des attaques, on le donne au machine learning pour qu'il l'apprenne et ensuite on regarde si le comportement dévie de l'habituel ou s'approche d'une situation oensive. Dans certains cas, il est intéressant de savoir le type de l'attaque et non seulement si elle a eu lieu, comme décrit dans l'article [14]. Pour cela, on peut demander au réseau neuronal de nous donner par exemple [0,0,0] s'il n'y a pas d'attaque, [0,0,1] s'il y a une attaque de type 1, [0,1,0] s'il y a une attaque de type 2 et [1,0,0] s'il y a une attaque de type 3. Si le réseau nous donne [0,1,1] on peut vérier si il y a eu deux attaques simultanées ou si le réseau n'a pas réussi à déterminer correctement ce qui s'est passé. Une dernière implémentation est la gestion d'un grand nombre d'alertes venant des IDS par du machine learning. Ainsi, cette méthode est une sorte de ltre de ces dernières permettant de se focaliser sur les alarmes les plus importantes. En eet, un IDS peut générer un nombre volumineux de fausses alertes, ce qui rend la tâche des administrateurs système impossible. Ceci est donc un complément aux IDS et non un remplacement de ceux-ci. Comme vu précédemment, il existe des NIDS et des HIDS. 6. On utilise un algorithme oine car il est nécessaire d'avoir l'ensemble des informations. 7. Une personne qui a attaqué une entreprise et qui a été détectée aura sûrement envie de refaire une attaque contre la même entreprise. Ainsi, en utilisant son empreinte, on peut le détecter à nouveau sans forcément connaître son but. D'où la nécessité de coopération entre les entreprises pour s'échanger ce genre d'informations. 17 HIDS Pour modéliser le comportement d'un utilisateur, on peut regarder l'ensemble des com- mandes qu'il a utilisées durant une période, comme ce qui a été fait dans l'article [16], ce qui donne un HIDS oine. Cette méthode est justiable puisque la plupart des personnes n'utilisent pas le système dans le même but ni de la même manière. Pour un HIDS semblable mais online, la machine apprend à reconnaître les commandes futures selon les k dernières utilisées. Néanmoins, leur ordre n'est pas révélateur pour savoir si une attaque a lieu ou pas. Il semble plus signicatif de regarder l'ensemble des commandes utilisées durant une période. L'inconvénient majeur est la non-prise en compte des arguments des system calls. Ainsi, il est intéressant de prendre en compte les valeurs de retour, les statuts d'erreur et d'autres arguments pour détecter des attaques. En eet, prenons l'exemple des system calls suivants exécutés par un simple utilisateur : open, read, write. Ces trois systèmes calls peuvent sembler inoensifs puisque c'est une simple ouverture, lecture et écriture dans un chier. Néanmoins, la situation change si on regarde l'argument de ces system calls et que celui-ci est le chier passwd. Une autre méthode analysée dans l'article [7] est l'apprentissage du prol des programmes et non des utilisateurs. Ainsi, la machine apprend le fonctionnement normal des logiciels sur une machine. NIDS Pour ce qui est du NIDS, il est nécessaire de bien comprendre l'ensemble des variables d'un paquet, ainsi que du protocole, pour comprendre le fonctionnement normal du système. 8 Essayons de partitionner les paquets TCP . Pour cela, on peut d'abord voir les attributs qui ne changeront sans doute jamais entre ceux-ci : Version du protocole + les ags réservés. D'autres attributs permettent de les partitionner : adresse source/destination + protocole utilisé. Ces deux propriétés sont généralement utilisées par les rewalls pour ltrer les paquets. Enn, certains attributs pourraient être diérents dans une même partition : taille du header, identicateur, TTL,. . . Ce sont ceux qui sont généralement utilisés pour détecter une anomalie. Selon l'article [12], regarder les valeurs de ces attributs pour déterminer une anomalie n'est pas une bonne manière de faire, ce qui pourrait expliquer les faibles résultats de la thèse [15], détaillés précédemment. Néanmoins, regarder les changements de ces attributs au cours du temps semble être une meilleure manière de faire. Ainsi, on regarde la moyenne de certaines valeurs, le pourcentage d'événements selon la valeur d'un attribut, le pourcentage de paquets ayant telle valeur,. . . Il faut donc s'assurer d'avoir susamment de paquets lors de la phase d'apprentissage pour garantir qu'aucun comportement normal non présent dans ces paquets ne soit oublié. Néanmoins, beaucoup d'attaques connues surpassent cette méthode : 1. Utilisation d'un proxy qui va mapper les ports non légitimes vers des ports légitimes pour que les IDS le considèrent comme un paquet légitime. 2. Modication d'un logiciel qui fonctionnera d'une telle manière pour l'attaquant et d'une autre manière pour le reste des personnes du système. Après avoir obtenu toutes les informations, il faut classier les paquets selon le serveur à qui ils appartiennent. Pour cela, il existe deux manières de faire. La première méthode est d'utiliser un apprentissage supervisé pour pouvoir classier les diérents services proposés grâce à des paquets connus par le système, et par la suite dénir à quel service appartient tel nouveau ux de paquets. Ceci peut être fait avec un arbre de décision. La deuxième méthode est d'utiliser la détection d'anomalies où on dénit le comportement normal de chaque service. Ainsi, avec un nouveau ux de paquets, on détermine si celui-ci est conforme au comportement normal du service. Ceci est très semblable à la méthode qui regarde le comportement normal d'un utilisateur. Pour connaître le service utilisé à tel instant, on peut construire un arbre de décision qui apprendra les attributs des paquets, par exemple : le nombre de paquets avec le ag FIN selon tel service, et qui classiera les nouveaux paquets du réseau. Pour détecter une attaque, on regarde vers où l'arbre de décision nous amène. Si par exemple celui-ci nous dit que c'est un service ftp et qu'on voit que le port utilisé est 80, alors on peut se demander si un nouveau service non autorisé est présent dans le système. Toutefois, toutes ces études ont des problématiques en commun. 8. Transmission Control Protocol 18 5.5 Problématiques des modèles 5.5.1 Non périodicité La non-périodicité de certains phénomènes peut avoir des répercussions problématiques. Prenons l'exemple de la rédaction d'un mémoire. Il y a une période où l'étudiant réalise beaucoup de recherches et une autre période où l'étudiant écrit son mémoire. Durant ces deux phases, c'est toujours le même étudiant qui travaille sur la même machine. Néanmoins, les demandes de ressources ne sont pas égales, ce qui pourrait faire croire au machine learning qu'il y a quelque chose d'inhabituel. Semblablement, une augmentation de fréquentation sur un site web ne signie pas pour autant une attaque contre ce site web. Réaliser un détecteur d'intrusion qui ralentirait cette augmentation aurait une conséquence négative. Pour contrer ce problème, il est conseillé de mélanger un grand nombre de paramètres pour réaliser le prol de l'utilisateur et de donner la possibilité à l'administrateur de considérer si c'est un cas non voulu. 5.5.2 Espacement des attaques Une attaque dicilement visible est une attaque réalisée en un temps très espacé. Pour les contrer, l'article [18] propose d'utiliser un réseau neuronal chaotique qui réalise des comportements non implémentés et permet ainsi au modèle de produire des comportements plus complexes. 5.6 Optimisation Il y a une forte volonté de réduire le temps d'apprentissage pour pouvoir mettre en ÷uvre une solution commerciale. L'article [6] propose une manière de réduire le temps d'apprentissage ainsi que la taille de la structure. Pour être encore plus performant, on peut dénir la structure de l'ensemble des réseaux neuronaux utilisés dans l'IDS. En voici quelques unes 9 : 1. Une première boîte contenant un ltre d'information suivie par une autre contenant le réseau neuronal. 2. Une première boîte contenant un ltre d'information suivie par n boites de réseaux neuronaux suivies par une dernière qui va jouer le rôle d'arbitre en déterminant ce qui se passe sur le réseau selon les informations reçues par les n boîtes de réseaux neuronaux. Chacune d'entre elles reconnaît un type d'attaque (DOS, U2R, R2L, scan,. . . ). Ceci est aussi appelé la méthode Boosting. 3. Trois premières boîtes suivies d'une dernière. L'entraînement se fait ainsi : (a) On entraîne la première boîte avec un certain nombre d'informations. (b) On prend au hasard des nouvelles informations et on entraîne une deuxième. (c) On prend des nouvelles informations et on regarde la réaction des deux premières. Si ces deux boîtes ne convergent pas vers la même idée, on prend cette information et on la met comme entraînement pour la troisième. La dernière boîte va jouer le rôle d'arbitre. Ceci est aussi appelé la méthode Bagging. 5.7 Outils Un ensemble d'outils est disponible pour l'implémentation de techniques de machine learning pour des IDS. Nous pouvons citer : MATLAB Neural Network Toolbox, WEKA[O1], Torch[O2], Joone[O3], FANN[O4], NeuroDimension[O5] et DynNet[O6]. Néanmoins, le choix de l'outil s'est porté sur le langage R. En eet, celui-ci semble être susamment performant pour réaliser l'ensemble des structures qui pourraient être utile pour un IDS. De plus, ce dernier est communément accepté par la communauté scientique de machine learning. 9. Des tests ont étés réalisés pour déterminer la meilleure structure. Ces tests sont disponibles sur [8] 19 Chapter 6 DataSets Depuis plusieurs années, des groupes de recherche ont créé des datasets pour des IDS. Ces collections permettent de procurer des données d'apprentissage et des tests aux diérents modèles de machine learning. De plus, ils orent la possibilité de comparer la performance de plusieurs IDS sur une même collection de données. Ces datasets représentent des informations du système regroupées ensemble. Ces données sont obtenues soit par des simulateurs, soit par des systèmes réels. Néanmoins, dans ce dernier cas, puisqu'elles peuvent représenter des informations privées, 1 il est beaucoup plus complexe de les obtenir . C'est pourquoi on utilise des générateurs de tracs où on essaye d'avoir un comportement semblable à celui d'un système réel en collectant des données statistiques sur de véritables réseaux. Le portail KDnuggets[D1] met entre autre à disposition des datasets. Néanmoins, il en existe d'autres. DARPA Les datasets de DARPA[D2] sont probablement les plus largement utilisés et ont été développés au MIT Lincoln Labs. Leur dataset de 1999 contient des données d'entraînement et de tests faits en cinq semaines représentant une simulation du réseau de l'Air Force contenant des machines telles que Linux, Solaris et Sun OS. Les données d'entraînement sont divisées en une dataset de trois semaines. La première et la dernière semaine, contrairement à la deuxième, ne contiennent aucune attaque. Ceci a été réalisé pour faciliter l'entraînement des IDS basés sur la détection d'anomalies. Les données de tests sont regroupées dans celles des deux dernières semaines. Ils ont 201 cas avec 56 types d'attaques à détecter dont certains sont non présentes dans les données d'entraînement. Ces types peuvent être classiés dans 5 catégories : Denial of 2 3 Service (DOS), Remote to Local (R2L), User to Root (U2R), Surveillance or Probe 4 et Data 5 Compromise . Le dataset est divisée en sept parties où chacune d'entre elle provient d'un senseur. D'autres informations sont disponibles sur le site ociel. KDD'99 Le dataset de KDD'99 [D3] contient des descriptions de connexions TCP, incluant 41 paramètres par connexion basés sur le dataset DARPA 1998. Une connexion représente un ensemble de paquets passant d'une machine à une autre utilisant le même protocole. Ces données incluent des connexions normales et aussi des attaques de 23 types appartenant à 4 classes : DOS , U2R , R2L et Surveillance or Probe . L'article [10] réalise une recherche pour détecter quel paramètre est utile pour détecter chaque attaque. Machine Learning Repository Un ensemble de datasets[D4] maintenu par le département de l'information et de la science informatique à l'université de Californie. Masquerading User Data Ce Dataset[D5] a été utilisé pour l'apprentissage non supervisé par son auteur. Il contient un ensemble de commandes d'utilisateurs normaux ou malveillants. Les utilisateurs sont représentés chacun par un chier qui comprend une liste de 15000 commandes où les 5000 premières sont normales alors que le reste peut être exécuté par un attaquant. 1. Toutefois, pour tester un modèle, il ne sut pas de le tester sur des simulateurs mais aussi sur des systèmes réels. 2. accès non autorisé du système à distance 3. accès root non autorisé, venant par exemple d'un buer overow 4. analyse de la topologie du réseau 5. accès ou modication non autorisés à des données 20 Chapter 7 Conclusion Cette état de l'art des IDS utilisant les techniques de machine learning a permis d'avoir une vue globale de ce qui se fait de nos jours dans ce domaine. L'étape suivante est d'essayer d'améliorer 1 les systèmes de détection d'intrusion actuels basés sur du machine learning. Le choix du modèle et de ses paramètres dépendra essentiellement du résultat voulu, en particulier du fait que l'IDS soit un NIDS, un HIDS, online, oine, comportemental, etc. Travaux futurs Les IDS comportementaux basés sur des techniques de machine learning non supervisés ont un avantage certain puisqu'ils n'ont pas besoin de connaître l'ensemble des attaques pour en détecter une. Ils s'adaptent donc à l'evolution des attaques. De plus, les HIDS ne sont pas limités par le chirement des paquets contrairement au NIDS. L'ensemble de ces raisons ont motivé la volonté de se focaliser sur ce type d'IDS. Pour cela, plusieurs possibilités pourraient être envisagées telles que la comparaison entre des données réelles et générées ou le choix de nouvelles variables basées sur les techniques de feature selection, de nouveaux modèles ou de nouvelles structures non encore utilisées. L'ensemble du modèle sera implémenté en language R. Enn, pour tester les résultats, des comparaisons avec des modèles actuels pourraient être envisagées grâce à l'utilisation de datasets. 1. C'est-à-dire de réduire le nombre des faux positifs et des faux négatifs. 21 Bibliographie [1] J. Allen & A. Christie & W. Fithen & J. McHugh & J. Pickel & E. Stoner (2000), State of the Practice of Intrusion Detection Technologies , Networked Systems Survivability Program, Carnegie Mellon, Software Engineering Institute, Pittsburgh. [2] A. Bivens & C. Palagiri & R. Smith & B. Szymanski & M. Embrechts (2002), Network- Based Intrusion Detection using Neural Networks , ASME Press, vol. 12, pp. 579-584, New York. [3] G. Bontempi (2009), Statistical foundations of machine learning , Machine Learning Group, Computer Science Department, Université Libre de Bruxelles, Belgium. [4] D. Burgermeister & J. Krier (2006), Les systèmes de détection d'intrusion , www.developpez.com. [5] J. Cardinal (2009), Cours de Structures de données et algorithmes , Computer Science Department, Université Libre de Bruxelles, Belgium. [6] R-I. Chang & W-D. Su & J-C. Wang & J-S. Kouh (2007), Intrusion Detection by Back- propagation Neural Networks with Sample-Query and Attribute-Query , vol. 3, No. 1, pp. 6-10, National Taiwan University, Taiwan. [7] K. Ghosh & A. Schwartzbard & M. Schatz (1999), Learning Program Behavior Proles for Intrusion Detection , The USENIX Association, Reliable Software Technologies Corporation, Santa Clara, California, USA. [8] V. Golovko, P. Kachurka, L. Vaitsekhovich (2007), Neural Network Ensembles for Intrusion Detection , pp. 578-583, Belarus. [9] S. Hofmeyr & S. Forrest (2000), Architecture for an Articial Immune System. . pp. 12891296, Evolutionary Computation 7(1), Morgan-Kaufmann, San Francisco, CA, USA. [10] H-G. Kayacik & A-N. Zincir-Heywood & M. I. Heywood (2005), Selecting Features for In- trusion Detection: A Feature Relevance Analysis on KDD 99 Intrusion Detection Datasets , Proceedings of the Third Annual Conference on Privacy, Security and Trust (PST-2005), Dalhousie University, Faculty of Computer Science, Canada. [11] P. Laskov & P. Düssel & C. Schäfer & K. Rieck (2005), Learning intrusion detection : Supervised or unsupervised ? , Fraunhofer-FIRST.IDA, Berlin,Germany. [12] Marcus A. Maloof (2005), Machine Learning and Data Mining for Computer Security , Springer London Ltd, ISBN-10 184628029X ; ISBN-13 978-1846280290. [13] O. Markowitch (2009), Cours de Cryptologie distribuée et protocoles , Computer Science Department, Université Libre de Bruxelles, Belgium. [14] M. Moradi & M. Zulkernine (2004), A Neural Network Based System for Intrusion Detec- tion and Classication of Attacks , University of British Columbia, Canada. [15] A. Öksüz (2007), Unsupervised Intrusion Detection System , Technical University of Denmark, Informatics and Mathematical Modelling, Denmark. [16] J. Ryan & M-J. Lin (1998), Intrusion Detection with Neural Networks , Risto Miikkulainen, Department of Computer Science, The University of Texas, Austin, USA. [17] G. Vert & D-A. Frinke & J-C. McConnell (1998), A Visual Mathematical Model for In- trusion Detection , Center for Secure and Dependable Software, Departement of Computer Science, University of Idaho, Moscow. [18] Y. Yu & G. Fu-xiang & Y. Ge (2004), Hybrid BP/CNN Neural Network for Intrusion Detection , vol. 85, pp. 226-228,Northeastern University, China. [N1] ( May 11, 1999 ) White House Shuts down Web Site , cnet.com 22 [N2] ( October 7, 1999 ) Cyber-theft of Sensitive U.S. Files Traced to Russia ,Chicago SunTimes. [N3] ( June 11, 2007 ) L'Estonie dénonce les cyber-attaques terroristes russes , 01net.com [N4] ( March 29, 2009 ) La Chine inltrerait des ordinateurs, dont ceux du dalaï lama , AFP [N5] (May 22, 2009) Les Etats-Unis renforcent leur défense contre les cyberattaques , lemonde.fr [L1] http://www.ossec.net [L2] http://www.bro-ids.org [L3] http://www2.imm.dtu.dk/IDSnet [L4] http://www.snort.org [L5] http://www.prelude-ids.com [D1] http://www.kdnuggets.com [D2] http://www.ll.mit.edu/mission/communications/ist/corpora/ideval/data/index.html [D3] http://kdd.ics.uci.edu/databases/kddcup99/kddcup99.html [D4] http ://www.ics.uci.edu/~mlearn/MLRepository.html [D5] http ://www.schonlau.net [O1] http://www.cs.waikato.ac.nz/ml/weka [O2] http://www.torch.ch [O3] http://www.jooneworld.com [O4] http://leenissen.dk/fann [O5] http://www.nd.com [O6] http://ginnet.gforge.inria.fr/index_fr.php 23