Comprender la red Windows_WFP

  • Comprender la red Windows_WFP

Comprender la red Windows

  • Comprender la red Windows

WFP

Explicación de términos

https://learn.microsoft.com/en-us/windows/win32/fwp/object-model https://learn.microsoft.com/en-us/windows/win32/fwp/basic-operation https://learn.microsoft.com/en-us/windows-hardware/drivers/network

callout: Un callout proporciona funcionalidades que extienden las capacidades de la Plataforma de Filtrado de Windows. Un callout consiste en un conjunto de funciones de callout y una clave GUID que identifica de forma única el callout. callout driver: Un controlador de callout es un controlador que registra callouts con la Plataforma de Filtrado de Windows. Un controlador de callout es un tipo de controlador de filtro. callout function: Una función de callout es una función que es llamada por la Plataforma de Filtrado de Windows para realizar una tarea específica. Una función de callout está asociada con un callout. filter: Un filtro es un conjunto de funciones que son llamadas por la Plataforma de Filtrado de Windows para realizar operaciones de filtrado. Un filtro consiste en un conjunto de funciones de filtro y una clave GUID que identifica de forma única el filtro. filter engine: El motor de filtro es el componente de la Plataforma de Filtrado de Windows que realiza operaciones de filtrado. El motor de filtro es responsable de llamar a las funciones de filtro que están registradas con la Plataforma de Filtrado de Windows. filter layer: Una capa de filtro es un conjunto de funciones que son llamadas por la Plataforma de Filtrado de Windows para realizar operaciones de filtrado. Una capa de filtro consiste en un conjunto de funciones de capa de filtro y una clave GUID que identifica de forma única la capa de filtro.

La cola del despachador activa las devoluciones de llamada de forma inmediata, no necesita esperar a que la cola esté llena, por lo que puede satisfacer la necesidad de tiempo real. Cuando las devoluciones de llamada del usuario son lentas, los paquetes bloqueados se insertan lo antes posible en la siguiente cola, con un límite de cola de 256. Los paquetes bloqueados adicionales son almacenados por el sistema, y aproximadamente la capacidad de almacenamiento es de 16500, la capacidad de almacenamiento del sistema puede variar según el rendimiento y la configuración de la máquina. Cuando el usuario procesa los paquetes en las devoluciones de llamada, existen dos entidades de paquetes: Paquetes del kernel, que se liberan después de que la devolución de llamada procese la cola. Por lo tanto, cuando la devolución de llamada es lenta, una ejecución de devolución de llamada puede bloquear hasta 256 paquetes del sistema. Copia en la devolución de llamada, que se libera inmediatamente después de procesar un solo paquete.

En FwppNetEvent1Callback, se realiza la copia y ensamblaje de paquetes sin manipular el paquete original, sin afectar al negocio.

La suscripción puede usar filtros de plantilla para reducir la cantidad de paquetes que se deben procesar:

https://learn.microsoft.com/en-us/windows/win32/api/fwpmtypes/ns-fwpmtypes-fwpm_net_event_enum_template0

filterCondition

Una matriz de estructuras FWPM_FILTER_CONDITION0 que contienen condiciones de filtro distintas (las condiciones de filtro duplicadas generarán un error). Todas las condiciones deben ser verdaderas para que se realice la acción. En otras palabras, las condiciones están unidas por un AND. Si no se especifican condiciones, la acción siempre se realiza.

No se puede usar el mismo filtro Las relaciones entre todos los filtros son “y”, deben cumplirse todas La documentación de Microsoft muestra que existen ocho tipos de filtros compatibles, en realidad hay más tipos de filtros compatibles.

FWPM_CONDITION_IP_PROTOCOL

El número de protocolo IP, según lo especificado en RFC 1700. FWPM_CONDITION_IP_LOCAL_ADDRESS

La dirección IP local. FWPM_CONDITION_IP_REMOTE_ADDRESS

La dirección IP remota. FWPM_CONDITION_IP_LOCAL_PORT

El número de puerto de protocolo de transporte local. Para ICMP, el tipo de mensaje. FWPM_CONDITION_IP_REMOTE_PORT

El número de puerto de protocolo de transporte remoto. Para ICMP, el código de mensaje. FWPM_CONDITION_SCOPE_ID

El identificador de alcance IPv6 de la interfaz. Reservado para uso interno. FWPM_CONDITION_ALE_APP_ID

La ruta completa de la aplicación. FWPM_CONDITION_ALE_USER_ID

La identificación del usuario local. Al enumerar las suscripciones registradas en el sistema, se descubrió que ya existen dos suscripciones, y al examinar su GUID de sessionKey no se pudo confirmar quién las registró. Tras analizarlas, se descubrió que cada suscripción implementa las siguientes funciones:

Suscribió todos los paquetes de datos FWPM_NET_EVENT_TYPE_CLASSIFY_DROP, contabilizando todos los paquetes descartados. Suscribió todos los paquetes de datos FWPM_NET_EVENT_TYPE_CLASSIFY_ALLOW, que pueden usarse para estadísticas de tráfico. Ambas suscripciones utilizan el filtro de condición FWPM_CONDITION_NET_EVENT_TYPE (206e9996-490e-40cf-b831-b38641eb6fcb), lo que indica que hay más filtros que pueden implementar filtrado aparte de los ocho mencionados en la documentación de Microsoft.

Más investigaciones revelan que la interfaz de llamada del modo de usuario solo puede capturar eventos de caída, los eventos no-caída deben obtenerse en modo kernel, por lo tanto la micro-segmentación no puede usar FWPM_CONDITION_NET_EVENT_TYPE para obtener eventos.