How to Detect Malicious LSASS Dumping with Sigma Rules

For hunting threats both proactively and reactively, the ability to create fast, reliable detections is one of the most critical skills in a defender’s toolkit. Sigma rules sit at the center of that capability — a vendor-neutral, open standard for writing detection logic once and deploying it anywhere. If you’re not already writing them, Sigma is worth understanding.

Sigma is a generic, open, and structured detection format that allows security teams to detect relevant log events in a simple and shareable way.

In this post we’ll walk through a real-world example: detecting credential dumping via LSASS memory access. We’ll build a detection from first principles, tune out the noise, validate it on raw Windows event logs, and then run the final query against Splunk telemetry.


Before we get into it — if you want a quick reference to keep open while you work, we put together a free Sigma cheat sheet covering rule structure, condition logic, field modifiers, and log source categories. Grab the free PDF here

Blue Cape Security Sigma Cheat Sheet


First: Understand the Sigma Rule Structure

Before we dive into the example, here’s the basic anatomy of a Sigma rule. It’s intentionally human-readable:

title: Example Detection Rule
status: experimental
description: Detects suspicious process access behavior
logsource:
  product: windows
  category: process_access
detection:
  selection:
    EventCode: 10
    TargetImage|endswith: '\lsass.exe'
  filter:
    SourceImage: 'C:\Windows\system32\svchost.exe'
  condition: selection and not filter

Three key sections: logsource (where to look), detection (what to match), and condition (the logic that ties them together). That’s all you need to get started.


Test It: Validate Against Windows Event Logs with Hayabusa

Before deploying a rule to a SIEM, you want to validate it against real log data on the command line. Hayabusa is a fast, open-source Windows event log forensics and threat hunting tool that runs Sigma rules directly against .evtx files.

hayabusa csv-timeline -d ./evtx-logs/ -r ./sigma-rules/ -o results.csv

That’s it. Point it at a folder of event logs and a folder of Sigma rules, and it outputs a timeline of hits. No SIEM required. It’s the fastest way to iterate on a rule — write it, run it, see what fires, tune, repeat.


The LSASS Dumping Problem

Now onto the detection itself.

LSASS (lsass.exe) is the Local Security Authority Subsystem Service — it holds credential material for all logged-on users in memory. Dumping its memory is one of the most common techniques attackers use to harvest credentials for lateral movement.

One technique shows up constantly in real incidents: abusing rundll32.exe with comsvcs.dll to produce a full LSASS memory dump using nothing but built-in Windows components.

rundll32.exe C:\Windows\System32\comsvcs.dll, MiniDump <lsass_pid> C:\output.dmp full

No external tools. No Mimikatz on disk. Just a signed Microsoft binary calling a built-in DLL export — and you have a dump of LSASS memory ready to process offline.


Understand GrantedAccess

Sysmon Event ID 10 (ProcessAccess) captures when one process opens a handle to another. The GrantedAccess field tells you exactly what permissions were requested. This is your primary signal.

Here’s the noise reality: LSASS gets opened by dozens of legitimate system processes constantly. The key is knowing which access masks are dump-capable and which aren’t.

GrantedAccess Significance
0x1fffff PROCESS_ALL_ACCESS — full handle, almost never legitimate from a non-system process
0x1438 Memory access + process manipulation — common in credential dumping tools
0x1410 Controlled memory read — used by stealthier variants
0x1010 PROCESS_VM_READ + PROCESS_QUERY_LIMITED_INFORMATION — the comsvcs.dll MiniDump signature

0x1010 is the one to focus on here. It’s exactly what comsvcs.dll MiniDump requests against LSASS — just enough access to read the process memory and produce a dump, nothing more. Stealthy, but detectable.

The second thing to look at beyond the access mask: who is requesting it? A standard domain user account opening a handle to LSASS with dump-capable permissions is immediately anomalous. That’s not a tuning problem — that’s a high-confidence signal.


Tune Out the False Positives

A naive rule matching all 0x1010 access to LSASS would be buried in noise. Dozens of legitimate system processes open LSASS regularly with similar masks — AV, WMI, task scheduler, the Sysmon driver itself.

The filter section handles this:

filter_legitimate_system:
  SourceImage:
    - 'C:\Windows\system32\lsass.exe'
    - 'C:\Windows\system32\wininit.exe'
    - 'C:\Windows\system32\services.exe'
    - 'C:\Windows\system32\svchost.exe'
    - 'C:\Windows\system32\csrss.exe'
    - 'C:\Windows\system32\winlogon.exe'
    - 'C:\Windows\system32\taskhostw.exe'
    - 'C:\Windows\system32\taskhost.exe'
    - 'C:\Windows\system32\wbem\wmiprvse.exe'
    - 'C:\Windows\system32\msiexec.exe'
    - 'C:\Windows\Sysmon.exe'
    - 'C:\Windows\Sysmon64.exe'
    - 'C:\Windows\System32\atiesrxx.exe'
    - 'C:\Windows\System32\CompatTelRunner.exe'
    - 'C:\Windows\System32\nvwmi64.exe'
    - 'C:\Windows\System32\taskmgr.exe'
    - 'C:\Windows\System32\lsm.exe'
    - 'C:\Windows\System32\MRT.exe'

This list isn’t exhaustive — your environment will have additional legitimate sources (EDR agents, backup software, endpoint management tools). The process of building this filter list is the detection engineering work. You learn your environment by tuning your rules.


The Final Sigma Rule

With the access masks defined and the false positive filter in place:

title: Potential LSASS Memory Dump
id: 6fbd07cf-a53f-403d-9219-df65a6d59efc
status: experimental
description: Detects Credential Dumping from LSASS
author: BlueCapeSecurity
tags:
  - attack.credential_access
  - attack.t1003.001

logsource:
  product: windows
  category: process_access

detection:
  selection_lsass_access:
    EventCode: 10
    TargetImage|endswith: '\lsass.exe'
    GrantedAccess:
      - '0x1fffff'
      - '0x1438'
      - '0x1410'
      - '0x1010'

  filter_legitimate_system:
    SourceImage:
      - 'C:\Windows\system32\lsass.exe'
      - 'C:\Windows\system32\wininit.exe'
      - 'C:\Windows\system32\services.exe'
      - 'C:\Windows\system32\svchost.exe'
      - 'C:\Windows\system32\csrss.exe'
      - 'C:\Windows\system32\winlogon.exe'
      - 'C:\Windows\system32\taskhostw.exe'
      - 'C:\Windows\system32\taskhost.exe'
      - 'C:\Windows\system32\wbem\wmiprvse.exe'
      - 'C:\Windows\system32\msiexec.exe'
      - 'C:\Windows\Sysmon.exe'
      - 'C:\Windows\Sysmon64.exe'
      - 'C:\Windows\System32\atiesrxx.exe'
      - 'C:\Windows\System32\CompatTelRunner.exe'
      - 'C:\Windows\System32\nvwmi64.exe'
      - 'C:\Windows\System32\taskmgr.exe'
      - 'C:\Windows\System32\lsm.exe'
      - 'C:\Windows\System32\MRT.exe'

  condition: selection_lsass_access and not filter_legitimate_system

fields:
  - _time
  - SourceImage
  - GrantedAccess
  - SourceUser
  - ComputerName

Convert that to SPL and run it across your Splunk environment:

index=sigma EventCode=10 TargetImage="*\\lsass.exe"
GrantedAccess IN ("0x1fffff", "0x1438", "0x1410", "0x1010")
NOT (SourceImage IN ("C:\\Windows\\system32\\lsass.exe",
"C:\\Windows\\system32\\wininit.exe",
"C:\\Windows\\system32\\services.exe",
"C:\\Windows\\system32\\svchost.exe",
"C:\\Windows\\system32\\csrss.exe",
"C:\\Windows\\system32\\winlogon.exe",
"C:\\Windows\\system32\\taskhostw.exe",
"C:\\Windows\\system32\\taskhost.exe",
"C:\\Windows\\system32\\wbem\\wmiprvse.exe",
"C:\\Windows\\system32\\msiexec.exe",
"C:\\Windows\\Sysmon.exe",
"C:\\Windows\\Sysmon64.exe",
"C:\\Windows\\System32\\atiesrxx.exe",
"C:\\Windows\\System32\\CompatTelRunner.exe",
"C:\\Windows\\System32\\nvwmi64.exe",
"C:\\Windows\\System32\\taskmgr.exe",
"C:\\Windows\\System32\\lsm.exe",
"C:\\Windows\\System32\\MRT.exe"))
| table _time,SourceImage,GrantedAccess,SourceUser,ComputerName

Here’s what a match looks like in Splunk:

Splunk results showing LSASS access detection


Analyzing the Hit: Why This Is Malicious

When this rule fires, you need to know what you’re actually looking at. Here’s a real Sysmon Event 10 from a lab environment that this rule caught:

SourceImage:    C:\Windows\system32\rundll32.exe
TargetImage:    C:\Windows\system32\lsass.exe
GrantedAccess:  0x1010
SourceUser:     BCS\John
TargetUser:     NT AUTHORITY\SYSTEM
CallTrace:      ntdll.dll+9c264|KERNELBASE.dll+29c6e|UNKNOWN(0000019BC8FDD97C)

Walk through the indicators:

GrantedAccess 0x1010 breaks down as PROCESS_VM_READ (0x0010) + PROCESS_QUERY_LIMITED_INFORMATION (0x1000). That combination is exactly what’s needed to read LSASS memory and produce a credential dump — nothing more, nothing less.

rundll32.exe as the source is a classic LOLBin pattern. It’s signed by Microsoft, it’s present on every Windows system, and it can execute arbitrary DLL exports — including comsvcs.dll’s MiniDump function. Attackers use it precisely because it blends into normal process telemetry.

BCS\John as the source user is the clearest anomaly. A standard domain user account should never be opening handles to LSASS. Legitimate processes that access LSASS run as SYSTEM or specific service accounts. A named user account here is immediately suspicious regardless of the tool involved.

The CallTrace is the forensic confirmation:

ntdll.dll | KERNELBASE.dll | UNKNOWN(0000019BC8FDD97C)

The first two frames represent the normal OpenProcess call chain. The third — UNKNOWN at a specific memory address — is an unbacked memory region. No mapped image on disk. This is the signature of comsvcs.dll executing MiniDump from heap memory, or a reflectively loaded module. Legitimate tooling produces a fully resolved call stack with named DLLs all the way up.

From a single event, this is high-confidence credential dumping. The next pivot points would be:

  • Event ID 1 (Process Create) for the rundll32.exe PID — did the command line include comsvcs.dll and MiniDump?
  • Event ID 11 (File Create) — was a .dmp file written to disk shortly after?
  • Event ID 1 (Parent Process) — what spawned rundll32.exe? PowerShell, cmd, an Office application?
  • Event ID 3 (Network) — any outbound connections from the process after the access? Suggests beacon activity or immediate exfiltration.

Single Events Are Just the Beginning

This LSASS example works because one event, in isolation, is highly suspicious. But many attack techniques don’t reveal themselves in a single event — they emerge from patterns across time.

Brute force and password spraying are a good example. A single failed login isn’t a detection. Five hundred failed logins across multiple accounts within a two-minute window absolutely is. That requires correlation rules — Sigma logic that aggregates events, applies time windows, and fires only when a threshold is met. This is where detection engineering gets significantly more powerful, and significantly more complex.

The same principle applies to lateral movement, persistence mechanisms, and staging behavior. A skilled attacker rarely trips a single alarm. They trip a pattern.


What About Credential Guard?

Microsoft’s Credential Guard uses virtualization-based security (VBS) to isolate credential material inside a hypervisor-protected enclave, away from the regular LSASS process. Available since Windows 10, it was made on by default for eligible devices starting with Windows 11 22H2 — meaning the secrets that comsvcs.dll MiniDump used to harvest are no longer sitting in accessible LSASS memory. The dump still runs, but you get the process shell without the credentials.

That said, Credential Guard is still barely rolled out across most organizations. It requires compatible hardware, a proper VBS configuration, and tends to break legacy components — smart card middleware, certain VPN clients, older MFA integrations. Many enterprise environments have it explicitly disabled or simply haven’t gotten to it. Until it’s broadly deployed, detections like the one above remain essential.


Learn This End-to-End

If you want to build this capability yourself — writing Sigma rules from scratch, testing them against real Windows event log datasets, tuning for your environment, and converting to SPL for large-scale Splunk hunting — this is exactly what we cover in our Detection Engineering with Sigma course in the Blue Cape Security Analyst Defense Labs.

You get the rule-writing framework, real Windows event log datasets to hunt against, Splunk telemetry to validate queries at scale, and hands-on labs that walk through the full detection engineering workflow from hypothesis to production-ready rule.

Explore the Detection Engineering with Sigma ADL →

Sigma ADL

Scroll to Top

Training Waitlist

Join our waitlist and get notified when training becomes available.

Contact Information
Professional Experience
I'm interested in

*By submitting this form, you’re agreeing that we will contact you and to receive our free email newsletter. (You’ll never be spammed and you can unsubscribe at any time.) We do not share your information with third-parties.