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.
Il existe trois grandes familles distinctes d’IDS :
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.
Un NIDS se découpe en trois grandes parties : La capture, les signatures et les alertes.
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 paquet libpcap. La bibliothèque de capture de paquets Packet Capture Library est portée sur quasiment toutes les plateformes, 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, l'OS 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).
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.
Les alertes sont généralement stockées dans le syslog. 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 RFC4765. 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 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 extension à 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.
Exact string matching algorithms
À 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.
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 refragmenter 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 refragmente pas de la même facon, 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 permet de comprendre un protocole donné, de le décoder pour l'analyser. Il s'agit de la partie la plus sensibles 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 être capable d'interpréter l'un ou l'autre et se spécialiser sur la cible qui interpretera les données finales. Cet exemples avec les caractère '/' 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 interpretter correctement, y compris l'attaque.
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 :
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 ...
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.
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 :