Système de détection d'intrusion

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

Un système de détection d'intrusion (ou IDS: Intrusion Detection System) est un mécanisme destiné à repérer des activités anormales ou suspectes sur la cible analysée (un réseau ou un hôte). Il permet ainsi d'avoir une connaissance sur les tentatives réussies comme échouées des intrusions.

Les familles de systèmes de détection d'intrusion[modifier | modifier le code]

Il existe trois grandes familles distinctes d’IDS :

  • Les NIDS (Network Based Intrusion Detection System), qui surveillent l'état de la sécurité au niveau du réseau.
  • Les HIDS (HostBased Intrusion Detection System), qui surveillent l'état de la sécurité au niveau des hôtes.
  • Les IDS hybrides, qui utilisent les NIDS et HIDS pour avoir des alertes plus pertinentes.

Les HIDS sont particulièrement efficaces pour déterminer si un hôte est contaminé et les NIDS permettent de surveiller l’ensemble d’un réseau contrairement à un HIDS qui est restreint à un hôte.

NIDS (IDS réseau)[modifier | modifier le code]

Introduction[modifier | modifier le code]

Nids.png

Un NIDS se découpe en trois grandes parties : La capture, les signatures et les alertes.

Capture[modifier | modifier le code]

La capture sert à la récupération de trafic réseau. En général cela se fait en temps réel, bien que certains NIDS permettent l'analyse de trafic capturé précédemment.

La plupart des NIDS utilisent la bibliothèque standard de capture de paquets libpcap. La bibliothèque de capture de paquets Packet Capture Library est portée sur quasiment toutes les plates-formes, ce qui permet en général aux IDS réseau de suivre.

Le fonctionnement de la capture d'un NIDS est donc en général fortement lié à cette libpcap. Son mode de fonctionnement est de copier (sous Linux) tout paquet arrivant au niveau de la couche liaison de données du système d'exploitation. Une fois ce paquet copié, il lui est appliqué un filtre BPF (Berkley Packet Filter), correspondant à l'affinage de ce que l'IDS cherche à récupérer comme information.

Il se peut que certains paquets soient ignorés car sous une forte charge, le système d'exploitation ne le copiera pas.

Le comportement de la libpcap est différent dans le monde BSD, puisqu'il lui attache le fichier périphérique /dev/bpf, permettant ainsi aux NIDS de ne pas avoir besoin des droits super utilisateur pour capturer le trafic mais simplement de pouvoir lire sur ce fichier sur lequel les filtres sont directement compilés.

Aussi, le trafic analysé n'est pas forcément égal à celui du trafic entrant, étant donné que la libpcap agit à une couche en dessous du pare-feu (qui agit au niveau réseau).

Signatures[modifier | modifier le code]

Les bibliothèques de signatures (approche par scénario) rendent la démarche d'analyse similaire à celle des antivirus quand ceux-ci s'appuient sur des signatures d'attaques. Ainsi, le NIDS est efficace s'il connaît l'attaque, mais inefficace dans le cas contraire. Les outils commerciaux ou libres ont évolué pour proposer une personnalisation de la signature afin de faire face à des attaques dont on ne connaît qu'une partie des éléments. Les outils à base de signatures requièrent des mises à jour très régulières.

Les NIDS ont pour avantage d'être des systèmes temps réel et ont la possibilité de découvrir des attaques ciblant plusieurs machines à la fois. Leurs inconvénients sont le taux élevé de faux positifs qu'ils génèrent, le fait que les signatures aient toujours du retard sur les attaques de type 0day et qu'ils peuvent être la cible d'une attaque.

Alertes[modifier | modifier le code]

Les alertes sont généralement stockées dans les journaux du système. Cependant il existe une norme qui permet d'en formaliser le contenu, afin de permettre à différents éléments de sécurité d'interopérer. Ce format s'appelle IDMEF (pour Intrusion Detection Message Exchange Format) décrit dans la RFC 4765[1]. IDMEF est popularisé par le projet Prelude, qui offre une infrastructure permettant aux IDS de ne pas avoir à s'occuper de l'envoi des alertes. Cela permet aux IDS de n'avoir qu'à décrire les informations qu'il connaît et Prelude se charge de le stocker pour permettre une visualisation humaine ultérieurement.

La recherche de motif (pattern matching)[modifier | modifier le code]

La recherche de motif est ce qui permet à un NIDS de trouver le plus rapidement possible les informations dans un paquet réseau. Il existe différents algorithmes de recherche de motif. Il y a ceux qui sont conçus pour renvoyer des négatifs le plus rapidement possible comme E2xB, d'autres comme Boyer-Moore (BM) qui sont intéressants lorsqu'il y a peu d'informations stockées en mémoire. Il est convenu que BM est plus efficace que les autres quand il y a moins de 100 signatures. Il existe aussi des extensions à Boyer-Moore qui s'affranchissent de ces restrictions. Ou encore des algorithmes qui sont plus précis et donc plus intéressants dans le cas des NIDS comme Knuth-Morris-Pratt (KMP).

Dans le cas d'un NIDS, la recherche de motif est souvent le nœud d'étranglement, pouvant consommer plus de quatre-vingt pourcent de temps de calcul.

E2xb a été spécialement conçu pour répondre aux besoins des NIDS. Il s'agit d'un algorithme de recherche de motif de domaine spécifique à la détection d'intrusion. C'est un algorithme d'exclusion car il part du principe que la plupart des paquets réseau ne correspondent pas à une signature qui identifie une tentative d'intrusion.

Analyse[modifier | modifier le code]

À partir des éléments donnés dans l'introduction, le moteur d'analyse met ces éléments de relation en employant plusieurs techniques : la refragmentation, la dissection protocolaire ou encore l'analyse comportementale.

La défragmentation[modifier | modifier le code]

Les paquets dépassant une certaine taille (qui en général est de 1 500 octets) sont fragmentés. La fragmentation de l'en-tête de la couche transport étant aussi possible, cela rendait les NIDS vulnérables aux attaques de Stick et de Snot car les paquets fragmentés n'étaient pas analysés.

Les NIDS ont le devoir de défragmenter les paquets avant analyse, afin de ne pas manquer une attaque. Il s'agit d'une opération relativement complexe, étant donné que chaque hôte de destination ne défragmente pas de la même façon, selon le système d'exploitation sur lequel l'attaque est visée. Il s'agit encore d'une technique d'évasion utilisable aujourd'hui car les NIDS ne sont pas forcément configurés correctement pour gérer un cas précis.

La dissection[modifier | modifier le code]

La dissection permet de comprendre un protocole donné, de le décoder pour l'analyser. Il s'agit de la partie la plus sensible des NIDS car c'est elle qui est le plus grand vecteur d'attaques.

Cependant, la dissection est essentielle sur certains protocoles, comme RPC, afin de pouvoir détecter des attaques qui seraient invisibles sans cette indispensable dissection. Cette étape permet aussi de récupérer un champ précis d'un protocole applicatif ce qui peut simplifier l'écriture de signatures.

Dans l'exemple de HTTP, le serveur IIS de Microsoft interprète indifféremment le caractère '/' (slash) comme le caractère '\' (backslash). Ce qui a pour conséquence de permettre à un attaquant l'évasion de signature, si celle-ci cherche à repérer un '/', comme dans le cas d'une traversée de répertoires (../../../../). Une NIDS moderne se doit d'être capable d'interpréter l'un ou l'autre et se spécialiser sur la cible qui interprétera les données finales. Cet exemple avec les caractères '/' vaut aussi pour les caractères qui peuvent être encodés en UTF-8, voire dans d'autres jeux de caractères que le logiciel finira par interpréter correctement, y compris l'attaque.

HIDS (IDS machine)[modifier | modifier le code]

Les HIDS, pour Host based IDS, signifiant "Système de détection d'intrusion machine" sont des IDS dédiés à un matériel ou système d'exploitation. Généralement, contrairement a un NIDS, le HIDS récupère les informations qui lui sont données par le matériel ou le système d'exploitation. Il y a pour cela plusieurs approches : signatures, comportement (statistiques) ou délimitation du périmètre avec un système d'ACL. Un HIDS se comporte comme un daemon ou un service standard sur un système hôte qui détecte une activité suspecte en s’appuyant sur une norme. Si les activités s’éloignent de la norme, une alerte est générée. La machine peut être surveillée sur plusieurs points :

  • Activité de la machine : nombre et listes de processus ainsi que d'utilisateurs, ressources consommées, ...
  • Activité de l'utilisateur : horaires et durée des connexions, commandes utilisées, messages envoyés, programmes activés, dépassement du périmètre défini...
  • Activité malicieuse d'un ver, virus ou cheval de Troie

Un autre type d'HIDS cherche les intrusions dans le « noyau » (kernel) du système, et les modifications qui y sont apportées. Certains appellent cette technique « analyse protocolaire ». Très rapide, elle ne nécessite pas de recherche dans une base de signature. Exemples de contrôles pour Windows ...

  • EPROCESS (structure de données en mode noyau contenant des informations qui peuvent permettre de cacher un processus),
  • Les processus fonctionnant en mode « noyau »
  • Les fonctions logicielles système ou de gestion de périphérique présentes dans l'ordinateur.
  • La SSDT (System Service Dispatch Table) table utilisée par Windows pour diriger des appels de système vers un traitement approprié : table d'adressage des interruptions.
  • etc.

Le HIDS a pour avantage de n'avoir que peu de faux positifs, permettant d'avoir des alertes pertinentes. Quant à ses inconvénients il faut configurer un HIDS par poste et demande une configuration de chaque système.

IDS hybride[modifier | modifier le code]

Ids hybride.png

Les IDS hybrides sont basés sur une architecture distribuée, où chaque composant unifie son format d'envoi d'alerte (typiquement IDMEF) permettant à des composants divers de communiquer et d'extraire des alertes plus pertinentes.

Les avantages des IDS hybrides sont multiples :

  • Moins de faux positifs
  • Meilleure corrélation
  • Possibilité de réaction sur les analyseurs

La corrélation[modifier | modifier le code]

La corrélation est une connexion entre deux ou plusieurs éléments, dont un de ces éléments crée ou influence un autre. Elle se traduit plus généralement par la transformation d'une ou plusieurs alertes en attaque. Cela permet de faciliter la compréhension sur les attaques au lieu de s'éparpiller parmi les alertes.

Idéalement, elle nécessite un IDS Hybride car plus il y a d'informations hétérogènes sur un événement, plus la corrélation se fait d'une façon pertinente. Les formats ayant été normalisés (IDMEF), il ne reste plus qu'à faire des associations afin de détecter des alertes qui n'auraient jamais eu lieu sur un analyseur seul.

Si l'on prend l'exemple d'une authentification échouée, cela génère une alerte de faible intensité. Mais s'il y a une série d'authentifications échouées avec des utilisateurs différents, on peut conclure à une attaque de force brute.

La corrélation permet de générer de nouvelles alertes à partir de celles existantes. C'est une étape préalable à une contre-mesure efficace.

Il y a diverses façons de faire de la corrélation. Cependant on peut définir deux catégories :

  • La corrélation passive, correspondant à une génération d'alerte basée sur celles existantes. Nous pouvons prendre par exemple les scans de force brute ssh.
  • La corrélation active, qui va chercher les informations correspondant à des alertes émises. Par exemple, lorsqu'une personne se connecte en dehors des heures de travail, cela a un impact élevé qui n'aurait pas été en temps normal d'activité.

L'harmonisation des formats[modifier | modifier le code]

Le format IDMEF (Intrusion Detection Message Exchange Format) décrit une alerte de façon objet et exhaustive. Une alerte est le message qui est émis depuis un analyseur, qui est une sonde en langage IDMEF, vers un collecteur. Le but d'IDMEF est de proposer un standard permettant d'avoir une communication hétérogène quel que soit l'environnement ou les capacités d'un analyseur donné.

Ces alertes sont définies au format XML, offrant une possibilité de validation de chaque message. En général, les implémentations restent binaires, afin d'éviter les problèmes connus d'ajout d'information inutiles en dehors d'XML lorsque l'on envoie un message sur le réseau.

IDMEF offre aussi un vocabulaire précis, qu'il est courant d'utiliser dans le domaine de la détection d'intrusions. Par exemple, une classification correspond au nom d'un alerte; Un impact celui d'un niveau d'attaque.

La contre-mesure[modifier | modifier le code]

Contremesure.png

La contre-mesure est l'art de piloter les éléments réseau ou la machine cible, afin d'empêcher une attaque de se propager (Islanding) ou de perdurer. Il s'agit d'une procédure assez compliquée et souvent désactivée.

Ce qui rend la contre-mesure difficile est la définition d'une attaque d'un point de vue formel. Il n'est pas possible de se baser sur des éléments qui génèrent des faux positifs. Et cela peut aussi engendrer un autre problème où l'attaquant se fait passer pour un client du réseau en générant des motifs d'attaque. Cela peut même bloquer le réseau interne si la contre-mesure est mal configurée.

Un système de contre-mesure se configure en général avec une liste blanche, dans laquelle sont mises les IP du réseau interne.

Liste des IDS connus[modifier | modifier le code]

IDS réseau (NIDS)[modifier | modifier le code]

IDS système (HIDS)[modifier | modifier le code]

Ces IDS servent, entre autres, à vérifier qu'un système n'a pas été compromis (par un rootkit par exemple). Ils utilisent des sommes de contrôle (MD5, SHA-1, …) des programmes exécutables pour s'assurer qu'ils n'ont pas été modifiés.

IDS hybride[modifier | modifier le code]

Notes et références[modifier | modifier le code]

Bibliographie[modifier | modifier le code]

  • Thierry Evangelista, Les IDS. Les systèmes de détection d'intrusions informatiques, Dunod/01 Informatique

Voir aussi[modifier | modifier le code]

Liens externes[modifier | modifier le code]