Un rédacteur XDA cette semaine a plaidé pour ignorer Wireshark sur Windows 11 et commencer par pktmon, le moniteur de paquets intégré. Ce cadrage correspond à une réalité plus large avec laquelle vivent la plupart des opérateurs : la boîte que nous devons renifler n’est rarement celle sur laquelle nous sommes assis. Cela pourrait être un conteneur Docker, un VPS non géré, une Raspberry Pi dans un placard ou un routeur OPNsense avec rien d’ouvert sauf SSH. C’est le problème de capture headless, et l’interface graphique de Wireshark n’est pas la solution. Ce dont nous avons besoin est une CLI qui fonctionne sur SSH, écrit un pcap rotatif sans surveillance et lit les filtres BPF de la même manière que le moteur de capture de Wireshark. Nous avons testé sept outils qui font exactement cela, sur les hôtes Windows et Linux, et les avons classés par force.
À la recherche d’un outil de capture de paquets headless
Une capture à distance a des contraintes différentes d’une capture de bureau. Six choses font la différence :
- Prise en charge des filtres BPF. La même syntaxe
tcp port 443 and host 10.0.0.1devrait fonctionner ; un filtre qui manque à la capture ne peut pas être récupéré plus tard. - Petit binaire, peu de dépendances. Les images Alpine et Debian réduites ne devraient pas nécessiter X11 juste pour enregistrer le trafic.
- Tourner et écrire vers pcap. Les captures nocturnes remplissent les disques ; un tampon circulaire via
-C,-Gou un indicateur équivalent importe plus que n’importe quelle fonctionnalité GUI. - Exploitation non-root si possible.
setcap cap_net_rawnous permet de supprimer root sur les boîtes partagées. - Sortie consciente du protocole. Quand la réponse est « cette demande DNS est-elle malformée », une ligne décodée bat un vidage hexadécimal.
- Compatible SSH. Sortie sûre TTY, pas de blocages ncurses, pas d’hypothèses sur un terminal de 200 colonnes.
C’est la liste de contrôle. Maintenant les outils.
Comparaison rapide
| Outil | Idéal pour | Plateformes | Forfait gratuit | Prix initial/mois | Évaluation |
|---|---|---|---|---|---|
| TShark | Dissecteurs Wireshark complets sur la ligne de commande | Windows, macOS, Linux | Oui | Gratuit | 5/5 |
| tcpdump | Captures headless omniprésentes sur Linux et BSD | Linux, macOS, BSD | Oui | Gratuit | 5/5 |
| pktmon | Captures Windows sans installer quoi que ce soit | Windows 10, 11, Server 2019+ | Oui | Gratuit | 4/5 |
| tcpflow | Reconstruction des flux TCP dans les fichiers | Linux, macOS | Oui | Gratuit | 4/5 |
| ngrep | Correspondance de motifs de style grep sur le fil | Linux, macOS, Windows | Oui | Gratuit | 4/5 |
| Zeek | Transforming packets into searchable logs | Linux, macOS, BSD | Oui | Gratuit | 4.5/5 |
| Termshark | Interface Wireshark à l’intérieur d’une session SSH | Linux, macOS, Windows, BSD | Oui | Gratuit | 4/5 |
Les outils
1. TShark, pour les dissecteurs Wireshark complets sur la ligne de commande
TShark est livré avec Wireshark et exécute le moteur dissécteur exact, moins l’interface graphique. Chaque protocole que Wireshark décode, TShark le décode vers stdout, et chaque filtre d’affichage que nous connaissons de Wireshark fonctionne littéralement (-Y "http.request.method == POST"). Pointez-le vers une interface avec -i eth0, ajoutez -w capture.pcap pour écrire, ajoutez -b duration:600 -b files:24 pour tourner toutes les heures pendant une journée complète, et nous avons capture et analyse sans surveillance en un seul binaire.
Où il tombe court : sous Windows, il a besoin de l’installation complète de Wireshark pour récupérer Npcap ; sur les images Linux réduites, il tire les bibliothèques dissecteur, qui ne sont pas petites. Le déchiffrement TLS en direct nécessite toujours un fichier keylog, comme l’interface graphique.
Tarification : Gratuit, open-source, GPLv2.
Plateformes : Windows, macOS, la plupart des distributions Linux, BSD.
Télécharger : Fondation Wireshark
En résumé : le défaut lorsque nous voulons le cerveau de Wireshark sans la fenêtre de Wireshark.
2. tcpdump, pour les captures headless sur Linux et BSD
tcpdump est l’outil que chaque hôte Unix a déjà, ou est à un paquet d’avoir. tcpdump -i eth0 -w /var/log/capture.pcap -G 3600 -C 200 'tcp port 443' enregistre dans un pcap rotatif que nous pouvons récupérer plus tard et ouvrir dans Wireshark, TShark ou l’un des outils ci-dessous. Sa syntaxe de filtre BPF correspond exactement aux filtres de capture de Wireshark, et le binaire pèse moins de 2 Mo sur la plupart des distributions.
Où il tombe court : pas de filtres d’affichage, pas de décodage de protocole au-delà du mode -vvv intégré. Sur macOS Big Sur et versions ultérieures, certaines interfaces sont verrouillées sans autorisations supplémentaires.
Tarification : Gratuit, open-source, BSD 3-clause.
Plateformes : Linux, macOS, FreeBSD, OpenBSD, NetBSD.
Télécharger : Groupe Tcpdump
En résumé : la réponse réflexe sur n’importe quelle boîte Unix qui fonctionne headless.
3. pktmon, pour les captures Windows sans installer quoi que ce soit
pktmon est le Packet Monitor que Microsoft livre avec Windows 10, Windows 11 et Windows Server 2019 et versions ultérieures. pktmon start --capture --pkt-type all --file-size 200 enregistre dans un fichier ETL que nous convertissons avec pktmon pcapng (ou, sur les anciens builds, pktmon etl2txt) et ouvrons dans Wireshark ou TShark ailleurs. Pour une boîte Server Core, ou un ordinateur portable durci où l’installation d’un renifleur est un ticket de changement, pktmon effectue la capture avec les outils déjà sur le disque.
Où il tombe court : la CLI est verbeuse, sa syntaxe de filtrage utilise les ID de composant plutôt que BPF, et l’étape ETL-à-pcap est un mouvement supplémentaire qui nous lie à une machine Windows pour la conversion.
Tarification : Gratuit, livré avec Windows.
Plateformes : Windows 10, Windows 11, Windows Server 2019+.
Télécharger : Microsoft Learn
En résumé : la réponse quand l’hôte est Windows et toucher l’inventaire logiciel ne l’est pas.
4. tcpflow, pour la reconstruction des flux TCP dans les fichiers
tcpflow capture le trafic en direct (ou lit un pcap) et écrit chaque flux TCP reconstruit dans son propre fichier, une direction par fichier. C’est souvent ce que nous voulons réellement quand la question est « qu’a envoyé ce client à ce serveur » et parcourir les paquets dans Wireshark est la mauvaise altitude. Il est livré dans Debian, Ubuntu, Fedora et Homebrew, et son langage de filtrage est du pur BPF.
Où il tombe court : UDP est un citoyen de seconde classe ; TLS et les autres flux chiffrés dumpent du ciphertext comme tcpdump. Les fichiers reconstruits grossissent également rapidement sur les captures longues.
Tarification : Gratuit, open-source, GPLv3.
Plateformes : Linux, macOS.
Télécharger : Simson Garfinkel sur GitHub
En résumé : le choix quand le livrable est « le corps HTTP », pas « la trace de paquet ».
5. ngrep, pour la correspondance de motifs de style grep sur le fil
ngrep apporte un motif de style POSIX familier au trafic en direct et aux fichiers pcap. ngrep -q -W byline -d eth0 'GET|POST' 'tcp port 80' imprime uniquement les paquets dont la charge utile correspond à la regex, le filtre BPF entourant rétrécissant le côté interface. Pour des questions rapides comme « le client envoie-t-il le mauvais en-tête Host » ou « la réponse contient-elle cette chaîne d’erreur », ngrep gagne la gymnastique des filtres d’affichage.
Où il tombe court : il ne comprend pas TLS ou HTTP/2 framing, donc tout ce qui est chiffré revient comme du bruit. Son cycle de libération a ralenti, et bien que la plupart des distributions le emballent toujours, certaines ne le font pas.
Tarification : Gratuit, open-source, BSD révisé.
Plateformes : Linux, macOS, Windows via WSL.
Télécharger : ngrep sur GitHub
En résumé : celui auquel tendre quand notre premier instinct est grep.
6. Zeek, pour transformer les paquets en journaux interrogeables
Zeek, anciennement Bro, se situe entre capture brute et un IDS complet. Au lieu de pcap, il écrit des journaux structurés par protocole (conn.log, dns.log, http.log, ssl.log, x509.log et des dizaines d’autres) que nous pouvons grep, envoyer à Splunk ou Loki, ou alimenter un SIEM. Sur un laboratoire à domicile ou un routeur avec un port miroir, Zeek nous donne des semaines de données de comportement dans une empreinte que pcap ne pourrait pas toucher.
Où il tombe court : ce n’est pas une installation de cinq minutes ; attendez-vous à une étape de compilation ou à un paquet distro plus une légère passe de configuration. La courbe d’apprentissage est réelle, et la valeur apparaît le deuxième jour, pas le jour zéro.
Tarification : Gratuit, open-source, BSD révisé.
Plateformes : Linux, macOS, FreeBSD.
Télécharger : Projet Zeek
En résumé : le choix quand nous voulons répondre aux questions des semaines plus tard, pas regarder les paquets aujourd’hui.
7. Termshark, pour l’interface Wireshark à l’intérieur d’une session SSH
Termshark est un front-end terminal pour TShark. Ouvrez un pcap ou attachez-vous à une interface en direct et nous obtenons une liste de paquets familière, un arbre de protocole et un volet hex, tout rendu dans le terminal déjà ouvert. Cela fonctionne sur SSH, sur tmux, sur une console série dans une VM headless, partout où TTY est tout ce que nous avons.
Où il tombe court : à 80 colonnes, la mise en page devient encombrée, et les captures en direct sur les liaisons très haut débit peuvent prendre du retard dans l’interface utilisateur. C’est une visionneuse, pas un remplacement pour la collecte scripté.
Tarification : Gratuit, open-source, MIT.
Plateformes : Linux, macOS, Windows, FreeBSD.
Télécharger : Termshark
En résumé : le plus proche que nous obtenons de Wireshark sur une boîte qui n’aura jamais d’écran.
Comment choisir
- Si l’hôte est une boîte Windows moderne que nous ne possédons pas : pktmon. Rien à installer, rien à expliquer à la sécurité.
- Si l’hôte est Linux ou BSD et que nous le possédons : tcpdump pour la capture, TShark pour l’analyse sur notre propre station de travail.
- Si la capture doit se produire dans un conteneur ou une image Alpine : tcpdump, ou un complementi TShark mince. tcpflow quand les flux TCP sont le livrable réel.
- Si nous avons besoin d’une vue en forme de Wireshark mais que nous n’avons que SSH : Termshark. C’est le moyen le plus rapide d’obtenir une interface familière sur une boîte étrangère.
- Si la question est « un paquet contient-il la chaîne X » : ngrep. Énoncez le motif, obtenez les paquets.
- Si nous nous soucions du comportement sur des semaines, pas les cinq dernières minutes : Zeek. Cela transforme le réseau en un ensemble de données interrogeable.
- Si nous faisons de la forensique sur un pcap capturé par quelqu’un d’autre : TShark sur la ligne de commande, tcpflow quand les artefacts importent plus que l’ordre du fil.
FAQ
Quel est le meilleur outil de capture de paquets headless pour un serveur Windows ?
pktmon sur Windows Server 2019 et versions ultérieures. Il est livré avec le système d’exploitation, capture au niveau ETW, se fait tourner seul et génère pcapng directement sur les builds actuels. Quand nous avons besoin des dissecteurs de Wireshark, nous convertissons le fichier et l’ouvrons dans TShark sur une station de travail.
Pouvons-nous exécuter TShark ou tcpdump sans root ?
Oui sous Linux, avec setcap cap_net_raw,cap_net_admin+eip sur le binaire. Cela accorde des privilèges de capture à un exécutable spécifique sans donner au appelant root complet. Sur BSD, ajoutez l’utilisateur au groupe qui possède les appareils bpf. Sous Windows, TShark a besoin d’Administrator pour parler à Npcap.
Comment faisons-nous pivoter les captures pour qu’une session longue ne remplisse pas le disque ?
tcpdump utilise -G <seconds> pour la rotation basée sur le temps et -C <MB> pour la rotation basée sur la taille, combinée avec -W <count> pour limiter le nombre de fichiers conservés. TShark expose le même via -b duration: et -b filesize:. pktmon est limité avec --file-size et son mode de journal circulaire. Zeek fait pivoter ses journaux selon un calendrier fixe tout seul.
Le langage de filtre d’affichage de Wireshark est-il le même que la syntaxe tcpdump ?
Non. Le filtre de capture de tcpdump et TShark (-f) utilise la syntaxe BPF (tcp port 443 and host 10.0.0.1). Le filtre d’affichage de Wireshark et TShark (-Y) est un langage différent (tcp.port == 443 && ip.addr == 10.0.0.1). Tous les deux méritent d’être appris ; le filtre côté capture s’exécute à la vitesse du noyau, celui côté affichage s’exécute sur des paquets déjà capturés.
pktmon peut-il remplacer complètement Wireshark ?
Non. pktmon est un outil de capture, pas un analyseur. Il enregistre dans ETL, convertit en pcapng sur les builds plus récents et s’arrête. Pour décoder les poignées de main TLS, les flux HTTP/2 ou QUIC, nous ouvrons toujours le pcap résultant dans Wireshark ou TShark. Les deux se complètent, pas se remplacent.
Est-il sûr d’exécuter ces outils sur un hôte de production ?
Oui, avec une prudence raisonnable. La capture de paquets est passive et ne modifie pas le trafic, mais le coût CPU sur une liaison occupée n’est pas zéro, et les fichiers pcap peuvent croître rapidement. Limitez le disque avec une politique de rotation, réduisez le filtre BPF pour limiter le CPU, et préférez un port miroir ou un robinet à la capture en ligne où le profil de risque compte.