¿Hay alguna forma de filtrar / seguir una secuencia TCP / SSL basada en un ID de proceso en particular usando Wireshark ?
¿Hay alguna forma de filtrar / seguir una secuencia TCP / SSL basada en un ID de proceso en particular usando Wireshark ?
Respuestas:
No veo como. El PID no llega al cable (en términos generales), además, Wireshark le permite ver lo que hay en el cable, potencialmente todas las máquinas que se comunican a través del cable. De todos modos, los ID de proceso no son únicos en diferentes máquinas.
En caso de que esté buscando una forma alternativa y el entorno que usa sea Windows, Network Monitor 3.3 de Microsoft es una buena opción. Tiene la columna del nombre del proceso. Puede agregarlo fácilmente a un filtro usando el menú contextual y aplicar el filtro. Como de costumbre, la GUI es muy intuitiva ...
Puede hacer coincidir los números de puerto desde Wireshark hasta los números de puerto de, digamos, netstat , que le indicará el PID de un proceso que escucha en ese puerto.
Utilice Microsoft Message Analyzer v1.4
Navegue a ProcessId desde el selector de campo.
Etw
-> EtwProviderMsg
--> EventRecord
---> Header
----> ProcessId
Haga clic derecho y Agregar como columna
En Windows hay una compilación experimental que hace esto, como se describe en la lista de correo, Filtrar por nombre de proceso local
Esto es algo importante que se puede hacer para monitorear dónde ciertos procesos intentan conectarse, y parece que no hay ninguna forma conveniente de hacerlo en Linux. Sin embargo, son posibles varias soluciones, por lo que creo que vale la pena mencionarlas.
Hay un programa llamado nonet que permite ejecutar un programa sin acceso a Internet (tengo la mayoría de los lanzadores de programas en mi sistema configurados con él). Utiliza setguid para ejecutar un proceso en el grupo nonet y establece una regla de iptables para rechazar todas las conexiones de este grupo.
Actualización: ahora uso un sistema aún más simple, puedes tener fácilmente una configuración de iptables legible con ferm, y simplemente usar el programa sg
para ejecutar un programa con un grupo específico. Iptables también le permite redirigir el tráfico para que incluso pueda enrutarlo a una interfaz separada o un proxy local en un puerto que le permite filtrar en Wireshark o REGISTRAR los paquetes directamente desde iptables si no desea deshabilitar todo Internet mientras están comprobando el tráfico.
No es muy complicado adaptarlo para ejecutar un programa en un grupo y cortar el resto del tráfico con iptables durante la vida útil de la ejecución y luego podría capturar el tráfico de este proceso únicamente.
Si alguna vez llego a escribirlo, publicaré un enlace aquí.
En otra nota, siempre puede ejecutar un proceso en una máquina virtual y olfatear la interfaz correcta para aislar las conexiones que hace, pero esa sería una solución bastante inferior ...
Si desea seguir una aplicación que aún debe iniciarse, sin duda es posible:
docker run -t -i ubuntu /bin/bash
(cambie "ubuntu" a su distribución favorita, esto no tiene que ser el mismo que en su sistema real)any
, wlan0
, eth0
, ... elegir la nueva interfaz virtual docker0
en su lugar.Es posible que tenga algunas dudas sobre la ejecución de su software en un contenedor, por lo que aquí están las respuestas a las preguntas que probablemente quiera hacer:
En algunos casos, no puede filtrar por ID de proceso. Por ejemplo, en mi caso necesitaba rastrear el tráfico de un proceso. Pero encontré en su configuración la dirección IP de la máquina de destino, agregué un filtro ip.dst==someip
y listo. No funcionará en ningún caso, pero para algunos es útil.
Obtenga el número de puerto usando netstat
:
netstat -b
Y luego use el filtro Wireshark:
tcp.port == portnumber
El uso strace
es más adecuado para esta situación.
strace -f -e trace=network -s 10000 -p <PID>;
opciones -f
para rastrear también todos los procesos bifurcados, -e trace=netwrok
para filtrar solo llamadas al sistema de red y-s
al para mostrar una longitud de cadena de hasta 10000 caracteres.
También puede rastrear solo ciertas llamadas como enviar, recibir, leer operaciones.
strace -f -e trace=send,recv,read -s 10000 -p <PID>;
Puede verificar los números de puerto con estos ejemplos de comandos en Wireshark:
tcp.port == 80
tcp.port == 14220