15
Ministère de l’Enseignement Supérieur de la Recherche Scientifique et la Technologie *** * *** Université 07 novembre à Carthage *** * *** Institut National des Sciences Appliquées et de Technologie Compte rendu TP1 Réseaux Locaux: Réalisation d’un programme de capture de trames Elaboré par : Abdelkrim FITOURI Salmen HITANA 1

Compte Rendu 1 Reseau Locaux

Embed Size (px)

Citation preview

Page 1: Compte Rendu 1 Reseau Locaux

Ministère de l’Enseignement Supérieur de la Recherche Scientifique et la Technologie *** * ***

Université 07 novembre à Carthage *** * *** Institut National des Sciences Appliquées et de Technologie

Compte rendu

TP1 Réseaux Locaux: Réalisation d’un programme de capture de trames

Elaboré par :

Abdelkrim FITOURI

Salmen HITANA

Niveau : 4 ème année réseaux informatiques et télécommunications

Année universitaire : 2009/2010

1

Page 2: Compte Rendu 1 Reseau Locaux

Partie1 : Capture de trame avec Wireshark et Libpcap

Introduction   :

Ethereal est le plus ancien analyseur de trafic, même s’il a encore un site www.ethereal.com ,le projet a pris une nouvelle tournure et s’appelle Wireshark(www.wireshark.org).

Wireshark est un logiciel libre d'analyse de protocole, ou « packet sniffer » qui capture les trames et affiche leurs contenus en détails , utilisé dans le dépannage et l'analyse de réseaux informatiques, le développement de protocoles, l'éducation et la rétro-ingénierie, mais aussi pour examiner la sécurité des réseaux et pour le piratage.Wireshark est multiplate-forme, il fonctionne sous Windows, Mac OS X, Linux, Solaris, ainsi que sous FreeBSD.

Wireshark reconnait 759 protocoles.

Wireshark a quelques fonctionnalités qui ne se trouvent pas dans les autres sniffé gratuit comme le réassemblage de paquets (reconstruction du trafic), il les filtre avec une syntaxe particulière, affichage détaillé des informations sur un protocole….

Wireshark nécessite la bibliothèque Winpcap, très facile à installer et à configurer ,cette bibliothèque sera utilisée dans la 2 eme partie du TP « réalisation d’un programme de capture de trame ».

Cette bibliothèque nous permet un très haut degré de contrôle de la communication réseau, c’est pour cela qu’elle est utilisée dans plusieurs programmes qui ont une partie de traitement sur les paquets, comme l’IDS Snort.

Capture de trame   : mise en œuvre   :

Après l’installation, nous allons écouter le réseau avec Wireshark.

Remarque :

Dans les réseaux commutés nous pouvons voir que les paquets entrants, sortent de notre machine ou le trafic broadcaste.

Tout d’abord on doit choisir l’interface avec laquelle on va écouter le réseau :

2

Page 3: Compte Rendu 1 Reseau Locaux

On appuie sur START pour commencer l’écoute :

Les paquets sont codés selon les protocoles qui s’y trouvent. Dans la partie encadrée en rouge :

La première colonne correspond au numéro du paquet Time : temps écoulé depuis le lancement de la capture et l’arrivée de la trame. 3 ème colonne l’adresse source (IP ou MAC selon le protocole) 4 ème colonne l’adresse destination (IP ou MAC selon le protocole aussi). 5 ème colonne correspond au protocole utilisé. Dernière colonne quelques informations relatives sur le contenu du paquet (flag,

numéro de séquence, port…). Une pile d’encapsulation est construite (partie encadré avec la couleur verte) qui contient

des informations pour chaque paquet : Les protocoles utilisés dans chaque couche. Le contenu des différents champs de chaque protocole.

Ci-dessous un exemple du contenu du protocole Ethernet :

Tout en bas de la fenêtre on trouve le contenu du paquet en format hexadécimal (rouge) et ASCII (vert) :

3

Page 4: Compte Rendu 1 Reseau Locaux

Utilisation des filtres   :

L’utilisation des filtres peut s’avérer utile si on veut voir juste des paquets spécifiques par exemple qui sont destinés à notre machine ou utilisant un protocole donné.

Pour appliquer les filtres :

Tout d’abord on choisit un protocole parmi plus de 1000 protocoles disponibles. Ensuite on choisit les champs (environ 80000 champs disponibles dans la version 1.0.5). On choisit l’opérateur. Et enfin la valeur qu’on va comparer.

Les paquets ICMP:

On peut taper directement « icmp » dans le champ « filtre » :

En choisissant une trame ont peut facilement dégager sa structure :

Comme on peut facilement le constater, le protocole ICMP contient les champs suivants:

4

Page 5: Compte Rendu 1 Reseau Locaux

On veut maintenant afficher les paquets ICMP avec une adresse destination 74.125.39.174 qui est l’adresse IP de www.google.com

On écrit alors dans le champ filtre :

icmp AND ip.dst==74.125.39.174

On aura alors :

Les trames ARP   :

Le protocole ARP (Adresse Résolution Protocole) permet de trouver l’adresse MAC d’une machine depuis une adresse IP connu.

Fonctionnement :

Quand une machine a un datagramme IP à envoyer, elle doit informer le réseau (couche Ethernet par exemple) de l’adresse mac de la destination.

Si la machine ne trouve pas l’adresse mac dans son ARP cache elle utilise le protocole ARP pour le trouver.

La machine envoie alors un ARP-REQUEST qui contient dans son champ adresse destination, une adresse broadcaste mac sous la forme ff-ff-ff-ff-ff-ff et l’adresse IP destination. Cette trame sera envoyée à toute les machines du réseau.

Si la machine concernée (qui a l’adresse ip destination) reçoit le paquet elle envoi son adresse MAC dans une trame ARP-REPLY.

La machine émettrice reçoit alors le paquet ARP-REPLY et ajoute l’adresse MAC dans son cache.

Voilà le fonctionnement de l’ARP :

5

Page 6: Compte Rendu 1 Reseau Locaux

Le protocole TCP   :

Pour afficher les 3 phases de connexion on utilise le filtre

(ip.addr eq 192.168.1.10 and ip.addr eq 192.168.1.1) and (tcp.port eq 80)

192.168.1.10 est l’adresse ip de la machine qu’on utilise

192.168.1.1 est l’adresse ip du routeur qu’on utilise et qui contient une interface web donc en tapant son adresse dans l’explorateur web on accédera à l’interface web du routeur donc il va y avoir une établissement de connexion entre la machine et le routeur qui contient un serveur web .

On aura alors :

Et voici un schéma qui explique les étapes de l’établissement de connexion entre deux machines .

Figure qui résume le principe d’établissement de la connexion.

Le premier paquet de synchronisation :

6

Page 7: Compte Rendu 1 Reseau Locaux

Le 2 ème paquet SYN ACK pour accepter la connexion :

Et enfin le 3 ème paquet pour que le client informe le serveur qu’il va maintenant commencer l’envoi des données.

7

Page 8: Compte Rendu 1 Reseau Locaux

2 ème partie : Réalisation d’un programme qui capture les

Trames Dans cette partie nous allons réaliser un programme qui utilise la bibliothèque LIBPCAP pour capturer les trames en s’inspirant de Wireshark.

Le programme permettra de capturer puis décoder les paquets de type IP, UDP, TCP, ICMP, ARP, et ETHERNET qui transitent sur le réseau.

On utilisera le C comme langage et le GCC comme compilateur dans la réalisation de ce programme On doit tout d’abord installer la bibliothèque LIBPCAP sur Fedora l’installation est simple puisque la bibliothèque existe dans le gestionnaire des paquets synoptique de Fedora ce qui permet de l’installer dans deux simple cliques.

Pour chaque paquet capturé on affiche les entêtes et leur contenu.

Première étape : ajout des entêtes :

Tous d’abord on doit ajouter la structure des entêtes dans le fichier « headers.h »

Remarque :

Les entêtes Ethernet ,IP, TCP sont déjà présentes.

8

Page 9: Compte Rendu 1 Reseau Locaux

Paquet UDP :

9

Page 10: Compte Rendu 1 Reseau Locaux

Le choix des types de chaque champ est effectué selon :

Source www.commentcamarche.com

Par exemple pour la taille des ports :

On a choisi unsigned short car dans la trame réelle, la taille du port est de 16 bit (2 octet).

Ca aurait pu être un short in mais les numéros de port ne sont pas de signe négatif.

10

Page 11: Compte Rendu 1 Reseau Locaux

Paquet ICMP :

Toutes les structures des paquets peuvent être trouvées dans le fichier (/usr/include/netinet/*.h)

Paquet ARP :

11

Page 12: Compte Rendu 1 Reseau Locaux

Réalisation :

Menu principale :

Choix de l’interface

Affichage des informations liées à l’interface choisie et choix du nombre de paquet à capturer

12

Page 13: Compte Rendu 1 Reseau Locaux

Choix du filtre à appliquer

Exemple d’écoute sur des paquets TCP

Exemple d’écoute sur des paquets ARP

13

Page 14: Compte Rendu 1 Reseau Locaux

Exemple d’écoute sur des paquets ICMP

Exemple d’écoute sur des paquets UDP

14