L'art de prendre des traces réseau en ligne de commande

 

Souvent vous souhaitez avoir la possibiltié de faire des traces réseau sans avoir à charger une interface graphique complexe, ou créer des raccourcis sur un poste de travail pour que l'utilisateur puisse manuellement actionner une capture.

Voici donc quelques conseils pour capturer une trace réseau en utilisant Network Monitor 3.4 disponible ici : https://www.microsoft.com/downloads/en/details.aspx?FamilyID=983b941d-06cb-4658-b7f6-3088333d062f&displaylang=en via l'exécutable nmcap.exe

Quelques conseils pour les traces réseau :

- Ne pas faire de trace dont la taille dépasse les 250/300 Mo. En effet, il devient ensuite très compliqué de lire ces traces tant elles sont volumineuses.
- Ne pas hésiter à jouer avec les filtres sur les interfaces réseau, les adresses IP ou les protocoles selon les besoins.
- En fonction de vos besoins, ou de vos contraintes, choisir des traces réseau circulaires ou chaînées.
- Identifier les interfaces réseau via la commande : "Nmcap /displaynetworks"

Trace circulaire :

Vous avez besoin de faire une capture sur une lognue période de temps et vous n'avez pas des tera de stockage à disposition. Dans ce cas une capture réseau circulaire s'impose.

Voici un exemple : "NMCap /network * /capture /file <chemin>\nom_de_la_trace.cap:250M /StopWhen /KeyPress x"

/network : permet de spécifier l'interface réseau à tracer. En cas de doute, mettez " * "
/file : indique le chemin et le nom du fichier circulaire dans lequel la trace sera sauvegardé
.cap est caractéristique d'une trace circulaire
:250M indique ici que la taille maximum de la trace (buffer) est de 250 Mo. La valeur par défaut est 20 Mo.
/StopWhen indique la condition d'arrêt de la capture réseau qui doit être suivit de la condition elle-même : " /KeyPress x" qui indique que le fait de presser la touche x suffit à arrêter la trace. On peut lui préférer une condition de temps du type : " /Timeafter 10 min" qui stipule qu'après 10 minutes, la trace s'arrête.

Trace chaînée :

Vous avez besoin de prendre une trace précise qui peut durer un certain temps, mais il faut que vous puissiez sauvegarder l'ensemble du trafic. Attention, prévoir de l'espace disque pour stocker les traces !

Voici un exemple : "NMCap /network * /capture ipv4.address == 192.168.1.1 /file <chemin>\nom_de_la_trace.chn:250M"

/network : permet de spécifier l'interface réseau à tracer. En cas de doute, mettez " * "
/file : indique le chemin et le nom du fichier circulaire dans lequel la trace sera sauvegardé
ipv4.address == 192.168.1.1 indique qu'un filtre sur l'adresse IPv4 est en place.
.chn est caractéristique d'une trace chaînée. Vous aurez donc des fichiers comme suit : nom_de_la_trace.cap, nom_de_la_trace(1).cap, nom_de_la_trace(2).cap, etc.
:250M indique ici que la taille maximum de la trace (buffer) est de 250 Mo. La valeur par défaut est 20 Mo.

Liste des filtres les plus utiles :

ipv4.address == w.x.y.z : permet de filter sur une adresse IPv4
dns or ldap or http : permet de filtrer les protocoles DNS, LDAP ou HTTP
tcp.port == 80 : permet de filtrer sur le port 80

Entre les filtres il est possible de mettre des conditions du style 'AND' voire 'OR' et encore 'NOT'. Par exemple vous souhaitez analyser uniquement le traffic SMB entre un poste de travail et un serveur, les options de filtres peuvent être les suivantes : SMB AND ipv4.address == w.x.y.z OR ipv4.address == a.b.c.d

Outil complémentaire très utile : NM3EventCap

 Cet outil disponible sur le site Codeplex. Regardez bien les pré-requis (runtime C#). Cet outil, il faut le noter est compatible sur les plateformes 32 bits (x86) et 64 bits (amd64 et x64) mais pas Itanium.

- Exemple de commande : "NM3EventCap_v1.0.exe c:\ms\2066.cap 2066 -b 256 -c -n 0"

–n x : où x correspond au numéro de l'interface réseau
2066 : exemple de numéro d'événement (peut importe qu'il soit dans le ournal système ou application ou encore sécurité) qu'il faut indiquer pour arrêter la trace réseau.
–b : est la taille de la trace en Mo (attention ne pas dépasser 300Mo sinon c'est difficilement lisible). La valeur par défaut est 100 Mo
–c : permet de chaîner les traces réseau au lieu d'utiliser une trace circulaire (attention : ceci implique que l'espace disque soit suffisant. Ce commutateur est facultatif).

- Note : laisser le cmd ouvert pendant toute la capture.

Pour plus d'informations :

Sur Netmon, : https://blogs.technet.com/b/netmon

Sur la méthode pour avec WIndows 7 et/ou Windows Server 2008 R2 faire une trace réseau dès le boot de la machine : https://blogs.technet.com/b/mrsnrub/archive/2009/09/10/capturing-network-traffic-in-windows-7-server-2008-r2.aspx