(modifié le 15 novembre 2015 à 23:16)

On a parfois besoin de sniffer des paquets sur sa passerelle faisant office de routeur/pare-feu, dans mon cas ça se passe avec un routeur Tomato (TomatoUSB plus précisément).

tomato-tcpdump

Le firmware alternatif ne contient pas l'utilitaire tcpdump, voici comment l'ajouter et l'exploiter avec des exemples de commandes.

Télécharger tcpdump

Avant tout je vous conseille d'utiliser une clé USB qui restera toujours connectée sur votre routeur, aujourd'hui ça ne coûte plus rien.

Dans mon cas c'est une clé 1G peu rapide qui ne me servait pas, je lui ai trouvé une seconde vie, ou plutôt une première. Cette clé me sert pour enregistrer la bande passante (download/upload) qui était effacée à chaque reboot du routeur, elle va désormais également nous servir à stocker des fichiers pcap. Formatez là comme bon vous semble : NTFS, EXT2/3 ou FAT, puis connectez-là sur le port USB derrière votre routeur.

Vérifiez dans l'interface de tomato :

  • USB and NAS > USB Support : tout est coché excepté USB Printer Support
    tomato-usb-support
  • Votre clé doit apparaître dans "attached devices" juste en dessous dans la même fenêtre :
    tomato-attached-devies
  • USB and NAS > File Sharing, activez ou non l'authentification (dépend si vous êtes tout seul sur votre réseau) puis sélectionner un montage en lecture/écriture (R/W) :
    tomato-files-sharing

Il faut utiliser un binaire compilé pour tourner sur le CPU de votre routeur, dans mon cas un WNR3500L v1, à télécharger ici (merci Martin Denizet, mirroir).

Copiez le binaire après l'avoir extrait sur votre clé USB, via SCP ou via le partage de la clé créé par le routeur (\\ip-routeur\nom_cle).

Reniflons

Pour renifler rien de plus simple !

Il suffit de se connecter en SSH sur le routeur (activez SSH dans l'interface web si ce n'est pas fait). Puis rendez vous à l'endroit où vous avez déposé le binaire tcpdump, sur la clé pour mon cas :

Quelques exemples de commandes tcpdump que j'utilise la plupart du temps.

Pour capturer les paquets venant et à destination de 192.168.0.1, en affichant le contenu ASCII (avec "-A") :

Capture les paquets contenant des trames FTP ou SSH sur l'interface WAN (vlan2 chez moi) :

Capture les paquets provenant et à destination de 192.168.0.1 sur le port 8443 :

Capture les paquets igmp (ping par ex), sans résoudre les IP en nom :

Capture les paquets tcp sur le port 80 provenant de 192.168.0.1 :

Capture les paquets provenant et à destination de 192.168.0.1, sauf les paquets ssh (pour s'exclure des traces):

Capture les paquets provenant et à destination de 192.168.0.1 sur les ports de destination 80 et 443 :

Capture les paquets à destination des réseaux suivants :

le "-s0" permet de capture sans limite de taille ("-s0 200" capture les 200 premiers octets)
le "-n" ne résoud pas les IP en nom (nom de machine local / nom de domaine)

Pour connaître tous les paramètres j'utilise ce mémo tcpdump et ce mémo wireshark (et une doc pour combiner).

Nous pouvons maintenant exploiter ces fichiers pcap dans wireshark et profiter de la puissance de l'outil pour cherche de façon très fine. Dans mon cas je voulais débusquer un dysfonctionnement sur un module Somfy :

capture_tomato

Conclusion

Vous n'êtes bien sûr pas forcés d'orienter les résultats vers un fichier de sortie si l'affichage dans le terminal vous suffit. C'est en tout cas bien pratique de pouvoir sniffer sur tous les équipements, y compris ceux en WiFi (smartphone, imprimante, tablette, alarme, etc). De nombreux logiciels utilisent des systèmes de type wget sans rien dire à l'utilisateur, c'est une excellente façon de savoir ce qui se trame dans votre dos (elle était facile...).

Même chose pour certains équipements propriétaires, on peut comprendre comment tout ça communique. Pour ma part j'ai investigué le matériel Somfy et je me suis aperçu que c'était plutôt blindé sur les échanges entre les équipements et les serveurs Somfy. Me voilà rassuré !

Auteur : Mr Xhark

Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter