ETHEREAL Introduction 1. Qu`est

Transcription

ETHEREAL Introduction 1. Qu`est
ETHEREAL
Introduction
Ethereal fait partie des logiciels les plus utilisés dans le milieu de l'administration d'un réseau
physique. En effet cet outil "open source" très pratique, donc sous une license publique GNU
(GPL), permet d'analyser précisement un réseau en cas de problèmes ou non, et de déceler son
origine dans un cas de latence, de congestion ou autre.
Ethereal récupère donc tous les paquets circulant physiquement sur le réseau, et interprète leur
structure. Et tout cela graphiquement. Cet analyseur peut être utilisé sous pratiquement, toutes les
plateformes logicielles et permet de capturer la plupart des paquets réseaux et protocoles existants.
1. Qu'est-ce qu'Ethereal
1.1. Historique
Fin 1997, Gerald Combs eu besoin d’un outil pour palier aux problèmes réseau, et voulait en
apprendre plus à propos du fonctionnement des réseaux. Il commença donc à penser, puis décrire
Ethereal, comme une alternative dans le but de résoudre certains problèmes réseaux.
Juillet 1998, est la date de la sortie initiale d’Ethereal.
1.2. Le statut d'Ethereal
Chaque administrateur de réseau a eu, à un moment donné, besoin d'un outil capable de capturer et
sortir des paquets, circulant physiquement sur le réseau, et de les analyser. Dans le passé, de tels
outils étaient soit très chers, soit propriétaires, ou bien les deux. Cependant, avec l'arrivée
d'Ethereal, tout ça a changé. Ethereal est peut-être, aujourd’hui, les des meilleurs « sniffers » de
paquet « open source » disponibles.
Voici quelques dispositifs et outils qu’Ethereal fournit :
- Disponibles sous Unix et Windows.
- Capture et affiche les paquets depuis n'importe quelle interface .
- Affiche les paquets déjà capturés par d'autres analyseurs, tels que "Sniffer Pro", "iptrace"
d'AIX, "Microsoft Network Monitor", "LANalyser", "tcpdump", etc ...
- Sauvegardes les captures sous différents formats
- Filtre les paquets sur divers critères.
Ethereal a aujourd'hui un nombre important de protocoles supportés, il me serait impossible, pour
de questions de lisibilité, de tous les citer ici, mais en voici quelques uns :
- 802.1q LAN virtuel
- 802.1x Authentification
- ATM
- ARP
- AppleTalk
- BootStrap
- Tous les protocoles prioritaires Cisco
- DHCP
- Spanning Tree
- DNS
- Ethernet
- FTP
- HTTP
- IGMP
- IP et IPv6
- LDAP
- Beaucoup de protocoles propriétaires Microsoft
- NetBios
- PPP
- PPTP
Voici une représentation d'Ethereal, lors de son premier lancement :
Avant de passer à la partie sur l'installation et la présentation de l'interface graphique d'Ethereal,
voici les plateformes Unix et Windows sur lesquelles Ethereal va fonctionner:
- AIX
- Tru64 UNIX
- Debian Linux
- Slackware Linux
- Red Hat Linux
- FreeBSD
- NetBSD
- OpenBSD
- HP/UX
- Sparc/Solaris 8
- Windows XP/2000/NT/Me/98/95
Ethereal requiert GTK+, GLIB, et libpcap pour fonctionner sous une plateforme UNIX. Et Winpcap
pour les plateformes Windows.
2. Installation et présentation du logiciel
2.1. Installation d'Ethereal
Avant de compiler et d'installer Ethereal, il faut bien sur se procurer, soit les sources et les binaires,
pour une installation sous Unix ou Linux, soit "l'installer", pour une installation sous Microsoft
Windows.
On peut obtenir les "packages" contenant les binaires et les sources, ou "l'installer", sur Internet, ou
sur le site officiel d'Etereal, www.ethereal.com .
2.1.3. Windows
L'installation d'Ethereal sous Windows, contient deux étapes :
- Installez Winpcap, "WinPcap_3_1_beta_2.exe", par exemple
- Installez "l'installer" Ethereal, "ethereal-setup-0.10.3.exe", téléchargé sur
www.ethereal.com. Executez le après avoir installé winpcap.
2.2. Présentation de l'interface grahique
On peut maintenant, lancer notre analyseur.
L'interface graphique ressemble à ceci :
Nous voyons qu'Ethereal possède trois panels principaux :
- Le panel 1, est le panel qui contiendra la liste de tous les paquets capturés. En cliquant sur
l'un de ces paquets, les informations sur ce dernier, s'afficheront dans les panels deux autres
panels.
- Le panel 2, c'est un panel à arborescence. Il affichera le paquet sélectionné dans le panel 1,
avec plus de détails.
•
- Le panel 3, ce panel est une vue sur les données. Il affiche les données informant sur le
paquet sélectionné dans le panel 1. Il surlignera le champ de données, sélectionné dans le
panel 2.
Il y a quatre éléments important en-dessous du panel 3 :
- Le bouton A, nommé "Filter", lance la fenêtre permettant de créer des filtres.
- L'élément B, est un champ de texte, où l'on peut écrire ou éditer les filtres créés ou non.
C'est dans ce champ que va s'afficher le filtre fonctionnant lors d'une capture. On peut
cliquer sur la flèche descendante à la gauche du champ de texte pour sélectionner un filtre
préalablement créer.
- Le bouton C, nommé "Clear", va effacer les trois panels pendant ou après a capture. Le
bouton "Apply", permet d'enregistrer les résultats de la capture courante.
- L'élément D, dans ce champ va être affiché l'état d'Ethereal, s'il est en mode capture ou
non, et même le nombre de paquets capturés.
2.2.1. Les menus d'Ethereal
Voici les différents menus d'Ethereal :
- Le menu "File". Les sous-menus de "File", permettent d'ouvrir et de lire des fichiers de
capture, de sauvegarder et d'imprimer des fichiers de captures, d'imprimer des paquets et
leurs informations, et bien sur de quitter Ethereal.
- Le menu "Edit". Les sou-menus de "Edit", permettent de trouver une trame, d'aller vers une
trame, de marquer une ou plusieurs trames, d'établir les préférences, de créer des filtres, et
d'activer ou désactiver les protocoles à examiner.
- Le menu "Capture". Les sous-menus de "Capture", permettent de démarrer et d'arrêter les
captures.
- Le menu "Display". Les sous-menus de "Display", permettent de modifier les options
d'affichage, de coloriser les trames, d'afficher un paquet dans une fenêtre séparées.
- Le menu "Tools". Les sous-menus de "Tools", permettent de suivre une "stream" TCP,
d'aoir une liste de tous les paquets capturés, et d'afficher des statistiques hiérarchisées des
protocoles.
- Le menu "Help". Permet l'accès à l'aide d'Ethereal, et au sous-menu "About". Il ne sera pas
détaillé par la suite.
Nous allons maintenant détailler les sous-menus de chaque menus.
2.2.1. Le menu "File"
- "Open..." : Permet de charger un fichier de capture pour le réexaminer.
- "Close" : Ferme la capture courante. Si cette dernière n'a été enregistrée, elle est perdue.
- "Save" : permet d'enregistrer la cature courante. On ne peut pas enregistrer une capture si
elle est encore en cours. I faut arrêter la cature pour l'enregistrer.
- "Save As..." : Permet d'enregistrer la capture courante dans le fichier de on choix.
- "Reload" : ce sous-menu permet de recharger un fichier de capture utilisé.
- "Print..." : Permet d'enregistrer tous les paquets capturés.
- "Print Packet" : Permet d'enregistrer le paquet courant.
- "Quit" : Permet de quitter Ethereal.
2.2.1. Le menu "Edit"
- "Find Frame..." : Permet de trouver une trame en entrant un filtre d'affichage.
- "Go to Frame..." : Permet de spécifier une trame à afficher en entrant son numéro de trame.
- "Mark Frame" : Permet de marquer la trame courante.
- "Mark All Frames" : Permet de marquer toutes les trames.
- "Unmark All Frames" : Permet de démarquer toutes les trames.
- "Preferences" : Permet d'établir les préférences pour beaucoup de paramètres qui contrôlent
Ethereal. Les changements prennent effet au prochain lancement d'Ethereal.
- "Capture Filters..." : Permet de créer et d'éditer des filtres de capture, de les nommer et les
sauvegarder pour une utilisation future.
- "Display Filters..." : Permet de créer et d'éditer des filtres d'affichage, de les nommer et les
sauvegarder pour une utilisation future.
- "Protocols..." : Permet d'acitver et de désactiver les protocoles à prendre en compte lors de
la prochaine capture.
2.2.1. Le menu "Capture"
- "Start" : Permet de démarrer une capture de paquets.
- "Stop" : Stoppe la capture de paquets courante.
2.2.1. Le menu "Display"
- "Options..." : Permet de contrôler comment Ethereal va afficher les informations sur les
paquets.
- "Match Selected" : permet de sélectionner tous les paquets qui correspondent avec la
valeur du champ sélectionné dans le panel 2.
- "Colorize Display" : permet de coloriser les paquets dans le panel 1, qui correspondent aux
filtres préalablement choisis.
- "Expand All" : Permet d'étendre tous les sous-arbres de tous les paquets de la capture.
- "Show Packet In New Window" : Permet de voir le paquet sélectionné, ainsi que les
informations le concernant dans une fenêtre séparée.
- "User Specified Decodes..." : Permet de forcer Ethereal à décoder certains paquets comme
un protocole particulier.
2.2.1. Le menu "Tools"
- "Plugins" : Permet d'administrer les "plugins" d'Ethereal".
- "Follow TCP Stream" : permet d'afficher tous les segments TCP capturés dans la même
connexion TCP comme un paquet sélectionné.
- "Decode As..." : Permet de forcer Ethereal à décoder certains paquets comme un protocole
particulier.
- "Summary" : Ouvre une fenêtre de statistiques qui montre des informations sur les paquets
capturés.
- "Protocol Hierarchy Statistics" : Affiche un arbre hiérarchisé de statistiques de paquets.
3. Utilisation d'Ethereal
3.1. Capture de paquets
Il y a deux methodes que l'on peut utlisées afin de capturer des
paquets avec Ethereal :
- Grâce à la ligne de commande : ethereal -i eth0 -k
- Ou en démarrant Ethereal, grâce à la commande "Start..." du menu Capture.
•
La deuxième méthode lance une fenêtre nommée "Capture Preferences" dont voici le détail :
On peut paramétrer les champs suivant :
-Interface: Ici on spécifie sur quelle interface réseau on veut effectuer une capture de
paquets. On ne peut faire de capture sur une interface à la fois, mais aussi seulement sur les
interfaces détectées par Ethereal. Pour sélectionner l'interface, il suffit de la sélectionner
dans la liste déroulante. L'interface par défaut, est l'interface "loopback", de même s'il n'y a
pas d'autres interface. On peut obtenir le même paramétrage, grâce à la ligne de commande,
et l'option "-i".
•
- Count : Ce champ spécifie le nombre de paquets que l'on souhaite capturer. Il est par
défaut de "0", donc aucune capture.
•
- Filter : "Filter" permet de spécifier un filtre de capture. Par défaut, ce champ est vide, ou
est mis à "no filter". On peut aussi cliquer sur le bouton A "filter", pour créer ou sélectionner
un filtre.
•
- File : Ce champ permet de spécifier le nom du fichier(préalablement enregistré) qui va être
utilisé pour la capture.
•
- Capture length : On spécifie ici, la taille maximale de données qui vont être capturées pour
chaque paquet. Par défaut, ce nombre est de 65535, ce qui est suffisant pour la plupart des
protocoles. Ce nombre doit être au moins égal au MTU pour l'interface sur laquelle on
capture.
•
- Capture packets in promiscuous mode : Ce boutin permet de spécifier si Ethereal va
capturer en "promiscuous mode". Si on ne spécifie pas ce champ, la capture n'aura lieu que
sur les paquets allant de et vers la machine.
•
- Update list of packets in real time : Ce bouton permet de spécifier si Ethereal va rafraîchir
le panel 1 en temps réel. Si on ne spécifie pas cette option, rien ne s'affichera avant la fin de
la capture.
•
- Automatic scrolling in live capture : Ce bouton permet de spécifier si Ethereal devra
dérouler le panel 1 quand de nouveaux paquets seront capturés, ou si on ne voit que les
derniers paquets capturés.
•
- Enable MAC name resolution : Ce bouton permet de contrôler si Ethereal va traduire les
trois premiers octets de l'adresse MAC, en le nom du fabricant de l'élément réseau.
•
- Enable network name resolution : Ce bouton permet de contrôler si Ethereal va tansformer
l'adresse IP, en nom de domaine DNS.
•
- Enable transport name resolution : Ce bouton permet de contrôler va transformer les
numéro de ports en protocoles.
Quand ces options sont paramétrées, il suffit de cliquer sur "OK", pour commencer la capture.
Ethereal ouvre automatiquement une fenêtre en début de capture, avec la possiblité d'arrêter cette
dernière, et avec le nombre de paquets capturés.
3.2. Utilisation de filtres durant la capture
Ethereal va utiliser le langage de filtre "libpcap" ou "Winpcap", pourles filtres de capture. Cela est
expliqué dans la page manuel de "tcpdump".
On peut définir un filtre de capture grâce au champ "Filter" de la fenêtre de "Capture Preferences",
ou grâce au bouton A "Filter".
Un filtre de capture va bien sur servir à mieux cibler la capture, pour n'examiner qu'une partie des
paquets circuant sur le réseau.
Un filtre de capture pred forme avec une série d'expressions nommées primitives, jointes grâce à
des conjonctions, tel que "and" ou "or", et précédées ou pas, par "not" :
[not] primitive [and|or [not] primitive...]
Par exemple, voici un filtre de capture qui va afficher les paquets telnet venant de, et alant vers un
hôte particulier (ici 192.168.0.101) :
tcp port 23 and host 192.168.0.101
Ou l'on peut justement voir le traffic telnet en excluant le même hôte :
tcp port 23 and not host 192.168.0.101
On peut filtrer les paquets venant de ou allant vers un hôte grâce à l'adresse IP ou le nom , avec le
mot clé "host", ou "src|dst", qui va spécifier, que l'on est intéressé dans les adresses de source et de
destination.
On peut aussi filtrer tout le traffic circulant par une passerelle par défaut, avec le mot clé "gateway".
Les protocoles aussi, peuvent être filtrés, en utilisant le mot clé "port", et en mettant le numéro de
port du protocole correspondant. Ou en précédant la primitive de "tcp|udp", qui va permettre de
spécifier que l'on est intéressé seulement par les paquets TCP ou UDP.
On peut ensuite combiner les mot clé, afin de cibler minutieusement la capture.
il existe beaucoup de mot clé, je vous invite à les découvrir par vous-même.
3.3. Vue sur les paquets capturés
Une fois que l'on a capturé des paquets, ou ouvert un fichier de sauvegarde d'une capture antérieure,
on peut visualiser les paquets qui ont été affichés dans le panel 1, par un simple clique d'un des
paquets dans ce dernier. Ce qui va importer le paquet dans le panel 2, où sera son arboresrence, et
dans le panel 3, où sera les données qui s'y rapporte.
En cliquant sur les signes "plus" sur la gauche du panel 2, on peut étendre la vue de l'arborescence.
Par exemple, le segment TCP sélectionné comme suit, posséde aussi le numéro d'ACK
(Acknowledgment) dans l'en-tête TCP sélectionnée:
On peut aussi sélectionné et voir les paquets lorsqu'Ethereal les capture, si on sélectionne l'option
"Update list of packets in real time" dans la fenêtre "Capture Preference".
On peut aussi voir, chaque paquet, individuellement dans une fenêtre séparée, comme suit:
Pour cela, on sélectionne "Show Packet in New Window" depuis le menu "Display". Cette option
est pratique pour comparer deux ou plusieurs paquets.
Enfin, on peut obtenir un menu auxiliaire depuis les panels 1 ou 2, en faisant un clique-droit sur l'un
des panel.
Les options y figurant, reviennent à utiliser les options du menu "Display".