¿De qué se trata esto?

Me pasa tan a menudo… algo es raro o no funciona como se esperaba, y surge la pregunta: “¿Qué está pasando? ¿Por qué el cliente o el servidor se comportan así?” A menudo, estos son problemas relacionados con la red.

Un investigador de seguridad me dijo una vez: “Si quieres entender cómo funciona un sistema, tienes que entender el tráfico de red. Casi todos los problemas se pueden diagnosticar a nivel de red.” En mi experiencia: resulta que es cierto. 🥳

Desafortunadamente, mi experiencia también es que muchas personas no saben cómo capturar tráfico de red en Windows, y la única solución es “vamos a instalar Wireshark”.

Bueno, aunque Wireshark es una gran herramienta, no es la única solución y probablemente no sea la mejor solución para una captura rápida y única. Definitivamente hay soluciones mejores y probablemente más rápidas, especialmente cuando se trata de tus servidores altamente seguros y bien protegidos.



Consideraciones sobre la situación

De nuevo, Wireshark es una herramienta poderosa y más o menos, el estándar de facto para el análisis de protocolos de red. La usarás para analizar lo que se ha capturado, seguro. Pero la desventaja de Wireshark es:

  • No puede capturar sin instalar un componente adicional junto al producto en sí: un controlador de red (WinPcap o Npcap).
  • Es una herramienta viva y compleja con muchos binarios y potencial de vulnerabilidades.
  • Cada instalación en un servidor es un vector de ataque potencial y contribuye a la singularidad de tus servidores.

Probablemente no sea una herramienta que quieras tener en un servidor de producción, especialmente si solo deseas capturar algo de tráfico para un análisis rápido. Por todos los medios, colócala en tu estación de trabajo para analizar lo que se ha capturado. ¡Ni siquiera necesitas tener derechos de administrador para analizar con Wireshark! Wireshark funciona perfectamente bien como una instalación portátil sin necesidad de una instalación a nivel de sistema.

Entonces, ¿cuáles son las alternativas?

Hay varias alternativas para hacer el trabajo en Windows. Y la mejor parte es que no necesitas instalar nada en la máquina. Hay herramientas integradas en Windows para hacer el trabajo… y son bastante poderosas. Combinadas con un poco de PowerShell y la capacidad de PSRemoting, esto se escala fácilmente.

1. netsh trace - Lo viejo pero oro

El netsh trace comando es una herramienta integrada en Windows que te permite capturar tráfico de red sin necesidad de software adicional. Utiliza el Windows Event Tracing for Windows (ETW) para capturar y registrar eventos de red. Esencialmente, es netsh trace start y netsh trace stop para iniciar y detener la captura, pero hay netsh trace show para mostrar el estado actual y netsh trace convert para convertir los datos capturados a un formato más legible.

Aquí hay un resumen rápido de los comandos disponibles en netsh trace:

Los siguientes comandos están disponibles:

Comandos en este contexto:
?              - Muestra una lista de comandos.
convert        - Convierte un archivo de traza a un informe HTML.
correlate      - Normaliza o filtra un archivo de traza a un nuevo archivo de salida.
diagnose       - Inicia una sesión de diagnóstico.
dump           - Muestra un script de configuración.
export         - Exporta un escenario a un perfil WPR.
help           - Muestra una lista de comandos.
merge          - Fusiona archivos de traza y agrega metadatos de símbolos.
postreset      -
show           - Lista interfaces, proveedores y estado de trazado.
start          - Inicia el trazado.
stop           - Detiene el trazado.

Para ver ayuda sobre un comando, escribe el comando, seguido de un espacio, y luego
 escribe ?.

Ahora, centrémonos en los comandos start y stop, que son los que usarás para capturar tráfico de red. El nombre es bastante autoexplicativo, supongo. Para iniciar una captura de red, necesitas especificar algunos parámetros más. Básicamente, solo necesitas especificar que deseas capturar tráfico. Ese es simplemente el parámetro capture=yes. Incluso si esto es todo lo que necesitas como mínimo absoluto, hay un parámetro más que se recomienda para eficiencia. Si solo te importa capturar el tráfico de red, puedes desactivar el comportamiento de generación de informes de netsh con report=disabled. Esto acelerará el proceso de captura y reducirá el tamaño del archivo capturado, ya que no incluirá los datos adicionales del informe. El resto de los parámetros se pueden usar para personalizar el proceso de captura según tus necesidades. Por supuesto, puedes especificar dónde guardar la traza y qué capturar, pero no es obligatorio.

Debido a que capturar tráfico de red es una operación a nivel de sistema y afecta a todos los procesos (y todos los usuarios) en el sistema, necesitas ejecutar el/los comando(s) netsh trace con privilegios administrativos. Aquí está el comando básico para comenzar a capturar tráfico de red usando netsh trace:

# Capturar tráfico de red en la interfaz "Ethernet" y guardarlo en un archivo
netsh trace start capture=yes report=disabled

tan pronto como tengas lo que necesitas, puedes detener la captura con el siguiente comando:

# Detener la captura de tráfico de red
netsh trace stop


El tráfico capturado se guarda en un archivo .etl, que se puede analizar más tarde. Si deseas tener un nombre de archivo y una ubicación personalizados para los datos capturados, puedes especificarlo con el parámetro tracefile.

# Capturar tráfico de red y guardarlo en un archivo específico
netsh trace start capture=yes report=disabled tracefile=C:\Administration\Logs\MyTraceFile.etl

Ahora que hemos capturado el tráfico, necesitamos analizarlo...

Abrir el archivo etl en Wireshark requiere - desafortunadamente - un paso adicional. Pero, quédate conmigo, no es tan difícil y aún no requiere una instalación: Solo usa etl2pcapng, una herramienta muy pequeña proporcionada por Microsoft, y estarás listo. Convierte el archivo etl a un archivo pcapng, que se puede abrir fácilmente en Wireshark para su análisis.

# Convertir el archivo .etl a formato .pcapng
etl2pcapng nettrace.etl nettrace.pcapng

Seguro, el nombre del archivo en el comando puede ser una ruta completamente calificada, incluyendo la letra de unidad y directorios. Este es solo un ejemplo rápido.


El archivo etl creado se puede eliminar después de la conversión, si ya no lo necesitas. El archivo pcapng es el que usarás para el análisis en Wireshark. Aparte de no tener que instalar nada en el sistema usando este método, también tienes la ventaja de tener una captura más detallada, porque netsh trace captura más que solo el tráfico de red. También captura información adicional sobre el sistema y los procesos, lo que puede ser muy útil para la resolución de problemas y el análisis:


Este proceso funciona bastante bien en todos los sistemas Windows desde Windows 7 y Windows Server 2008 R2. Dado esto, es bastante bueno para una solución integrada para obtener lo que deseas. De nuevo, todo esto funciona sin instalar nada en el sistema, lo cual es una gran ventaja, especialmente en servidores de producción. Solo puedes ejecutar los comandos, capturar el tráfico y analizarlo en tu estación de trabajo con Wireshark sin ninguna instalación en el servidor mismo.

Hay muchos más parámetros y opciones disponibles para netsh trace, que te permiten personalizar el proceso de captura según tus necesidades. Por ejemplo, puedes especificar

  • filtros de protocolo
  • filtros de tipos de Ethernet
  • filtros de direcciones IP
  • interfaces específicas para capturar
  • y mucho más

Puedes ver todas las opciones disponibles ejecutando netsh trace show CaptureFilterHelp. Esto te dará una lista detallada de todos los filtros y opciones disponibles que puedes usar para personalizar tu captura. Mis favoritos personales son:

# Para capturar solo tráfico IPv4:
Ethernet.Type=IPv4

# Para capturar solo TCP/UDP/ o ambos:
Protocol=TCP
Protocol=UDP
Protocol=(TCP,UDP)

# Reducir la captura a direcciones IP específicas:
IPv4.SourceAddress=<Dirección IPv4>
IPv4.DestinationAddress=<Dirección IPv4>
IPv4.Address=(<Dirección IPv4>,<Dirección IPv4>)

Con estas opciones, deberías estar equipado para capturar de manera efectiva el tráfico más relevante para tu análisis y resolución de problemas. Puedes combinar los filtros para capturar solo el tráfico que es relevante para tu caso de uso específico, lo que puede ayudarte a concentrarte en los datos importantes y reducir el ruido en tu captura.

Puedes encontrar algunos ejemplos en la sección ejemplos prácticos a continuación.

2. pktmon - El nuevo chico en el bloque

Pktmon es una herramienta integrada más nueva en Windows 10 / Windows Server 2019 y versiones posteriores que proporciona capacidades de monitoreo de paquetes más convenientes.

También es una herramienta de línea de comandos que te permite capturar tráfico, pero está más enfocada en el monitoreo de paquetes que netsh trace y proporciona una interfaz un poco más amigable para gestionar filtros de paquetes y capturar tráfico. La sintaxis es un poco diferente, pero bastante similar. Si estás familiarizado con netsh trace, deberías sentirte cómodo usándola. Aquí hay un resumen rápido de los comandos disponibles en pktmon:

pktmon <comando> [OPCIONES | ayuda]
    Captura avanzada de paquetes y recopilación de eventos.

Comandos
    filter     Gestionar filtros de paquetes.
    list       Listar componentes de procesamiento de paquetes.

    start      Iniciar 
```captura de paquetes, contadores y recopilación de eventos.
    stop       Detener la recopilación de datos.
    status     Consultar el estado actual.
    unload     Descargar el controlador PktMon.

    counters   Mostrar los contadores de paquetes actuales.
    reset      Restablecer los contadores de paquetes a cero.

    etl2txt    Convertir el archivo de registro a formato de texto.
    etl2pcap   Convertir el archivo de registro a formato pcapng.
    hex2pkt    Decodificar el paquete en formato hexadecimal.

    help       Mostrar texto de ayuda para un comando específico.
               Ejemplo: pktmon start help

Porque también utiliza el Windows Event Tracing for Windows (ETW) para capturar los eventos de red, también produce archivos etl. Así que aquí hay un ejemplo rápido de cómo usarlo:

# Comenzar a capturar paquetes y guardar la salida en un archivo
pktmon start --capture pktmon.etl

# Detener la captura
pktmon stop

Como puedes ver, incluso si la sintaxis es un poco diferente a netsh trace, se acerca bastante. Puedes omitir el parámetro de informes, que es necesario en su contraparte más antigua. Eso hace que sea un poco más corto de llamar.


Aquí hay una verdadera ventaja de pktmon: A diferencia del clásico netsh trace, los datos capturados se pueden convertir directamente a un archivo .pcapng utilizando la capacidad integrada de pktmon. Eso significa que, dentro de un sistema operativo actual, ni siquiera necesitas usar la herramienta adicional etl2pcapng para la conversión.

Puedes convertir directamente los datos capturados a un archivo .pcapng para análisis con Wireshark:

# Convertir el archivo .etl a formato .pcapng
pktmon etl2pcap pktmon.etl

El archivo etl creado se puede eliminar después de la conversión, si ya no lo necesitas. El archivo pcapng es el que usarás para el análisis en Wireshark. Debido a que el archivo pcapng contiene solo los datos de tráfico, y no tanta información adicional sobre el sistema y los procesos, es más ligero que el archivo etl. Pero en caso de una captura más larga o de alto tráfico, aún puede ser bastante grande.


Como se mencionó para netsh trace, pktmon también proporciona muchas opciones de filtrado. Nuevamente, puedes especificar filtros de protocolo, direcciones IP y mucho más para reducir tu captura. Puedes ver todas las opciones disponibles ejecutando pktmon filter add help. Esto te dará una lista detallada de todos los filtros y opciones disponibles que puedes usar para personalizar tu captura. La principal diferencia es que necesitas agregar los filtros antes de comenzar la captura, lo cual es una verdadera diferencia con netsh trace, donde puedes especificar los filtros directamente en el comando de inicio. Pero puede que no sea un gran problema cuando haces esto a través de scripts. En mi opinión, esto facilita la legibilidad del comando, ya que no tienes muchos parámetros en el comando de inicio, sino que está más separado y estructurado.

Aquí hay algunos ejemplos de filtros que puedes usar con pktmon:

# Para capturar solo tráfico IPv4:
pktmon filter add -p IPv4


# Para capturar solo TCP/UDP o ambos:
pktmon filter add -p TCP
pktmon filter add -p UDP

# Reducir la captura a direcciones IP específicas:
pktmon filter add -a IPv4.SourceAddress <dirección IPv4>
pktmon filter add -a IPv4.DestinationAddress <dirección IPv4> 
pktmon filter add -a IPv4.Address <dirección IPv4>

El hecho de que puedas ejecutar los comandos de agregar filtros múltiples veces para agregar múltiples filtros puede ser bastante útil, ya que te permite construir tu configuración de filtros paso a paso y mantenerla más organizada. También puedes listar los filtros configurados actualmente con pktmon filter list para ver qué filtros están activos antes de comenzar la captura.

3. Get-NetEventSession - La forma nativa de PowerShell

En caso de que seas un entusiasta de PowerShell, aquí hay otra forma de capturar tráfico de red utilizando el cmdlet Get-NetEventSession, que es parte del módulo NetEventPacketCapture. Este cmdlet te permite crear y gestionar sesiones de eventos de red, que pueden ser utilizadas para capturar tráfico de red. Aunque esto requiere un poco más de texto, PowerShell viene con capacidades que son bastante interesantes:

  • Autocompletado integrado para parámetros
  • Remotización de PowerShell a través de parámetros -CimSession integrados en los cmdlets
# Crear una nueva sesión de eventos de red
$session = New-NetEventSession -Name "MySession" -LocalFilePath "C:\path\to\capture.etl"

# Agregar un proveedor para capturar tráfico de red (por ejemplo, Microsoft-Windows-Kernel-Network)
Add-NetEventProvider -SessionName $session.Name -Name "Microsoft-Windows-Kernel-Network"

# Ver la sesión creada
$session


# Iniciar la sesión para comenzar a capturar tráfico
$session | Start-NetEventSession

# Detener la sesión para finalizar la captura
$session | Stop-NetEventSession

De la misma manera que las herramientas de línea de comandos, el tráfico capturado se guarda en un archivo .etl, que puede ser analizado después de la conversión a formato .pcapng utilizando etl2pcapng o pktmon. No volveré a detallar esto, ya que es el mismo proceso que se describió anteriormente.


Honestamente, tengo que admitir que esta no es mi forma favorita de capturar tráfico de red, ya que es un poco complejo lidiar con los diversos comandos y los conceptos subyacentes de sesiones de eventos de red y proveedores. Pero si deseas permanecer completamente en un mundo solo de PowerShell, sigue siendo una forma integrada y poderosa de capturar tráfico.

En la sección de ejemplo práctico a continuación, encontrarás un ejemplo donde utilicé las capacidades de remotización de PowerShell para capturar tráfico de red en un sistema remoto combinado con las herramientas de línea de comandos de arriba. Esta es una combinación bastante poderosa y, en mi opinión personal, no hay nada de malo en usar herramientas de línea de comandos en combinación con PowerShell. Como suele ser el caso… usa lo que mejor se adapte a ti y a tu caso de uso. No hay una solución única para todos.

Aunque, por supuesto, ❤️ PowerShell ❤️ está bastante cerca de ser una solución única para todos. 😁

4. La forma GUI: Monitor de rendimiento

Si prefieres una interfaz gráfica clásica y basada en MMC dentro de Windows, también puedes usar el Monitor de rendimiento (PerfMon) integrado. PerfMon te permite crear conjuntos de recopiladores de datos que pueden capturar varias métricas de rendimiento, incluido el tráfico de red.


Efectivamente, todas las herramientas mencionadas anteriormente se basan en la misma tecnología subyacente, el Windows Event Tracing for Windows (ETW), y solo proporcionan diferentes interfaces y capacidades para capturar eventos. El Monitor de rendimiento es solo la interfaz gráfica basada en ETW.

Para capturar tráfico de red utilizando el Monitor de rendimiento, puedes seguir estos pasos:

  1. Abre el Monitor de rendimiento escribiendo perfmon en el menú de inicio y presionando Enter.
  2. En el panel izquierdo, expande “Conjuntos de recopiladores de datos” y haz clic derecho en “Definido por el usuario”. Selecciona “Nuevo” > “Conjunto de recopiladores de datos”.
  3. Dale un nombre a tu conjunto de recopiladores de datos (por ejemplo, “CapturaTráficoRed”) y selecciona “Crear manualmente (Avanzado)”. Haz clic en “Siguiente”.
  4. En el paso “Crear recopiladores de datos”, selecciona “Contador de rendimiento” y haz clic en “Siguiente”.
  5. Haz clic en “Agregar” para añadir contadores de rendimiento. En el cuadro de diálogo “Agregar contadores”, expande “Interfaz de red” y selecciona los contadores que deseas capturar (por ejemplo, “Bytes Totales/sec”, “Paquetes/sec”). Haz clic en “Agregar” y luego en “Aceptar”.
  6. Haz clic en “Siguiente” y especifica la ubicación donde deseas guardar los datos capturados. Haz clic en “Siguiente” y luego en “Finalizar” para crear el conjunto de recopiladores de datos.
  7. Para comenzar a capturar tráfico de red, haz clic derecho en tu conjunto de recopiladores de datos recién creado (por ejemplo, “CapturaTráficoRed”) y selecciona “Iniciar”. Los contadores de rendimiento comenzarán a capturar datos.
  8. Para detener la captura, haz clic derecho en el conjunto de recopiladores de datos nuevamente y selecciona “Detener”. Los datos capturados se guardarán en la ubicación especificada.


Este es un método particularmente útil si deseas capturar métricas de rendimiento relacionadas con el tráfico de red a través de diferentes horarios y durante un período de tiempo más largo. No es el mejor método para una captura y análisis rápidos, pero puede ser muy útil para monitorear y analizar el rendimiento de la red a lo largo del tiempo.

Además de la programación, tales conjuntos de recopiladores de datos definidos se pueden exportar e importar fácilmente en otros sistemas, lo que puede ser muy útil para estandarizar el proceso de captura en múltiples servidores o estaciones de trabajo. Esto es especialmente útil si combinas varias métricas junto con la captura de tráfico de red, como el uso de CPU, uso de memoria, I/O de disco, etc., para obtener una visión más completa del rendimiento y comportamiento del sistema en relación con el tráfico de red.

No entraré en más detalles sobre esto, porque la intención principal de esta publicación en el blog es mostrar cómo capturar rápidamente y en la consola.

Ejemplo Práctico

Capturar solo tráfico HTTP o HTTPS

Este puede ser un caso de uso común. Desafortunadamente, hasta donde sé, no hay capacidad integrada en netsh trace start para capturar puertos específicos. 😣 Los filtros no te permiten ser tan específico. Pero con pktmon puedes hacerlo fácilmente. Bueno, vale la pena mencionar que esto solo es posible dentro de Windows Server 2019 y versiones de Windows 10+ posteriores a 1809.

Puedes usar el siguiente comando para capturar solo tráfico HTTP y HTTPS:

pktmon filter add "http + https" -d IPv4 -t TCP -p 80 443
pktmon start --capture --file-name https_traffic.etl

pktmon stop
pktmon filter remove

Captura solo del tráfico DNS

Si solo te interesa capturar el tráfico DNS, puedes usar el siguiente comando para capturar solo el tráfico DNS:

pktmon filter add "UDP DNS" -d IPv4 -t UDP -p 53
pktmon filter add "TCP DNS" -d IPv4 -t TCP -p 53
pktmon start --capture --file-name dns_traffic.etl

pktmon stop
pktmon filter remove

Captura solo del tráfico SMTP

Si deseas capturar solo el tráfico SMTP, puedes usar el siguiente comando para capturar solo el tráfico SMTP:

pktmon filter add "SMTP" -d IPv4 -t TCP -p 25
pktmon start --capture --file-name smtp_traffic.etl

pktmon stop
pktmon filter remove

Este es solo otro ejemplo rápido de cómo puedes usar las capacidades de filtrado de `pktmon` para capturar solo tipos específicos de tráfico.

Captura a través de netsh trace con IP específica

Si te ves obligado a usar netsh trace, debido a sistemas operativos más antiguos o si prefieres usarlo, te recomendaría especificar un filtro de IP para la IP de tu sistema. De esta manera, reduces el tráfico de difusión y otros que probablemente no estén relacionados con tu sistema.

Primero, prepara tu filtro de IP y la ruta del archivo para la captura:

$localIpList = (Get-NetIPAddress -AddressState Preferred -PrefixOrigin Dhcp, Manual -AddressFamily IPv4).ipaddress
$ipFilter = "($($localIpList -join ","))"
$filePath = "traffic.etl"

Luego, inicia la captura con el filtro de IP:

netsh trace start capture=yes report=disabled overwrite=yes fileMode=circular Protocol="(UDP,TCP)" tracefile="$($filePath)" IPv4.Address=$ipFilter

Verifica el estado de la captura:

netsh trace show status

Haz lo tuyo, y cuando hayas terminado, detén la captura:

netsh trace stop

Con este enfoque, puedes capturar fácilmente solo el tráfico que es relevante para tu sistema, lo que puede ayudarte a concentrarte en los datos importantes y reducir el ruido en tu captura. Esto es especialmente útil en entornos con mucho tráfico de red, donde capturar todo resultaría en un archivo de captura muy grande y difícil de manejar.

Captura de tráfico a través de PowerShell remoting

Me gustaría destacar otro caso de uso práctico que he utilizado en la vida real múltiples veces. Cuando se trata de entornos más grandes con múltiples servidores, no es realmente eficiente iniciar sesión en cada servidor y ejecutar comandos de captura uno por uno.

Aquí es exactamente donde PowerShell remoting brilla. 🎉

Puedes combinar las capacidades de PowerShell remoting con las herramientas de línea de comandos mencionadas anteriormente para capturar fácilmente tráfico en un número arbitrario de sistemas. ¡Considero que esta es una combinación bastante poderosa!

Aquí hay un ejemplo rápido de cómo hacerlo:
(Para lo obvio, puedes personalizar los bloques de script para incluir filtros o parámetros adicionales según sea necesario para tu caso de uso específico)

# Define la lista de servidores remotos en los que deseas capturar tráfico
$remoteServers = @("Server1", "Server2", "Server3")

# Define la ruta base y el nombre del archivo en los servidores remotos
$remoteBasePath = "C:\Administration\Logs"
$remoteCaptureFileName = "traffic_http"

# Crea sesión con los servidores remotos
$sessions = New-PSSession -ComputerName $remoteServers

# Define el bloque de script para comenzar a capturar tráfico de red usando pktmon
$scriptStart = {
    $filePath = "$($using:remoteBasePath)\$($using:remoteCaptureFileName)_$($env:COMPUTERNAME)_$(Get-Date -Format 'yyyy-MM-dd-HH-mm-ss').etl"
    
    PktMon.exe filter add "HTTP" -d IPv4 -t TCP -p 80
    PktMon.exe start --capture --file-name "$($filePath)"
}

# Ejecuta el bloque de script en cada servidor remoto usando PowerShell remoting
Invoke-Command -Session $sessions -ScriptBlock $scriptStart

Ahora, haz lo tuyo para obtener lo que deseas…

Puedes verificar el estado de la captura en cada servidor remoto con el siguiente comando:

Invoke-Command -Session $sessions -ScriptBlock { PktMon.exe status }

Cuando estés listo, puedes detener la captura y convertir los datos capturados al formato .pcapng en cada servidor remoto con el siguiente comando:

$scriptStop = {
    # Detener la captura
    PktMon.exe stop | Out-Null
    
    # Eliminar los filtros (para estar limpio para la próxima captura)
    PktMon.exe filter remove | Out-Null
    
    # Convertir el archivo .etl a formato .pcapng
    PktMon.exe etl2pcap $filePath
    
    # Eliminar el archivo .etl original después de la conversión
    Remove-Item -Path $filePath -Force
}
Invoke-Command -Session $sessions -ScriptBlock $scriptStop

Ahora, has capturado el tráfico en cada servidor remoto, pero de la misma manera, tienes un archivo de captura en cada servidor. Afortunadamente, PowerShell también te ayuda en esta situación. Puedes usar las mismas capacidades de remoting para copiar los archivos capturados a tu estación de trabajo local para su análisis con Wireshark. Puedes usar el cmdlet Copy-Item con el parámetro -ToSession para copiar los archivos de los servidores remotos a tu máquina local.

# Define la ruta local donde deseas guardar los archivos capturados
$localPath = Join-Path -Path $home -ChildPath "LocalData"

# Copia los archivos capturados de cada servidor remoto a la máquina local
foreach ($session in $sessions) {
    $remoteFilePath = "$($remoteBasePath)\$($remoteCaptureFileName)_*.pcapng"
    Copy-Item -Path $remoteFilePath -Destination $localPath -FromSession $session
}

# Elimina los archivos pcapng de los servidores remotos después de copiarlos
Invoke-Command -Session $sessions -ScriptBlock {
    Remove-Item -Path ($filePath -replace ".etl", ".pcapng") -Force
}

Cuando hayas terminado, elimina las sesiones a los servidores:

# Elimina las sesiones a los servidores remotos
Remove-PSSession -Session $sessions

Como muestra este ejemplo, puedes capturar fácilmente tráfico de red en múltiples sistemas, **combinando `PowerShell` y `pktmon`**. Este enfoque te permite gestionar y analizar de manera eficiente el tráfico de red en tu entorno sin necesidad de intervención manual o instalar nada en los servidores remotos. Este ejemplo asume que tienes sistemas con versiones de Windows - más o menos - actuales. En caso de que `pktmon` no esté disponible en tus sistemas, simplemente reemplaza los comandos de `pktmon` con los comandos correspondientes de `netsh trace`.

Consulta los ejemplos de netsh de arriba para obtener ideas sobre cómo usarlo. La estructura general de los bloques de script seguirá siendo la misma.

Conclusión

Capturar tráfico de red en Windows se puede HACER FÁCILMENTE utilizando varias herramientas integradas, cada una con sus propias ventajas y casos de uso. Ya sea que prefieras herramientas de línea de comandos como netsh trace y pktmon, o una interfaz gráfica como Performance Monitor, hay opciones disponibles para adaptarse a diferentes necesidades y preferencias.

Para capturas rápidas y análisis, pktmon es una excelente opción debido a su facilidad de uso y capacidades de conversión directa. (Si estás en Windows Server 2019 o Windows 10+ versión posterior a 1809) En sistemas más antiguos, netsh trace puede ser una herramienta poderosa que -hace el trabajo- también.

Y para aquellos que prefieren una GUI, Performance Monitor proporciona una forma integral de capturar y analizar métricas de rendimiento de red. En última instancia, la mejor herramienta para capturar tráfico de red en Windows depende de tus requisitos específicos y del nivel de detalle que necesites para tu análisis.