Detection rules › Elastic

Potential AutoConfigURL Settings Hijack

Source
github.com/elastic/protections-artifacts

Identifies registry modification to modify the system internet proxy settings by an unusual process. This may indicate an attempt to hijack user internet traffic to certain websites.

MITRE ATT&CK coverage

TacticTechniques
Persistence
Defense Impairment

Rule body

[rule]
description = """
Identifies registry modification to modify the system internet proxy settings by an unusual process. This may indicate
an attempt to hijack user internet traffic to certain websites.
"""
id = "6dd16a01-b779-4a39-b436-deed75f2c355"
license = "Elastic License v2"
name = "Potential AutoConfigURL Settings Hijack"
os_list = ["windows"]
version = "1.0.9"

query = '''
registry where
 registry.path : "HKEY_USERS\\*\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\AutoConfigURL" and
 registry.data.strings : "*http*" and not registry.data.strings : "*127.0.0.1*" and process.executable != null and
 (
  process.code_signature.trusted == false or
  process.code_signature.exists == false or
  process.name : ("powershell.exe", "wscript.exe", "cscript.exe")
  ) and
  not process.executable : ("?:\\Program Files\\*", "?:\\Program Files (x86)\\*", "C:\\LexisNexis\\Shared\\RwEasyMAPI64.exe")
'''

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 = "T1112"
name = "Modify Registry"
reference = "https://attack.mitre.org/techniques/T1112/"


[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: registry

registry where
 registry.path : "HKEY_USERS\\*\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\AutoConfigURL" and
 registry.data.strings : "*http*" and not registry.data.strings : "*127.0.0.1*" and process.executable != null and
 (
  process.code_signature.trusted == false or
  process.code_signature.exists == false or
  process.name : ("powershell.exe", "wscript.exe", "cscript.exe")
  ) and
  not process.executable : ("?:\\Program Files\\*", "?:\\Program Files (x86)\\*", "C:\\LexisNexis\\Shared\\RwEasyMAPI64.exe")

Exclusions

The rule actively suppresses these predicates.

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
process.code_signature.existseq
  • false transforms: boolean corpus 119 (elastic 119)
field:"process.code_signature.exists" kind:eq value:"false"
process.code_signature.trustedeq
  • false transforms: boolean corpus 115 (elastic 115)
field:"process.code_signature.trusted" kind:eq value:"false"
process.executableis_not_null
  • (no value, null check)
field:"Image" kind:is_not_null
process.namewildcard
  • cscript.exe corpus 67 (elastic 65, splunk 2)
  • powershell.exe corpus 184 (elastic 140, splunk 44)
  • wscript.exe corpus 83 (elastic 82, splunk 1)
field:"process_name" kind:wildcard
registry.data.stringswildcard
  • *http* corpus 3 (sigma 2, elastic 1)
field:"Details" kind:wildcard value:"*http*"
registry.pathwildcard
  • HKEY_USERS\*\Software\Microsoft\Windows\CurrentVersion\Internet Settings\AutoConfigURL
field:"TargetObject" kind:wildcard value:"HKEY_USERS\*\Software\Microsoft\Windows\CurrentVersion\Internet Settings\AutoConfigURL"