Système de détection d'intrusion
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
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)
Introduction
Un NIDS se découpe en trois grandes parties : La capture, les signatures et les alertes.
Capture
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 (Berkeley 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
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
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)
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
À partir des éléments donnés dans l'introduction, le moteur d'analyse met ces éléments de relation en employant plusieurs techniques : la défragmentation, la dissection protocolaire ou encore l'analyse comportementale.
La défragmentation
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
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)
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 à 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
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
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
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
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
IDS réseau (NIDS)
- Snort
- Bro
- Enterasys
- Check Point
- Tipping point
- AIDA(Adaptive Intrusion Detection)
- Gatewatcher
IDS système (HIDS)
- AIDE
- Chkrootkit
- DarkSpy
- FCheck
- IceSword (fr)
- Integrit
- Nabou
- OSSEC
- Osiris
- Prelude LML
- Rkhunter
- Rootkit Unhooker
- Samhain
- Tripwire
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
- Prelude
- OSSIM (en)
Notes et références
- ↑ (en) Request for comments no 4765.
Bibliographie
- Thierry Evangelista, Les IDS. Les systèmes de détection d'intrusions informatiques, Dunod/01 Informatique
Voir aussi
- Système de prévention d'intrusion (aussi appelé IPS)
Liens externes
- (fr) Cours de l'Université de Marne-la-Vallée
- (fr) IDS, IPS, DLP : il faut l'autorisation de la CNIL Une explication sur les obligations juridiques liées à la mise en place de systèmes de détection d'intrusion.
- Portail de la sécurité informatique