Entendendo a Rede Windows_WFP

  • Entendendo a Rede Windows_WFP

Entendendo a Rede Windows

  • Entendendo a Rede Windows

WFP

Explicação de Termos

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: Um callout fornece funcionalidades que estendem as capacidades da Windows Filtering Platform. Um callout consiste em um conjunto de funções callout e uma chave GUID que identifica exclusivamente o callout. callout driver: Um callout driver é um driver que registra callouts com a Windows Filtering Platform. Um callout driver é um tipo de filter driver. callout function: Uma callout function é uma função chamada pela Windows Filtering Platform para realizar uma tarefa específica. Uma callout function está associada a um callout. filter: Um filter é um conjunto de funções chamadas pela Windows Filtering Platform para realizar operações de filtragem. Um filter consiste em um conjunto de funções filter e uma chave GUID que identifica exclusivamente o filter. filter engine: O filter engine é o componente da Windows Filtering Platform que realiza operações de filtragem. O filter engine é responsável por chamar as funções filter registradas na Windows Filtering Platform. filter layer: Uma filter layer é um conjunto de funções chamadas pela Windows Filtering Platform para realizar operações de filtragem. Uma filter layer consiste em um conjunto de funções filter layer e uma chave GUID que identifica exclusivamente a filter layer.

A fila de despacho dispara callbacks de forma imediata, não precisando aguardar a fila encher, assim atende à necessidade de tempo real. Quando o callback do usuário é lento, os pacotes bloqueados serão inseridos o máximo possível na próxima fila, com limite de fila de 256. Pacotes bloqueados adicionais são armazenados em cache pelo sistema, aproximadamente testado com capacidade de cache de 16500, a capacidade de cache do sistema pode variar com o desempenho e configuração da máquina. Ao processar pacotes no callback do usuário, existem duas entidades de pacote: Pacote no kernel, liberado após o callback processar a fila. Portanto, quando o callback é lento, uma execução de callback pode bloquear no máximo a capacidade de cache de 256 pacotes do sistema. Cópia no callback, liberada imediatamente após o processamento individual de cada pacote.

Em FwppNetEvent1Callback, o pacote é copiado e montado, sem operar no pacote original, sem impacto para o negócio.

A assinatura pode usar filtros de modelo para reduzir os pacotes a serem processados:

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

filterCondition

Um array de estruturas FWPM_FILTER_CONDITION0 que contém condições de filtro distintas (condições de filtro duplicadas geram erro). Todas as condições devem ser verdadeiras para que a ação seja executada. Ou seja, as condições são combinadas com operador E. Se nenhuma condição for especificada, a ação é sempre executada.

Não é possível usar o mesmo filtro Todas as relações entre filtros são “E”, todos devem ser satisfeitos A documentação da Microsoft indica suporte a oito filtros, na verdade há suporte a mais filtros.

FWPM_CONDITION_IP_PROTOCOL

O número do protocolo IP, conforme especificado na RFC 1700. FWPM_CONDITION_IP_LOCAL_ADDRESS

O endereço IP local. FWPM_CONDITION_IP_REMOTE_ADDRESS

O endereço IP remoto. FWPM_CONDITION_IP_LOCAL_PORT

O número da porta do protocolo de transporte local. Para ICMP, o tipo da mensagem. FWPM_CONDITION_IP_REMOTE_PORT

O número da porta do protocolo de transporte remoto. Para ICMP, o código da mensagem. FWPM_CONDITION_SCOPE_ID

O identificador de escopo IPv6 da interface. Reservado para uso interno. FWPM_CONDITION_ALE_APP_ID

O caminho completo do aplicativo. FWPM_CONDITION_ALE_USER_ID

A identificação do usuário local. A enumeração de assinaturas registradas no sistema descobriu duas assinaturas existentes, analisando seu sessionKey GUID não foi possível confirmar quem registrou, análise adicional revelou que cada assinatura implementa as seguintes funções:

Assinou todos os pacotes FWPM_NET_EVENT_TYPE_CLASSIFY_DROP, estatísticas de todos os pacotes descartados. Assinou todos os pacotes FWPM_NET_EVENT_TYPE_CLASSIFY_ALLOW, pode ser usado para estatísticas de tráfego Os dois filtros condition usados por essas assinaturas são FWPM_CONDITION_NET_EVENT_TYPE(206e9996-490e-40cf-b831-b38641eb6fcb), indicando que há mais filtros implementáveis além dos oito mencionados na documentação da Microsoft.

Mais pesquisas descobriram que a chamada de interface do modo usuário só pode capturar eventos de drop, eventos não-drop precisam ser obtidos no modo kernel, portanto a micro-segmentação não pode usar FWPM_CONDITION_NET_EVENT_TYPE para obter eventos.