Ce contenu s'appuie sur la ressource pédagogique disponible sur TryHackMe : https://tryhackme.com/r/room/idsfundamentals
Présentation des concepts de base des IDS (Systèmes de Détection d'Intrusion) et introduction à l'utilisation de Snort.
Qu'est-ce qu'un IDS (Système de Détection d'Intrusion) ?
Dans la ressource "Introduction aux Pare-feu" fournie par TryHackMe, nous avons examiné le rôle des pare-feu, une solution de sécurité généralement déployée aux frontières réseau pour protéger le trafic entrant et sortant. Le pare-feu examine le trafic lors de l'établissement d'une connexion et rejette toute connexion qui enfreint ses règles. Cependant, il est essentiel d'implémenter des mesures de sécurité capables de détecter les activités de connexion déjà établies ayant contourné le pare-feu.
Si un attaquant réussit à contourner le pare-feu via une connexion apparemment légitime et exécute ensuite des activités malveillantes au sein du réseau cible, un mécanisme de détection doit être en place pour alerter les administrateurs. C'est là qu'intervient le Système de Détection d'Intrusion (IDS), généralement déployé à l'intérieur du réseau.
Prenons l'analogie d'un bâtiment : le pare-feu agit comme un gardien qui vérifie les entrées et sorties, mais des individus malveillants peuvent parfois réussir à pénétrer. Une fois à l'intérieur, des caméras de surveillance disséminées dans tout le bâtement permettent de détecter leurs activités. Dans le monde numérique, l'IDS joue un rôle similaire à ces caméras. Il surveille le trafic réseau à partir d'un emplacement stratégique, détectant toute anomalie grâce à des méthodes de détection par signature et par anomalie. À chaque détection d'anomalie, l'IDS alerte l'administrateur sécurité. L'IDS ne bloque pas directement ces activités, il se contente de signaler les menaces détectées.
Cet article présente les concepts fondamentaux des solutions IDS. Nous explorerons également l'une des solutions open source les plus populaires : Snort IDS.
Objectifs d'apprentissage
- Comprendre les types d'IDS et leurs fonctionnalités de détection
- Savoir comment fonctionne Snort IDS
- Connaître les règles par défaut et personnalisées dans Snort IDS
- Apprendre à créer des règles personnalisées dans Snort IDS
Question
Un IDS peut-il bloquer une menace après l'avoir détectée ? Oui/Non
Non
Types d'IDS (Systèmes de Détection d'Intrusion)
Les IDS peuvent être classés selon différents critères, principalement leur mode de déploiement et leur mode de détection.
Classification par mode de déploiement
- IDS Hôte (HIDS - Host-based Intrusion Detection System) : Les solutions HIDS sont installées individuellement sur chaque hôte et ne surveillent que les menaces potentielles spécifiques à cet hôte. Elles offrent une visibilité détaillée des activités de l'hôte. Cependant, dans les grands réseaux, la gestion de plusieurs HIDS peut être complexe car ils sont gourmands en ressources et nécessitent une configuraton individuelle pour chaque hôte.
- IDS Réseau (NIDS - Network-based Intrusion Detection System) : Les solutions NIDS sont cruciales pour détecter les activités malveillantes potentielles dans tout le réseau sans dépendre d'un hôte spécifique. Elles surveillent le trafic réseau de tous les hôtes concernés pour détecter des activités suspectes et fournissent une vue centralisée de toutes les détections.
Astuce : HIDS peut aussi être appelé Host-based IDS, et NIDS peut aussi être appelé Network-based IDS.
Classification par mode de détection
- IDS par signature (Signature-Based IDS) : De nombreuses attaques se produisent quotidiennement, chacune ayant un modèle unique appelé signature. Ces signatures sont stockées dans une base de données par l'IDS afin de détecter rapidement des attaques similaires à l'avenir. Plus la base de données de signatures est robuste, plus l'efficacité de détection des menaces connues est élevée. Cependant, un IDS par signature ne peut pas détecter les attaques zero-day. Comme ces attaques n'ont pas de signature préexistante, elles ne sont pas présentes dans la base de données de l'IDS. Par conséquent, un IDS par signature ne peut détecter que les attaques déjà survenues et dont les signatures sont stockées dans la base de données.
- IDS par anomalie (Anomaly-Based IDS) : Ce type d'IDS doit d'abord comprendre le comportement normal (baseline) du réseau ou du système, puis détecter tout écart par rapport à ce comportement normal. Un IDS par anomalie peut détecter les attaques zero-day car il ne repose pas sur des signatures existantes, mais compare l'état actuel au comportement normal. Cependant, ce type d'IDS peut générer de nombreux faux positifs (marquer des activités légitimes comme malveillantes), car de nombreux programmes légitimes peuvent présenter des caractéristiques similaires à des programmes malveillants. Nous pouvons réduire ces faux positifs en affinant manuellement la définition du comportement normal dans l'IDS.
- IDS Hybride (Hybrid IDS) : Les IDS hybrides combinent les méthodes de détection par signature et par anomalie, exploitant ainsi les avantages de chaque approche. Pour les menaces déjà connues et présentes dans la base de données, l'IDS hybride utilise la détection par signature ; pour les nouvelles menaces, il peut s'appuyer sur la détection par anomalie.
Les IDS par signature permettent une détection rapide des menaces, tandis que les autres types peuvent avoir un coût de traitement plus élevé. Le choix d'un IDS dépend de plusieurs facteurs. Les IDS par signature peuvent être adaptés pour couvrir une surface d'attaque réduite, tandis que les IDS par anomalie et hybrides aident à détecter les attaques zero-day modernes, dont l'impact sur les organisations peut être considérable.
Questions
Quel type d'IDS pouvons-nous déployer pour détecter des menaces dans tout le réseau ?
IDS Réseau (NIDS)
Quel type d'IDS peut à la fois utiliser des techniques de détection par signature et par anomalie ?
IDS Hybride
Exemple d'IDS : Snort
Snort, développé en 1998, est l'une des solutions open source les plus utilisées pour la détection d'intrusion. Il emploie des méthodes de détection par signature et par anomalie pour identifier les menaces connues. Ces règles sont définies dans des fichiers de règles de l'outil Snort. Plusieurs fichiers de règles intégrés sont préinstallés avec l'outil, contenant diverses signatures d'attaques connues. Les règles intégrées de Snort peuvent détecter une grande partie du trafic malveillant. Cependant, vous pouvez configurer Snort pour détecter des types de trafic spécifiques non couverts par les règles par défaut, et créer des règles personnalisées selon vos besoins.
Modes de fonctionnement de Snort
| Mode | Description | Cas d'usage |
|---|---|---|
| Mode sniffer de paquets | Ce mode lit et affiche les paquets réseau sans analyse. Le mode sniffer de paquets de Snort n'est pas directement lié aux fonctionnalités IDS, mais il est utile pour la surveillance et le dépannage réseau. | L'équipe réseau observe des problèmes de performance. Pour diagnostiquer, ils ont besoin d'une compréhension détaillée du trafic. |
| Mode journalisation de paquets | Snort peut détecter le trafic en temps réel et afficher les résultats sous forme d'alertes, mais parfois, il est nécessaire d'enregistrer le trafic pour une analyse ultérieure. Ce mode permet d'enregistrer le trafic au format PCAP tout en générant des fichiers journaux. | L'équipe de sécurité doit mener une enquête forensique sur une attaque. Les fichiers journaux de Snort peuvent aider à l'analyse des causes profondes. |
| Mode IDS Réseau (NIDS) | C'est le mode principal de Snort, qui surveille le trafic réseau en temps réel et applique ses fichiers de règles pour identifier les correspondances avec des signatures d'attaques connues. Si une correspondance est trouvée, une alerte est générée. | L'équipe de sécurité doit surveiller activement le réseau ou les systèmes pour détecter les menaces potentielles. |
L'utilisation la plus pertinente de Snort en tant qu'IDS est son mode NIDS, mais il peut être utilisé dans l'un des modes précédents selon les besoins.
Questions
Quel mode de Snort permet d'enregistrer le trafic réseau dans un fichier PCAP ?
Mode journalisation de paquets
Quel est le mode principal de Snort ?
Mode IDS Réseau (NIDS)
Utilisation de base de Snort
Lors de l'installation de Snort, vous devez spécifier l'interface réseau et la plage d'adresses. Vous pouvez exécuter Snort normalement pour capturer uniquement le trafic de votre hôte. Cependant, si vous souhaitez capturer et détecter des intrusions dans tout votre réseau, vous devez activer le mode promiscuous de l'interface réseau.
Dans la ressource TryHackMe associée, nous pouvons démarrer la machine virtuelle d'expérimentation en cliquant sur le bouton "Start Machine". Cette machine démarrera en vue fractionnée. Si elle n'est pas visible, essayez de cliquer sur le bouton bleu "Show Split View" en haut de la page de la ressource.
Snort dispose de plusieurs fichiers de règles intégrés, un fichier de configuration et d'autres fichiers. Ces fichiers sont stockés dans le répertoire /etc/snort. Le fichier clé de Snort est son fichier de configuration snort.conf, où vous pouvez spécifier quels fichiers de règles activer, la plage de réseau à surveiller et d'autres paramètres. Les fichiers de règles sont stockés dans le dossier rules. Nous pouvons utiliser la commande ls pour lister tous les fichiers et dossiers du répertoire principal de Snort :
ubuntu@tryhackme:~$ ls /etc/snort
classification.config reference.config snort.debian.conf
community-sid-msg.map rules threshold.conf
gen-msg.map snort.conf unicode.map
Format des règles
Examinons maintenant la création de règles dans Snort. Les règles suivent un format spécifique. Voici un exemple de règle qui détecte les paquets ICMP provenant de n'importe quelle adresse IP et port, et se dirigeant vers n'importe quel port du réseau local (la plage réseau peut être définie dans le fichier de configuration de Snort). Une fois que Snort détecte ce type de trafic, il génère une alerte "Ping Détecté".
Les composants de cette règle sont détaillés ci-dessous :
- Action : Spécifie l'action à entreprendre lorsque la règle est déclenchée. Dans cet exemple, l'action est d'émettre une "alerte".
- Protocole : Référence le protocole correspondant à la règle. Ici, nous utilisons le protocole "ICMP", utilisé lors du ping d'un hôte.
- IP Source : Détermine l'adresse IP source du trafic. Comme nous voulons détecter le trafic de n'importe quelle adresse IP source, nous la définissons sur "any".
- Port Source : Détermine le port source du trafic. Comme nous voulons détecter le trafic de n'importe quel port source, nous le définissons sur "any".
- IP Destination : Spécifie l'adresse IP destination du trafic correspondant ; c'est là que l'alerte sera générée. Ici, nous utilisons "$HOME_NET", une variable définie dans le fichier de configuration de Snort comme la plage du réseau local.
- Port Destination : Spécifie le port destination du trafic. Comme nous voulons détecter le trafic vers n'importe quel port, nous le définissons sur "any".
- Métadonnées de règle : Chaque règle possède des métadonnées définies entre crochets à la fin de la règle :
- Message (msg) : Décrit le message à afficher lorsque la règle est déclenchée. Il devrait indiquer le type d'activité détectée. Ici, nous utilisons "Ping Détecté".
- ID de Signature (sid) : Chaque règle a un identifiant unique pour la distinguer des autres. Cet identifiant est appelé ID de signature (sid). Ici, nous avons défini le sid à "10001".
- Révision de règle (rev) : Définit le numéro de révision de la règle. Chaque modification de la règle incrémente ce numéro, aidant à suivre les modifications.
Création de règles
Ajoutons l'exemple de règle expliqué ci-dessus au fichier "local.rules" personnalisé dans le répertoire des règles de Snort.
Tout d'abord, ouvrez le fichier "local.rules" dans un éditeur de texte :
# Éditer le fichier de règle personnalisé
ubuntu@tryhackme:~$ sudo nano /etc/snort/rules/local.rules
Maintenant, ajoutons la règle suivante après les règles existantes dans le fichier :
alert icmp any any -> 127.0.0.1 any (msg:"Boucle Ping Détectée"; sid:10003; rev:1;)
Note : Dans la section suivante, nous utiliserons d'autres règles existantes dans local.rules, ne supprimez donc pas le contenu du fichier.
Après avoir édité le contenu, appuyez sur "ctrl+x", puis sur "y" pour sauvegarder les modifications.
Test des règles
Lançons l'outil Snort pour détecter toute intrusion définie dans le fichier de règles. Pour cela, nous pouvons exécuter la commande suivante avec les droits sudo dans la console :
# Exécuter Snort pour les détections
ubuntu@tryhackme:~$ sudo snort -q -l /var/log/snort -i lo -A console -c /etc/snort/snort.conf
Note : Si le nom de votre interface de bouclage n'est pas "lo", remplacez-le par le nom correct.
Puisque cette règle est conçue pour nous alerter de tout paquet ICMP atteignant notre adresse de bouclage, essayons de pinguer notre adresse de bouclage pour vérifier si la règle fonctionne :
# Pinguer l'hôte
ubuntu@tryhackme:~$ ping 127.0.0.1
La sortie suivante montre que lorsque nous pingons l'adresse IP de bouclage de l'hôte, Snort génère l'alerte "Boucle Ping Détectée", confirmant que notre règle fonctionne correctement.
# Exécuter Snort pour les détections
ubuntu@tryhackme:~$ sudo snort -q -l /var/log/snort -i lo -A console -c /etc/snort/snort.conf
07/24-10:46:52.401504 [**] [1:1000001:1] Boucle Ping Détectée [**] [Priority: 0] {ICMP} 127.0.0.1 -> 127.0.0.1
07/24-10:46:53.406552 [**] [1:1000001:1] Boucle Ping Détectée [**] [Priority: 0] {ICMP} 127.0.0.1 -> 127.0.0.1
07/24-10:46:54.410544 [**] [1:1000001:1] Boucle Ping Détectée [**] [Priority: 0] {ICMP} 127.0.0.1 -> 127.0.0.1
Exécution de Snort sur un fichier PCAP
Nous avons vu comment utiliser Snort pour la détection d'intrusion en temps réel. Cependant, il peut arriver que vous disposiez d'un fichier enregistrant un trafic réseau historique devant être analysé forensiquement pour détecter d'éventuelles intrusions. Ce trafic est généralement enregistré au format standard de capture de paquets "PCAP", et Snort peut analyser ces fichiers.
Nous pouvons utiliser la commande suivante avec les droits sudo pour effectuer cette analyse :
# Exécuter Snort sur un fichier PCAP
ubuntu@tryhackme:~$ sudo snort -q -l /var/log/snort -r Task.pcap -A console -c /etc/snort/snort.conf
Note : Remplacez "Task.pcap" dans la commande ci-dessus par le chemin d'accès au fichier PCAP que vous souhaitez analyser.
Questions
Où se trouve le répertoire principal où Snort stocke ses fichiers ?
/etc/snort
Quel champ dans une règle Snort indique le numéro de révision de la règle ?
rev
Quel protocole est défini dans l'exemple de règle créé dans cette section ?
icmp
Quel est le nom du fichier contenant les règles personnalisées de Snort dans cette section ?
local.rules
Exercice pratique
Scénario : Vous êtes un enquêteur forensique tiers. Une entreprise vous contacte pour enquêter sur une récente attaque contre son réseau. Ils vous fournissent un fichier PCAP nommé "Intro_to_IDS.pcap" contenant le trafic réseau capturé par leur équipe de sécurité pendant l'attaque. Votre mission est d'analyser ce fichier PCAP avec l'outil Snort et de répondre aux questions suivantes.
Note : Le fichier PCAP d'exemple Intro_to_IDS.pcap se trouve dans le répertoire /etc/snort/ de la machine virtuelle d'expérimentation. Vous devez vous déplacer dans ce répertoire dans l'interface terminal et exécuter la commande d'analyse PCAP, comme nous l'avons fait dans la section précédente.
Questions
Lisez cette section, effectuez les opérations expérimentales (reportez-vous au début de la section précédente pour démarrer la machine virtuelle), puis répondez aux questions suivantes.
Quelle est l'adresse IP de la machine à laquelle il est tenté de se connecter via SSH ?
10.11.90.211
Outre les messages SSH, quelles autres règles de messages pouvez-vous détecter dans le fichier PCAP ?
Ping Détecté
Quel est le sid de la règle utilisée pour détecter SSH ?
1000002