Rapport Supcom A
Rapport Supcom A
Rapport Supcom A
de la Recherche Scientifique
Université de Gabès
RAPPORT DE MINI-PROJET
Réalisé par :
MALAK BALTI
&
SIRINE ATITALLAH
Sujet :
Nous tenons à exprimer notre profonde gratitude envers notre encadrant, ZAIER AIDA, pour
son soutien indéfectible, son expertise inestimable et sa guidance tout au long de ce projet.
Sans son engagement et son accompagnement, notre travail n’aurait pas atteint son plein
potentiel. Nous sommes profondément reconnaissants pour la confiance qu’il nous a accordée
et pour avoir été un mentor exemplaire tout au long de cette expérience enrichissante de
croissance personnelle et professionnelle. Ce projet a été rendu possible grâce à son soutien
inestimable. Nous exprimons également notre reconnaissance envers ENIG pour nous avoir
offert l’opportunité d'explorer ce sujet passionnant. Enfin, nous souhaitons remercier
chaleureusement le membre du jury, Chaima Bahar, pour son évaluation attentive et ses
précieux commentaires.
TABLE DE MATIERE
INTRODUCTION GENERALE..........................................................................................1
Chapitre 1 .............................................................................................................................2
Etude Préalable de la Sécurité et de la détection d’intrusions ............................................2
1. Introduction ...............................................................................................................2
2. Les types des attaques ...............................................................................................2
2.1 Attaques par déni de service (DoS) et par déni de service distribué (DDoS) ....2
2.2 Attaque de l’homme au milieu (MitM) ..............................................................2
2.3 Le phishing ..........................................................................................................3
2.4 Attaque par injection SQL .................................................................................3
2.5. Attaque XSS (Cross-site scripting) : ..................................................................4
3. Système de détection d’intrusion (IDS) .....................................................................4
3.1 Définition .............................................................................................................4
3.2 Les différents types d'IDS ...................................................................................5
3.3 Principe ...............................................................................................................6
4. Système de prévention des intrusions (IPS) ..............................................................6
5. Le Deep Learning dans les Systèmes de Détection d'intrusion ................................7
6. Conclusion ..................................................................................................................8
Chapitre 2 .............................................................................................................................9
Fondements Théoriques et Implémentation de notre Solution de Détection d'Intrusions 9
1. Introduction ...............................................................................................................9
2. Suricata ......................................................................................................................9
2.2. Installation ..............................................................................................................9
2.3. Configuration .........................................................................................................9
3.1. Modèles utilisés ..................................................................................................... 12
3.3 Light GBM............................................................................................................ 13
Chapitre 3 ........................................................................................................................... 15
Mise en Pratique de notre Solution de Détection d'Intrusions ......................................... 15
1. Introduction .............................................................................................................15
2. Configuration et Tests de Suricata ..........................................................................15
2.1 Creation des régles par signature pour Suricata .............................................. 18
2.2 Verifier la correspondence des régles ............................................................... 18
2.3 Test de fonctionnement de Suricata ................................................................. 18
2.3.1 Scan avec Nmap............................................................................................. 18
2.3.2 Scan avec requete ICMP ............................................................................... 18
2.3.3 Attaque ping flooding avec hping3 ............................................................... 18
2.3.4 SQLI............................................................................................................... 18
3. Entraînement et Évaluation du Modèle avec LGBM .............................................19
3.1 DATASET utulisés ............................................................................................. 18
3.2. Importation des bibliothèques ...........................................................................19
3.3 Chargement du DATASET................................................................................ 18
3.4. Affichage du DATASET .................................................................................... 21
3.5. Analyse des données ........................................................................................... 22
3.6. Framework LGBM ............................................................................................. 25
Conclusion ....................................................................................................................... 26
CONCLUSION GENERALE ............................................................................................ 27
BIBLIOGRAPHIE .............................................................................................................28
Liste des figures
Les systèmes d'information sont aujourd'hui de plus en plus ouverts sur Internet. Cette
ouverture, a priori bénéfique, pose néanmoins un problème majeur : il en découle un nombre
croissant d'attaques. La mise en place d'une politique de sécurité autour de ces systèmes est
donc primordiale.
Pour lutter contre ces intrusions, la conception d'une solution intelligente de détection
d'intrusion revêt une importance capitale. Cette solution combine l'utilisation de Suricata, un
système de détection et de prévention des intrusions, avec le modèle de machine learning
GBM (Gradient Boosting Machine), pour offrir une protection robuste et proactive contre les
menaces.
Nous détaillerons dans les trois chapitres suivants les différentes facettes de notre approche
pour la sécurisation des systèmes d'information. Dans le chapitre 1, nous réaliserons une étude
préalable de la sécurité et de la détection d'intrusions. Cette étude comprendra une définition
générale des types d'attaques rencontrées dans les environnements informatiques ainsi qu'une
analyse approfondie des différents types de systèmes de détection d'intrusions (IDS). De plus,
nous aborderons une approche innovante basée sur le deep learning pour renforcer la capacité
de détection des IDS.
Le chapitre 2 sera dédié à notre solution basée sur Suricata et le deep learning. Nous
procéderons à l'installation et à la configuration de Suricata, un système de détection et de
prévention des intrusions largement utilisé dans le domaine de la sécurité informatique. En
outre, nous détaillerons le jeu de données NSL-KDD que nous avons sélectionné pour
l'entraînement de notre modèle de deep learning. Nous présenterons également le framework
LGBM (Light Gradient Boosting Machine) que nous avons choisi pour sa performance et sa
robustesse.
Enfin, le chapitre 3 sera consacré à l'implémentation pratique de notre solution. Nous
fournirons des captures d'écran détaillant les différentes étapes de configuration de Suricata,
de prétraitement des données, d'entraînement du modèle de deep learning et de déploiement
de l'ensemble de la solution. Ces captures d'écran permettront une compréhension claire et
concrète du processus d'implémentation de notre solution de détection d'intrusions.
1
Chapitre 1
Les avantages de faire des tests d’intrusion sont nombreux car ils permettent de détecter les
failles de sécurité avant qu’un acteur malveillant ne les découvre puis les exploite. Dans ce
chapitre nous allons voir les différents types des attaques ainsi les différents types des IDS.
Une attaque par déni de service submerge les ressources d’un système afin que ce dernier ne
puisse pas répondre aux demandes de service. Une attaque DDoS vise elle aussi les ressources
d’un système, mais elle est lancée à partir d’un grand nombre d’autres machines hôtes
infectées par un logiciel malveillant contrôlé par l’attaquant. [1]
Une attaque de l’homme du milieu est un pirate qui s’insère dans les communications entre un
client et un serveur.
2
Détournement de session :
Dans ce type d’attaque MitM, un attaquant détourne une session entre un client et un serveur
réseau. Par exemple, l’attaque pourrait se dérouler ainsi :
2.3 Le phishing
Le phishing est un type de cyber attaque qui utilise les e-mails, les SMS, le téléphone, les
réseaux sociaux et les techniques d’ingénierie sociale pour inciter une victime à partager des
informations sensibles, comme des mots de passe ou des numéros de compte, ou à télécharger
un fichier malveillant qui installera des virus sur son ordinateur ou son téléphone. [1]
L’injection SQL est devenue un problème courant qui affecte les sites Web exploitant des
bases de données. Elle se produit lorsqu’un malfaiteur exécute une requête SQL sur la base de
données via les données entrantes du client au serveur. Des commandes SQL sont insérées
3
dans la saisie du plan de données (par exemple, à la place du nom d’utilisateur ou du mot de
passe) afin d’exécuter des commandes SQL prédéfinies. Un exploit d’injection SQL réussi
peut lire les données sensibles de la base de données, modifier (insérer, mettre à jour ou
supprimer) les données de la base de données, exécuter des opérations d’administration de la
base de données (par exemple la fermer), récupérer le contenu d’un fichier spécifique, et, dans
certains cas, envoyer des commandes au système d’exploitation [1]
Les attaques XSS utilisent des ressources Web tierces pour exécuter des scripts dans le
navigateur Web de la victime ou dans une application pouvant être scriptée. Plus précisément,
l’attaquant injecte un JavaScript malveillant dans la base de données d’un site Web. Lorsque
la victime demande une page du site Web, le site Web transmet la page à son navigateur avec
le script malveillant intégré au corps HTML. Le navigateur de la victime exécute ce script, qui
envoie par exemple le cookie de la victime au serveur de l’attaquant, qui l’extrait et l’utilise
pour détourner la session. [1]
3.1 Définition
4
Un système de détection d’intrusion (IDS) est le processus qui examine l’activité du système
ou du réseau pour trouver d’éventuelles intrusions ou attaques. Les systèmes de détection
d’intrusion sont basés sur le réseau ou sur l’hôte.
Les systèmes de détection d'intrusion ou IDS peuvent se classer selon trois catégories
majeures selon qu'ils s'attachent à surveiller :
FIGURE 4 : IDS
5
Les IDS hybrides (NIDS+HIDS)
Les IDS hybrides rassemblent les caractéristiques de plusieurs IDS différents. Ils permettent,
en un seul outil, de surveiller les réseaux et les terminaux. Les sondes sont placées en des
points stratégiques, et agissent comme NIDS et/ou HIDS suivant leurs emplacements. Toutes
ces sondes remontent alors les alertes à une machine qui va centraliser le tout, et agréger/lier
les informations d'origines multiples.
3.3 Principe
a)
b)
c)
d)
e)
f)
g)
h)
i)
j)
Un système de prévention des intrusions (IPS) est une forme de sécurité de réseau qui sert à
détecter et prévenir les menaces identifiées. Les systèmes de prévention des intrusions
surveillent en permanence votre réseau, recherchant les éventuels actes de malveillance et
6
capturent des informations à leur sujet. L’IPS signale ces événements aux administrateurs du
système et prend des mesures préventives, telles que la fermeture des points d’accès et la
reconfiguration des firewalls pour empêcher de futures attaques
Dans le contexte de la sécurité informatique, le deep learning a émergé comme une solution
prometteuse pour renforcer les systèmes de détection d'intrusions (IDS). Traditionnellement,
les IDS reposent sur des règles préétablies ou sur des techniques de détection d'anomalies
pour identifier les activités suspectes. Cependant, ces approches peuvent être limitées dans
leur capacité à détecter des attaques sophistiquées et émergentes, en particulier dans un
environnement où les attaquants sont constamment en train de développer de nouvelles
stratégies pour contourner les défenses.
En intégrant le deep learning aux IDS, les chercheurs et les praticiens cherchent à surmonter
ces limites en exploitant la capacité du deep learning à apprendre des modèles à partir de
grandes quantités de données. Les modèles de deep learning peuvent être formés à reconnaître
les schémas et les comportements associés à des activités malveillantes, même lorsque ces
schémas sont complexes ou difficiles à définir à l'avance. Cette capacité permet aux IDS de
détecter de manière proactive les menaces émergentes et évolutives, améliorant ainsi la
capacité des organisations à protéger leurs systèmes informatiques contre les attaques.
En résumé, l'utilisation du deep learning dans les systèmes de détection d'intrusions représente
une approche innovante pour renforcer la sécurité informatique en permettant aux IDS de
détecter de manière proactive les menaces émergentes et sophistiquées. En exploitant la
capacité du deep learning à apprendre des modèles à partir de données complexes, cette
approche offre un potentiel considérable pour améliorer la résilience des infrastructures
informatiques contre les attaques malveillantes.
7
6. Conclusion
8
Chapitre 2
1. Introduction
2. Suricata
2.1. Définition
2.2. Installation
On fait l’installation à l’aide de documentation sur la page officielle du suricata
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:oisf/suricata-stable
sudo apt-get update
sudo apt-get install suricata
sudo apt-get update
sudo apt-get upgrade suricata
2.3. Configuration
9
Le fichier « suricata.yaml » est le fichier de configuration principal de Suricata. Ce fichier
est essentiel car il permet de configurer le comportement de Suricata, y compris ses règles de
détection, ses fichiers de journalisation, ses interfaces réseau à surveiller, ses paramètres de
performance.
Il permet de configurer les :
FIGURE 6 : suricata.yaml
Dans l’exemple donné, HOMENET est défini comme étant l’union de trois plages d’adresses
IP :
10
192.168.0.0/16, 10.0.0.0/8 et 172.16.0.0/12:Ce sont des plages d’adresses IP privées
couramment utilisée dans les réseaux locaux domestiques et d’entreprise.
Nous avons crée un nouveau fichier nommée local.rules c’est un fichier contient des règles
pour la détection par signature Et nous avons mis a jour l’interface pour la détection (pour
Ubuntu c’est généralement enp0s3)
11
3. Deep Learning et IDS
3.1. Modèles utilisés
NSL-KDD[4] (NSL-KDD Dataset) est une version révisée du jeu de données KDDCup99, qui
est largement utilisé comme référence pour la détection d’intrusion dans les réseaux
informatiques. Le jeu de données KDDCup99 a été largement utilisé pour évaluer les
algorithmes de détection d’intrusion. Plus précisément, le jeu de données NSL-KDD élimine
les enregistrements en double, corrige les étiquettes incorrectes et équilibre les classes
d’intrusion. Cela permet aux chercheurs de disposer d’un jeu de données plus représentatif et
plus réaliste pour évaluer les performances des systèmes de détection d’intrusion. Le jeu de
données NSL-KDD comprend un ensemble de données d’apprentissage et un ensemble de
données de test, chacun comprenant plusieurs types d’attaques simulées ainsi que du trafic
normal. Il est largement utilisé dans la recherche académique et industrielle pour évaluer et
comparer les performances des algorithmes de détection d’intrusion.
FIGURE 9 : KDDIDS
3.2.1. Pandas
12
Pandas est une bibliothèque logicielle écrite pour le langage de programmation python pour
3.2.2. Keras
Keras est une bibliothèque de logiciels open source qui fournit une interface python pour
les réseaux de neurones artificiels. Keras agit comme une interface pour la bibliothèque.
3.2.3. Numpy
NumPy est une bibliothèque pour le langage de programmation python, ajoutant la prise en
charge de grands tableaux et matrices multidimensionnels, ainsi qu’une grande collection de
3.2.4. Matplotlib
Matplotlib est une bibliothèque de traçage pour le langage de programmation python et son
extension de mathématiques numériques numPy. Il fournit une API orientée objet pour
intégrer des tracés dans des applications utilisant des kits d’outils GUI à usage général tels
que Tkinter,wxPython, Qt ou GTK.
3.2.5. matplotlib.pyplot
Cette bibliothèque est utilisée pour créer des visualisations graphiques en python, offrant
une grande variété de fonctionnalités pour tracer des graphiques, des histogrammes, des
diagrammes en boîte.
Light GBM est un Framework d’amélioration de gradient qui utilise des algorithmes
d’apprentissage basés sur des arbres. Il est conçu pour être distribué et efficace avec les
avantages suivants:
— Vitesse d’entraînement plus rapide et efficacité accrue.
Le code fournit utilise la fonction ‘setup‘ de PyCaret pour effectuer plusieurs tâches de
prétraitement des données et de configuration du modèle en seulement quelques lignes:
13
1. Configuration de l’environnement de modélisation: La fonction ‘setup‘ initialise un
environnement de modélisation en spécifiant des paramètres tels que la sessionID, les données
(‘ds‘), la variable cible (‘label’),la taille de l’ensemble d’entraînement (85% de l’ensemble de
données),etc.
2 .Prétraitement des données: Plusieurs techniques de prétraitement des données sont
appliquées, notamment l’imputation des valeurs manquantes pour les caractéristiques
numériques, la normalisation des données, la création de caractéristiques polynomiales
jusqu’au degré 2, et la spécification des caractéristiques catégorielles.
3. Division des données: Les données sont divisées en ensembles d’entraînement et de test, et
les caractéristiques et les étiquettes correspondantes.
4. Conclusion
Dans cette section, nous avons exploré les aspects théoriques essentiels de notre solution de
détection d'intrusions. Nous avons commencé par aborder notre choix de la base de données
NSL-KDD pour l'entraînement et l'évaluation de notre modèle. Ensuite, nous avons examiné
les différentes bibliothèques utilisées dans notre solution. Enfin, nous avons présenté le
framework LGBM (Light Gradient Boosting Machine), sélectionné pour son efficacité et sa
performance dans le cadre de l'apprentissage automatique. Ces éléments théoriques
constituent les fondements nécessaires à la mise en œuvre d'une solution de détection
d'intrusions efficace et performante. Dans le prochain chapitre, nous passerons à
l'implémentation pratique de notre solution, mettant en œuvre les concepts théoriques abordés
dans cette section pour créer un système de détection d'intrusions fonctionnel et performant.
14
Chapitre 3
1. Introduction
Dans ce chapitre, nous passerons de la théorie à la pratique en mettant en œuvre notre solution
de détection d'intrusions. Nous débuterons par la création de règles par signature pour
Suricata. Ensuite, nous procéderons à des tests de fonctionnement de Suricata pour garantir
son efficacité dans la détection des intrusions. Enfin, nous nous penchons sur l'utilisation du
modèle KDD NSL pour détecter les intrusions dans les réseaux, et mettre en pratique
l'algorithme Light GBM
Dans Suricata:
Chaque règle est composée de différents éléments qui spécifient les conditions à surveiller et
les actions à prendre en cas de détection d’une correspondance. Voici les significations des
principaux composants d’une règle dans Suricata:
1. Action : L’action spécifie ce qui doit être fait lorsque la règle détecte une correspondance
avec le trafic surveillé.
Les actions les plus courantes sont :‘alert‘, qui génère une alerte ; ‘drop‘,qui bloque le trafic ;
et ‘pass‘,qui autorise le trafic.
2. Option de protocole : Cette partie de la règle spécifie le protocole réseau à surveiller. Par
exemple,‘tcp‘,‘udp‘,‘icmp‘, etc.
3. Source et destination: Les adresses IP source et destination du trafic à surveiller.
4. Port: Les ports source et destination du trafic à surveiller.
5. Contenu : Le contenu est la charge utile des paquets réseau. Il peut s’agir de chaînes de
caractères spécifiques à rechercher dans le trafic, ce qui peut indiquer une activité
malveillante.
15
6. Direction : Cette option spécifie la direction du trafic à surveiller, par exemple, ‘->‘ pour le
trafic allant de la source vers la destination, ou‘<-‘pour le trafic allant de la destination vers la
source.
7. options supplémentaires : Il existe de nombreuses autres options disponibles dans les règles
Suricata, telles que ‘sid‘ (identifiant de signature), ‘msg‘ (message d’alerte), ‘classtype (type
de classe) et ‘rev‘(version de règle)
Pour tester le bon fonctionnement du Suricata, on effectue plusieurs attaques et on observe les
alertes dans : /var/log/suricata/fast.log
16
2.3.1 Scan avec Nmap
FIGURE 13 : Ping
17
2.3.4. SQLI
Nous avons installé serveur apache2 et nous essayons de tester avec sqlmap:
Sqlmap -u ‘http://ip/test.php’
FIGURE 15 : SQLMap
Le code récupère un paramètre id de l'URL et l'utilise directement dans une requête SQL
sans vérification ni échappement, ce qui rend la requête vulnérable à une attaque SQL
Injection
18
FIGURE 17 : attaqueSQLI
Nous avons utilisé cette DATASET[5] , Les données fournies représentent des enregistrements
de trafic réseau, avec des informations telles que le protocole de transport utilisé, le type de
service, le statut de la connexion, et diverses caractéristiques spécifiques à chaque transaction.
Chaque ligne correspond à une transaction individuelle, avec des champs numériques
décrivant des aspects tels que la durée de la connexion, le nombre de paquets, et le taux
d’erreur. Le dernier champ indique l’état de la connexion, distinguant entre une activité
normale et des activités suspectes ou malveillantes, comme des tentatives de déni de service.
Ces données sont généralement utilisées dans le domaine de la détection d’intrusion pour
entraîner et évaluer des algorithmes de classification visant à identifier les comportements
anormaux ou les attaques potentielles dans les réseaux informatiques.
Nous avons importé un certain nombre de bibliothèques telles que numpy, sklearn, seaborn,
pandas.Ces bibliothèques jouent un rôle essentiel dans l’exécution des programmes. De
19
nombreux ensembles de données se présentent sous la forme de CSV. Le CSV est un fichier
à valeurs séparées par des virgules qui permet de stocker des données sous forme de tableau
La variable ‘col-names‘ est une liste contenant les noms des colonnes d’un jeu de données.
Chaque élément de la liste représente le nom d’une caractéristique ou d’une variable dans le
jeu de données, telles que la durée de la connexion, le type de protocole, le service utilisé, etc.
20
FIGURE 21 : Col-names
21
3.5. Analyse des données
L'importation de 'matplotlib.pyplot' sous le nom 'plt' permet d'utiliser les fonctionnalités de traçage de
Matplotlib dans le code. La ligne 'ds2['label'].value_counts().head(25).plot(kind='barh', figsize=(6,
6))' génère un diagramme à barres horizontales basé sur les comptages des différentes valeurs de la
colonne 'label' dans le DataFrame 'ds2', en affichant les 25 premières valeurs les plus fréquentes. La
taille de la figure est définie comme étant de 6 pouces par 6 pouces.
FIGURE 23 : EnterCaption
Ce code génère un graphique de comptage pour visualiser la distribution des classes dans la
colonne ’label’ du Data Frames, avec un titre "ClassCount"
22
FIGURE 25 : Classification normal/attaque
Ce code génère un graphique de comptage pour visualiser la distribution des classes binaires
dans la colonne ’label’ du DataFrame Y.Il ajoute également des étiquettes de pourcentage sur
chaque barre du graphique et ajuste les étiquettes d’axe y pour afficher les pourcentages
correspondants.
23
Ce code donne des pourcentages des différentes attaques estimés .
24
3.6. Framework LGBM
FIGURE 29 : OutputLGBM
25
On trouve une précision de 99.99%
FIGURE 30 : Précision
Conclusion
Dans ce chapitre, nous avons réalisé la mise en pratique de notre solution de détection
d'intrusions, passant par des étapes cruciales pour assurer son efficacité opérationnelle. En
créant des règles par signature pour Suricata, nous avons défini les comportements
malveillants à surveiller, tandis que les tests de fonctionnement de Suricata ont validé son
aptitude à détecter les intrusions conformément à nos attentes. De plus, l'implémentation
pratique du deep learning avec LGBM nous a permis d'entraîner et d'évaluer notre modèle,
renforçant ainsi la robustesse de notre solution. Cette étape concrète nous rapproche de notre
objectif final : offrir une protection efficace contre les menaces en milieu informatique.
26
CONCLUSION GENERALE
En regardant vers l'avenir, plusieurs perspectives émergent. Tout d'abord, il est impératif de
continuer à suivre de près les évolutions dans le paysage des menaces informatiques et
d'adapter en conséquence nos stratégies de sécurité. Cela pourrait impliquer une recherche
continue sur de nouvelles méthodes de détection et de prévention des attaques, ainsi que le
développement de technologies plus avancées pour contrer les attaquants.
Enfin, la sécurité informatique est un effort collectif et multidimensionnel qui nécessite une
collaboration étroite entre les différents acteurs de l'écosystème numérique. Les
gouvernements, les entreprises, les institutions académiques et la société civile doivent
travailler ensemble pour partager des informations sur les menaces, développer des normes de
sécurité et promouvoir une culture de sécurité numérique.
En définitive, la sécurité informatique est un défi complexe mais surmontable, à condition que
nous restions vigilants, engagés et collaboratifs dans notre approche. En unissant nos efforts,
nous pouvons garantir la protection des données et la continuité des activités dans un monde
de plus en plus numérique et interconnecté.
27
BIBLIOGRAPHIE
https://blog.netwrix.fr/2018/07/04/les-10-types-de-cyberattaques-les-plus-courants/ [1]
http://lehmann.free.fr/RapportMain/node10.html [2]
https://noctisdark.dev/blog/labs/tp-suricata/ [3]
https://hal.science/hal-01304514/document [4]
DATASET [5]
https://github.com/Mamcose/NSL-KDD-Network-Intrusion-Detection/tree/master
28