2. Capture de trafic avec Wireshark

Avec Wireshark, il est possible de capturer des paquets directement sur les interfaces du système utilisé ou de lire des fichiers de captures sauvegardées. Wireshark supporte les formats de fichiers de capture les plus courants.

Quels sont les protocoles supportés ?

La liste des protocoles supportés par Wireshark évolue de façon continue depuis de nombreuse années. On peut accéder au catalogue soit en consultant la page Protocol Reference qui fournit un classement par famille de tous les protocoles dont les champs sont interprétés, soit via le menu HelpSupported Protocols.

Quels sont les médias supportés ?

Le logiciel Wireshark permet l'analyse des captures réseau de presque toutes les technologies. Les limitations sur les captures sont plutôt dues au système d'exploitation sur lequel on réalise ces captures. Pour obtenir un état des possibilités d'analyse en fonction du système utilisé, il faut consulter la page Network media specific capturing.

Comment accéder aux interfaces ?

Lorsque l'on exécute wireshark en tant qu'utilisateur normal, on ne peut accéder à la liste des interfaces en lançant l'opération Capture. Sur un système d'exploitation correctement administré, un utilisateur normal ne doit pas avoir accès aux interfaces sans conditions. Il existe plusieurs solutions pour donner un accès direct à la liste des interfaces physiques. En voici trois classées par ordre de préférence :

En mode utilisateur avec les paramètres des paquets de la distribution

Les paquets de la distribution Debian GNU/Linux intègrent la délégation des droits de capture de paquets. Pour l'activer, il suffit de reconfigurer le paquet wireshark-common.

$ sudo dpkg-reconfigure wireshark-common

L'utilisateur doit appartenir au groupe système wireshark pour bénéficier de la fonctionnalité. Par exemple, l'ajout de l'utilisateur etu au groupe via la commande adduser donne le résultat suivant :

$ sudo adduser etu wireshark
Ajout de l'utilisateur « etu » au groupe « wireshark »...
Ajout de l'utilisateur etu au groupe wireshark
Fait.

Lors de la connexion suivante avec ce compte utilisateur il sera possible d'utiliser directement les outils wireshark ou tshark.

En mode utilisateur via les Linux Capabilities

On débute par la création d'un groupe système dédié à la capture de trafic réseau.

$ sudo addgroup --system pcap
Adding group `pcap' (GID 136) ...
Done.

On ajoute un ou plusieurs utilisateur(s) au groupe système.

$ sudo adduser phil pcap
Adding user `phil' to group `pcap' ...
Adding user phil to group pcap
Done.
[Avertissement] Avertissement

Attention ! Cette nouvelle attribution n'est valable qu'après une nouvelle authentification. Nous sommes encore dans le cas classique de création du contexte de travail utilisateur au moment de l'authentification.

On modifie les propriétés du programme dumpcap qui est chargé de la collecte du trafic réseau.

Avant modification du groupe propriétaire, le masque des permissions est le suivant :

$ ls -lh `which dumpcap`
-rwxr-xr-- 1 root root 62K  4 mars  18:04 /usr/bin/dumpcap

On change le groupe propriétaire et on applique un nouveau masque de permissions. Une fois cette opération faite, les membres du groupe système pcap seront les seuls utilisateurs à pouvoir exécuter le programme en mode non privilégié.

$ sudo chgrp pcap /usr/bin/dumpcap
$ sudo chmod 750 /usr/bin/dumpcap
$ ls -lh /usr/bin/dumpcap
-rwxr-x--- 1 root pcap 62K  4 mars  18:04 /usr/bin/dumpcap

On indique au gestionnaire de paquets Debian que ces nouvelles propriétés doivent être conservées lors des mises à jour à venir.

$ sudo dpkg-statoverride --add root pcap 750 /usr/bin/dumpcap
# dpkg-statoverride --list /usr/bin/dumpcap
root pcap 750 /usr/bin/dumpcap

On modifie le contexte de travail du programme dumpcap.

$ sudo setcap cap_net_raw,cap_net_admin=eip /usr/bin/dumpcap
$ sudo getcap /usr/bin/dumpcap
/usr/bin/dumpcap = cap_net_admin,cap_net_raw+eip

Les bits eip correspondent aux attributs effective, inheritable et permitted.

Avec l'attribut effective, le noyau ne vérifie pas si l'UID vaut 0 (mode privilégié) si le programme nécessite une opération en mode privilégié.

L'attribut inheritable transmet les aptitudes du processus actuel aux autres processus enfants.

L'attribut permitted indique que le processus peut utiliser les aptitudes étendues du noyau Linux.

La documentation sur les Linux Capabilities est disponible à partir de la page Not needing root to administer Linux.

En mode super-utilisateur avec une interface graphique

Partant d'une connexion avec un compte utilisateur normal, celui-ci est propriétaire exclusif de son écran (display). Il doit donc autoriser le super utilisateur à accéder à son écran à l'aide de la commande xhost, passer en connexion super-utilisateur avec la commande su puis exécuter l'application Wireshark.

$ xhost +local:
$ su -
Password:
# wireshark &