Existe-t-il un moyen de filtrer / suivre un flux TCP / SSL basé sur un ID de processus particulier à l'aide de Wireshark ?
Existe-t-il un moyen de filtrer / suivre un flux TCP / SSL basé sur un ID de processus particulier à l'aide de Wireshark ?
Réponses:
Je ne vois pas comment. Le PID ne parvient pas sur le fil (en général), et Wireshark vous permet de regarder ce qui se trouve sur le fil - potentiellement toutes les machines qui communiquent sur le fil. De toute façon, les ID de processus ne sont pas uniques sur différentes machines.
Juste au cas où vous cherchez un autre moyen et que l'environnement que vous utilisez est Windows, le Moniteur réseau 3.3 de Microsoft est un bon choix. Il a la colonne de nom de processus. Vous l'ajoutez facilement à un filtre à l'aide du menu contextuel et appliquez le filtre .. Comme d'habitude, l'interface graphique est très intuitive ...
Vous pouvez faire correspondre les numéros de port de WireShark aux numéros de port de, par exemple, netstat qui vous indiquera le PID d'un processus écoutant sur ce port.
Utilisez Microsoft Message Analyzer v1.4
Accédez à ProcessId à partir du sélecteur de champ.
Etw
-> EtwProviderMsg
--> EventRecord
---> Header
----> ProcessId
Faites un clic droit et ajoutez en tant que colonne
Sur Windows, il existe une version expérimentale qui fait cela, comme décrit sur la liste de diffusion, Filtrer par nom de processus local
C'est une chose importante à faire pour surveiller où certains processus essaient de se connecter, et il semble qu'il n'y ait aucun moyen pratique de le faire sous Linux. Cependant, plusieurs solutions de contournement sont possibles, et je pense donc qu'il vaut la peine de les mentionner.
Il existe un programme appelé nonet qui permet d'exécuter un programme sans accès à Internet (j'ai configuré la plupart des lanceurs de programme sur mon système). Il utilise setguid pour exécuter un processus dans le groupe nonet et définit une règle iptables pour refuser toutes les connexions de ce groupe.
Mise à jour: j'utilise maintenant un système encore plus simple, vous pouvez facilement avoir une configuration iptables lisible avec ferm, et utiliser simplement le programme sg
pour exécuter un programme avec un groupe spécifique. Iptables vous permet également de rediriger le trafic afin que vous puissiez même l'acheminer vers une interface distincte ou un proxy local sur un port qui vous permet de filtrer dans WireShark ou de LOGER les paquets directement à partir d'iptables si vous ne voulez pas désactiver tout Internet pendant que vous vérifient le trafic.
Ce n'est pas très compliqué de l'adapter pour exécuter un programme dans un groupe et couper tout autre trafic avec iptables pendant la durée de vie de l'exécution, puis vous pourriez capturer le trafic de ce processus uniquement.
Si jamais j'arrive à l'écrire, je posterai un lien ici.
Sur une autre note, vous pouvez toujours exécuter un processus dans une machine virtuelle et renifler la bonne interface pour isoler les connexions qu'il établit, mais ce serait une solution assez inférieure ...
Si vous souhaitez suivre une application qui doit encore être lancée, c'est certainement possible:
docker run -t -i ubuntu /bin/bash
(remplacez "ubuntu" par votre distribution préférée, ce n'est pas forcément la même chose que dans votre système réel)any
, wlan0
, eth0
, ... choisissez la nouvelle interface virtuelle à la docker0
place.Vous pourriez avoir des doutes sur l'exécution de votre logiciel dans un conteneur, voici donc les réponses aux questions que vous voudrez probablement poser:
Dans certains cas, vous ne pouvez pas filtrer par identifiant de processus. Par exemple, dans mon cas, j'avais besoin de renifler le trafic d'un processus. Mais j'ai trouvé dans sa configuration l'adresse IP de la machine cible, un filtre ajouté ip.dst==someip
et le tour est joué. Cela ne fonctionnera en aucun cas, mais pour certains, c'est utile.
Obtenez le numéro de port en utilisant netstat
:
netstat -b
Et puis utilisez le filtre Wireshark:
tcp.port == portnumber
L'utilisation strace
est plus adaptée à cette situation.
strace -f -e trace=network -s 10000 -p <PID>;
options -f
permettant également de suivre tous les processus fourchus, -e trace=netwrok
de filtrer uniquement les appels système du réseau et -s
d'afficher une longueur de chaîne allant jusqu'à 10000 caractères.
Vous pouvez également suivre uniquement certains appels tels que les opérations d'envoi, de réception et de lecture.
strace -f -e trace=send,recv,read -s 10000 -p <PID>;
Vous pouvez vérifier les numéros de port avec ces exemples de commandes sur WireShark: -
tcp.port == 80
tcp.port == 14220