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".