LOGICIEL SNIFFER POUR SECURISER UN RESEAU LAN 

Télécharger le fichier pdf d’un mémoire de fin d’études

Couche physique

La couche physique s’occupe de la transmission des bits de façon brute sur un canal de communication. Elle permet de transformer un signal binaire en un signal compatible avec le support choisi (cuivre, fibre optique, HF etc.) et réciproquement. Cette couche doit garantir la parfaite transmission des données. Concrètement, cette couche doit normaliser les caractéristiques électriques (un bit 1 doit être représenté par unetension de 5V, par exemple), les caractéristiques mécaniques (forme des connecteurs, de la topologie..), les caractéristiques fonctionnelles des circuits de données et les procédures d’établissement, de maintien et de libération du circuit de données.
L’unité d’information typique de cette couche est el « bit », représenté par une certaine différence de potentiel. [5]
Nous pouvons citer quelques normes qui gèrent cette couche :
– RS232, RS449 de l’EIA (Electronics Industry Association).
– V24, V90 de l’UIT-T (Union Internationale des Télécommunications-Télécommunication.
– 10base2, 100baseT de la norme Ethernet [1].

Couche liaison de données

Son rôle est celui d’un « liant » : elle va transform er la couche physique en une liaison exempte d’erreurs de transmission pour la couche réseau. Elle fractionne les données en entrée de l’émetteur en trames, transmet ces trames en séquence et gèreles trames d’acquittement renvoyées par le récepteur. La couche liaison de données doit êtreapablec de reconnaître les frontières des trames. La couche liaison de données doit être capable deenvoyer une trame lorsqu’il y a eu un problème sur la ligne de transmission. De manière générale,un rôle important de cette couche est la détection et la correction d’erreurs intervenues sur la couche physique. Cette couche intègre également une fonction de contrôle de flux pour éviter l’engorgement du récepteur. L’unité d’information de la couche liaison de données est « la trame » qui est composées de quelques centaines à quelques milliers d’octets maximum. [5]
On peut rencontrer dans cette couche des protocoles : HDLC, PPP, X25,… [1]

Couche réseau

Cette couche assure toutes les fonctionnalités de relais et d’amélioration de services entre les entités du réseau, c’est-à-dire l’adressage, le routage, le contrôle de flux, la détection d’erreurs non résolues par la couche liaison pour préparer le travail de la couche 4. Elle fournit aussi les moyens d’établir, de maintenir et de libérer des connexions de réseau entre des systèmes ouvert dont la gestion du sous réseaux, l’acheminement des paquets de source vers la destination. La couche réseau doit permettre l’interconnexion de réseaux hétérogènes. L’unité d’information de la couche réseau est « lepaquet ». [5]
Le protocole le plus connu et plus utilisé dans cete couche est l’Internet Protocol (IP : version 4 et version 6) [1]

Couche transport

Cette couche est responsable du bon acheminement des messages complets au destinataire. Son rôle principal est de prendre les messages de la co uche session, de les découper s’il le faut en unités plus petites et de les passer à la couche réseau, tout en s’assurant que les morceaux arrivent correctement de l’autre côté. Elle effectue donc aussi le réassemblage du message à la réception des morceaux. Elle est également responsable de l’optimisation des ressources du réseau.
Cette couche est également responsable du type de service à fournir à la couche session, et finalement aux utilisateurs du réseau : service en mode connecté ou non, avec ou sans garantie d’ordre de délivrance, diffusion du message à plusieurs destinataires à la fois… L’unité d’information de la couche réseau est « lemessage ». [4][5]
En pratique, on distingue principalement les deux protocoles : UDP (User Datagram Protocol et TCP (Transfert Control Protocol).

Couche session

Cette couche organise et synchronise les échanges entre tâches distantes. Elle réalise le lien entre les adresses logiques et les adresses physiques des tâches réparties. Elle établit également une liaison entre deux programmes d’application devant coopérer et commande leur dialogue (qui doit parler, qui parle…). Dans ce dernier cas, ce service d’organisation s’appelle la gestion du jeton. La couche session permet aussi d’insérer des points dereprise dans le flot de données de manière à pouvoir reprendre le dialogue après une panne. Elle permet une communication multipoint. [4] Il existe quelques protocoles travaillant dans cette couche et qui ont pour rôle de synchroniser ses différents interlocuteurs, par exemple, « qui répond à qui ? ». Ces protocoles sont :
– H323: Téléphonie IP(ToIP), Voix IP(VoIP).
– SIP : Session Internet Protocol.
– Etc., [1].

Couche présentation

Cette couche se charge de la présentation des informations que les entités s’échangent. Elle s’intéresse à la syntaxe et à la sémantique des données transmises : c’est elle qui traite l’information de manière à la rendre compatible entre tâches communicantes.  Elle est chargée de :
· Représenter les données transférées entre entités aplicationd.
· Représenter la structure de données et de représenter l’ensemble des actions effectuées sur cette structure de données.
· Effectuer un codage dans une norme agréée permettanà des équipements utilisant des codes différents de communiquer.
Elle va assurer l’indépendance entre l’utilisateuret le transport de l’information. Typiquement, cette couche peut convertir les données, les reformater, les crypter et les compresser. Elle permet de contourner l’hétérogénéité des techniques de codage des informations utilisé par les différents systèmes en jeu. [4][5]
Elle est matérialisée par les entités suivantes: ml,ht xml, NCP, SSP, Vidéotex,… [1].

Caractéristiques du protocole TCP

TCP (qui signifie Transmission Control Protocol, soit en français: Protocole de Contrôle de Transmission) est un des principaux protocoles de la couche transport du modèle TCP/IP. Il permet, au niveau des applications, de gérer les données en provenance (ou à destination) de la couche inférieure du modèle (c’est-à-dire le protocole IP). TCP est un protocole orienté connexion, c’est-à-dire qu’il permet à deux machines qui communiquent de contrôler l’état de la transmission. Les données transmises par TCP sont encapsulé dansdes datagrammes IP en fixant la valeur du protocole à 6. [8]
Les caractéristiques principales du protocole TCP sont les suivantes :
– TCP permet de remettre en ordre les datagrammes en provenance du protocole IP.
– TCP permet de vérifier le flot de données afin d’éviter une saturation du réseau.
– TCP permet de formater les données en segments de longueur variable afin de les « remettre » au protocole IP.
– TCP permet de multiplexer les données, c’est-à-dire de faire circuler simultanément des informations provenant de sources (applications par exemple) distinctes sur une même ligne.

Les sockets sous Windows

L’API Windows comprend un certain nombre de fonctions permettant de manipuler les sockets en C ou en C++ et forment à elles toutes seules une bi bliothèque connue sous le nom de Winsock (Windows Sockets API), qui en est actuellement à la version 2. La fonction qui permet de créer un socket est SOCKET.
Exemple : Création d’un socket nommé « sock»
SOCKET sock (int pf, int type, int protocol).
Le premier argument, pf pour protocol family, spécifie la famille de protocoles que le socket doit supporter, dans notre cas : PF_INET (modèle TCP/IP).
Le deuxième argument, type, permet de spécifier letype du socket. Dans le cas d’un socket PF_INET, on a au moins le choix entre SOCK_STREAM qui permet de créer un socket orienté connexion et SOCK_DGRAM qui permet de créer un socket non orienté connexion. Pour les sockets bruts, on met SOCK_RAW.
Et enfin le dernier argument, protocol, spécifie le protocole à utiliser avec le socket. Nous pourrons par exemple choisir TCP (IPPROTO_TCP) pour un socket Internet (PF_INET) orienté connexion (SOCK_STREAM) et UDP (IPPROTO_UDP) pour un socket non orienté connexion. La valeur0 est également acceptée et dans ce cas la fonctionva choisir elle-même le protocole qui va le mieux avec notre ockets vu les valeurs que nous avons spécifiées dans les deux premiers arguments.

Les sockets en mode connecté

Pour établir une connexion avec une machine sur le réseau, il faut spécifier son adresse puis le numéro du port sur lequel on veut se connecter. Un port est tout simplement un canal à travers lequel les applications peuvent se communiquer entre elles. Supposons qu’une machine M (le serveur) fait tourner simultanément deux programmesA et B, le premier écoutant sur le port 2024 et le deuxième sur le port 3312. Si un programme vient se connecter sur M sur le port 2024, alors celui-ci rencontrera le programme A alors qu’un autre qui viendrait se connecter sur le port 3312 rencontrerait le programme B.
En mode connecté, on doit créer deux programmes appelés serveur et client qui vont se communiquer.

Réalisation du « client »

Pour comprendre facilement le principe, prenons un exemple. Nous allons créer un programme qui va se connecter sur la machine locale (127.0.0.1), sur le port 5050 et qui une fois connecté va attendre un message de bienvenue venant du serveur, afficher ce message puis envoyer une réponse au serveur.
La première étape à suivre est de créer le socket ne question à l’aide de la fonction SOCKET comme nous avons précisé tout à l’heure.
Ensuite, nous allons connecter ce socket au port 5050 de 127.0.0.1. Nous allons donc dans un premier temps décrire la machine avec laquelle on veut établir une connexion à l’aide d’une structure de type SOCKADDR_IN (struct sockaddr_in), ensuite appeler la fonction connect qui va effectivement faire le lien entre notre socket et le serveur. La portion de programme suivant illustre ce propos.
. server sin family  = AF_INET.
. server sin addr.s_addr = inet_addr(« 127.0.0.1 »).
. server. in port = htons(5050).
Le champ sin_addr de la structure SOCKADDR_IN qui est censé contenir l’adresse proprement dite qui n’est pas de type entier mais une structure de type IN_ADDR (struct in_addr) qui est une structure composée seulement d’un champ, S_un, quiest une union entre trois objets de types différents, permettant chacun de stocker une adresse IP, parmi lesquels on notera S_addr qui est de type entier long. s_addr est en fait un raccourci (un #define) vers S_un.S_addr. La fonction inet_addr permet de convertir une chaîne contenant une adresse IP en un entier représentant cette adresse. Et enfin, le champ sin_zero est inutilisémais il doit être mis à zéro. Il ne sert qu’à faireen sorte que les structures SOCKADDR (présentée plus as)b et SOCKADDR_IN ont la même taille. La fonction htons (host to netwok short) permet de réarranger l’ordre des octets de l’entier (unsigned short) passé en argument de façon à ce qu ‘il corresponde au format requis sur le réseau. En effet, sur les machines x86 par exemple, les octets sont rangés en mémoire en commençant par l’octet de poids le plus faible. On appelle ce format little-endian. Or sur le réseau c’est complètement l’inverse : les octets sont rangés encommençant par l’octet de poids le plus fort.
C’est le format big-endian. htons fera en sorte, quel que soit le format utilisé sur votre machine, que les octets soient rangés dans le bon ordre.
Maintenant, on va attendre le message du serveur puis lui envoyer une réponse après avoir affiché ce message. Il est donc temps à présent de parler des fonctions permettant d’envoyer ou de recevoir des données à travers un socket à savoir s end et recv en mode connecté et sendto et recvfrom en mode non connecté. Dans notre cas, c’est recv et send qu’il faut utiliser.

Réalisation du « serveur »

Nous allons à présent créer un serveur qui va écouter sur le port 5050 en attente d’une demande de connexion de la part d’un client. Le cas échéant, al connexion sera acceptée, un message de bienvenue sera envoyé puis lorsque le client aura répondu, le programme se terminera. Bien entendu, un vrai serveur ne se termine pas de cette façon mais on verra ce détail plus tard.
Comme nous le savons très bien, une machine peut posséder plusieurs interfaces réseau (ou cartes réseau). A chaque interface peut être associée uneadresse IP. Lorsqu’un serveur se met en marche, il doit choisir sur quelle interface (et quel port) il veut écouter, c’est-à-dire attendre les demandes de connexion. Donc si une machine possède deux interfaces, A et B, et qu’un client vient se connecter sur A alors que le serveur écoute sur B, leurs chemins ne se croiseront pas. Or, généralement, on veut que le serveur soit capable ‘accepterd toutes les demandes de connexion arrivant sur n’importe quelle interface de la machine. Alors que faire ? Et bien, on met tout simplement INADDR_ANY (0) dans le champ adresse (sin_adrr.s_addr) de la structure SOCKADDR_IN. Ensuite un serveur n’appelle pas connect mais plutôt accept, qui est une fonction qui permet de rester en attente d’une demande de connexion. Mais avant de faire un accept sur un socket, il faut que celui-ci ait déjà été correctement attaché à un port (comme avec connect) et que celui-ci soit déjà sur écoute, ce que l’on peut faire respectivement à l’aide des fonctions bind et listen. Donc vous voyez bien qu’un serveur n’est pas pluscompliqué qu’un client.

Les sockets en mode non connecté

La programmation des sockets non orientés connexion(SOCK_DGRAM) n’est pas très différente de leur programmation en mode connecté. La principale différence c’est qu’on n’a plus besoin d’appeler connect puisque l’adresse du destinataire est spécifiée àchaque send, ni listen et accept du côté du récepteur puisque chaque message entran peut venir de n’importe où, par contre il est toujours nécessaire d’attacher le socket récepteur à un port de la machine c’est-à-dire faire un bind. En outre, on utilisera sendto et recvfrom à la place de send et recv.
int sendto(SOCKET sock, const char * buf, int len, int flags, const struct sockaddr * to, int tolen); int recvfrom(SOCKET sock, char * buf, int len, int flags, struct sockaddr * from, int * fromlen).
En fait, la fonction sendto peut être utilisée aussi bien en mode connecté qu’en mode non connecté. Si sock est un socket connecté, alors les arguments to et tolen seront tout simplement ignorés et la fonction se comportera comme un simple send. Dans recvfrom, sock doit être un socket attaché à un port. De plus, comme dans accept, les arguments from et fromlen ne sont pas obligatoires mais sont quand même utiles pour avoirdes informations sur l’expéditeur du message. Une autre difference se présente sur le nom des programmes communiquant qui sont « l’expéditeur » et le « récepteur » au lieu de client et serveur.

Le rapport de stage ou le pfe est un document d’analyse, de synthèse et d’évaluation de votre apprentissage, c’est pour cela chatpfe.com propose le téléchargement des modèles complet de projet de fin d’étude, rapport de stage, mémoire, pfe, thèse, pour connaître la méthodologie à avoir et savoir comment construire les parties d’un projet de fin d’étude.

Table des matières

INTRODUCTION GENERALE
CHAPITRE 1 RESEAUX LAN ET MODELES
1.1 Réseaux informatiques
1.1.1 Définition
1.1.2 Objectifs
1.1.3 Réseaux locaux ou LAN
1.1.3.1 Classification des réseaux informatiques
1.1.3.2 Réseau LAN
1.1.4 Topologie des réseaux
1.1.4.1 Topologie en bus
1.1.4.2 Topologie en étoile
1.1.4.3 Topologie en anneau
1.2 Modèle OSI
1.2.1 Introduction
1.2.2 Définition et description des sept couches
1.2.2.1 Couche physique
1.2.2.2 Couche liaison de données
1.2.2.3 Couche réseau
1.2.2.4 Couche transport
1.2.2.5 Couche session
1.2.2.6 Couche présentation
1.2.2.7 Couche application
1.2.3 Application
1.3 Modèle TCP/IP
1.3.1 Introduction
1.3.2 Définition
1.3.3 Couches TCP/IP
1.3.3.1 Couche accès réseau
1.3.3.2 Couche internet
1.3.3.3 Couche transport hôte à hôte
1.3.3.4 Couche application
CHAPITRE 2 PROTOCOLES DE BASE DU MODELE TCP/IP, PORTS ET SOCKETS
2.1 Protocoles de base du modèle TCP/IP
2.1.1 Protocole IP
2.1.1.1 Définition et rôle
2.1.1.2 Datagramme IP
2.1.2 Protocole TCP
2.1.2.1 Caractéristiques du protocole TCP
2.1.2.2 Segment TCP
2.1.2.3 But de TCP
2.1.3 Protocole UDP
2.1.4 Protocole ICMP
2.1.4.1 Description
2.1.4.2 Messages ICMP
2.2 Les ports
2.2.1 Les ports matériels
2.2.2 Les ports logiciels
2.2.2.1 Définition
2.2.2.2 Utilité
2.2.2.3 Attribution des ports
2.3 Les sockets
2.3.1 Généralités
2.3.2 Les sockets sous Windows
2.3.3 Les sockets en mode connecté
2.3.3.1 Réalisation du « client »
2.3.3.2 Réalisation du « serveur »
2.3.4 Les sockets en mode non connecté
2.3.5 Les sockets bruts
CHAPITRE 3 LA SECURITE DES INFORMATIONS
3.1 Introduction
3.2 Définition de la sécurité des systèmes d’informations
3.2.1 Systèmes d’information
3.2.2 Sécurité d’un système d’information
3.3 Menaces et attaques sur les systèmes d’informations
3.3.1 Les menaces
3.3.1.1 Accidents
3.3.1.2 Les erreurs
3.3.1.3 Les malveillances
3.3.2 Les attaques
3.3.2.1 Définitions et classification
3.3.2.2 Quelques types d’attaques courantes et protection
a. Le sniffing
b. Le scanner
c. Les bogues
d. Les virus
e. Les vers
f. Les chevaux de Troie
g. Porte dérobée ou « backdoor »
h. Les bombes logiques
i. Les attaques par déni de services
j. IP spoofing
3.4 Conclusion
CHAPITRE 4 REALISATION : LOGICIEL SNIFFER POUR SECURISER UN RESEAU LAN 
4.1 Introduction
4.2 Sniffer
4.2.1 Définition et principe
4.2.2 Protection contre le sniffing
4.2.2.1 L’ARP Watch
4.2.2.2 La méthode de latence
4.2.2.3 La méthode ARP.
4.2.3 Avantages et application
4.2.4 Sniffer sous Windows
4.2.5 L´API Socket version 2 sous Windows:
4.3 Conception et mise en oeuvre de l’application
4.3.1 Objectifs de notre application
4.3.2 Choix des outils de conception
4.3.2.1 Microsoft Visual Studio
4.3.2.2 Langage C
4.3.3 Programmation du logiciel « sniffer »
4.3.3.1 Phase 1 : Import des librairies et entêtes, déclaration des variables
4.3.3.2 Phase 2 : Création de la fenêtre présentant notre application
4.3.3.3 Phase 3 : Création du socket
4.3.3.4 Phase 4: Réception et affichage des données
4.3.4 Programmation du logiciel « scanner de port »
4.3.5 Mise en oeuvre de l’application
4.4 Conclusion
CONCLUSION GENERALE
ANNEXE 1 MANIPULATION DU LOGICIEL
ANNEXE 2 ADRESSAGE IP
FICHE DE RENSEIGNEMENTS

Télécharger le rapport complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *