# Système de détection d'intrusion

En sécurité informatique, 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 deux grandes catégories d'IDS, les plus connues sont les détections par signatures (reconnaissance de programme malveillant) et les détections par anomalies (détecter les écarts par rapport à un modèle représentant les bons comportements, cela est souvent associé a de l'apprentissage automatique). Il est aussi possible de classifier les IDS selon la cible qu'ils vont surveiller, les plus communs sont les systèmes de détection d'intrusion réseau et les systèmes de détection d'intrusion hôte.
Certains IDS ont la possibilité de répondre aux menaces qu'ils ont détectées, ces IDS avec capacité de réponse sont des systèmes de prévention d'intrusion.

## Description générale

Les systèmes de détection d’intrusion sont des outils ayant pour objectifs de détecter des activités malicieuses sur la cible qu'ils surveillent. Une alerte sera déclenchée dès lors qu’un comportement malicieux est détecté. Les systèmes de détection d'intrusion sont utilisés en plus des solutions traditionnelles telles que les pare-feux, pour détecter différents types d'utilisation malicieuse de leur cible qui ne peuvent être détectée par ces dernières. Pour cela, de nombreux paramètres doivent être pris en compte selon ce que l’on cherche à surveiller. En effet, le système de détection d'intrusion ne se placera pas au même endroit dans l’architecture réseau. Celui-ci peut être placé en coupure du réseau, ou sur un hôte. De plus, la temporalité de l’analyse est un paramètre important, celui-ci peut produire son analyse en temps réel ou a posteriori.
Les systèmes de détection d'intrusion vont se baser sur l'écriture de règles de filtrage écrites par les utilisateurs pour effectuer leurs analyses. Par exemple, pour le système de détection d'intrusion Snort, les règles de filtrages seront composées des éléments suivants :
* l'action (alert, log, pass, activate, dynamic) déterminant le comportement à adopter en cas de détection d'intrusion ;
* le protocole à filtrer ;
* les adresses IP source et destination ;
* les numéros de ports ;
* la direction du trafic (->, <- ou <>), s'il est entrant, sortant ou bidirectionnel ;
* les options (motifs dans le paquet, en-tête, flag, taille, etc.).
Voici un exemple d'une règle Snort qui déclenche une alerte dès qu'un paquet TCP est reçu par l'adresse 10.1.1.0/24 sur le port 80 s'écrira comme suit :

## Méthodologie de détection

Les systèmes de détection d'intrusion sont généralement classifiés en deux catégories, les systèmes de détection d'intrusion par signatures et les systèmes de détection d'intrusion par anomalies.

### Systèmes de détection d'intrusion par signatures

Les systèmes de détection d'intrusion par signature (ou SIDS : Signature-based Intrusion Detection System), reposent sur des bibliothèques de description des attaques (appelées signatures). Au cours de l’analyse du flux réseau, le système de détection d'intrusion analysera chaque événement et une alerte sera émise dès lors qu’une signature sera detectée. Cette signature peut référencer un seul paquet, ou un ensemble (dans le cas d'une attaque par déni de service par exemple). Cette méthodologie de détection se révèle être efficace uniquement si la base de signatures est maintenue à jour de manière régulière$^,$. Dans ce cas, la détection par signatures produit peu de faux-positifs$^,$$^,$. Cependant, une bonne connaissance des différentes attaques est nécessaire pour les décrire dans la base de signature. Dans le cas d'attaques inconnues de la base, ce modèle de détection s'avérera inefficace et ne générera donc pas d’alertes. La base de signature est donc très dépendante de l’environnement (système d’exploitation, version, applications déployées, …).
Plusieurs implémentations existent pour effectuer une détection par signature, parmi celles-ci, nous pouvons trouver :
* Les arbres de décision, les règles de filtrage sont représentées sous forme d'arbre de décisions où chaque feuille de l'arbre correspondra à une règle.
* Les système de transition d'états, les intrusions sont décrites comme des scénarios, représentés eux-mêmes comme une séquence de transitions qui caractérisent l'évolution des états du système$^,$.

### Systèmes de détection d'intrusion par anomalies

Contrairement aux SIDS, les systèmes de détection d'intrusion par anomalies (ou AIDS : Anomaly-based Intrusion Detection System) ne se reposent pas sur des bibliothèques de description des attaques. Ils vont se charger de détecter des comportements anormaux lors de l'analyse du flux réseau. Pour cela, le système va reposer sur deux phases:
* Une phase d'apprentissage, au cours de laquelle ce dernier va étudier des comportements normaux de flux réseau.
* Une phase de détection, le système analyse le trafic et va chercher à identifier les événements anormaux en se basant sur ses connaissances.
Cette méthode de détection repose sur de nombreuses techniques d'apprentissage supervisé, telles que :
* Les réseaux de neurones artificiels
* Le modèle de Markov caché
* Les machines à vecteurs de support$^,$
En 2019, la détection d'intrusion par anomalies est reconnue par la communauté comme étant très efficace. En effet, selon les méthodes d'apprentissage implémentées, l'exactitude des résultats peut rapidement atteindre plus de 90% de détection$^,$$^,$.

### Hybride

Cette méthodologie de détection consiste à reposer à la fois sur un système de détection par signatures et sur un système de détection par anomalies. Pour cela, les deux modules de détection, en plus de déclencher des alertes si une intrusion est détectée, peuvent communiquer leurs résultats d'analyse à un système de décision qui pourra lui-même déclencher des alertes grâce à la corrélation des résultats remontés par les deux modules.
L'avantage de cette méthodologie de détection est la combinaison du faible taux de faux-positifs générés par les systèmes de détection d'intrusion par signature, tout en possédant la capacité de détecter des attaques inconnues dans la base de signature grâce à la détection par anomalie.

### L'analyse des protocoles

Les systèmes de détection d'intrusion peuvent également reposer sur l'analyse des protocoles. Cette analyse (appelée en anglais SPA : Stateful Protocol Analysis) a pour objectif de s'assurer du fonctionnement normal d'un protocole (par exemple de transport ou d' application)$^,$. Celle-ci repose sur des modèles définis, par exemple par des normes RFC. Ces normes n'étant pas exhaustives, cela peut entraîner des variations dans les implémentations. De plus, les éditeurs de logiciels peuvent rajouter des fonctionnalités propriétaires, ce qui a pour conséquence que les modèles pour ces analyses doivent être régulièrement mis à jour afin de refléter ces variations d'implémentation.
Cette méthode d'analyse a pour principal inconvénient que les attaques ne violant pas les caractéristiques du protocole, comme une attaque par déni de service, ne seront pas détectées.

### Temporalité de détection

Il existe deux types de temporalité dans les systèmes de détection d'intrusion. La détection en temps réel (système temps réel), et la détection post-mortem (analyse forensique). Le plus souvent, l'objectif est de remonter les alertes d'intrusion le plus rapidement possible à l'administrateur système. La détection en temps réel sera donc privilégiée. Cette temporalité de détection présente des défis de conception pour s'assurer que le système puisse analyser le flux de données aussi rapidement qu'il est généré. Cependant, il est aussi envisageable d'utiliser un système de détection d'intrusion dans le cadre d'analyse post-mortem. Dans ce cas, ce dernier permettra de comprendre le mécanisme d'attaque pour aider à réparer les dommages subis et réduire le risque qu'une attaque du même genre se reproduise.

### Corrélation des alertes

La corrélation des alertes a pour objectif de produire un rapport de sécurité de la cible surveillée (un réseau par exemple). Ce rapport sera basé sur l’ensemble des alertes produites par les différentes sondes de détection d’intrusion disséminées sur l’infrastructure. Pour cela, il est nécessaire de différencier deux composants :
* les sondes : chargées de récupérer les données depuis les sources concernant leurs cibles (fichiers de logs, paquets réseaux …) et de générer, si nécessaire, des alertes ;
* les composants d’agrégation et de corrélation : chargés de récolter les données des sondes et des autres composants d’agrégation et de corrélation afin de les corréler et produire le rapport de sécurité transmis à l’administrateur.
Les corrélations peuvent être décrites en deux types :
* les corrélations explicites : ces corrélations sont utilisées lorsque l'administrateur peut exprimer une connexion entre des événements connus ;
* les corrélations implicites : celles-ci sont utilisées lorsque les données ont des relations entre elles et que des opérations sont nécessaires pour mettre en valeur certains événements.
Pour rendre la corrélation plus efficace, le format de données IDMEF définit un format et une procédure de partage des données spécifique aux systèmes de détection d'intrusion.

## Familles de systèmes de détection d’intrusion

En fonction des données qu'ils traiteront, les systèmes de détection d'intrusion peuvent être considérés comme ou étant des systèmes de détection d'intrusion hôtes (analysant les événements au niveau du système d'exploitation), ou réseaux (analysant les événements propres au trafic réseau).

### Systèmes de détection d'intrusion réseaux

Les systèmes de détection d'intrusion réseaux (ou NIDS : Network Intrusion Detection System) sont les IDS les plus répandus. Ce sont des outils très utiles pour l'administrateur réseaux qui va pouvoir, en temps réel, comprendre ce qui se passe sur son réseau et prendre des décisions en ayant toutes les informations.
Ils peuvent être placés à divers endroits sur le réseau, en amont ou en aval d'un pare feu ou encore sur chaque hôte, comme un anti virus. Ces IDS vont analyser tout le trafic entrant et sortant du réseau afin d'y déceler des attaques. Cependant, un NIDS placé sur chaque hôte ne saura pas détecter toutes les attaques possibles comme les attaques par déni de service (DDoS) car il ne verra pas tout le trafic réseau, mais que celui qui arrive à l'hôte final.
Quand un NIDS est positionné en amont d'un pare feu (Fig 1), il pourra alors générer des alertes pour le pare feu qui va pouvoir filtrer le réseau. Placé en aval du pare feu (Fig 2), le NIDS produira moins de faux positifs, car le trafic réseau qu'il analysera aura déjà été filtré par le pare feu.
Avec l'arrivée du Cloud computing, le positionnement des sondes dans le réseau devient stratégique. En effet, n'importe qui peut louer une machine chez un hébergeur et attaquer une autre machine louée par quelqu'un d'autre chez le même hébergeur. On parlera alors d'attaque interne. Dans ce type d'attaque, les solutions disposées en bordure du réseau ne détecteront pas ces attaques, il est donc nécessaire de disséminer plusieurs NIDS au sein de l'infrastructure Cloud afin de les détecter.
Dès qu'une attaque est détectée, que ce soit par signature (SIDS) ou anomalies (AIDS), une alerte est remontée afin de pouvoir prendre une décision sur l'action à effectuer, soit par un IPS (Système de prévention d'intrusion), soit par l'administrateur.
Les NIDS peuvent être complétés par d'autres technologies comme l'apprentissage automatique, qui va venir se greffer à un NIDS qui procède par AIDS, appelé ADNIDS (Anomaly Detection base NIDS). Différentes techniques d'apprentissage profond ont déjà été appliquées aux problèmes des ADNIDS, comme les réseaux de neurones artificiels ou encore les machines à vecteurs de support par exemple. L'ajout de ces techniques aux IDS réseaux permettent de détecter plus d'attaques inconnues, contre lesquelles un NIDS classique fonctionnant avec un SIDS ne pourrait pas détecter. Il est envisagé que le deep learning va participer à surmonter les défis liés au développement d'un NIDS efficace$^,$.

### Systèmes de détection d'intrusion hôtes

Les systèmes de détection d'intrusion hôte (ou HIDS : Host-based Intrusion Detection System) sont des IDS mis en place directement sur les hôtes à surveiller. Ils vont directement analyser les fichiers de l'hôte, les différents appels système et aussi les événements réseaux$^,$. Par conséquent ces analyses sont strictement limitées à l'hôte sur laquelle l'HIDS est installé et n'ont aucune vue sur le réseau.
Les HIDS agissent comme des antivirus mais en plus poussé, car les antivirus ne sont intéressés que par les activités malveillantes du poste alors qu'un HIDS va pouvoir intervenir s'il détecte des attaques par dépassement de tampon et concernant les processus système par exemple.
La fonction de base d'un HIDS est l'inspection des fichiers de configuration du système d'exploitation afin d'y déceler des anomalies contre les rootkit notamment. Les HIDS utilisent des sommes de contrôle (MD5, SHA-1…) des programmes exécutables pour s'assurer qu'ils n'ont pas été modifiés.
Étant donné que les HIDS sont installés directement sur les machines, quelqu'un de malveillant qui aurait réussi à prendre le contrôle de la machine pourrait sans mal désactiver l'HIDS.

### Systèmes de détection d'intrusion collaboratifs

Les systèmes de détection d'intrusion collaboratif (ou CIDS : Collaborative Intrusion Detection System) sont des systèmes reposant sur d'autres IDS, de ce fait le CIDS peut opérer sur des systèmes hétérogènes. Il existe trois façons de mettre en place un CIDS, l'approche centralisée, l'approche hiérarchique et l'approche distribuée.

#### L'approche centralisée

    Elle se compose de deux éléments, le système expert et les IDS (HIDS ou NIDS). Les IDS vont pouvoir détecter, sur leur réseau local ou sur leur hôte, des anomalies qu'ils enverront au système expert. Il va permettre de déterminer s'il s'agit d'une attaque globale contre les différents systèmes ou plus locale, s'il n'a reçu qu'une seule alerte par exemple. Les CIDS déployés sur cette approche ont un très bon taux de détection.
    Mais ils ont deux désavantages majeurs, le premier est que si le système expert tombe en panne, tout le système est inutilisable, il s'agit d'un point de défaillance unique (single-point of failure en anglais, ou SPOF)$^,$. Le deuxième inconvénient de cette approche est qu'en cas de grosse attaque, il est possible que certaines des alertes reçues soient ignorées en raison de la quantité reçue par le système expert, ou que ces alertes soient traitées plus tard et donc, possiblement, après l'attaque$^,$.
    Cette approche a été mise en place pour DIDS (Distributed Intrusion Detection System) par Snapp.

#### L'approche hiérarchique

    Cette approche va permettre d'éviter le point de défaillance unique, mis en lumière par l'approche centralisée. En effet, dans cette solution, plusieurs nœuds (Système expert) sont chargés de la corrélation des alertes. Un nœud est désigné dans chaque groupe afin qu'il agisse en tant que nœud de corrélation et d'alerte, il va donc analyser les alertes qui viennent de son groupe, les corréler et transmettre une alerte, si besoin, au nœud supérieur. Cette fois-ci si un nœud intermédiaire vient à être désactivé, toute la sous-branche sera inutilisable$^,$.

#### L'approche distribuée

    La dernière approche, permet d'éviter d'avoir des points de défaillance, qui pourrait mettre à mal tout le système de détection. Pour cela, chaque nœud est collecteur d'information ainsi qu'analyseur. Ces nœuds détectent localement les attaques et sont capables de corréler les informations des nœuds voisins pour détecter les attaques globales$^,$.

### Autres

Il existe également d'autres familles de systèmes de détection d'intrusion. Parmi celles-ci, nous pouvons retrouver les familles suivantes :

#### WIDS (Wireless Intrusion Detection System)

    Ce type de système de détection d'intrusion permet de détecter et d'avertir sur les attaques spécifiques aux réseaux sans-fil (découverte de réseau, attaque de l'homme du milieu, attaque par déni de service...).

#### APHIDS (Agent-Based Programmable Hybrid Intrusion Detection System)

    Ce type de système de détection d'intrusion se base sur des agents autonomes réactifs, capables de communiquer avec d'autres systèmes, ou de se déplacer d'hôte en hôte (on parle alors d'agents mobiles), permettant ainsi de réduire l'impact réseau du système de détection d'intrusion pour sa collecte de données.

#### HAMA-IDS (Hybrid Approach-based Mobile Agent Intrusion Detection System)

    Cette méthode de détection basée sur des agents mobiles, possédant à la fois une base de signature d'intrusion (SIDS), et une base contenant des informations sur le système recueilli à l'aide de statistiques (peut être assimilé à un AIDS).

## Exemples de systèmes de détection d’intrusion
### Systèmes de détection d'intrusion réseaux

* Snort
* Bro
* Suricata
* Enterasys
* Check Point
* Tipping Point (en)

### Systèmes de détection d'intrusion hôtes

* AIDE
* Chkrootkit
* CrowdSec
* DarkSpy
* Fail2ban
* IceSword (fr)
* OSSEC (en)
* Rkhunter
* Rootkit Unhooker
* Tripwire

### Hybrides

* Prelude
* OSSIM (en)

## Domaines d’application
### Systèmes distribués

Les systèmes de détection et de prévention d'intrusions dans les systèmes distribués permettent de repérer et d’empêcher l'intrusion d'un utilisateur malveillant dans un système distribué comme une grille informatique ou un réseau en nuage.

### Internet des objets

Avec la constante augmentation des réseaux de capteurs, leur nombre devrait approcher les 26 milliards en 2020, l'internet des objets représente de nombreux enjeux de sécurité, notamment dus à leur faible puissance de calcul, leur hétérogénéité, le nombre de capteurs dans le réseau ainsi que la topologie du réseau$^,$. De ce fait, les systèmes de détection d'intrusion traditionnels ne peuvent pas directement être appliqués aux réseaux de capteurs. Néanmoins, de nombreuses avancées ont été présentées au cours des années 2000-2010 pour pallier cette problématique.

## Systèmes de prévention d'intrusion
### Principe

Contrairement aux systèmes de détection d'intrusion qui se contentent d'analyser des données pour émettre des alertes, les systèmes de prévention d’intrusions sont des outils permettant de détecter une attaque sur le système monitoré et de mettre en place des mécanismes de défense permettant de mitiger l’attaque. Pour cela, différentes contre-mesures peuvent être mises en place telles que :
* Re-configurer des équipements réseaux (routeurs, pare-feux...) pour bloquer les futures attaques
* Filtrer le trafic réseau en supprimant les paquets malicieux

### Les familles de systèmes de prévention d’intrusion

Tout comme les systèmes de détection d'intrusion, il existe deux grandes familles de systèmes de prévention d'intrusion$^,$ :
* Les IPS réseau (ou NIPS : Network-based Intrusion Prevention Systems), capables de stopper certaines attaques rapidement et de se protéger des dommages critiques sur un réseau
* Les IPS hôtes (ou HIPS : Host-based Intrusion Prevention Systems), capables de bloquer l'accès aux ressources systèmes selon des règles définies par l'administrateur ou par des réponses apprises automatiquement par le système de prévention d'intrusion. Ce type de système de prévention d'intrusion permet de protéger des serveurs de différentes vulnérabilités.

## Histoire des IDS

Avant l’invention des IDS, la détection d’intrusion se faisait à la main, car toutes les traces devaient être imprimées afin que les administrateurs puissent y déceler des anomalies. C’est une activité très chronophage et pas très efficace, car utilisée après les attaques afin de déterminer les dommages et de retrouver comment les assaillants s’y sont pris pour entrer dans le système.
À la fin des années 1970, débuts des années 1980, le stockage de données en ligne est de moins en moins coûteux, les traces sont migrées sur des serveurs et en parallèle de cette migration de données, du format papier au format numérique, des chercheurs développent les premiers programmes d’analyse de traces, mais cela reste inefficace car ces programmes sont lents et fonctionnent la nuit lorsque la charge sur le système est faible, donc les attaques sont le plus souvent détectées après coup. En 1980, James Anderson, chercheur à la NSA, introduit le concept d’IDS$^,$, mais c’est en 1987 quand Dorothy Denning (en) publie les premiers modèles de détection que les IDS vont réellement se développer.
Au début des années 1990, apparaissent les premiers programmes d’analyse en temps réel, qui permettent d’analyser les traces dès qu’elles sont produites. Cela a permis de détecter les attaques plus efficacement et cela a rendu possible dans certains cas la réalisation de prévention d’attaque.
Avant l'apparition d'outils de piratage, les attaques perpétrées envers des sites web, étaient menées par des personnes expérimentées. La figure suivante représente les connaissances des attaquants en fonction du temps, on constate donc qu'aujourd'hui, n'importe qui peut attaquer des sites Web sans connaissances préalables, notamment grâce à ces outils, qui ont été développés dans ce but.
Entre 2006 et 2010, le nombre d'attaques est passé d'environ 5000 à plus de 35000, d'où le besoin d'avoir des IDS performants.
Depuis quelques années, les avancées produites en matière d’IDS sont de permettre à l’utilisateur de déployer celui-ci dans un large réseau tout en garantissant une sécurité effective, à l’heure du changement perpétuel de l’environnement informatique et des innombrables nouvelles attaques dévoilées chaque jour.

## Article connexe

* Détection d'intrusions depuis des liens radio