Detect Mimikatz Credential Dumping in Elastic Common Schema Process Logs
Published
Sigma Rule
title: Mimikatz Process Execution via Process Name or Command-Line Modules
id: 5a3af970-5587-4827-8af6-b761fdb983c1
status: experimental
description: >
Detects Mimikatz credential-dumping activity in ECS process events, either
by the process name mimikatz.exe or by the distinctive sekurlsa and
privilege::debug module invocations in the command line. sekurlsa::logonpasswords
reads credentials out of LSASS memory, and privilege::debug is the
standard precursor that elevates the process token to SeDebugPrivilege so
that read can happen.
references:
- https://attack.mitre.org/techniques/T1003/001/
- https://attack.mitre.org/software/S0002/
author: LogTriage
date: 2026/10/26
logsource:
category: process_creation
product: windows
detection:
selection_process:
process.name: 'mimikatz.exe'
selection_cmdline:
process.command_line|contains:
- 'sekurlsa::logonpasswords'
- 'privilege::debug'
condition: selection_process or selection_cmdline
falsepositives:
- Authorized red team or penetration test engagement with a known ticket
- Security product testing or EDR validation labs
level: critical
tags:
- attack.credential_access
- attack.t1003.001
- attack.t1003
1 · Each event is compared with 2 selections. Every field in a selection must match; listed values are alternatives.
- process.name is
mimikatz.exe
- process.command_line contains any of
sekurlsa::logonpasswordsprivilege::debug
2 · An event counts when
selection_processorselection_cmdline
ecs_attack.json, silent on ecs_normal.json — both in the public sample dataset ↗︎ What this rule detects
Mimikatz is the reference tool for pulling plaintext passwords, hashes and Kerberos tickets out of LSASS memory on Windows. This rule looks for it in ECS process-creation events by either of two independent signals:
process.name: mimikatz.exe— the tool run under its default, unrenamed file name.process.command_linecontainingsekurlsa::logonpasswordsorprivilege::debug— the module invocations that do the actual credential theft, regardless of what the binary is called.
Either condition alone is a critical finding. There is no threshold because a single successful execution is enough to compromise every credential cached on the host.
Detection logic
selection_process and selection_cmdline are combined with or rather than and, because an
attacker only needs to defeat one of the two signals to evade detection — renaming the binary
defeats the first, while running a different module name defeats the second, but defeating both
at once is harder, since the tool’s internal module names (sekurlsa, privilege) are what give
it its functionality and are not cosmetic.
privilege::debug is listed because it is the standard first step: it elevates the running
process to SeDebugPrivilege so it can open a handle to lsass.exe. sekurlsa::logonpasswords
is the module that then reads the credentials out of that process’s memory. Seeing either in a
command line captured from an ECS-shipped process event is enough to treat the host as
compromised.
Validated against a real sample
In ecs_attack.json, a process event on host DESKTOP-VICTIM records:
process.name: "mimikatz.exe"process.command_line: "mimikatz.exe privilege::debug sekurlsa::logonpasswords"user.name: "CORP\\jsmith"file.path: "C:\\Temp\\mimikatz.exe"with afile.hash.sha256matchingprocess.hash.sha256
Both selections match this single event: the process name matches selection_process, and the
command line matches selection_cmdline on both listed strings. The rule fires.
The benign sample’s only process event is chrome.exe --no-first-run launched by alice on
DESKTOP-ALICE — neither the file name nor the command line contains any Mimikatz string, so the
rule stays silent.
False positives
The only legitimate source of this alert is intentional: a red team or penetration test running
Mimikatz under an authorized engagement, or a security team validating EDR coverage in a lab.
Both cases should be traceable to a known host and a ticket. Outside of that, this rule has no
benign explanation — there is no routine administrative task that invokes sekurlsa::logonpasswords.
Frequently Asked Questions
- Why does the process name alone justify a critical alert?
- mimikatz.exe is not a renamed system binary or a dual-use admin tool — it has no legitimate business purpose. A process event that records this name, from any host, means someone placed the tool on disk and ran it. The only question left is whether it was an authorized test.
- What do sekurlsa::logonpasswords and privilege::debug actually do?
- privilege::debug requests SeDebugPrivilege, the token right needed to open a handle to another process regardless of owner — in this case lsass.exe. sekurlsa::logonpasswords then reads LSASS memory and extracts cached credentials: NTLM hashes, and plaintext passwords or Kerberos tickets if WDigest or similar is still enabled. Seeing both in one command line is the textbook Mimikatz credential-dumping sequence, which is why the rule matches on either string independently — an attacker can split them across two commands or rename the binary, but the module names rarely change.
- Would this catch a renamed copy of Mimikatz?
- Only through the command-line selection. selection_process depends on the literal file name mimikatz.exe; if an attacker renames the binary to something innocuous, that selection goes dark but selection_cmdline still fires as long as the operator still invokes sekurlsa::logonpasswords or privilege::debug, since those are the tool's internal module names, not the file name.
- Why not also alert on the SSH and web events in the same sample?
- They are separate, weaker signals that belong in their own rules. A single denied connection to port 22 and a single failed admin logon are each common on their own and need volume or repetition to mean anything; a single 403 to an admin path from a scripted user-agent is reconnaissance, not confirmed compromise. Mixing them into this rule would either dilute a critical alert with noise or force a high-severity rule to fire on one blocked packet. This rule is scoped to the one event in the sample that is unambiguous on its own: Mimikatz running.
Related Resources
Reference
- Decode an encoded PowerShell command line from these logs → free, runs in your browser
See this detection run on a real report
Try the live demo with a pre-loaded malicious log set — no signup required — or upload your own log file and get a full AI-reviewed threat report in minutes.