Inzicht in Windows-netwerk_WFP

  • Inzicht in Windows-netwerk_WFP

Inzicht in Windows-netwerk

  • Inzicht in Windows-netwerk

WFP

Termverklaring

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: Een callout biedt functionaliteit die de mogelijkheden van het Windows Filtering Platform uitbreidt. Een callout bestaat uit een set callout-functies en een GUID-sleutel die de callout uniek identificeert. callout driver: Een callout-driver is een driver die callouts registreert bij het Windows Filtering Platform. Een callout-driver is een type filterdriver. callout function: Een callout-functie is een functie die wordt aangeroepen door het Windows Filtering Platform om een specifieke taak uit te voeren. Een callout-functie is geassocieerd met een callout. filter: Een filter is een set functies die worden aangeroepen door het Windows Filtering Platform om filteroperaties uit te voeren. Een filter bestaat uit een set filterfuncties en een GUID-sleutel die het filter uniek identificeert. filter engine: De filterengine is het onderdeel van het Windows Filtering Platform dat filteroperaties uitvoert. De filterengine is verantwoordelijk voor het aanroepen van de filterfuncties die zijn geregistreerd bij het Windows Filtering Platform. filter layer: Een filterlaag is een set functies die worden aangeroepen door het Windows Filtering Platform om filteroperaties uit te voeren. Een filterlaag bestaat uit een set filterlaagfuncties en een GUID-sleutel die de filterlaag uniek identificeert.

De dispatcher-queue activeert callbacks in een zo snel mogelijke vorm, zonder te hoeven wachten tot de queue vol is, waardoor real-time-eisen kunnen worden voldaan. Wanneer de gebruikerscallback traag is, worden geblokkeerde pakketten zo veel mogelijk in de volgende queue geplaatst. De queue heeft een limiet van 256. Meer geblokkeerde pakketten worden in het systeem in de cache geplaatst. Een ruwe test toont een cache-capaciteit van 16500, die mogelijk varieert per machineprestaties en -configuratie. Tijdens het verwerken van pakketten in de gebruikerscallback zijn er twee exemplaren van het pakket:

  • Het kernel-pakket, dat wordt vrijgegeven nadat de callback de queue heeft verwerkt. Daarom kan een trage callback maximaal 256 pakketten in het systeem in beslag nemen.
  • De kopie in de callback, die direct wordt vrijgegeven na verwerking van het enkele pakket.

In FwppNetEvent1Callback worden pakketten gekopieerd en samengesteld zonder de originele pakketten te wijzigen, wat geen invloed heeft op de business-logica.

Abonnementen kunnen gebruikmaken van template-filters om het aantal te verwerken pakketten te verminderen:

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

filterCondition

Een array van FWPM_FILTER_CONDITION0-structuren die afzonderlijke filtervoorwaarden bevatten (dubbele filtervoorwaarden veroorzaken een fout). Alle voorwaarden moeten waar zijn voor de actie wordt uitgevoerd. Met andere woorden, de voorwaarden worden met AND gecombineerd. Als er geen voorwaarden zijn gespecificeerd, wordt de actie altijd uitgevoerd.

Er mag geen identieke filter worden gebruikt. Alle filters zijn met elkaar verbonden door een logische EN, wat betekent dat ze allemaal moeten worden voldaan. Volgens de Microsoft-documentatie worden er acht filters ondersteund, maar in werkelijkheid worden er meer filters ondersteund.

FWPM_CONDITION_IP_PROTOCOL

Het IP-protocollenummer, zoals gespecificeerd in RFC 1700. FWPM_CONDITION_IP_LOCAL_ADDRESS

Het lokale IP-adres. FWPM_CONDITION_IP_REMOTE_ADDRESS

Het externe IP-adres. FWPM_CONDITION_IP_LOCAL_PORT

Het lokale transportprotocol-poortnummer. Voor ICMP, het berichttype. FWPM_CONDITION_IP_REMOTE_PORT

Het externe transportprotocol-poortnummer. Voor ICMP, de berichtcode. FWPM_CONDITION_SCOPE_ID

De interface IPv6 scope identifier. Voor intern gebruik gereserveerd. FWPM_CONDITION_ALE_APP_ID

Het volledige pad van de applicatie. FWPM_CONDITION_ALE_USER_ID

De identificatie van de lokale gebruiker. Bij het inventariseren van de reeds geregistreerde abonnementen zijn er twee abonnementen gevonden. Na analyse van de GUID van hun sessionKey is niet duidelijk wie deze heeft geregistreerd. Verder onderzoek toont aan dat beide abonnementen de volgende functies implementeren:

  • Abonneert zich op alle FWPM_NET_EVENT_TYPE_CLASSIFY_DROP pakketten en statistieken bijhoudt van alle afgewezen pakketten.
  • Abonneert zich op alle FWPM_NET_EVENT_TYPE_CLASSIFY_ALLOW pakketten, wat kan worden gebruikt voor verkeersstatistieken.

Beide abonnementen gebruiken de conditie filter FWPM_CONDITION_NET_EVENT_TYPE (206e9996-490e-40cf-b831-b38641eb6fcb), wat aantoont dat er meer filters zijn die kunnen worden gefilterd dan de acht die in de Microsoft-documentatie worden genoemd.

Aanvullend onderzoek toont aan dat de gebruikersmodusinterface alleen pakketten kan vastleggen die worden gedropt. Niet-gedropte gebeurtenissen moeten worden verkregen via de kernelmodus, dus microsegmentatie kan FWPM_CONDITION_NET_EVENT_TYPE niet gebruiken om gebeurtenissen te verkrijgen.