Potential Credential Access via Windows Utilities
Identifies the execution of known Windows utilities often abused to dump LSASS memory or the Active Directory database (NTDS.dit) in preparation for credential access.
Elastic rule (View on GitHub)
1[metadata]
2creation_date = "2020/11/24"
3integration = ["endpoint", "windows", "m365_defender", "sentinel_one_cloud_funnel", "system"]
4maturity = "production"
5updated_date = "2026/04/22"
6
7[rule]
8author = ["Elastic"]
9description = """
10Identifies the execution of known Windows utilities often abused to dump LSASS memory or the Active Directory database
11(NTDS.dit) in preparation for credential access.
12"""
13from = "now-9m"
14index = [
15 "endgame-*",
16 "logs-endpoint.events.process-*",
17 "logs-m365_defender.event-*",
18 "logs-sentinel_one_cloud_funnel.*",
19 "logs-system.security*",
20 "logs-windows.forwarded*",
21 "logs-windows.sysmon_operational-*",
22 "winlogbeat-*",
23]
24language = "eql"
25license = "Elastic License v2"
26name = "Potential Credential Access via Windows Utilities"
27references = [
28 "https://lolbas-project.github.io/",
29 "https://www.elastic.co/security-labs/elastic-protects-against-data-wiper-malware-targeting-ukraine-hermeticwiper",
30]
31risk_score = 73
32rule_id = "00140285-b827-4aee-aa09-8113f58a08f3"
33severity = "high"
34tags = [
35 "Domain: Endpoint",
36 "OS: Windows",
37 "Use Case: Threat Detection",
38 "Tactic: Credential Access",
39 "Tactic: Defense Evasion",
40 "Resources: Investigation Guide",
41 "Data Source: Elastic Endgame",
42 "Data Source: Elastic Defend",
43 "Data Source: Windows Security Event Logs",
44 "Data Source: Microsoft Defender XDR",
45 "Data Source: SentinelOne",
46 "Data Source: Sysmon",
47]
48timestamp_override = "event.ingested"
49type = "eql"
50
51query = '''
52process where host.os.type == "windows" and event.type == "start" and
53(
54 (
55 (?process.pe.original_file_name : "procdump" or process.name : "procdump.exe") and process.args : "-ma"
56 ) or
57 (
58 process.name : "ProcessDump.exe" and not process.parent.executable regex~ """C:\\Program Files( \(x86\))?\\Cisco Systems\\.*"""
59 ) or
60 (
61 (?process.pe.original_file_name : "WriteMiniDump.exe" or process.name : "WriteMiniDump.exe") and
62 not process.parent.executable regex~ """C:\\Program Files( \(x86\))?\\Steam\\.*"""
63 ) or
64 (
65 (?process.pe.original_file_name : "RUNDLL32.EXE" or process.name : "RUNDLL32.exe") and
66 (process.args : "*MiniDump*" or process.command_line : "*comsvcs*#*24*")
67 ) or
68 (
69 (?process.pe.original_file_name : "RdrLeakDiag.exe" or process.name : "RdrLeakDiag.exe") and
70 process.args : "/fullmemdmp"
71 ) or
72 (
73 (?process.pe.original_file_name : "SqlDumper.exe" or process.name : "SqlDumper.exe") and
74 process.args : "0x01100*") or
75 (
76 (?process.pe.original_file_name : "TTTracer.exe" or process.name : "TTTracer.exe") and
77 process.args : "-dumpFull" and process.args : "-attach") or
78 (
79 (?process.pe.original_file_name : "ntdsutil.exe" or process.name : "ntdsutil.exe") and
80 process.args : "cr*fu*") or
81 (
82 (?process.pe.original_file_name : "diskshadow.exe" or process.name : "diskshadow.exe") and process.args : "/s")
83)
84'''
85
86note = """## Triage and analysis
87
88### Investigating Potential Credential Access via Windows Utilities
89
90#### Possible investigation steps
91
92- Which utility path did the alert take, and is the binary identity credible?
93 - Focus: `process.name`, `process.pe.original_file_name`, `process.executable`, `process.command_line`, and `process.code_signature.subject_name`.
94 - Implication: escalate faster when the alert path is a dump-capable utility from a user-writable, renamed, missing expected signer, or unexpected location; lower suspicion only when the utility family, signer, installed path, and command pattern fit one recognized diagnostic, SQL troubleshooting, crash-triage, or AD maintenance workflow. Identity alone does not clear the behavior.
95
96- Do the arguments identify a credential-dump objective?
97 - Focus: `process.command_line`: credential target, dump mode, script path, and output location.
98 - Hint: high-risk examples include "procdump -ma lsass.exe", Rundll32/comsvcs MiniDump, ntdsutil IFM output, and "diskshadow.exe /s" scripts that expose, copy, exec, or delete shadow-copy paths.
99 - Implication: escalate when arguments target LSASS, invoke Rundll32/comsvcs dumping, create NTDS/IFM output, drive VSS script execution, or write to user-writable or share paths; lower suspicion when the target is clearly non-credential and the output path matches the same recognized troubleshooting or backup workflow.
100
101- Does the parent chain explain why this host would run a dump or snapshot utility?
102 - Focus: `process.parent.executable`, `process.parent.command_line`, `process.Ext.ancestry`, and `process.Ext.session_info.logon_type`, with `user.id` defining the actor scope.
103 - Implication: escalate when the chain starts from shells, script hosts, Office processes, unexpected services, scheduled tasks, or remote-interactive sessions; lower suspicion only when the same actor, session type, and parent workflow explain the utility launch and do not conflict with command intent.
104
105- If file telemetry is available, did the utility create dump, shadow-copy, or directory database artifacts?
106 - Focus: recover file events with `host.id` + `process.entity_id`; if `process.entity_id` is missing, use `host.id` + `process.pid` + a tight alert window, then review `file.path`, `file.Ext.original.path`, and `file.Ext.header_bytes` for dump files, copied directory-database material, IFM folders, registry hives, shadow-copy output, or archive staging. $investigate_2
107 - Implication: escalate when artifacts show LSASS dumps, AD database or credential-hive collection, shadow-copy access, or staged archives; close cannot rely on absent file events because missing file telemetry is unresolved, not benign.
108
109- Do child processes or connection events show collected material being staged or exported?
110 - Focus: child process starts, file activity, and network activity where `process.parent.entity_id` matches the alerting `process.entity_id` on `host.id`; if network telemetry is available, review `destination.ip`, `destination.port`, and `network.direction`. $investigate_3 $investigate_4
111 - Hint: if the utility spawns a short-lived archiver or copy tool, pivot from that child into same-host connection events before broadening.
112 - Implication: escalate when the utility or child process spawns archivers, copy tools, "diskshadow.exe" exec children, or transfers dump material off-host; missing network telemetry is unresolved, not benign.
113
114- If local findings remain suspicious or unresolved, do related alerts show broader credential-access activity?
115 - Focus: related alerts for `user.id` covering dumping, privilege escalation, lateral movement, archiving, or staging. $investigate_0
116 - Hint: if the actor view is sparse, pivot to related alerts for `host.id` covering precursor access, persistence, archiving, or exfiltration. $investigate_1
117 - Implication: broaden when either view shows a credential-access chain or reuse of the same utility pattern; do not close solely because related alerts are absent if command intent, artifacts, lineage, or post-dump cleanup remain suspicious.
118
119- Disposition: escalate when utility identity, command intent, lineage, artifacts, staging, or related scope indicate credential access; close only when identity, arguments, lineage, recovered artifacts, and supported scope all align with one recognized diagnostic, troubleshooting, crash-triage, backup, or IFM workflow; preserve artifacts and escalate when evidence is mixed or visibility is incomplete.
120
121### False positive analysis
122
123- Recognized crash-triage, SQL troubleshooting, AD backup, or IFM workflows can trigger this rule. Confirm the same workflow across identity (`process.executable`, `process.code_signature.subject_name`), lineage (`process.parent.executable`), intent (`process.command_line`), actor/scope (`user.id`, `host.id`), and recovered artifact paths when available. Case records may corroborate the workflow, but do not close on recurrence alone; use prior alerts only after current telemetry aligns.
124- Build exceptions only from the confirmed recurring workflow: `process.executable`, `process.code_signature.subject_name`, `process.parent.executable`, stable `process.command_line`, `user.id`, `host.id`, and recovered output path or dump-directory pattern when available. Avoid exceptions on `process.name`, `host.id`, utility family, or generic dump switches alone.
125
126### Response and remediation
127
128- If confirmed benign, record the recognized diagnostic, backup, or directory-services evidence in `process.executable`, `process.command_line`, `process.parent.executable`, `user.id`, `host.id`, and recovered output paths when available, then reverse any temporary containment. Create an exception only if that same pattern recurs consistently across prior alerts from this rule.
129- If suspicious but unconfirmed, preserve the recovered `process.entity_id` or `process.pid` with `host.id` and time, `process.command_line`, script-file, dump, shadow-copy, and copied-database paths, child-process lineage via `process.parent.entity_id` / `process.parent.pid`, and any confirmed destination pairs before making destructive changes. Apply reversible containment first, such as temporary destination blocking or increased monitoring on the affected `host.id` and `user.id`. Escalate to host isolation only if dump material, IFM output, or staging transfers are confirmed and the host can tolerate interruption.
130- If confirmed malicious, use endpoint response actions to isolate the host and terminate the dump or staging process after preserving `process.entity_id`, `process.parent.entity_id`, `process.command_line`, recovered output paths, any available `process.hash.sha256`, and confirmed destinations. If direct endpoint response is unavailable, hand off that artifact set immediately to the team that can isolate the system or block the destinations.
131- If LSASS dumping is confirmed, assume exposure for all accounts with active sessions on the affected host, including interactive, service, and cached credentials. Prioritize resets for privileged, service, and lateral-movement-relevant accounts and review whether the dump material was staged or transferred before containment.
132- If NTDS access or dump activity is confirmed on a domain controller, activate the organization's Active Directory compromise response plan, preserve the evidence needed to scope database and credential exposure, and begin privileged-account hygiene based on the systems and accounts implicated by the investigation before deleting copied database material.
133- Review related hosts and users for the same `process.command_line` patterns, dump-file naming patterns, `process.parent.executable`, and confirmed destinations before deleting dump files, IFM output, shadow copies, utilities, or persistence mechanisms uncovered during the investigation, then remediate the delivery or privilege path that allowed the utility to run.
134"""
135
136setup = """## Setup
137
138This rule is designed for data generated by [Elastic Defend](https://www.elastic.co/security/endpoint-security), which provides native endpoint detection and response, along with event enrichments designed to work with our detection rules.
139
140Setup instructions: https://ela.st/install-elastic-defend
141
142### Additional data sources
143
144This rule also supports the following third-party data sources. For setup instructions, refer to the links below:
145
146- [Microsoft Defender XDR](https://ela.st/m365-defender)
147- [SentinelOne Cloud Funnel](https://ela.st/sentinel-one-cloud-funnel)
148- [Sysmon Event ID 1 - Process Creation](https://ela.st/sysmon-event-1-setup)
149- [Windows Process Creation Logs](https://ela.st/audit-process-creation)
150"""
151
152[rule.investigation_fields]
153field_names = [
154 "@timestamp",
155 "host.id",
156 "user.name",
157 "user.id",
158 "process.entity_id",
159 "process.name",
160 "process.executable",
161 "process.command_line",
162 "process.pe.original_file_name",
163 "process.parent.entity_id",
164 "process.parent.executable",
165 "process.parent.command_line",
166 "process.code_signature.subject_name",
167 "process.code_signature.trusted",
168 "process.Ext.session_info.logon_type",
169]
170
171[[transform.investigate]]
172label = "Alerts associated with the user"
173description = ""
174providers = [
175 [
176 { excluded = false, field = "event.kind", queryType = "phrase", value = "signal", valueType = "string" },
177 { excluded = false, field = "user.id", queryType = "phrase", value = "{{user.id}}", valueType = "string" }
178 ]
179]
180relativeFrom = "now-48h/h"
181relativeTo = "now"
182
183[[transform.investigate]]
184label = "Alerts associated with the host"
185description = ""
186providers = [
187 [
188 { excluded = false, field = "event.kind", queryType = "phrase", value = "signal", valueType = "string" },
189 { excluded = false, field = "host.id", queryType = "phrase", value = "{{host.id}}", valueType = "string" }
190 ]
191]
192relativeFrom = "now-48h/h"
193relativeTo = "now"
194
195[[transform.investigate]]
196label = "File activity for the alerting process and children"
197description = ""
198providers = [
199 [
200 { excluded = false, field = "host.id", queryType = "phrase", value = "{{host.id}}", valueType = "string" },
201 { excluded = false, field = "process.entity_id", queryType = "phrase", value = "{{process.entity_id}}", valueType = "string" },
202 { excluded = false, field = "event.category", queryType = "phrase", value = "file", valueType = "string" }
203 ],
204 [
205 { excluded = false, field = "host.id", queryType = "phrase", value = "{{host.id}}", valueType = "string" },
206 { excluded = false, field = "process.parent.entity_id", queryType = "phrase", value = "{{process.entity_id}}", valueType = "string" },
207 { excluded = false, field = "event.category", queryType = "phrase", value = "file", valueType = "string" }
208 ]
209]
210relativeFrom = "now-1h"
211relativeTo = "now"
212
213[[transform.investigate]]
214label = "Child processes of the alerting process"
215description = ""
216providers = [
217 [
218 { excluded = false, field = "host.id", queryType = "phrase", value = "{{host.id}}", valueType = "string" },
219 { excluded = false, field = "process.parent.entity_id", queryType = "phrase", value = "{{process.entity_id}}", valueType = "string" },
220 { excluded = false, field = "event.category", queryType = "phrase", value = "process", valueType = "string" }
221 ]
222]
223relativeFrom = "now-1h"
224relativeTo = "now"
225
226[[transform.investigate]]
227label = "Network activity for the alerting process and children"
228description = ""
229providers = [
230 [
231 { excluded = false, field = "host.id", queryType = "phrase", value = "{{host.id}}", valueType = "string" },
232 { excluded = false, field = "process.entity_id", queryType = "phrase", value = "{{process.entity_id}}", valueType = "string" },
233 { excluded = false, field = "event.category", queryType = "phrase", value = "network", valueType = "string" }
234 ],
235 [
236 { excluded = false, field = "host.id", queryType = "phrase", value = "{{host.id}}", valueType = "string" },
237 { excluded = false, field = "process.parent.entity_id", queryType = "phrase", value = "{{process.entity_id}}", valueType = "string" },
238 { excluded = false, field = "event.category", queryType = "phrase", value = "network", valueType = "string" }
239 ]
240]
241relativeFrom = "now-1h"
242relativeTo = "now"
243
244[[rule.threat]]
245framework = "MITRE ATT&CK"
246[[rule.threat.technique]]
247id = "T1003"
248name = "OS Credential Dumping"
249reference = "https://attack.mitre.org/techniques/T1003/"
250[[rule.threat.technique.subtechnique]]
251id = "T1003.001"
252name = "LSASS Memory"
253reference = "https://attack.mitre.org/techniques/T1003/001/"
254
255[[rule.threat.technique.subtechnique]]
256id = "T1003.003"
257name = "NTDS"
258reference = "https://attack.mitre.org/techniques/T1003/003/"
259
260[rule.threat.tactic]
261id = "TA0006"
262name = "Credential Access"
263reference = "https://attack.mitre.org/tactics/TA0006/"
264[[rule.threat]]
265framework = "MITRE ATT&CK"
266[[rule.threat.technique]]
267id = "T1218"
268name = "System Binary Proxy Execution"
269reference = "https://attack.mitre.org/techniques/T1218/"
270[[rule.threat.technique.subtechnique]]
271id = "T1218.011"
272name = "Rundll32"
273reference = "https://attack.mitre.org/techniques/T1218/011/"
274
275[rule.threat.tactic]
276id = "TA0005"
277name = "Defense Evasion"
278reference = "https://attack.mitre.org/tactics/TA0005/"
Triage and analysis
Investigating Potential Credential Access via Windows Utilities
Possible investigation steps
-
Which utility path did the alert take, and is the binary identity credible?
- Focus:
process.name,process.pe.original_file_name,process.executable,process.command_line, andprocess.code_signature.subject_name. - Implication: escalate faster when the alert path is a dump-capable utility from a user-writable, renamed, missing expected signer, or unexpected location; lower suspicion only when the utility family, signer, installed path, and command pattern fit one recognized diagnostic, SQL troubleshooting, crash-triage, or AD maintenance workflow. Identity alone does not clear the behavior.
- Focus:
-
Do the arguments identify a credential-dump objective?
- Focus:
process.command_line: credential target, dump mode, script path, and output location. - Hint: high-risk examples include "procdump -ma lsass.exe", Rundll32/comsvcs MiniDump, ntdsutil IFM output, and "diskshadow.exe /s" scripts that expose, copy, exec, or delete shadow-copy paths.
- Implication: escalate when arguments target LSASS, invoke Rundll32/comsvcs dumping, create NTDS/IFM output, drive VSS script execution, or write to user-writable or share paths; lower suspicion when the target is clearly non-credential and the output path matches the same recognized troubleshooting or backup workflow.
- Focus:
-
Does the parent chain explain why this host would run a dump or snapshot utility?
- Focus:
process.parent.executable,process.parent.command_line,process.Ext.ancestry, andprocess.Ext.session_info.logon_type, withuser.iddefining the actor scope. - Implication: escalate when the chain starts from shells, script hosts, Office processes, unexpected services, scheduled tasks, or remote-interactive sessions; lower suspicion only when the same actor, session type, and parent workflow explain the utility launch and do not conflict with command intent.
- Focus:
-
If file telemetry is available, did the utility create dump, shadow-copy, or directory database artifacts?
- Focus: recover file events with
host.id+process.entity_id; ifprocess.entity_idis missing, usehost.id+process.pid+ a tight alert window, then reviewfile.path,file.Ext.original.path, andfile.Ext.header_bytesfor dump files, copied directory-database material, IFM folders, registry hives, shadow-copy output, or archive staging. $investigate_2 - Implication: escalate when artifacts show LSASS dumps, AD database or credential-hive collection, shadow-copy access, or staged archives; close cannot rely on absent file events because missing file telemetry is unresolved, not benign.
- Focus: recover file events with
-
Do child processes or connection events show collected material being staged or exported?
- Focus: child process starts, file activity, and network activity where
process.parent.entity_idmatches the alertingprocess.entity_idonhost.id; if network telemetry is available, reviewdestination.ip,destination.port, andnetwork.direction. $investigate_3 $investigate_4 - Hint: if the utility spawns a short-lived archiver or copy tool, pivot from that child into same-host connection events before broadening.
- Implication: escalate when the utility or child process spawns archivers, copy tools, "diskshadow.exe" exec children, or transfers dump material off-host; missing network telemetry is unresolved, not benign.
- Focus: child process starts, file activity, and network activity where
-
If local findings remain suspicious or unresolved, do related alerts show broader credential-access activity?
- Focus: related alerts for
user.idcovering dumping, privilege escalation, lateral movement, archiving, or staging. $investigate_0 - Hint: if the actor view is sparse, pivot to related alerts for
host.idcovering precursor access, persistence, archiving, or exfiltration. $investigate_1 - Implication: broaden when either view shows a credential-access chain or reuse of the same utility pattern; do not close solely because related alerts are absent if command intent, artifacts, lineage, or post-dump cleanup remain suspicious.
- Focus: related alerts for
-
Disposition: escalate when utility identity, command intent, lineage, artifacts, staging, or related scope indicate credential access; close only when identity, arguments, lineage, recovered artifacts, and supported scope all align with one recognized diagnostic, troubleshooting, crash-triage, backup, or IFM workflow; preserve artifacts and escalate when evidence is mixed or visibility is incomplete.
False positive analysis
- Recognized crash-triage, SQL troubleshooting, AD backup, or IFM workflows can trigger this rule. Confirm the same workflow across identity (
process.executable,process.code_signature.subject_name), lineage (process.parent.executable), intent (process.command_line), actor/scope (user.id,host.id), and recovered artifact paths when available. Case records may corroborate the workflow, but do not close on recurrence alone; use prior alerts only after current telemetry aligns. - Build exceptions only from the confirmed recurring workflow:
process.executable,process.code_signature.subject_name,process.parent.executable, stableprocess.command_line,user.id,host.id, and recovered output path or dump-directory pattern when available. Avoid exceptions onprocess.name,host.id, utility family, or generic dump switches alone.
Response and remediation
- If confirmed benign, record the recognized diagnostic, backup, or directory-services evidence in
process.executable,process.command_line,process.parent.executable,user.id,host.id, and recovered output paths when available, then reverse any temporary containment. Create an exception only if that same pattern recurs consistently across prior alerts from this rule. - If suspicious but unconfirmed, preserve the recovered
process.entity_idorprocess.pidwithhost.idand time,process.command_line, script-file, dump, shadow-copy, and copied-database paths, child-process lineage viaprocess.parent.entity_id/process.parent.pid, and any confirmed destination pairs before making destructive changes. Apply reversible containment first, such as temporary destination blocking or increased monitoring on the affectedhost.idanduser.id. Escalate to host isolation only if dump material, IFM output, or staging transfers are confirmed and the host can tolerate interruption. - If confirmed malicious, use endpoint response actions to isolate the host and terminate the dump or staging process after preserving
process.entity_id,process.parent.entity_id,process.command_line, recovered output paths, any availableprocess.hash.sha256, and confirmed destinations. If direct endpoint response is unavailable, hand off that artifact set immediately to the team that can isolate the system or block the destinations. - If LSASS dumping is confirmed, assume exposure for all accounts with active sessions on the affected host, including interactive, service, and cached credentials. Prioritize resets for privileged, service, and lateral-movement-relevant accounts and review whether the dump material was staged or transferred before containment.
- If NTDS access or dump activity is confirmed on a domain controller, activate the organization's Active Directory compromise response plan, preserve the evidence needed to scope database and credential exposure, and begin privileged-account hygiene based on the systems and accounts implicated by the investigation before deleting copied database material.
- Review related hosts and users for the same
process.command_linepatterns, dump-file naming patterns,process.parent.executable, and confirmed destinations before deleting dump files, IFM output, shadow copies, utilities, or persistence mechanisms uncovered during the investigation, then remediate the delivery or privilege path that allowed the utility to run.
References
Related rules
- Potential Local NTLM Relay via HTTP
- Browser Process Spawned from an Unusual Parent
- Credential Acquisition via Registry Hive Dumping
- NTDS or SAM Database File Copied
- Wireless Credential Dumping using Netsh Command