2. Analyse 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 : libpcap/tcpdump, Sun's snoop/atmsnoop, LanAlyzer, MS Network Monitor, HPUX nettl, AIX iptrace, Cisco Secure IDS, etc.

2.1. Quels sont les protocoles supportés ?

La liste des protocoles supportés par Wireshark est considérable. Elle évolue avec chaque nouvelle version. La page Protocol Reference fournit un classement par famille de tous les protocoles dont les champs sont interprétés. Il est aussi possible d'accéder à ces informations via le menu HelpSupported Protocols.

2.2. Quels sont les médias supportés ?

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

2.3. 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 :

En mode super-utilisateur

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 &
En mode utilisateur avec gksu

L'application gksu est un frontal graphique de la commande su. Elle permet, après la saisie du mot de passe super-utilisateur, d'exécuter une application en mode super-utilisateur. Dans notre cas, on accède directement aux interfaces physiques en mode graphique sans passer par une manipulation à la console. Ce mode opératoire est proposé par défaut avec toutes les distributions GNU/Linux actuelles.

En mode utilisateur avec sudo

L'application sudo permet de déléguer les droits du super-utilisateur avec une granularité très fine. L'optique de l'analyse réseau étant un cas particulier de l'administration système, on se limitera à la présentation du fichier de configuration de l'application : /etc/sudoers.

# sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL) ALL

etu    ALL = NOPASSWD: /usr/bin/wireshark, /usr/bin/tshark

C'est à la dernière ligne que se situe la partie intéressante. L'utilisateur normal etu dispose, sur n'importe quel hôte géré par ce système (ALL), d'un accès super-utilisateur aux applications Wireshark et tshark sans avoir à saisir son mot de passe. Pour lancer l'application, il faut préciser l'appel à l'application sudo de la façon suivante :

$ sudo wireshark &
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.

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

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

# adduser phil pcap
Adding user `phil' to group `pcap' ...
Adding user phil to group pcap
Done.

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-x 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é.

# chgrp pcap /usr/bin/dumpcap
# 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.

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

# setcap cap_net_raw,cap_net_admin=eip /usr/bin/dumpcap
# 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.