Intitulé : Rapport de détection des attaques basées sur
l’apprentissage automatique
Sécurité Informatique
Domaine : Mathématiques-Informatique
Filière : Informatique
Spécialité : Réseaux et sécurité informatique
Préparé par : Messaoudi Chiraz
Préparé par : Zaoui Geurfi Oumaima
Année : 2023-2024
Introduction
Ce rapport couvre le processus, la méthodologie, les résultats et les conclusions du projet de détection
des attaques basées sur l’apprentissage automatique. L’objectif de ce projet est de comprendre et d’analyser le
comportement des réseaux dans des conditions normales d’exploitation et lors de types spécifiques de cyberattaques.
Tache 1 : Simulation d’attaques
Dans cette tâche, nous exécutons différentes cyberattaques et capturons le trafic réseau pour les conditions normales
et d'attaque. En utilisant Scapy, nous automatisons des attaques telles que le Xmas Scan, le DNS Cache Poisoning et
l'UDP Flood. En analysant les données capturées, nous comprenons les comportements et effets des attaques. Ceci
nous permet de développer un modèle d'apprentissage automatique pour détecter ces attaques dans la tâche suivante.
Tâche 1.1 : Exécution des attaques
Nous avons mis en place un réseau composé de deux machines virtuelles (VM), l’une servant d’attaquant et
l’autre de victime. Nous avons ensuite écrit des scripts Python à l’aide de la bibliothèque Scapy pour exécuter les trois
attaques suivantes :
Notre environnement de travail par 2 machine :
-[Link]: machine attaquant kali linux .
-[Link]: machine cible de victim ubunto.
Figure1.1: l’environnement des attaques
Xmas Scan (Scanning Attack):nous avons collecté le trafic réseau à l’aide de Wireshark sur la
machine victime.
1
Figure 1.2 xmas_scan .py Figure 1.2 xmas_scan.pcap
Dans ce script nous effectue un scan Xmas sur l'adresse IP de la victime, en envoyant des paquets TCP
avec les flags FIN, PUSH et URG activés pour chaque port dans la plage de 1 à 1023
Empoisonnement du cache DNS (attaque de l’homme du milieu) : Nous avons capturé le trafic
réseau pour 100instances de l’attaque afin de collecter un ensemble de données complet sur les
efforts de manipulation du DNS
Figure 1.3 [Link] Figure 1.3 [Link]
Ce script envoie de manière répétée des paquets DNS trafiqués à une victime, visant à remplacer les entrées
légitimes dans son cache DNS par des données malveillantes. Chaque paquet DNS trafiqué contient une
réponse falsifiée associant un nom de domaine spécifique à une adresse IP malveillante.
UDP Flood (Denial-of-Service Attack) : Compte tenu du volume élevé de trafic généré par cette
attaque, nous avons collecté le trafic réseau pendant une période plus courte de 10 à 15 minutes.
Figure 1.4 udp_flood.py Figure1.4 udp_flood.pcap
Ce script envoie en boucle des paquets UDP contenant des données aléatoires à l'adresse IP de la victime et
au port spécifié. .
Pour limiter la période de collecte à 10 à 15 minutes,nous introduire une temporisation dans le script pour
qu'il s'arrête automatiquement après un certain temps
2
Trafic normal : Nous avons collecté le trafic réseau normal en lançant Wireshark en utilisant la
machine ubunto pendant une durée de 30 à 60 minutes.
Figure 1.5 trafic [Link]
Tâche 1.2 : Extraction de flux réseau et de caractéristiques
Nous avons utilisé CICFlowMeter pour convertir les fichiers PCAP en fichiers CSV, en extrayant les flux de
trafic réseau et en calculant les caractéristique qui caractérisent de manière unique chaque flux réseau. Nous
avons obtenu quatre fichiers CSV : un pour le trafic normal et un pour chacune des trois attaques.
3
Trafic [Link] udp_flood .csv [Link]
Xmas_scan .csv
Tache 2 : Détection et classification basées sur l’apprentissage
automatique
Nous avons écrit un programme Python pour effectuer les tâches suivantes en étulise l’outil Google Colab :
Dans la manipulation de chaque fichier CSV, nous introduisons une nouvelle colonne appelée
"Label". Dans cette colonne, nous assignons le nom de l'attaque pour les captures d'attaques
respectives, et pour la capture contenant du trafic normal, nous attribuons la valeur "Normal". Par la
suite, nous combinons les quatre fichiers CSV en un seul fichier CSV nommé "[Link]"
code python [Link]
Nous procédons à l'entraînement et à la création d'un classificateur d'arbre de décision en utilisant
la bibliothèque Scikit-Learn. Ce classificateur est conçu pour distinguer le trafic normal des
différents types d'attaques
4
Code python d’arbre de décision
Évaluez les performances de l’arbre de décision à l’aide du taux de détection (rappel) et du taux de
faux positifs.
Taux de détection (rappel)
Taux de detection
Taux de faux positifs
Code python
Confusion matrix
5
6