Alternative tcpdump windows 10 avec pktmon

L’outil pktmon.exe disponible par défaut dans Windows 10 Pro permet de faire un peu de dump de paquet TCP.

Bien sûr, la solution de npcap/winpcap/wireshark est beaucoup plus performant, mais avec quelques commandes on peut extraire l’information utile. Je me concentre surtout sur la partie HTTP qui me permet de vérifier les échanges de données même si la limitation de pktmon à ne pas pouvoir fonctionner sur la boucle locale 127.0.0.1 est clairement une limitation pour moi.

Démarrons par ajouter un filtre sur le protocole TCP sur le port 80

 C:\Windows\system32\pktmon.exe filter add -t TCP  -p 80

On peut lister ces filtres avec la commande suivante

 C:\Windows\system32\pktmon.exe filter list

Filtres de paquet :
     # Nom    Protocole Port
     - ---    --------- ----
     1 <vide> TCP         80

Et pour démarrer la capture, on voit le rappel de la liste des paquets

 C:\Windows\system32\pktmon.exe  start --etw  --pkt-size 0

Filtres de paquet :
     # Nom    Protocole Port
     - ---    --------- ----
     1 <vide> TCP         80

Un fichier PktMon.etl va donc être fabriqué contenant les opérations que l’on fait avec son navigateur vers un port 80 d’un serveur web par exemple.

Mais je vous propose cette version du filtrage pour se concentrer sur la partie Web des requêtes :

C:\Windows\system32\pktmon.exe filter add Port80 -t TCP PSH -p 80 -m 00-AA-BB-CC-DD-EE

On ajoute un nom Port80 et on va récupérer que les paquets marqués TCP de type PUSH (codé PSH) sur le port 80 en provenance de la Mac Address de ma carte réseau 00-AA-BB-CC-DD-EE à remplacer par votre valeur.

Il suffit maintenant d’arrêter la capture est de convertir le fichier PktMon.etl en format lisible à moins d’utiliser l’outil d’analyse de Microsoft Network Monitor.

Le fichier ftp.txt est assez clair pour être lu et vérifier les packets TCP

C:\Windows\system32\pktmon.exe  stop

C:\Windows\system32\pktmon.exe  format PktMon.etl -o file.txt

Exemple d’accès sur un site web en méthode GET en regardant le contenu du fichier file.txt :

00-AA-BB-CC-DD-EE > 00-11-12-13-14-15, ethertype IPv4 (0x0800), length 457: 192.168.1.1.49676 > 213.186.33.2.80: Flags [P.], seq 2764848503:2764848906, ack 3028623659, win 513, length 403: HTTP: GET /accueil/?s=test HTTP/1.1

On peut retirer le filtre au besoin pour revenir dans l’état initial

C:\Windows\system32\pktmon.exe  filter remove

On peut aussi exporter dans un format plus verbeux avec l’option de formatage etl2txt:

C:\Windows\system32\pktmon.exe  etl2txt .\PktMon.etl v 3 -m -o file.txt

Cela va produire les entête HTTP des contenus des requêtes HTTP par exemple avec le fichier JavaScript suivant :

	HTTP/1.1 200 OK
	date: Wed, 23 Feb 2022 15:11:35 GMT
	content-type: application/javascript
	content-length: 229
	server: Apache
	last-modified: Tue, 10 Dec 2019 18:53:39 GMT
	accept-ranges: bytes
	cache-control: max-age=900
	expires: Wed, 23 Feb 2022 15:26:35 GMT
	vary: Accept-Encoding
	x-iplb-request-id: C1339D28:28B3_D5BA2102:0050_62164EA7_6F6E:1CD33
	x-iplb-instance: 29005
	
	
	
	var $j = jQuery.noConflict();
	
	$j(document).ready(function() {
	    // Toggle Single Bibtex entry
	    $j('a.papercite_toggle').click(function() {
		$j( "#" + $j(this).attr("id") + "_block" ).toggle();
		return false;
	    });
	});

Ensuite on pourra utiliser les outils de développements des navigateurs pour une lecture plus simple, mais la liaison TPC/IP sur le contenu est clairement lisible avec cet outil fourni par défaut.

L’option suivante est soit de faire plus de réseau avec tcpdump ou wireshark qui sont dédiés aux couches réseaux soit de partir en développement web avec les outils embarqués dans les navigateurs Web.


La partie que je chercherai à ajouter prochainement, est la capture de la boucle locale via des outils tierce comme indiqué sur cette page : https://wiki.wireshark.org/CaptureSetup/Loopback

Je pense que cette option semble prometteuse même si je n’arrive pas encore à la faire fonctionner : https://web.archive.org/web/20150726062624/http://ig2600.blogspot.com/2011/03/powershell-script-to-enable-windows-to.html

A propos Pierre Jean

Ingénieur de Recherche CERIS Centre d'Enseignement et de Recherche en Informatique et Systèmes IMT Mines Alès UMR Euromov DHM Plus de détails sur Pierre JEAN
Ce contenu a été publié dans Développement. Vous pouvez le mettre en favoris avec ce permalien.