Wireshark as User

  • Upload
    semeh

  • View
    216

  • Download
    0

Embed Size (px)

Citation preview

  • 7/25/2019 Wireshark as User

    1/4

    Capturer le trafic rseau au niveau utilisateur avecWireshark

    Philippe Latuphilippe.latu(at)inetdoc.net

    http://www.inetdoc.net

    Rsum

    Cet article est un plagiat hont de deux autres billets publis par Jeremy Stretch sur le blog du site PacketLife.net1et parGerald Combs sur le blog du site Wireshark.org2. Le contenu de ces billets est tellement intressant que je me permets deles reprendre ici avec quelques adaptations vraiment mineures.

    Table des matires1. Copyright et Licence ........ ......... ........ ........ ........ ........ ......... ........ ........ ........ ......... ........ ........ ........ ......... ..... 12. Pourquoi capturer le trafic au niveau utilisateur ? .......... ........ ........ ......... ........ ........ ........ ......... ........ ........ ....... 13. Les aptitudes du systme GNU/Linux ............................................................................................................ 24. Configuration de la capture de trafic au niveau utilisateur ...... ........ ........ ........ ........ ......... ........ ........ ........ ......... 35. Pour conclure ........................................................................................................................................... 4

    1. Copyright et Licence

    Copyright (c) 2000,2015 Philippe Latu.Permission is granted to copy, distribute and/or modify this document under theterms of the GNU Free Documentation License, Version 1.3 or any later versionpublished by the Free Software Foundation; with no Invariant Sections, noFront-Cover Texts, and no Back-Cover Texts. A copy of the license is includedin the section entitled "GNU Free Documentation License".

    Copyright (c) 2000,2015 Philippe Latu.Permission est accorde de copier, distribuer et/ou modifier ce document selonles termes de la Licence de Documentation Libre GNU (GNU Free DocumentationLicense), version 1.3 ou toute version ultrieure publie par la Free SoftwareFoundation ; sans Sections Invariables ; sans Texte de Premire de Couverture,et sans Texte de Quatrime de Couverture. Une copie de la prsente Licence estincluse dans la section intitule Licence de Documentation Libre GNU .

    Mta-information

    Cet article est crit avec DocBook3XML sur un systme Debian GNU/Linux4. Il est disponible en version imprimable au formatPDF : wireshark-as-user.pdf5.

    2. Pourquoi capturer le trafic au niveau utilisateur ?

    Pour effectuer une capture de trafic au niveau le plus proche possible du matriel, il faut disposer de droits d'accs particulierssur les interfaces rseau. Historiquement, cette contrainte impose d'excuter le programme Wireshark avec les droits dusuper-utilisteur. Comme il s'agit d'une application graphique assez lourde, il est justement vivement dconseill de l'utiliserau niveau super-utilisteur ou root. Voil, les termes de la contradiction sont poss et trouver un moyen d'excuter l'analyseurau niveau utilisateur devient un exercice trs intressant.

    Un premier niveau de rponse assez rpandu consiste utiliser l'outil sudo qui attribue les droits du super-utilisateur

    l'acte pour une application donne. C'est ce que j'ai propos dans le support Introduction l'analyse rseau6

    . Ce n'est pasvraiment satisfaisant dans la mesure o on a toujours recours au niveau super-utilisteur.

    Sur un systme GNU/Linux comme sur tout autre systme Unix, la rgle de conception fondamentale veut que tous les droitsd'accs soient bass sur les fichiers puisque l'on accde tous les lments du systme comme s'ils taient des fichiers.Depuis quelques annes, une mthode d'accs baptise Linux Capabilitiesa t dveloppe pour introduire davantage degranularit dans le monde binaire des droits d'accs limit aux deux seuls niveaux utilisateur et super-utilisateur.

    1

    http://packetlife.net2 https://blog.wireshark.org/3http://www.docbook.org4http://www.debian.org5 http://www.inetdoc.net/pdf/wireshark-as-user.pdf6 http://www.inetdoc.net/travaux_pratiques/intro.analyse/wireshark.intro.html#wireshark.intro.interfaces_access

    Capturer le trafic rseau au niveau utilisateur avec Wireshark 1

    http://www.inetdoc.net/travaux_pratiques/intro.analyse/wireshark.intro.html#wireshark.intro.interfaces_accesshttp://www.debian.org/http://www.inetdoc.net/pdf/wireshark-as-user.pdfhttp://www.docbook.org/http://www.debian.org/http://www.docbook.org/http://www.debian.org/http://www.inetdoc.net/travaux_pratiques/intro.analyse/wireshark.intro.html#wireshark.intro.interfaces_accesshttp://www.inetdoc.net/pdf/wireshark-as-user.pdfhttp://www.debian.org/http://www.docbook.org/https://blog.wireshark.org/http://packetlife.net/http://www.inetdoc.net/travaux_pratiques/intro.analyse/wireshark.intro.html#wireshark.intro.interfaces_accesshttp://www.inetdoc.net/pdf/wireshark-as-user.pdfhttp://www.debian.org/http://www.docbook.org/https://blog.wireshark.org/http://packetlife.net/
  • 7/25/2019 Wireshark as User

    2/4

    Capturer le trafic rseau au niveau utilisateur avec Wireshark

    3. Les aptitudes du systme GNU/Linux

    Au niveau du systme Unix, les proprits d'un utilisateur particulier sont reprsentes sous forme de fichiers marqus par unidentifiant numrique de proprit appel UID. Un systme Linux gre de la mme faon les accs au matriel via un niveaud'abstraction.Il offre ainsi un environnement dans lequel les programmes s'excutent. Une partie du niveau d'abstractionfait respecter les droits de proprit des donnes. Pour respecter les droits des propritaires des donnes en question, Linuxse conforme des rgles spcifiques qui limitent les manipulations faites par les programmes sur les donnes. Les appelssystme (system-calls) effectus par les programmes utilisent des attributs tels que l'identifiant du propritaire (UID).

    Pour dbuter l'excution de programmes, un utilisateur passe par une authentification (login, ssh, etc.). la suite de cetteauthentification, l'utilisateur dispose d'un contexte de travail pour appeler d'autres programmes et manipuler ses donnes.Les fonctions apportes par les Linux Capabilitiesont justement pour but de modifier ce contexte de travail qui tait jusquel fig aprs l'authentification.

    Sans fonction offrant la capacit modifier le contexte de travail d'un utilisateur, le seul recours possible est l'excution enmode privilgi (avec l'UID 0) qui passe outre tous les contrles de permissions du noyau. C'est la faon dont sont excutsles programmes l'aide de l'outil sudo.

    Plus d'une trentaine d'aptitudesont t ajoutes au noyau Linux. Ces fonctions interviennent sur presque tous les aspects ducontexte de travail de l'utilisateur. Pour la capture de trafic rseau, seules deux fonctions nous intressent.

    CAP_NET_ADMINEffectuer diffrentes oprations rseau comme : obtenir des options privilgies sur les sockets, activer le multicast,configurer les interfaces, modifier les tables de routage, etc.

    Avec Wireshark, on doit modifier l'tat de l'interface de capture et la placer en mode promiscuousde faon traitertoutes les trames vues par cette interface.

    CAP_NET_RAWUtiliser des sockets RAW et PACKET.

    Avec Wireshark, on doit capturer le trafic au plus prs de l'interface.

    Le document Linux Capabilities: making them work7donne des informations beaucoup plus dtailles sur les aptitudes dunoyau Linux.

    Comme tous les outils de ce genre sur les systmes GNU/Linux, les fonctions sont rparties entre l'espace noyau (kernelspace)et l'espace utilisateur (userspace). On suppose que les Linux Capabilitiessont disponibles au niveau du noyau. C'est vrai pourtoutes les distributions contemporaines. Pour ce qui est des outils utilisateurs, on doit contrler leur installation. Ici, il s'agitdu paquet libcap2-bin.

    $ aptitude search ~ilibcap2-bin

    i libcap2-bin - basic utility programs for using capabilities

    7 http://research.google.com/pubs/archive/33528.pdf

    Capturer le trafic rseau au niveau utilisateur avec Wireshark 2

    http://research.google.com/pubs/archive/33528.pdfhttp://research.google.com/pubs/archive/33528.pdfhttp://research.google.com/pubs/archive/33528.pdf
  • 7/25/2019 Wireshark as User

    3/4

    Capturer le trafic rseau au niveau utilisateur avec Wireshark

    4. Configuration de la capture de trafic au niveau utilisateur

    Debian GNU/Linux

    Les paquets de la distribution Debian GNU/Linux intgrent cette fonctionnalit de dlgation des droits de capture de paquets.Pour l'activer, il suffit de reconfigurer le paquet wireshark-common.

    # dpkg-reconfigure wireshark-common

    Comme indiqu dans la copie d'cran ci-dessus, l'utilisateur doit appartenir au groupe systme wiresharkpour bnficier de

    la fonctionnalit. Par exemple, l'ajout de l'utilisateur etuau groupe via la commande adduserdonne le rsultat suivant :# adduser etu wiresharkAjout de l'utilisateur etu au groupe wireshark ...Ajout de l'utilisateur etu au groupe wiresharkFait.

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

    Dtail des manipulations

    1. Cration d'un groupe systme ddi la capture de trafic rseau.

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

    2. Ajout d'un utilisateur au groupe systme.

    # adduser phil pcapAdding user `phil' to group `pcap' ...Adding user phil to group pcapDone.

    Avertissement

    Cette nouvelle attribution n'est valable qu'aprs une nouvelle authentification. Nous sommes encore dans le casclassique de l'valuation du contexte de travail utilisateur au moment de l'authentification.

    3. Modification des proprits du programme dumpcap.

    Avant modification du groupe propritaire :

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

    Changement de groupe propritaire et nouveau masque de permission. Une fois cette opration faite, les membres dugroupe systme pcapseront les seuls utilisateurs pouvoir excuter le programme en mode non privilgi.

    Capturer le trafic rseau au niveau utilisateur avec Wireshark 3

  • 7/25/2019 Wireshark as User

    4/4

    Capturer le trafic rseau au niveau utilisateur avec Wireshark

    # 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

    Mmorisation de ces nouvelles proprits par le gestionnaire de paquets Debian.

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

    Avec cette dernire manipulation, toutes les mises jour de paquets conserveront les changements de proprits du

    programme en l'tat.4. Modification du contexte de travail pour le 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, inheritableet permitted.

    Avec l'attribut effective, le noyau ne vrifie pas si l'UID vaut 0 (mode privilgi) si le programme ncessite une oprationen mode privilgi.

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

    L'attribut permittedindique que le processus peut utiliser les aptitudes tendues du noyau Linux.

    La documentation sur les Linux Capabilitiesest disponible partir de la page Not needing root to administer Linux8.

    Il ne reste plus qu' tester les nouvelles fonctionnalits attribues l'utilisateur non privilgi membre du groupe systmepcap.

    phil@0wnB0x:~$ iduid=1000(phil) gid=1000(phil) groupes=1000(phil),4(adm),20(dialout),,128(tftp),136(pcap)phil@0wnB0x:~$ tshark -i wlan0Capturing on wlan0 0.577380 192.168.1.9 -> 192.168.1.1 SSH Encrypted response packet len=352 0.578481 192.168.1.1 -> 192.168.1.9 TCP 46722 > ssh [ACK] Seq=1 Ack=353 Win=30 Len=0 TSV=7711965 TSER=1467786 1.582427 192.168.1.9 -> 192.168.1.1 SSH Encrypted response packet len=240 1.583462 192.168.1.1 -> 192.168.1.9 TCP 46722 > ssh [ACK] Seq=1 Ack=593 Win=33 Len=0 TSV=7712217 TSER=1468791

    5. Pour conclure

    On dispose maintenant de la capacit capturer et analyser le trafic rseau en tant qu'utilisateur non privilgi. Cettemodification du contexte de travail de l'utilisateur normal peut tre particulirement intressante sur des postes de travauxpratiques sur lesquels on ne souhaite pas que les tudiants aient un accs au mode privilgi.

    C'est aussi la premire fois que j'ai eu l'occasion de voir une application concrte des Linux Capabilitiesmme si le sujet n'at qu'effleur.

    8 http://sites.google.com/site/fullycapable/

    Capturer le trafic rseau au niveau utilisateur avec Wireshark 4

    http://sites.google.com/site/fullycapable/http://sites.google.com/site/fullycapable/http://sites.google.com/site/fullycapable/