Memory-read handle opened against the LSASS process
MITRE's analytic describes a process opening a handle to lsass.exe with full access and then dumping, writing or persisting the harvested material, and Process Access is the one log source in the strategy that carries both the target and the access rights on a single event. The selection pins TargetImage to lsass.exe and matches the 0x1F0FFF mask MITRE names in its AccessMask knob alongside the other full-access variants and the minimal read masks a dumper needs — query plus VM_READ, with or without duplicate-handle rights — because a tool that asks only for what MiniDumpWriteDump requires never presents the full mask. The dump-file creation and registry steps that follow are a timed correlation Sigma cannot express, so this rule is the handle acquisition only. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0363, not hand-written and not tested by its author. Any lab result is on this rule's own page.Full descriptionShow less
The detection
The 3 SIEM queries below are previews produced by Siemphony’s own translator, not pySigma, and none has been executed against a real backend — review before you deploy.
detection.yml
title: Memory-read handle opened against the LSASS processid: 3e50b6f6-5dbc-4689-bf57-4bbff2bdd162status: experimentaldescription: | MITRE's analytic describes a process opening a handle to lsass.exe with full access and then dumping, writing or persisting the harvested material, and Process Access is the one log source in the strategy that carries both the target and the access rights on a single event. The selection pins TargetImage to lsass.exe and matches the 0x1F0FFF mask MITRE names in its AccessMask knob alongside the other full-access variants and the minimal read masks a dumper needs — query plus VM_READ, with or without duplicate-handle rights — because a tool that asks only for what MiniDumpWriteDump requires never presents the full mask. The dump-file creation and registry steps that follow are a timed correlation Sigma cannot express, so this rule is the handle acquisition only. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0363, not hand-written and not tested by its author. Any lab result is on this rule's own page.references: - https://attack.mitre.org/techniques/T1003/001 - https://attack.mitre.org/detectionstrategies/DET0363author: Siemphony pipeline (machine-derived from MITRE ATT&CK v19.2)date: 2026-08-16tags: - attack.credential-access - attack.t1003.001logsource: category: process_access product: windowsdetection: selection: TargetImage|endswith: '\lsass.exe' GrantedAccess: - '0x1F0FFF' - '0x1F1FFF' - '0x1F2FFF' - '0x1F3FFF' - '0x1FFFFF' - '0x143A' - '0x1438' - '0x1410' - '0x1010' condition: selectionfalsepositives: - "Endpoint protection, EDR and vulnerability-scanning agents, which read LSASS memory as part of credential-theft prevention and integrity checking. MITRE's allowlist knob is aimed at these; on this log source the only field that can carry the allowlist is SourceImage, so build the exclusion there once you know which agents your estate runs." - "Windows components that legitimately query LSASS with the narrower masks in this list — the Local Session Manager, WMI provider host and performance-counter collectors routinely present 0x1010 or 0x1410. Scoping the rule down to 0x1F0FFF alone, as MITRE's AccessMask knob suggests, removes most of this at the cost of missing minimal-rights dumpers." - "Crash reporting, memory forensics and support tooling run deliberately by an administrator during an incident or a hang investigation, which requests full access by design." - "Backup and privileged-access-management products that snapshot process memory or inject credential providers on managed hosts."level: highSplunk · SPL
Run this as a search.
index=* (TargetImage="*\\lsass.exe" AND (GrantedAccess="0x1F0FFF" OR GrantedAccess="0x1F1FFF" OR GrantedAccess="0x1F2FFF" OR GrantedAccess="0x1F3FFF" OR GrantedAccess="0x1FFFFF" OR GrantedAccess="0x143A" OR GrantedAccess="0x1438" OR GrantedAccess="0x1410" OR GrantedAccess="0x1010"))Elastic · ES|QL
Run this as a search.
FROM logs-*| WHERE (TO_LOWER(winlog.event_data.TargetImage) LIKE "*\\\\lsass.exe" AND (TO_LOWER(winlog.event_data.GrantedAccess) == "0x1f0fff" OR TO_LOWER(winlog.event_data.GrantedAccess) == "0x1f1fff" OR TO_LOWER(winlog.event_data.GrantedAccess) == "0x1f2fff" OR TO_LOWER(winlog.event_data.GrantedAccess) == "0x1f3fff" OR TO_LOWER(winlog.event_data.GrantedAccess) == "0x1fffff" OR TO_LOWER(winlog.event_data.GrantedAccess) == "0x143a" OR TO_LOWER(winlog.event_data.GrantedAccess) == "0x1438" OR TO_LOWER(winlog.event_data.GrantedAccess) == "0x1410" OR TO_LOWER(winlog.event_data.GrantedAccess) == "0x1010"))
Wazuh · XML rule
Deploy to your manager — this is a rule, not a search.
<group name="sigma,windows,process_access,"> <!-- Rule ids must be unique on your manager; 100000+ is the user range. --> <rule id="100000" level="12"> <!-- Set <if_sid> to the decoder/base rule for windows so this only evaluates relevant events. --> <field name="TargetImage" type="pcre2">(?i)\\lsass\.exe$</field> <field name="GrantedAccess" type="pcre2">(?i)(^0x1F0FFF$|^0x1F1FFF$|^0x1F2FFF$|^0x1F3FFF$|^0x1FFFFF$|^0x143A$|^0x1438$|^0x1410$|^0x1010$)</field> <description>Memory-read handle opened against the LSASS process</description> <mitre> <id>T1003.001</id> </mitre> </rule></group>
Sentinel · KQL
Run this as a search.
Sentinel cannot express this construct. No Sentinel table is modelled for this logsource ({"category":"process_access","product":"windows"}), so there is nothing honest to query. Pick a logsource this translator maps, or write the KQL by hand. The Sigma source is on the first tab, unchanged.
Verdicts · reactions · comments
Community
Verdicts from engineers who actually deployed it, and the conversation around it.
Nobody has run this in a real environment and said what happened.
Verdicts from engineers who deployed it
0 castNo verdicts reported yet. The first one is worth more than the tenth — say what you ran it against.
Log in to report a verdict.
Log in to join the discussion.
1 thread
@owen-mackay
Second the split, with one caution against dropping the minimal-read arm to get quiet: the dumpers worth worrying about ask for exactly what MiniDumpWriteDump needs, which the description already says is why the full mask alone is not enough. And the ones that duplicate a handle out of another process never open lsass themselves — the open you see came from whoever they stole it from, which is one more reason SourceImage is the field that decides. The dump-file write the description defers as a timed correlation is where I would spend the next hour of engineering; the handle is the earliest signal, the file is the confirmation.
@nadia-brandt
First week of this on our estate: five figures of matches, essentially all of them our own EDR and the vulnerability scanner reading LSASS by design — which is exactly the population the description says the SourceImage allowlist is aimed at. Two allowlist entries later the daily volume is double digits, and what remains is dominated by the narrow masks, 0x1010 and 0x1410 from lsm.exe and WmiPrvSE. We ended up routing the arms differently: the full-access masks page, the minimal-read masks feed a hunt queue. One rule, two consumers, and neither of them is muted.