Detection rules › Elastic
LSASS Memory dump via MiniDumpWriteDump
Identifies attempt to access the Local Security Authority Subsystem Service (LSASS) to dump its memory using the Windows API MiniDumpWritedump. Adversaries may attempt to access credential material stored in the process memory of LSASS.
MITRE ATT&CK coverage
| Tactic | Techniques |
|---|---|
| Credential Access |
Rule body
[rule]
description = """
Identifies attempt to access the Local Security Authority Subsystem Service (LSASS) to dump its memory using the Windows
API MiniDumpWritedump. Adversaries may attempt to access credential material stored in the process memory of LSASS.
"""
id = "bdf280ea-d4d7-4f8f-90fc-0f44edad6b87"
license = "Elastic License v2"
name = "LSASS Memory dump via MiniDumpWriteDump"
os_list = ["windows"]
version = "1.0.16"
query = '''
credential_access where
Target.process.name : "lsass.exe" and
_arraysearch(process.thread.Ext.call_stack, $entry, $entry.module_path : ("*dbgcore.dll*", "*comsvcs.dll*")) and
not (process.Ext.api.name : "OpenThread" and user.id == "S-1-5-18" and
process.executable : "?:\\Windows\\System32\\WerFault.exe" and process.thread.Ext.call_stack_contains_unbacked == false) and
not (process.executable : ("C:\\Windows\\System32\\WerFaultSecure.exe", "C:\\Windows\\System32\\WerFault.exe") and
process.Ext.api.parameters.desired_access_numeric == 2097151 and process.thread.Ext.call_stack_contains_unbacked == false)
'''
min_endpoint_version = "8.7.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 = "T1003"
name = "OS Credential Dumping"
reference = "https://attack.mitre.org/techniques/T1003/"
[[threat.technique.subtechnique]]
id = "T1003.001"
name = "LSASS Memory"
reference = "https://attack.mitre.org/techniques/T1003/001/"
[threat.tactic]
id = "TA0006"
name = "Credential Access"
reference = "https://attack.mitre.org/tactics/TA0006/"
[internal]
min_endpoint_version = "8.7.0"
Stages and Predicates
Stage 1: credential_access
credential_access where
Target.process.name : "lsass.exe" and
_arraysearch(process.thread.Ext.call_stack, $entry, $entry.module_path : ("*dbgcore.dll*", "*comsvcs.dll*")) and
not (process.Ext.api.name : "OpenThread" and user.id == "S-1-5-18" and
process.executable : "?:\\Windows\\System32\\WerFault.exe" and process.thread.Ext.call_stack_contains_unbacked == false) and
not (process.executable : ("C:\\Windows\\System32\\WerFaultSecure.exe", "C:\\Windows\\System32\\WerFault.exe") and
process.Ext.api.parameters.desired_access_numeric == 2097151 and process.thread.Ext.call_stack_contains_unbacked == false)
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
process.Ext.api.name | eq | OpenThread | excludes:process.Ext.api.name field:"process.Ext.api.name" value:"OpenThread" |
process.executable | eq | ?:\Windows\System32\WerFault.exe | excludes:process.executable field:"process.executable" value:"?:\Windows\System32\WerFault.exe" |
process.thread.Ext.call_stack_contains_unbacked | eq | false | excludes:process.thread.Ext.call_stack_contains_unbacked field:"process.thread.Ext.call_stack_contains_unbacked" value:"false" |
user.id | eq | S-1-5-18 | excludes:user.id field:"user.id" value:"S-1-5-18" |
process.Ext.api.parameters.desired_access_numeric | eq | 2097151 | excludes:process.Ext.api.parameters.desired_access_numeric field:"process.Ext.api.parameters.desired_access_numeric" value:"2097151" |
process.executable | eq | C:\Windows\System32\WerFaultSecure.exe, C:\Windows\System32\WerFault.exe | excludes:process.executable field:"process.executable" value:"C:\Windows\System32\WerFaultSecure.exe" field:"process.executable" value:"C:\Windows\System32\WerFault.exe" |
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
Target.process.name | wildcard |
| field:"Target.process.name" kind:wildcard value:"lsass.exe" |