Windows-blokkeer netwerkverkeer ophalen

  • Windows-blokkeer netwerkverkeer ophalen

Windows-blokkeer netwerkverkeer ophalen

  • Het is nodig om geblokkeerd verkeer te identificeren, inclusief uitgaande en inkomende richtingen.
  • Er zijn twee vormen van blokkering, gebaseerd op verbinding (connection) en gebaseerd op pakket (packet). Het weggooien van pakketten gebeurt vrij vaak en is gebruikelijk, dus is het belangrijk om de reden van het weggooien te onderzoeken. Blokkering op basis van verbinding is meer in lijn met de blokkeringsscenario’s die daadwerkelijk relevant zijn.
  • Veel normaal verwerkte berichten worden ook verwijderd, dus is het belangrijk om drop- en block-gedrag te onderscheiden. We richten ons voornamelijk op block-situaties.

Testproject opzetten

WFP werkt voornamelijk in usermode, met een ander deel in kernalmode, waar capaciteit wordt weergegeven in de vorm van een driver. De methode om een testomgeving op te zetten is vrij complex. De aanbevolen methode is om de testmachine te gebruiken als een andere fysieke machine, na compilatie op de ontwikkelmachine, en vervolgens op afstand te debuggen op de testmachine. Vanwege beperkingen kunnen we ook rechtstreeks lokaal debuggen.

Compileringsproblemen:

Andere problemen:

Blokgebeurtenis ophalen via audit

Standaard is audit voor WFP uitgeschakeld.

  • U kunt audit inschakelen per categorie met behulp van de Group Policy Object Editor MMC-beheerconsole, de lokale beveiligingsbeleid MMC-beheerconsole of de auditpol.exe-opdracht.
  • U kunt audit inschakelen per subcategorie met behulp van de auditpol.exe-opdracht.
  • Gebruik GUID voor instellingen, anders zijn er lokale problemen in verschillende taalsystemen.
  • Audit gebruikt circulaire logboeken van 128KB, geen zorgen over resourceverbruik.

Categorieën https://docs.microsoft.com/en-us/windows/win32/secauthz/auditing-constants

Category/Subcategory GUID
Object Access {6997984A-797A-11D9-BED3-505054503030}
Policy Change {6997984D-797A-11D9-BED3-505054503030}

Object Access subcategorieën en bijbehorende GUID https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-gpac/77878370-0712-47cd-997d-b07053429f6d

Object Access Subcategory Subcategory GUID Inclusion Setting
Filtering Platform Packet Drop {0CCE9225-69AE-11D9-BED3-505054503030} No Auditing
Filtering Platform Connection {0CCE9226-69AE-11D9-BED3-505054503030} No Auditing
Other Object Access Events {0CCE9227-69AE-11D9-BED3-505054503030} No Auditing

Policy Change subcategorieën en bijbehorende GUID:

Policy Change Subcategory Subcategory GUID
Audit Policy Change {0CCE922F-69AE-11D9-BED3-505054503030}
Authentication Policy Change {0CCE9230-69AE-11D9-BED3-505054503030}
Authorization Policy Change {0CCE9231-69AE-11D9-BED3-505054503030}
MPSSVC Rule-Level Policy Change {0CCE9232-69AE-11D9-BED3-505054503030}
Filtering Platform Policy Change {0CCE9233-69AE-11D9-BED3-505054503030}
Other Policy Change Events {0CCE9234-69AE-11D9-BED3-505054503030}
# Raadpleeg de auditpol-handleiding: https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/auditpol
# Dit gedeelte richt zich voornamelijk op de categorie 'Object Access'
# Haal de opvraagbare velden op
# -v toont GUID, -r toont CSV-rapport
auditpol /list /category /v
auditpol /list /subcategory:* /v
# Haal de auditinstellingen van een bepaalde subcategorie op
auditpol /get /category:'Object Access' /r | ConvertFrom-Csv| Get-Member
# Zoek GUID
auditpol /get /category:'Object Access' /r | ConvertFrom-Csv| Format-Table Subcategory,'Subcategory GUID','Inclusion Setting'
# Zoek subcategorie
auditpol /list /subcategory:"Object Access","Policy Change" -v
# Back-up
auditpol /backup /file:d:\audit.bak
# Herstel
auditpol /restore /file:d:\audit.bak
# Beleid wijzigen
# **Policy Change**    | {6997984D-797A-11D9-BED3-505054503030}
auditpol /set /category:"{6997984D-797A-11D9-BED3-505054503030}" /success:disable /failure:disable
# Filtering Platform Policy Change | {0CCE9233-69AE-11D9-BED3-505054503030}
auditpol /set /subcategory:"{0CCE9233-69AE-11D9-BED3-505054503030}" /success:enable /failure:enable

# **Object Access**    | {6997984A-797A-11D9-BED3-505054503030}
auditpol /get /category:"{6997984A-797A-11D9-BED3-505054503030}"
auditpol /set /category:"{6997984A-797A-11D9-BED3-505054503030}" /success:disable /failure:disable
# Filtering Platform Packet Drop | {0CCE9225-69AE-11D9-BED3-505054503030}
auditpol /set /subcategory:"{0CCE9225-69AE-11D9-BED3-505054503030}" /success:disable /failure:enable
# Filtering Platform Connection  | {0CCE9226-69AE-11D9-BED3-505054503030}
auditpol /set /subcategory:"{0CCE9226-69AE-11D9-BED3-505054503030}" /success:disable /failure:enable
# Logboeken lezen
$Events = Get-WinEvent -LogName 'Security'
foreach ($event in $Events) {
    ForEach ($line in $($event.Message -split "`r`n")) {
        Write-host $event.RecordId ':' $Line
        break
    }
}

Eventuele uitleg:

Event ID Explanation
5031(F) De Windows Firewall Service blokkeerde een applicatie van het accepteren van inkomende verbindingen op het netwerk.
5150(-) Het Windows Filtering Platform blokkeerde een pakket.
5151(-) Een meer restrictief Windows Filtering Platform-filter heeft een pakket geblokkeerd.
5152(F) Het Windows Filtering Platform heeft een pakket geblokkeerd.
5153(S) Een meer restrictief Windows Filtering Platform-filter heeft een pakket geblokkeerd.
5154(S) Het Windows Filtering Platform heeft een applicatie of service toegestaan om te luisteren op een poort voor inkomende verbindingen.
5155(F) Het Windows Filtering Platform heeft geblokkeerd dat een applicatie of service luistert op een poort voor inkomende verbindingen.
5156(S) Het Windows Filtering Platform heeft een verbinding toegestaan.
5157(F) Het Windows Filtering Platform heeft een verbinding geblokkeerd.
5158(S) Het Windows Filtering Platform heeft een binding toegestaan op een lokaal poort.
5159(F) Het Windows Filtering Platform heeft een binding geblokkeerd op een lokaal poort.

Gedetailleerde uitleg van de gebeurtenissen van belang:

  • Audit Filtering Platform Packet Drop
    • Dit type gebeurtenis produceert zeer grote hoeveelheden, het wordt aanbevolen om zich te richten op 5157-gebeurtenissen, die bijna dezelfde informatie vastleggen, maar op basis van verbindingen in plaats van op basis van pakketten.

    • Het aantal mislukkingen is meestal erg hoog voor deze subcategorie en wordt meestal gebruikt voor probleemoplossing. Als u geblokkeerde verbindingen moet volgen, is het beter om “5157(F): The Windows Filtering Platform heeft een verbinding geblokkeerd” te gebruiken, omdat het bijna dezelfde informatie bevat en per verbinding, niet per pakket genereert. Aanbevolen 5157

    • 5152

    • 5153

  • Audit Filtering Platform Connection
    • Richt zich alleen op mislukkingen, zoals geblokkeerde verbindingen, en volg toegestane verbindingen op verzoek.
    • 5031
      • Als u geen firewallregels (Allow of Deny) hebt in Windows Firewall voor specifieke toepassingen, krijgt u deze gebeurtenis van de Windows Filtering Platform laag, omdat deze laag standaard elke inkomende verbinding weigert.
    • 5150
    • 5151
    • 5155
    • 5157
    • 5159

Providerinformatie ophalen

# Haal providerinformatie met betrekking tot security op
Get-WinEvent -ListProvider "*Security*"  | Select-Object providername,id
# Microsoft-Windows-Security-Auditing                             54849625-5478-4994-a5ba-3e3b0328c30d
# Haal taakinformatie op die wordt geleverd door de provider
Get-WinEvent -ListProvider "Microsoft-Windows-Security-Auditing"  | Select-Object -ExpandProperty tasks
# SE_ADT_OBJECTACCESS_FIREWALLCONNECTION       12810 Filtering Platform Connection          00000000-0000-0000-0000-000000000000
ProviderName Id
Security Account Manager 00000000-0000-0000-0000-000000000000
Security 00000000-0000-0000-0000-000000000000
SecurityCenter 00000000-0000-0000-0000-000000000000
Microsoft-Windows-Security-SPP-UX-GenuineCenter-Logging fb829150-cd7d-44c3-af5b-711a3c31cedc
Microsoft-Windows-Security-Mitigations fae10392-f0af-4ac0-b8ff-9f4d920c3cdf
Microsoft-Windows-VerifyHardwareSecurity f3f53c76-b06d-4f15-b412-61164a0d2b73
Microsoft-Windows-SecurityMitigationsBroker ea8cd8a5-78ff-4418-b292-aadc6a7181df
Microsoft-Windows-Security-Adminless ea216962-877b-5b73-f7c5-8aef5375959e
Microsoft-Windows-Security-Vault e6c92fb8-89d7-4d1f-be46-d56e59804783
Microsoft-Windows-Security-Netlogon e5ba83f6-07d0-46b1-8bc7-7e669a1d31dc
Microsoft-Windows-Security-SPP e23b33b0-c8c9-472c-a5f9-f2bdfea0f156
Microsoft-Windows-Windows Firewall With Advanced Security d1bc9aff-2abf-4d71-9146-ecb2a986eb85
Microsoft-Windows-Security-SPP-UX-Notifications c4efc9bb-2570-4821-8923-1bad317d2d4b
Microsoft-Windows-Security-SPP-UX-GC bbbdd6a3-f35e-449b-a471-4d830c8eda1f
Microsoft-Windows-Security-Kerberos 98e6cfcb-ee0a-41e0-a57b-622d4e1b30b1
Microsoft-Windows-Security-ExchangeActiveSyncProvisioning 9249d0d0-f034-402f-a29b-92fa8853d9f3
Microsoft-Windows-NetworkSecurity 7b702970-90bc-4584-8b20-c0799086ee5a
Microsoft-Windows-Security-SPP-UX 6bdadc96-673e-468c-9f5b-f382f95b2832
Microsoft-Windows-Security-Auditing 54849625-5478-4994-a5ba-3e3b0328c30d
Microsoft-Windows-Security-LessPrivilegedAppContainer 45eec9e5-4a1b-5446-7ad8-a4ab1313c437
Microsoft-Windows-Security-UserConsentVerifier 40783728-8921-45d0-b231-919037b4b4fd
Microsoft-Windows-Security-IdentityListener 3c6c422b-019b-4f48-b67b-f79a3fa8b4ed
Microsoft-Windows-Security-EnterpriseData-FileRevocationManager 2cd58181-0bb6-463e-828a-056ff837f966
Microsoft-Windows-Security-Audit-Configuration-Client 08466062-aed4-4834-8b04-cddb414504e5
Microsoft-Windows-Security-IdentityStore 00b7e1df-b469-4c69-9c41-53a6576e3dad

Blokkeergebeurtenis construeren

Let hierbij zeer op dat bij het construeren van een blokkeergebeurtenis, dit invloed kan hebben op de werking van andere software op de lokale machine! U kunt op tijd .\WFPSampler.exe -clean gebruiken om de filters te wissen.

Stappen:

  1. Schakel de audit-schakelaar in voor Filtering Platform Connection, auditpol /set /subcategory:"{0CCE9226-69AE-11D9-BED3-505054503030}" /success:enable /failure:enable

  2. Open Event Viewer, maak een Custom View, maak een filter aan. We richten ons voorlopig alleen op de gebeurtenissen 5155, 5157, 5159. filter voorbeeld

  3. Creëer een filter, gebruik WFPSampler.exe om een filter te maken dat luistert naar lokale poort 80, .\WFPSampler.exe -s BASIC_ACTION_BLOCK -l FWPM_LAYER_ALE_AUTH_LISTEN_V4 -iplp 80

  4. Gebruik een derde partij (niet IIS) http-server, hier gebruiken we nginx, dat standaard luistert op poort 80, dubbelklik om te starten, dit activeert gebeurtenis 5155 Voorbeeld van geactiveerde auditgebeurtenis

  5. Filter herstellen, .\WFPSampler.exe -clean

  6. Audit-schakelaar herstellen, auditpol /set /category:"{0CCE9226-69AE-11D9-BED3-505054503030}" /success:disable /failure:disable

# 5155 blocked an application or service from listening on a port for incoming connections
.\WFPSampler.exe -s BASIC_ACTION_BLOCK -l FWPM_LAYER_ALE_AUTH_LISTEN_V4
# 5157 blocked a connection
.\WFPSampler.exe -s BASIC_ACTION_BLOCK -l FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V4
.\WFPSampler.exe -s BASIC_ACTION_BLOCK -l FWPM_LAYER_ALE_AUTH_CONNECT_V4
# 5159, blocked a bind to a local port
.\WFPSampler.exe -s BASIC_ACTION_BLOCK -l FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_V4

# Other
.\WFPSampler.exe -s BASIC_ACTION_BLOCK -l FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_V4_DISCARD
.\WFPSampler.exe -s BASIC_ACTION_BLOCK -l FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V4_DISCARD
.\WFPSampler.exe -s BASIC_ACTION_BLOCK -l FWPM_LAYER_ALE_AUTH_CONNECT_V4_DISCARD

# To find a specific Windows Filtering Platform filter by ID, run the following command:
netsh wfp show filters
# To find a specific Windows Filtering Platform layer ID, you need to execute the following command:
netsh wfp show state

Netwerkevenementen (NET_EVENT) monitoren

  • Netwerkevenementen ondersteunen enumeratie en abonnement.
  • De enumeratiemethode ondersteunt aangepaste filtercriteria en haalt netwerkevenementen binnen een bepaalde periode op.
  • De abonnementsmethode kan een callback-functie injecteren om realtime feedback te geven.

Ondersteunde gebeurtenistypes:

typedef enum FWPM_NET_EVENT_TYPE_ {
  FWPM_NET_EVENT_TYPE_IKEEXT_MM_FAILURE = 0,
  FWPM_NET_EVENT_TYPE_IKEEXT_QM_FAILURE,
  FWPM_NET_EVENT_TYPE_IKEEXT_EM_FAILURE,
  FWPM_NET_EVENT_TYPE_CLASSIFY_DROP,
  FWPM_NET_EVENT_TYPE_IPSEC_KERNEL_DROP,
  FWPM_NET_EVENT_TYPE_IPSEC_DOSP_DROP,
  FWPM_NET_EVENT_TYPE_CLASSIFY_ALLOW,
  FWPM_NET_EVENT_TYPE_CAPABILITY_DROP,
  FWPM_NET_EVENT_TYPE_CAPABILITY_ALLOW,
  FWPM_NET_EVENT_TYPE_CLASSIFY_DROP_MAC,
  FWPM_NET_EVENT_TYPE_LPM_PACKET_ARRIVAL,
  FWPM_NET_EVENT_TYPE_MAX
} FWPM_NET_EVENT_TYPE;

Ondersteunde filtercriteria (FWPM_NET_EVENT_ENUM_TEMPLATE):

Value Meaning
FWPM_CONDITION_IP_PROTOCOL Het IP-protocolnummer, 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-identificatie. Gereserveerd voor intern gebruik.
FWPM_CONDITION_ALE_APP_ID Het volledige pad van de applicatie.
FWPM_CONDITION_ALE_USER_ID De identificatie van de lokale gebruiker.

Niet-driver aanroepen kunnen alleen standaard drop-gebeurtenissen ophalen.

Netwerkconnectie (NetConnection) monitoren

In vergelijking met het monitoren van netwerkevenementen, is voor het monitoren van connecties een hogere machtiging vereist. Callback-methode

De oproeper heeft FWPM_ACTRL_ENUM toegang nodig tot de connectieobjectcontainers en FWPM_ACTRL_READ toegang tot de connectieobjecten. Zie Access Control voor meer informatie.

Momenteel niet in geslaagd om netwerkconnecties te monitoren.

Zoek hetzelfde probleem, Receiving in/out traffic stats using WFP user-mode API, hetzelfde fenomeen als ik tijdens mijn onderzoek tegenkwam, de abonnementsfunctie ontvangt geen meldingen, ontvangt geen enkel event, geen foutmeldingen. Iemand wees erop dat in niet-kernmodus alleen drop-gebeurtenissen kunnen worden ontvangen, wat niet voldoet aan de behoefte om blokkeergebeurtenissen te verkrijgen.

Voorbeeld van het toevoegen van een security descriptor: https://docs.microsoft.com/en-us/windows/win32/fwp/reserving-ports

Application Layer Enforcement (ALE) introductie

  • ALE bevat een reeks filters in kernelmodus die stateful filtering ondersteunen.
  • ALE-laagfilters kunnen de creatie van verbindingen, poorttoewijzing, socketbeheer, creatie van raw sockets en promiscuous mode ontvangst autoriseren.
  • De classificatie van ALE-laagfilters is gebaseerd op verbindingen (connection) of op sockets (socket), terwijl filters op andere lagen alleen op pakketten (packet) kunnen worden geclassificeerd.
  • ALE-filterreferenties ale-layers

Coderen

De meeste WFP-functies kunnen zowel in gebruikersmodus als in kernelmodus worden aangeroepen. Echter, functies in gebruikersmodus retourneren DWORD-waarden die Win32-foutcodes vertegenwoordigen, terwijl kernelmodusfuncties NTSTATUS-waarden retourneren die NT-statuscodes vertegenwoordigen. Daarom zijn de functienamen en semantiek hetzelfde tussen gebruikersmodus en kernelmodus, maar verschillen de functiehandtekeningen. Dit vereist afzonderlijke gebruikersmodus- en kernelmodus-specifieke headers. De bestandsnamen van de gebruikersmodus-header eindigen op “u” en de bestandsnamen van de kernelmodus-header eindigen op “k”.

Conclusie

De eis is alleen om te weten dat een gebeurtenis zich heeft voorgedaan, zonder dat deze direct moet worden verwerkt. Bovendien brengt het ontwikkelen van een driver grotere risico’s met zich mee. Daarom is besloten om gebruik te maken van gebeurtenisaudit, door logboekregistratiegebeurtenissen te monitoren om de blokkeergebeurtenissen te verkrijgen. Open een nieuwe thread om NotifyChangeEventLog te gebruiken om logboekregistratiegebeurtenissen te monitoren.

Appendix

WFP-architectuur

WFP (Windows Filter Platform) Basisarchitectuur van het Windows Filter Platform

Gegevensstroom

Data flow:

  1. Een pakket komt binnen in de netwerkstack.
  2. De netwerkstack vindt en roept een shim aan.
  3. De shim roept het classificatieproces aan op een bepaalde laag.
  4. Tijdens classificatie worden filters vergeleken en wordt de resulterende actie uitgevoerd. (Zie Filter Arbitration.)
  5. Als er calloutfilters worden gematcht tijdens het classificatieproces, worden de bijbehorende callouts aangeroepen.
  6. De shim reageert op de definitieve filterbeslissing (bijvoorbeeld het pakket weggooien).

Referentiekoppelingen