Detection rules › Elastic

Firewall Policy Changed by a Suspicious Process

Time window
1m
Source
github.com/elastic/protections-artifacts

Identifies attempts to modify the Windows Firewall Policy in order to permit an unsigned executable that was recently introduced. Malicious software frequently employs such alterations during installation to ensure uninterrupted network connectivity.

MITRE ATT&CK coverage

TacticTechniques
Defense Impairment

Rule body

[rule]
description = """
Identifies attempts to modify the Windows Firewall Policy in order to permit an unsigned executable that was recently
introduced. Malicious software frequently employs such alterations during installation to ensure uninterrupted network
connectivity.
"""
id = "bf072c39-90bc-4b1b-9c78-1d8a9bd6f0e1"
license = "Elastic License v2"
name = "Firewall Policy Changed by a Suspicious Process"
os_list = ["windows"]
version = "1.0.7"

query = '''
sequence with maxspan=1m 
[process where event.action == "start" and 
(
 ((process.Ext.relative_file_creation_time <= 500 or process.Ext.relative_file_name_modify_time <= 500) and 
 (process.code_signature.trusted == false or process.code_signature.exists == false) and 
  not process.code_signature.status : ("errorExpired", "errorCode_endpoint*") and
  (process.executable : ("?:\\Users\\*", "?:\\ProgramData\\*", "?:\\Windows\\Temp\\*") or
   process.executable regex~ """c:\\windows\\[a-z0-9\-\_\.]+\.exe""")) or 

   process.executable : "?:\\Windows\\Microsoft.NET\\*" or 

   (process.code_signature.subject_name : "NetSupport Ltd" and process.Ext.relative_file_creation_time <= 500 and 
    not process.executable : ("?:\\Program Files\\NetSupport*.exe", "?:\\Program Files (x86)\\NetSupport*.exe"))
 ) and
 not process.hash.sha256 in ("0f418b6eda02552ef104a836a8ba812ddcfae11506dc96cae71b719046cd749c",
                             "4cdb4fd1bb7a23c802abb6b5c0a973679495154b17a2234ea19e11fd0c8a2b0a",
                             "7d766d78c07024537114c7ddaec864810cac822719caf13ff738b52c2b663c75",
                             "e3fb22644ccfe21f511848e516c172802b9b6513625af1e5877e9dd88e8fe477") and
 not (process.executable : "?:\\ProgramData\\checkmk\\agent\\bin\\cmk-agent-ctl.exe" and
      process.parent.executable : ("?:\\Program Files\\checkmk\\service\\check_mk_agent.exe",
                                   "?:\\Program Files (x86)\\checkmk\\service\\check_mk_agent.exe")) and
not (process.code_signature.subject_name : "Incredibuild Software ltd." and process.code_signature.trusted == true)
] as event0 
[registry where 
  registry.path : "HKLM\\SYSTEM\\ControlSet*\\Services\\SharedAccess\\Parameters\\FirewallPolicy\\FirewallRules\\*" and 
  registry.data.strings : "*Allow*Public|*" and stringcontains~(registry.data.strings, event0.process.executable)]
'''

min_endpoint_version = "8.4.0"
[[actions]]
action = "kill_process"
field = "process.entity_id"
state = 0

[[optional_actions]]
action = "rollback"
field = "process.entity_id"
state = 0

[[threat]]
framework = "MITRE ATT&CK"
[[threat.technique]]
id = "T1562"
name = "Impair Defenses"
reference = "https://attack.mitre.org/techniques/T1562/"
[[threat.technique.subtechnique]]
id = "T1562.001"
name = "Disable or Modify Tools"
reference = "https://attack.mitre.org/techniques/T1562/001/"



[threat.tactic]
id = "TA0005"
name = "Defense Evasion"
reference = "https://attack.mitre.org/tactics/TA0005/"

[internal]
min_endpoint_version = "8.4.0"

Stages and Predicates

Stage 1: process

[process where event.action == "start" and 
(
 ((process.Ext.relative_file_creation_time <= 500 or process.Ext.relative_file_name_modify_time <= 500) and 
 (process.code_signature.trusted == false or process.code_signature.exists == false) and 
  not process.code_signature.status : ("errorExpired", "errorCode_endpoint*") and
  (process.executable : ("?:\\Users\\*", "?:\\ProgramData\\*", "?:\\Windows\\Temp\\*") or
   process.executable regex~ """c:\\windows\\[a-z0-9\-\_\.]+\.exe""")) or 

   process.executable : "?:\\Windows\\Microsoft.NET\\*" or 

   (process.code_signature.subject_name : "NetSupport Ltd" and process.Ext.relative_file_creation_time <= 500 and 
    not process.executable : ("?:\\Program Files\\NetSupport*.exe", "?:\\Program Files (x86)\\NetSupport*.exe"))
 ) and
 not process.hash.sha256 in ("0f418b6eda02552ef104a836a8ba812ddcfae11506dc96cae71b719046cd749c",
                             "4cdb4fd1bb7a23c802abb6b5c0a973679495154b17a2234ea19e11fd0c8a2b0a",
                             "7d766d78c07024537114c7ddaec864810cac822719caf13ff738b52c2b663c75",
                             "e3fb22644ccfe21f511848e516c172802b9b6513625af1e5877e9dd88e8fe477") and
 not (process.executable : "?:\\ProgramData\\checkmk\\agent\\bin\\cmk-agent-ctl.exe" and
      process.parent.executable : ("?:\\Program Files\\checkmk\\service\\check_mk_agent.exe",
                                   "?:\\Program Files (x86)\\checkmk\\service\\check_mk_agent.exe")) and
not (process.code_signature.subject_name : "Incredibuild Software ltd." and process.code_signature.trusted == true)
] as event0

Stage 2: registry

[registry where 
  registry.path : "HKLM\\SYSTEM\\ControlSet*\\Services\\SharedAccess\\Parameters\\FirewallPolicy\\FirewallRules\\*" and 
  registry.data.strings : "*Allow*Public|*" and stringcontains~(registry.data.strings, event0.process.executable)]

Exclusions

The rule actively suppresses these predicates.

FieldKindExcluded valuesSearch
process.code_signature.subject_nameeqIncredibuild Software ltd.excludes:process.code_signature.subject_name field:"process.code_signature.subject_name" value:"Incredibuild Software ltd."
process.code_signature.trustedeqtrueexcludes:process.code_signature.trusted field:"process.code_signature.trusted" value:"true"
process.executableeq?:\ProgramData\checkmk\agent\bin\cmk-agent-ctl.exeexcludes:process.executable field:"process.executable" value:"?:\ProgramData\checkmk\agent\bin\cmk-agent-ctl.exe"
process.parent.executableeq?:\Program Files\checkmk\service\check_mk_agent.exe, ?:\Program Files (x86)\checkmk\service\check_mk_agent.exeexcludes:process.parent.executable field:"process.parent.executable" value:"?:\Program Files\checkmk\service\check_mk_agent.exe" field:"process.parent.executable" value:"?:\Program Files (x86)\checkmk\service\check_mk_agent.exe"
process.hash.sha256in0f418b6eda02552ef104a836a8ba812ddcfae11506dc96cae71b719046cd749c, 4cdb4fd1bb7a23c802abb6b5c0a973679495154b17a2234ea19e11fd0c8a2b0a, 7d766d78c07024537114c7ddaec864810cac822719caf13ff738b52c2b663c75, e3fb22644ccfe21f511848e516c172802b9b6513625af1e5877e9dd88e8fe477excludes:process.hash.sha256

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
event.actioneq
  • start corpus 391 (elastic 391)
field:"EventType" kind:eq value:"start"
process.Ext.relative_file_creation_timele
  • 500 transforms: number corpus 28 (elastic 28)
field:"process.Ext.relative_file_creation_time" kind:le value:"500"
process.Ext.relative_file_name_modify_timele
  • 500 transforms: number corpus 21 (elastic 21)
field:"process.Ext.relative_file_name_modify_time" kind:le value:"500"
process.code_signature.existseq
  • false transforms: boolean corpus 119 (elastic 119)
field:"process.code_signature.exists" kind:eq value:"false"
process.code_signature.subject_namewildcard
  • NetSupport Ltd corpus 3 (elastic 3)
field:"Signature" kind:wildcard value:"NetSupport Ltd"
process.code_signature.trustedeq
  • false transforms: boolean corpus 115 (elastic 115)
field:"process.code_signature.trusted" kind:eq value:"false"
process.executableregex_match
  • c:\windows\[a-z0-9\-\_.]+.exe corpus 3 (elastic 3)
field:"Image" kind:regex_match value:"c:\windows\[a-z0-9\-\_.]+.exe"
process.executablewildcard
  • ?:\ProgramData\* corpus 17 (elastic 17)
  • ?:\Users\* corpus 18 (elastic 18)
  • ?:\Windows\Microsoft.NET\* corpus 5 (elastic 5)
  • ?:\Windows\Temp\* corpus 9 (elastic 9)
field:"Image" kind:wildcard
registry.data.stringscontains
  • event0.process.executable (field reference)
field:"Details" kind:contains value:"event0.process.executable"
registry.data.stringswildcard
  • *Allow*Public|*
field:"Details" kind:wildcard value:"*Allow*Public|*"
registry.pathwildcard
  • HKLM\SYSTEM\ControlSet*\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules\*
field:"TargetObject" kind:wildcard value:"HKLM\SYSTEM\ControlSet*\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules\*"