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.
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 → .
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
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 . 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
etudispose, 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
pcapseront 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
eipcorrespondent 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.