:: News .:. Documents .:. Forum .:. Downloads .:. Bibliographie .:. Liens .:. Contact  :: 


Home
  :. News
  .: Documents
    .: Notions
    .: Protocoles
    .: Sécurité
    .: Architecture
    .: Prog
    .: Systèmes
  :. Forum
  .: Downloads
  :. Bibliographie
  .: Liens
  :. Contact

Chat

  Nickname:


irc: #guill.net

Forum



 
Analyseurs réseaux sous linux : Tcpdump, tethereal,ethereal  
 

 

Les analyseurs réseaux permettent de capturer et afficher toutes les trames qui arrivent ou partent d'interfaces connectées à notre machine. Cela permet d'effectuer de nombreuses actions, comme diagnostiquer un problème réseau, vérifier le bon fonctionnement d'une application réseau, ou même espionner le trafic des machines qui sont sur le même média que nous si le média est partagé.

Ces analyseurs sont passifs, ils n'émettent aucune trame sur le réseau, leur utilisation est donc indétectable par les autres hôtes du réseau.

TCPDUMP

tcpdump est l'outil historique d'analyse réseau que l'on retrouve sur de nombreux systèmes d'exploitations. Il est basé sur la librairie pcap qui permet de capturer les trames.

Il a maintenant de nombreuses fonctionnalités qui lui ont été ajoutées au cours de son développement.

La principale force de tcpdump est l'étude des protocoles TCP/IP, il est en effet prévu pour pouvoir suivre des connections tcp de la connexion à la déconnexion.

Fonctionnement

Nous détaillerons ici les commandes principales de l'outil tcpdump en analysant leur fonctionnement.

Tout d'abord, il faut avoir les droits du root sous les systèmes UNIX pour pouvoir capturer des trames.

>tcpdump
tcpdump: listening on eth0
15:42:02.222113 802.1d config 8000.00:d0:58:c3:6c:45.8024 root 8000.00:02:7d:2c:bf:c5 pathcost 57 age 3 max 20 hello 2 fdelay 15
15:42:03.275636 arp who-has 192.168.4.50 tell 192.168.4.14
15:42:03.295271 arp who-has 192.168.4.50 tell Aldino.Cisco
15:42:03.303585 arp reply 192.168.4.50 is-at 0:9:43:60:36:ff
15:42:03.303605 Aldino.Cisco.1024 > 192.168.11.1.domain: 33903+ PTR? 50.4.168.192.in-addr.arpa. (43) (DF)
15:42:03.304914 192.168.11.1.domain > Aldino.Cisco.1024: 33903 NXDomain 0/1/0 (120) (DF)
15:42:03.305242 Aldino.Cisco.1024 > 192.168.11.1.domain: 33904+ PTR? 14.4.168.192.in-addr.arpa. (43) (DF)
15:42:03.305933 192.168.11.1.domain > Aldino.Cisco.1024: 33904 NXDomain 0/1/0 (120) (DF)
15:42:03.307142 Aldino.Cisco.1024 > 192.168.11.1.domain: 33905+ PTR? 1.11.168.192.in-addr.arpa. (43) (DF)
15:42:03.307813 192.168.11.1.domain > Aldino.Cisco.1024: 33905 NXDomain 0/1/0 (120) (DF)
11 packets received by filter
0 packets dropped by kernel

Ceci est le résultat brut de la commande shell tcpdump qui capture toutes les trames et essaie de retrouver le protocole auquel correspond chaque trame en affichant des informations complémentaires sur les champs du protocole en question

On remarque pour les trames qui encapsulent le protocole tcp les adresses source et destinations, qui ont été transformées en noms correspondants, sous la forme source > destination

>tcpdump -c 1
tcpdump: listening on eth0
15:52:49.228987 802.1d config 8000.00:d0:58:c3:6c:45.8024 root 8000.00:02:7d:2c:bf:c5 pathcost 57 age 3 max 20 hello 2 fdelay 15
1 packets received by filter
0 packets dropped by kernel

L'option -c permet de demander la capture d'un nombre de trames précis

>tcpdump -c 2 -e
tcpdump: listening on eth0
15:55:01.444660 0:d0:58:c3:6c:56 1:80:c2:0:0:0 0026 60: 802.1d config 8000.00:d0:58:c3:6c:45.8024 root 8000.00:02:7d:2c:bf:c5 pathcost 57 age 3 max 20 hello 2 fdelay 15
15:55:02.659507 0:40:96:36:e8:27 Broadcast ip 60: 192.168.5.1 > 192.168.5.255: icmp: router solicitation [ttl 1]
4 packets received by filter
0 packets dropped by kernel

L'option -e permet d'afficher l'en-tête de la couche liaison de donnée de chaque trame. Dans cet exemple, on peut remarquer les adresses MAC source et destination de chaque trame ethernet

>tcpdump -i eth0

Permet de préciser l'interface réseau à scruter

>tcpdump -n
tcpdump: listening on eth0
15:58:03.718941 802.1d config 8000.00:d0:58:c3:6c:45.8024 root 8000.00:02:7d:2c:bf:c5 pathcost 57 age 3 max 20 hello 2 fdelay 15
15:58:05.726228 802.1d config 8000.00:d0:58:c3:6c:45.8024 root 8000.00:02:7d:2c:bf:c5 pathcost 57 age 3 max 20 hello 2 fdelay 15
15:58:06.504763 arp who-has 192.168.4.12 tell 192.168.4.75
15:58:07.125479 rarp who-is 0:2:16:a:4e:20 tell 0:2:16:a:4e:20
4 packets received by filter
0 packets dropped by kernel

L'option -n permet de ne pas convertir les adresses en nom. la commande qui force cette conversion est l'option -a.

>tcpdump -v
tcpdump: listening on eth0
16:06:38.561086 802.1d config 8000.00:d0:58:c3:6c:45.8024 root 8000.00:02:7d:2c:bf:c5 pathcost 57 age 3 max 20 hello 2 fdelay 15
16:06:40.563708 802.1d config 8000.00:d0:58:c3:6c:45.8024 root 8000.00:02:7d:2c:bf:c5 pathcost 57 age 3 max 20 hello 2 fdelay 15
2 packets received by filter
0 packets dropped by kernel

Permet d'afficher plus de champs pour chaque trame (mode verbeux). Il faut noter qu'il existe aussi les options -vv et -vvv qui donnent respectivement beaucoup plus et énormément plus de détails sur chaque trame.

Un autre aspect primordial de tcpdump est la possibilité de filtrer très précisément le trafic que l'on désire observer, pour optimiser sa recherche. Ce filtrage s'effectue par le biais de certaines expressions que nous allons détailler.

>tcpdump host 192.168.1.25

Permet de n'observer que le trafic impliquant l'hôte 192.168.1.25, en tant que source ou destinataire

>tcpdump dst host 192.168.1.25

Filtre les trames dans lesquelles cet hôte est le destinataire uniquement

>tcpdump dst host 192.168.1.25 and tcp dst port 80

Filtre les trames dont le protocole encapsulé est tcp et dont la destination est le port 80 de cet hôte

>tcpdump dst host 192.168.1.25 and \(tcp dst port 80 or tcp dst port 443\)

Filtre les trames dont le protocole est tcp et le port de destination 80 ou 443 sur l'hôte précisé.

Ceci montre l'utilisation d'expressions complexes.

ATTENTION : sous UNIX, on note que les parenthèses doivent être échapées au moyen du caractère d'échappement.

>tcpdump tcp port >= 8192 and tcp port <= 8294

Un autre exemple d'expression complexe : la sélection d'une plage de ports tcm

Conclusion

tcpdump est un outil qui permet d'obtenir de nombreuses information sur des points précis du trafic réseau. C'est donc l'un des piliers de la mise en place et la maintenance d'un réseau.

La critique que l'on pourrait formuler concerne l'ergonomie, qui est un peut rude au premier abord. Les données ne sont en effet pas vraiment mises en forme, mais ce n'est pas le but d'un outil en ligne de commande, et les utilisateurs réguliers s'accommodent rapidement à ce genre de détail.

tethereal

L'outil de capture et d'analyse des trames tethereal est équivalent à tcpdump sur de nombreux points. Il s'agit la aussi d'un analyseur de trames en lignes de commandes.

A première vue en effet, il semble que l'analyse des trames est très similaire. Mais une attention plus pointilleuse révèle que tethereal supporte beaucoup plus de protocoles différents, dont on peut se procurer la liste complète sur le site officiel : www.ethereal.com .

Fonctionnement

tethereal offre la plupart des fonctionnalités de tcpdump, vous pouvez donc vous reporter à la section tcpdump pour voir les fonctionnalités premières.

Les fonctions qui sont plus pointues dans tethereal sont :

-l'analyse de trames qui est beaucoup plus approfondie

-la lecture et l'écriture de captures dans des fichiers qui supporte de nombreux formats

-la possibilité d'établir des statistiques de manière configurable

>tethereal -w test.pcap
Capturing on eth0
5

>tethereal -r test.pcap
1 0.000000 Cisco_c3:6c:56 -> Spanning-tree-(for-bridges)_00 STP Conf. Root = 32768/00:02:7d:2c:bf:c5  Cost = 57  Port = 0x8024
2 1.216257  192.168.5.1 -> 192.168.5.255 ICMP Router solicitation
3 1.996698 Cisco_c3:6c:56 -> Spanning-tree-(for-bridges)_00 STP Conf. Root = 32768/00:02:7d:2c:bf:c5  Cost = 57 Port = 0x8024
4 4.011253 Cisco_c3:6c:56 -> Spanning-tree-(for-bridges)_00 STP Conf. Root = 32768/00:02:7d:2c:bf:c5  Cost = 57  Port = 0x8024
5 4.075620  192.168.4.4 -> 255.255.255.255 RIPv1 Response

Nous avons ici successivement effectué une capture puis lue cette dernière.

>tethereal -V
Capturing on eth0
Frame 1 (60 bytes on wire, 60 bytes captured)
Arrival Time: Nov 28, 2003 16:07:52.073050000
Time delta from previous packet: 0.000000000 seconds
Time relative to first packet: 0.000000000 seconds
Frame Number: 1
Packet Length: 60 bytes
Capture Length: 60 bytes
Ethernet II, Src: 00:40:96:36:e8:27, Dst: ff:ff:ff:ff:ff:ff
Destination: ff:ff:ff:ff:ff:ff (Broadcast)
Source: 00:40:96:36:e8:27 (AironetW_36:e8:27)
Type: IP (0x0800)
Trailer: 00000000000000000000000000000000...
Internet Protocol, Src Addr: 192.168.5.1 (192.168.5.1), Dst Addr: 192.168.5.255 (192.168.5.255)
Version: 4
Header length: 20 bytes
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
0000 00.. = Differentiated Services Codepoint: Default (0x00)
.... ..0. = ECN-Capable Transport (ECT): 0
.... ...0 = ECN-CE: 0
Total Length: 28
Identification: 0x725f
Flags: 0x00
.0.. = Don't fragment: Not set
..0. = More fragments: Not set
Fragment offset: 0
Time to live: 1
Protocol: ICMP (0x01)
Header checksum: 0xbb31 (correct)
Source: 192.168.5.1 (192.168.5.1)
Destination: 192.168.5.255 (192.168.5.255)
Internet Control Message Protocol
    Type: 10 (Router solicitation)
    Code: 0
    Checksum: 0xf5ff (correct)

L'option -V permet d'obtenir les détails des champs de chaque protocole. Le nombre important de protocoles supportés permet une analyse très pointue des trames.

>tethereal -z io,stat,1,ip.addr==192.168.4.222
Capturing on eth0
0.000000 3com_20:4b:8f -> BroadcastARP Who has 192.168.4.76? Tell 192.168.4.12
0.508141 Cisco_c3:6c:56 -> Spanning-tree-(for-bridges)_00 STP Conf. Root = 32768/00:02:7d:2c:bf:c5 Cost = 57  Port = 0x8024
0.998865 3com_20:4b:8f -> BroadcastARP Who has 192.168.4.76? Tell 192.168.4.12
1.998897 3com_20:4b:8f -> BroadcastARP Who has 192.168.4.76? Tell 192.168.4.12
2.499066 Cisco_c3:6c:56 -> Spanning-tree-(for-bridges)_00 STP Conf. Root = 32768/00:02:7d:2c:bf:c5 Cost = 57 Port = 0x8024

===================================================================
IO Statistics
Interval: 1 secs

Column #0: ip.addr==192.168.4.222
            |   Column #0
Time        |frames|  bytes
    0-    1       0         0  

L'option -v permet de réaliser des statistiques sur les trames reçues

Conclusion

Même si tethereal ressemble fortement à tcpdump, il reconnaît beaucoup plus de protocoles et ne se limite pas aux protocoles de la pile TCP/IP. De plus, il permet d'afficher beaucoup plus de détails sur chaque protocole, c'est à dire pratiquement de tous les champs de chaque protocole, ce qui permet une étude plus approfondie des trames.

Au registre des regret, on peut citer la fonction de statistiques, qui est très puissante, mais manque cruellement d'interface graphique, ne serait-ce que pour la restitution des résultats qui pourrait être effectuée sous formes d'images. Mais, la encore, ce n'est pas lebut d'un outil en ligne de commande, n'en déplaise aux informaticiens élevés au « tout  graphique ».

Ethereal

Cet outil d'analyse réseau très répandu maintenant est juste une couche graphique appliquée au moteur de capture et analyse des trames de tethereal. Historiquement, cet outil était basé sur le moteur de reconnaissance de trames de tcpdump, mais ce dernier ayant fini par montrer ses limites, un moteur d'analyse plus configurable a été développé pour pouvoir implémenter facilement de nouveaux protocoles.

Fonctionnement

Les fonctionnalités d'ethereal sont exactement les mêmes que tethereal, du fait que ces deux outils soient basés sur le même moteur de capture et d'analyse des trames. Pour rappel, ces outils assurent les fonctions de capture de trames, d'ouverture de multiples formats de captures, l'enregistrement des captures dans de nombreux formats, des opérations de filtrage des trames capturées, et surtout l'analyse des trames capturées.

Voici quelques copies d'écran montrant les principales caractéristiques :

Fenêtre principale d'affichage des trames
Chaque ligne correspond à une trame capturée

Fenêtre de détail de la trame courante
Permet de connaître chaque champ de la trame

Fenêtre TCP stream
Permet d'afficher une communication TCP complète

Concernant les filtres, on peut soit choisir les protocoles que l'on ne désire pas visualiser, ou alors mettre en place des filtres complexes avec la même syntaxe que sous tethereal.

La plupart des fonctionnalités sont très simples à utiliser grace à cette interface graphique et nous ne détaillerons pas ici le moyen de les mettre en oeuvre, le principal étant de savoir ce que cette application permet de réaliser.

Conclusion

Si les outils d'analyse réseau en ligne de commandes restent rudes à utiliser, ils restent tout de même incontournables et très pratiques pour un administrateur qui n'a pas accès à une interface graphique sur tel ou tel réseau.

Quand à ethereal, on voit mal comment l'étude sérieuse et attentive d'un réseau peut se passer de cet outil ou d'un outil équivalent. En effet, cet outil simple en apparence permet de décortiquer n'importe quel type de trame et de repérer facilement grâce aux filtres les trames « curieuses » qui circulent sur le réseau.

Pour finir, l'utilisation de l'un ou l'autre de ces outils, en fonction de ses possibilités, est indispensable pour l'étude d'un média réseau, quel qu'il soit.

Sylvain COLLIN & Aldo DE LUCA - 01/2004
 




Sondage

Quel est votre connexion à Internet aujourd'hui ?
 
RTC 56Kbps
ADSL simple de 128 à 2048 Kbps
ADSL + Téléphonie (+TV) de 128 à 2048 Kbps
ADSL simple jusqu'à 20Mbps
ADSL + Téléphonie (+TV) jusqu'à 20Mbps
Autres (RNIS, Satellites bi-directionnel...)
Total :
3241

Recherche


Docs
   Pflogsumm (Analyseur de log mail pour Postfix)
   Proftpd (Mise en service d'un serveur FTP avec proftpd sous Linux)
   Openldap (Mise en service d'un serveur LDAP sous Linux)
   Gestion des périphériques en c++ builder (Communication RS232 en C++ Builder)
   Les sockets windows (Windows Sockets : un cours accéléré)

guill.net©1999-2024