Detection rules › Splunk

Windows EDRSilencer Custom Outbound Filter Added

Status
production
Severity
medium
Group by
FilterName, dest, process_id, user
Author
Nasreddine Bencherchali, Splunk
Source
github.com/splunk/security_content

The following analytic detects the EDRSilencer-specific Windows Filtering Platform filter name "Custom Outbound Filter" when it is configured with a block action. EDRSilencer creates WFP filters to block outbound traffic from EDR and security agent processes, impairing endpoint telemetry without requiring the tool binary to keep its original process name. EventCode 5447 identifies creation of the runtime filter with ChangeType %%16384, while EventCode 5441 can show the same persistent filter when the Base Filtering Engine starts.

Known false positives

  • This filter name is associated with EDRSilencer behavior. Validate whether any approved administrative tooling creates WFP block filters with the same name before tuning.

MITRE ATT&CK coverage

TacticTechniques
Defense Impairment

Telemetry coverage

Rule body

name: Windows EDRSilencer Custom Outbound Filter Added
id: 67fea630-445d-4c70-a7d0-584fddb93b86
version: 1
creation_date: '2026-08-23'
modification_date: '2026-08-23'
author: Nasreddine Bencherchali, Splunk
status: production
type: TTP
description: |-
    The following analytic detects the EDRSilencer-specific Windows Filtering Platform filter name "Custom Outbound Filter" when it is configured with a block action.
    EDRSilencer creates WFP filters to block outbound traffic from EDR and security agent processes, impairing endpoint telemetry without requiring the tool binary to keep its original process name.
    EventCode 5447 identifies creation of the runtime filter with ChangeType %%16384, while EventCode 5441 can show the same persistent filter when the Base Filtering Engine starts.
data_source:
    - Windows Event Log Security 5441
    - Windows Event Log Security 5447
search: |-
    `wineventlog_security`
    (
        (
            (
                EventCode=5447
                ChangeType IN ("%%16384", "Add")
            )
            OR
            EventCode=5441
        )
        Action IN ("%%16389", "Block")
        FilterName="Custom Outbound Filter"
    )
    
    | eval user=coalesce(UserName,user,"unknown")
    | eval filter_action=case(Action="%%16389","Block", true(), Action),
           change_type=case(ChangeType="%%16384","Add", true(), ChangeType)
    
    | stats count min(_time) as firstTime
                  max(_time) as lastTime
                  values(filter_action) as filter_action
                  values(change_type) as change_type
                  values(ProviderName) as provider_name
                  values(FilterType) as filter_type
                  values(FilterId) as filter_id
                  values(FilterKey) as filter_key
                  values(LayerName) as layer_name
                  values(LayerId) as layer_id
                  values(Conditions) as conditions
                  values(CalloutName) as callout_name
      BY dest user process_id FilterName
    | `security_content_ctime(firstTime)`
    | `security_content_ctime(lastTime)`
    | `windows_edrsilencer_custom_outbound_filter_added_filter`
how_to_implement: |-
    To implement this analytic, enable auditing for Windows Filtering Platform policy changes and ingest Windows Security Event Log data with EventCode 5447 and EventCode 5441.
    The Splunk Add-on for Microsoft Windows should extract fields such as EventCode, ChangeType, FilterName, Conditions, and Action from XmlWinEventLog:Security events.
known_false_positives: |-
    This filter name is associated with EDRSilencer behavior.
    Validate whether any approved administrative tooling creates WFP block filters with the same name before tuning.
references:
    - https://github.com/netero1010/EDRSilencer
    - https://github.com/mthcht/awesome-lists/blob/main/Lists/Others/windows%20message%20tables/windows_messagetable_strings_list.csv
    - https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/event-5447
    - https://learn.microsoft.com/en-us/windows/win32/fwp/auditing-and-logging
finding:
    title: EDRSilencer WFP block filter [$FilterName$] was detected on [$dest$].
    entity:
        field: dest
        type: system
        score: 50
threat_objects:
    - field: FilterName
      type: signature
analytic_story:
    - Disabling Security Tools
    - Security Solution Tampering
asset_type: Endpoint
mitre_attack_id:
    - T1685
product:
    - Splunk Enterprise
    - Splunk Enterprise Security
    - Splunk Cloud
category: endpoint
security_domain: endpoint

Stages and Predicates

Stage 1: search

`wineventlog_security`
(
    (
        (
            EventCode=5447
            ChangeType IN ("%%16384", "Add")
        )
        OR
        EventCode=5441
    )
    Action IN ("%%16389", "Block")
    FilterName="Custom Outbound Filter"
)

Stage 2: eval

| eval user=coalesce(UserName,user,"unknown")

Stage 3: eval

| eval filter_action=case(Action="%%16389","Block", true(), Action),
       change_type=case(ChangeType="%%16384","Add", true(), ChangeType)
change_type =
ifChangeType = "%%16384""Add"
elseChangeType
filter_action =
ifAction = "%%16389""Block"
elseAction

Stage 4: stats

| stats count min(_time) as firstTime
              max(_time) as lastTime
              values(filter_action) as filter_action
              values(change_type) as change_type
              values(ProviderName) as provider_name
              values(FilterType) as filter_type
              values(FilterId) as filter_id
              values(FilterKey) as filter_key
              values(LayerName) as layer_name
              values(LayerId) as layer_id
              values(Conditions) as conditions
              values(CalloutName) as callout_name
  BY dest user process_id FilterName

Stage 5: search

| `security_content_ctime(firstTime)`

Stage 6: search

| `security_content_ctime(lastTime)`

Stage 7: search

| `windows_edrsilencer_custom_outbound_filter_added_filter`

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
Actionin
  • "%%16389"
  • "Block"
field:"Action" kind:in
ChangeTypein
  • "%%16384"
  • "Add"
field:"ChangeType" kind:in
EventCodeeq
  • 5441
  • 5447 corpus 3 (splunk 3)
field:"EventID" kind:eq
FilterNameeq
  • "Custom Outbound Filter"
field:"FilterName" kind:eq