This is an example PEAK Framework hunt report demonstrating behavioral hunting for LSASS memory access (T1003.001). This hunt focuses on the BEHAVIOR of credential dumping, not specific tools or hashes.
Reference: PEAK Template Guide
(H for Hypothesis-driven, B for Baseline, M for Model-Assisted)
Hunt for LSASS Memory Access Behavior (Credential Dumping)
| Hunt Information | Details |
|---|---|
| Hypothesis | Adversaries are accessing LSASS memory to extract credentials, regardless of the tool used (Mimikatz, ProcDump, custom malware, etc.) |
| Threat Hunter Name | THOR Threat Hunting Team |
| Date | 2024-11-15 |
| Requestor | Security Operations Center |
| Timeframe for hunt | 2 days |
Clearly define your hunt scope using the ABLE framework. Replace all placeholders ([ ]) with relevant details for your scenario.
| Field | Description | Your Input |
|---|---|---|
| Actor | (Optional) Identify the threat actor involved with the behavior, if applicable. This step is optional because hunts aren't always tied to a specific actor. You may be investigating techniques used across multiple adversaries or looking for suspicious activity regardless of attribution. Focus on the what and how before the who, unless actor context adds meaningful value to the hunt. | N/A - Hunting behaviors across all threat actors |
| Behavior | Describe the actions observed or expected, including tactics, techniques, and procedures (TTPs). Specify methods or tools involved. | LSASS Memory Access (T1003.001) - Process opening handle to lsass.exe with PROCESS_VM_READ access rights to extract credentials from memory |
| Location | Specify where the activity occurred, such as an endpoint, network segment, or cloud environment. | All Windows endpoints and servers in corporate environment |
| Evidence | Clearly list logs, artifacts, or telemetry supporting your hypothesis. For each source, provide critical fields required to validate the behavior, and include specific examples of observed or known malicious activity to illustrate expected findings. | - Source: Sysmon Event ID 10 (ProcessAccess)- Key Fields: SourceImage, SourceProcessId, TargetImage, GrantedAccess, CallTrace- Example: SourceImage="C:\temp\unknown.exe" TargetImage="C:\Windows\System32\lsass.exe" GrantedAccess="0x1010"- Source: Windows Security Event ID 4656 (Handle to Object Requested)- Key Fields: ProcessName, ObjectName, AccessMask, HandleId- Example: ProcessName="unknown.exe" ObjectName="\Device\HarddiskVolume2\Windows\System32\lsass.exe" AccessMask="0x1410" |
Example ABLE Inputs
| Field | Example Input |
|---|---|
| Actor | N/A - Behavioral hunt independent of specific threat actor |
| Behavior | Credential Dumping via LSASS Memory Access (T1003.001) - Any process accessing LSASS memory with read permissions |
| Location | Corporate Windows Servers and Domain Controllers |
| Evidence | - Source: Sysmon Logs (Event ID 10 - ProcessAccess)- Key Fields: SourceImage, TargetImage, GrantedAccess, CallTrace, SourceUser- Example: Non-system process accessing lsass.exe with GrantedAccess 0x1010 or 0x1410 (PROCESS_VM_READ + PROCESS_QUERY_INFORMATION)- Source: Windows Security Event Logs (Event ID 4656)- Key Fields: ProcessName, ObjectName, AccessMask, SubjectUserName- Example: Suspicious process requesting handle to lsass.exe with read permissions |
| Role | Ticket and Other Details |
|---|---|
| SOC/IR | Previous incidents: INC-2024-089 (Mimikatz detection), INC-2024-103 (ProcDump usage) |
| Threat Intel (TI) | APT29 known to use LSASS dumping, APT28 uses custom credential stealers |
| Detection Engineering (DE) | Existing SIEM rule: "Suspicious LSASS Access" (needs tuning for false positives) |
| Red Team / Pen Testing | Red Team Exercise 2024-Q2 successfully dumped credentials using custom tool |
| Other | Vulnerability Management: Credential Guard not enabled on 30% of endpoints |
- MITRE ATT&CK Techniques:
TA0006 - Credential AccessT1003.001 - OS Credential Dumping: LSASS MemoryT1003 - OS Credential Dumping
- Related Reports, Blogs, or Threat Intel Sources:
https://attack.mitre.org/techniques/T1003/001/https://www.microsoft.com/security/blog/lsass-credential-theftMITRE ATT&CK: Groups using T1003.001 - APT29, APT28, APT3, APT41, Carbanak, etc.
- Historical Prevalence & Relevance:
- Previous detections: We have existing detections for Mimikatz specifically (hash-based and string-based), but custom tools bypass these
- Gap identified: No behavioral detection for LSASS access - only signature-based detection of known tools
- Recent incidents: 2 incidents in past 90 days involving credential dumping (both used Mimikatz)
- Environment relevance: HIGH - Domain environment with privileged accounts, high-value target for credential theft
(Document queries for Splunk, Sigma, KQL, or another query language to execute the hunt. Capture any adjustments made during analysis and iterate on findings.)
index=windows sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=10
TargetImage="C:\\Windows\\System32\\lsass.exe"
| stats count by SourceImage, SourceUser, Computer, GrantedAccess
| where SourceImage!="C:\\Windows\\System32\\svchost.exe"
AND SourceImage!="C:\\Windows\\System32\\taskmgr.exe"
AND SourceImage!="C:\\Program Files\\Windows Defender\\MsMpEng.exe"
- Notes:
- Results: Query returned 45 events across 12 endpoints
- False positives: TaskManager (legitimate admin use), some Windows Defender scans
- True positives: 3 suspicious unknown executables accessing LSASS
- Gaps: Need to filter more legitimate system processes, add GrantedAccess refinement
index=windows sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=10
TargetImage="C:\\Windows\\System32\\lsass.exe"
(GrantedAccess="0x1010" OR GrantedAccess="0x1410" OR GrantedAccess="0x1438")
| eval is_suspicious=if(match(SourceImage, "(?i)(system32|syswow64|defender|microsoft)"), 0, 1)
| where is_suspicious=1
| stats count earliest(_time) as first_seen latest(_time) as last_seen by SourceImage, SourceUser, Computer, GrantedAccess
| eval first_seen=strftime(first_seen, "%Y-%m-%d %H:%M:%S"), last_seen=strftime(last_seen, "%Y-%m-%d %H:%M:%S")
| sort -count
- Rationale for Refinement:
- Added
GrantedAccessfiltering for specific memory access patterns (0x1010 = PROCESS_VM_READ, 0x1410 adds PROCESS_QUERY_INFORMATION) - Created
is_suspiciousfield to automatically filter known-good system paths - Added temporal analysis (first_seen/last_seen) to identify persistence vs one-time events
- Sorted by count to identify potential automated/persistent access
- Added
index=windows sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=10
TargetImage="C:\\Windows\\System32\\lsass.exe"
(GrantedAccess="0x1010" OR GrantedAccess="0x1410" OR GrantedAccess="0x1438")
| eval is_system=if(match(SourceImage, "(?i)(\\\\system32\\\\|\\\\syswow64\\\\|\\\\defender\\\\)"), 1, 0)
| where is_system=0
| join type=left SourceImage [
search index=windows sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1
| stats earliest(_time) as process_created by Image, ParentImage
| rename Image as SourceImage
]
| table _time Computer SourceImage ParentImage SourceUser GrantedAccess process_created
| sort -_time
- Rationale:
- Correlates LSASS access (Event ID 10) with process creation (Event ID 1) to see parent-child relationships
- Identifies if LSASS-accessing process was spawned from suspicious parent (e.g., Office, browser, script interpreter)
- Provides fuller behavioral context beyond just the access event
(Describe any dashboards, anomaly detection methods, or visualizations used. Capture observations and note whether visualizations revealed additional insights.)
Dashboard Created: "LSASS Access Behavioral Analysis"
-
Time-series chart: LSASS Access Over Time
- Shows spike in activity on 2024-11-13 03:00-04:00 UTC (3 unique processes, same source user)
- Normal baseline: 0-2 events per hour from legitimate admin tools
- Observation: Spike coincides with maintenance window, likely legitimate but worth investigating
-
Heatmap: LSASS Access by User and Computer
- Identified 3 user accounts with unusual LSASS access patterns:
svc-backupaccount accessing LSASS on 5 different servers (unusual for service account)jdoe(standard user) accessed LSASS fromWS-MARKETING-042(standard user shouldn't have this access)
- Observation:
jdoeevent is highest priority for investigation
- Identified 3 user accounts with unusual LSASS access patterns:
-
Rare Process Analysis
- Used SPL
rarecommand to identify infrequently-seen processes accessing LSASS:backup-agent.exe- legitimate backup software (whitelisted)temp_23847.exe- SUSPICIOUS - executed fromC:\Users\jdoe\AppData\Local\Tempsystem-update.exe- SUSPICIOUS - masquerading as Windows update, located inC:\temp
- Used SPL
(How would this be turned into a detection rule? Thresholds, tuning considerations, etc.)
-
Initial Detection Criteria:
- Trigger: Any non-system process accessing lsass.exe with GrantedAccess containing VM_READ (0x1010, 0x1410, 0x1438)
- Exclusions: Legitimate system paths (system32, Windows Defender, SCCM, EDR agents)
- Severity: HIGH if source process is from temp directory or user profile; MEDIUM otherwise
-
Refinements After Review:
- Whitelist additions: Added legitimate backup software (
Veeam,Acronis) and monitoring tools (SolarWinds,PRTG) - Contextual enrichment: Cross-reference with user privileges (Domain Admin, local admin) - standard users triggering this = critical alert
- Temporal analysis: Multiple LSASS accesses within 60 seconds from same process = potential automated credential dumping
- Whitelist additions: Added legitimate backup software (
Proposed Detection Rule (Splunk):
index=windows sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=10
TargetImage="C:\\Windows\\System32\\lsass.exe"
(GrantedAccess="0x1010" OR GrantedAccess="0x1410" OR GrantedAccess="0x1438")
NOT [| inputlookup lsass_access_whitelist.csv]
| lookup user_privileges SourceUser OUTPUT privilege_level
| eval severity=case(
match(SourceImage, "(?i)(\\\\temp\\\\|\\\\appdata\\\\local\\\\temp)"), "CRITICAL",
privilege_level="standard_user", "HIGH",
1=1, "MEDIUM"
)
| where severity IN ("CRITICAL", "HIGH")
| stats count values(SourceImage) as processes by Computer, SourceUser, severity
| where count >= 1
-
Summarize insights gained from each query modification and visualization.
- Initial query was too noisy (45 events, many false positives from legitimate tools)
- Refining with GrantedAccess filtering and path-based exclusions reduced noise by 80%
- Correlation with process creation (Event ID 1) revealed parent-child relationships critical for understanding attack chain
- Visualizations (especially heatmap and rare analysis) identified 2 high-priority IOCs that pure query wouldn't have surfaced
-
Reiterate key findings:
- Found 2 confirmed suspicious LSASS access events:
temp_23847.exeexecuted by userjdoeonWS-MARKETING-042system-update.exeonSRV-FILE-03by unknown origin
- Identified detection gap: Existing signature-based rules only catch known tools (Mimikatz, ProcDump) - behavioral detection needed
- False positive sources: Legitimate admin tools (TaskManager during troubleshooting), backup software, monitoring agents
- Found 2 confirmed suspicious LSASS access events:
-
If this hunt were repeated:
- Start with refined query (skip initial broad query)
- Establish whitelist of legitimate LSASS-accessing processes FIRST to reduce noise
- Add enrichment for user privilege level upfront (saves time triaging)
- Consider additional correlation: network connections immediately after LSASS access (potential credential exfiltration)
-
Follow-up hunts generated:
- Hunt for process injection targeting lsass.exe (Event ID 8, CreateRemoteThread)
- Hunt for credential dumping via registry (SAM/SECURITY hive access)
- Hunt for Kerberoasting (Event ID 4769 with RC4 encryption)
Hypothesis: Adversaries are accessing LSASS memory to extract credentials, regardless of the tool used.
Result: ✅ HYPOTHESIS CONFIRMED
Key Points:
- Hunt successfully identified 2 high-confidence LSASS memory access events bypassing existing signature-based detections
- Both events originated from suspicious executables in temporary directories, indicating potential custom credential dumping tools
- Behavioral hunting approach (focusing on LSASS access behavior rather than known tool signatures) proved effective at catching unknown/custom tools
- Detection gap closed: Created new behavioral detection rule reducing reliance on IOC-based signatures
- Immediate action: Isolated affected endpoints, initiated incident response for credential theft
(Summarize key results, including any unusual activity.)
| Finding | Ticket Number and Link | Description |
|---|---|---|
| Suspicious LSASS access by unknown executable | INC-2024-142 | temp_23847.exe executed by user jdoe accessed LSASS memory on WS-MARKETING-042. Investigation revealed post-compromise credential theft attempt. User account jdoe compromised via phishing. |
| LSASS access from masquerading process | INC-2024-143 | system-update.exe located in C:\temp (not legitimate Windows path) accessed LSASS on SRV-FILE-03. Binary analysis revealed custom credential stealer, unknown to existing AV/EDR. |
| Detection gap - behavioral vs signature | DE-2024-089 | Existing detections rely on known tool signatures (Mimikatz strings, ProcDump hash). Custom tools bypass these. New behavioral detection rule created to catch LSASS access behavior regardless of tool. |
| Credential Guard not deployed | VM-2024-057 | 30% of endpoints lack Credential Guard, leaving LSASS memory vulnerable. Vulnerability Management tasked with deployment plan. |
-
What worked well?
- Behavioral focus (hunting for LSASS access behavior, not specific tools) successfully identified unknown/custom credential dumpers
- ABLE methodology helped scope the hunt precisely - focusing on behavior across all threat actors was the right approach
- Correlation with process creation events (EventID 1) provided critical context for parent-child relationships
- Visualization (heatmap, rare analysis) surfaced anomalies not obvious from query results alone
-
What could be improved?
- Whitelist development took significant time - future hunts should leverage existing legitimate process baselines
- Should have included network activity correlation from the start (to detect credential exfiltration after dump)
- User privilege enrichment should be automated in the hunt query (manually correlating slowed analysis)
-
Should this hunt be automated as a detection?
- ✅ YES - Detection rule created and deployed to production SIEM
- Rule name: "Behavioral Detection - Suspicious LSASS Memory Access"
- Severity: HIGH/CRITICAL based on process path and user privilege
- Expected alert volume: 2-5 alerts per week (based on hunt baseline)
-
Are there any follow-up hunts that should be conducted?
- Hunt for credential dumping via registry (SAM/SECURITY hive access)
- Hunt for PtH (Pass-the-Hash) activity using dumped credentials
- Hunt for Kerberoasting (complementary credential theft technique)
- Hunt for process injection into lsass.exe (alternative credential access method)
-
What feedback should be shared with other teams (SOC, IR, Threat Intel, Detection Engineering, etc.)?
- SOC: New detection rule deployed - expect HIGH severity alerts for LSASS access, prioritize investigation
- IR: 2 active incidents created from hunt findings - compromised user account and custom malware on file server
- Threat Intel: Custom credential stealer identified (
system-update.exe) - request external threat intel lookup - Detection Engineering: Behavioral detection rule created, recommend expanding approach to other credential theft techniques
- Vulnerability Management: Credential Guard deployment critical - accelerate rollout to remaining 30% of endpoints
- Red Team: Test new behavioral detection rule in next exercise to validate effectiveness
-
Knowledge Base (KB) Articles
- Write an internal KB article that captures:
- Hunt objective: Detect LSASS memory access behavior (T1003.001) independent of specific tools
- Key findings: 2 suspicious LSASS access events, detection gap identified
- Detection logic: Behavioral rule focusing on GrantedAccess patterns and process paths
- Lessons learned: Behavioral hunting > signature-based detection for credential theft
- KB Article: KB-2024-089 "Hunting for Credential Dumping: LSASS Memory Access Patterns"
- Documented behavioral hunting approach for future hunts targeting other credential theft techniques
- Write an internal KB article that captures:
-
Threat Hunt Readouts
- Scheduled readout with SOC, IR, and Threat Intel teams (2024-11-16 14:00 UTC)
- Presented key findings: 2 incidents, new detection rule, behavioral hunting methodology
- Shared refined query and whitelist with SOC for future triage
-
Reports & External Sharing
- Internal hunt report published: "PEAK Hunt H-20241115-001: Behavioral LSASS Memory Access Detection"
- External sharing: Consider submitting anonymized findings to HEARTH community repository
- Industry sharing: Malware sample (
system-update.exe) submitted to VirusTotal and MISP for community benefit
- MITRE ATT&CK T1003.001: https://attack.mitre.org/techniques/T1003/001/
- Microsoft Security Blog - LSASS Credential Theft: https://www.microsoft.com/security/blog/
- PEAK Framework Template: https://dispatch.thorcollective.com/p/the-peak-threat-hunting-template
- Pyramid of Pain: https://detect-respond.blogspot.com/2013/03/the-pyramid-of-pain.html
- Sysmon Event ID 10 Documentation: https://docs.microsoft.com/en-us/sysinternals/downloads/sysmon