
Un plugin de Wireshark para instrumentar ETW
Wireshark plugin para trabajar con Event Tracing for Windows
Microsoft Message Analyzer está siendo retirado y sus paquetes de descarga fueron eliminados de los sitios microsoft.com el 25 de noviembre de 2019.
Wireshark ha construido una enorme biblioteca de disectores de protocolos de red.
La mejor herramienta para Windows sería aquella que pueda recopilar y mezclar todo tipo de registros...
¡¡¡Bienvenido Winshark!!!
Winshark se basa en un backend libpcap para capturar ETW (Event Tracing for Windows), y un generador que producirá todos los disectores para los proveedores ETW conocidos en su máquina.
Hemos añadido soporte para Tracelogging para cubrir casi todas las técnicas de registro en el sistema operativo Windows.
Con Winshark y el poder de Windows, ahora podemos capturar registros de red y eventos en la misma herramienta. Windows expone muchos proveedores ETW, en particular uno para captura de red ;-) Ya no es necesario un controlador NDIS externo.
Esto es una gran mejora en términos de uso:
Si quieres:
Por favor, instala Wireshark antes. Luego simplemente instala Winshark.
Actualmente, tienes que pedirle a Wireshark que interprete el DLT_USER 147 como ETW. Esto se debe a que aún no tienes un valor real de libpcap para nuestro nuevo enlace de datos.
Realizamos una solicitud de extracción para tener un valor DLT dedicado; todavía está pendiente.
Para hacerlo, debes abrir la pestaña Preferencias bajo el panel Editar. Selecciona DLT_USER bajo Protocolos y Editar la tabla de encapsulaciones:

Y configura winshark para DLT = 147 :

¡Disfruta!
Winshark funciona con cmake:
git clone https://github.com/airbus-cert/winshark --recursive
mkdir build_winshark
cd build_winshark
cmake ..\Winshark
cmake --build . --target package --config release
Para entender mejor cómo funciona Winshark, primero debemos entender cómo funciona ETW.
ETW se divide en tres partes:
Hay muchos tipos diferentes de proveedores. Los más comunes y utilizables son los proveedores registrados.
Un proveedor registrado, o proveedor basado en manifiesto, se registra bajo la clave de registro HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Publishers.
Esto establece el vínculo entre un ID de proveedor y un dll. El manifiesto está incluido en el dll asociado en un recurso llamado WEVT_TEMPLATE.
Puedes listar todos los proveedores registrados en tu máquina usando logman:
logman query providers
También puedes listar todos los proveedores vinculados a un proceso particular:
logman query providers -pid 1234
Algunos de ellos pueden aparecer sin nombre; estos tipos de proveedores pueden producir registros WPP o TraceLogging.
Las sesiones se crean para recopilar registros de más de un proveedor.
Puedes crear tu propia sesión usando logman:
logman start Mysession -p "Microsoft-Windows-RemoteDesktopServices-RdpCoreTS" -ets -rt
logman update MySession -p "Microsoft-Windows-NDIS-PacketCapture" -ets -rt
Puedes listar todas las sesiones activas desde una línea de comandos de administrador:
logman query -ets
Data Collector Set Type Status
-------------------------------------------------------------------------------
...
EventLog-Application Trace Running
EventLog-Microsoft-Windows-Sysmon-Operational Trace Running
EventLog-System Trace Running
...
The command completed successfully.
Puedes ver aquí algunas sesiones interesantes utilizadas por el registrador de eventos para capturar registros de las sesiones de Aplicación y Sistema y de Sysmon.
Un consumidor es un programa simple que leerá registros de una sesión. Los consumidores más conocidos son:
logmannetshtracertY ahora Winshark!!! Winshark es un simple consumidor ETW. El consumidor real subyacente es libpcap, (wpcap.dll para Windows) que es usado por dumpcap.exe, que es el proceso encargado de la captura de paquetes.
Wireshark se divide en tres partes (sí, él también):
Wireshark.exe que se encarga de analizar y disecar protocolosdumpcap.exe que se encarga de capturar paqueteslibpcap (wpcap.dll) que se encarga de la interfaz entre dumpcap.exe y el sistema operativoWinshark tiene lugar en la primera y última parte. Implementa un backend para libpcap para capturar eventos ETW.
Winshark funciona sobre sesiones ETW, por eso puedes seleccionar una sesión ETW en lugar de la interfaz de red al inicio de la captura.
Luego Winshark genera disectores lua para cada proveedor basado en manifiesto registrado en tu computadora, durante el paso de instalación.
Winshark también es capaz de analizar proveedores basados en tracelogging.
Para capturar tráfico de red usando Winshark, puedes usar dos formas simples:
pktmon es una herramienta de diagnóstico de red integrada y entre componentes para Windows. Se puede usar para captura de paquetes, detección de pérdida de paquetes, filtrado y conteo de paquetes (compatible desde RS5)
(https://docs.microsoft.com/en-us/windows-server/networking/technologies/pktmon/pktmon)
pktmon start -c -m real-mode
puedes ejecutar pktmon -h para más opciones (como administrador)
Por ejemplo: Agregar un filtro para paquetes
pktmon filter add -t icmp
pktmon filter add -t tcp -p 80
Luego lanza Wireshark con privilegios de administrador y selecciona la interfaz Pktmon:

Eso iniciará la captura de paquetes:

netsh.exe trace start capture=yes report=no correlation=no
Y luego crea una sesión ETW asociada con el proveedor Microsoft-Windows-NDIS-PacketCapture:
logman start Winshark-PacketCapture -p "Microsoft-Windows-NDIS-PacketCapture" -rt -ets
Luego lanza Wireshark con privilegios de administrador y selecciona la interfaz Winshark-PacketCapture:

Eso iniciará la captura de paquetes:

ETW marca cada paquete con un encabezado que establece algunos metadatos sobre el remitente.
Uno de estos es el ID de proceso del emisor. Esta es una gran mejora respecto a una captura clásica de paquetes desde un controlador NDIS.
Simplemente llena el campo de filtro de Wireshark con la siguiente expresión:
winshark.header.ProcessId == 1234

@kobykahane proporciona un controlador de filtro del sistema de archivos que emite un ETW por cada acción realizada en un NamedPipe.
bcdedit /set testsigning on
Winshark haciendo doble clic en C:\Program Files\Wireshark\WinsharkUpdate.bat con derechos de Administradorcmd.exe en modo Administradorsc start NpEtw
logman start namedpipe -p NpEtw -ets -rt
Wireshark y seleccionar la sesión namedpipe. ¡Disfruta!
Este proyecto es parte de una presentación realizada para SSTIC