Field Notes: Reconstructing the Attacker's LSASS Dump
DFIR.ch field notes on an incident where attackers used Ricardo J. Ruiz's TrickDump tool to dump LSASS without creating a conventional minidump file, instead leaving lock.json, shock.json, barrel.json and a ZIP of randomly-named memory-region chunks. The authors reconstructed the dump with TrickDump's create_dump.py and parsed it with pypykatz, confirming the attacker actually recovered reusable Kerberos credential material rather than just detecting that LSASS was touched. Includes hunting guidance (Sysmon EID 10 process-access telemetry, SeDebugPrivilege enablement, multi-binary workflows) and notes TrickDump fails against LSASS protected by PPL.
What it is
Field notes from DFIR.ch on an incident involving Ricardo J. Ruiz's TrickDump, a credential-dumping tool that avoids writing a conventional LSASS minidump to disk.
How it works
TrickDump splits the dump into three stages, which can run as separate executables: Lock collects OS version info via RtlGetVersion; Shock enables SeDebugPrivilege, locates LSASS, and gathers process/module info via NtGetNextProcess, NtQueryInformationProcess, and NtReadVirtualMemory; Barrel enables SeDebugPrivilege and walks LSASS's virtual address space, dumping committed memory regions not marked PAGE_NOACCESS via NtQueryVirtualMemory/NtReadVirtualMemory. Output is lock.json, shock.json, barrel.json plus a ZIP of hundreds of randomly-named files, each a raw memory-region chunk — barrel.json maps each chunk filename to its virtual address and size. TrickDump also supports .text-section overwriting of ntdll.dll (disk, knowndlls, debugproc techniques) to bypass user-mode API hooks.
flowchart LR
A[Lock: OS info] --> B[Shock: handle + modules]
B --> C[Barrel: dump memory regions]
C --> D[lock/shock/barrel.json + ZIP]
D -->|create_dump.py| E[recovered.dmp]
E -->|pypykatz| F[Extracted credentials]Preconditions / Affected
TrickDump does not work against LSASS protected by Protected Process Light (PPL) — this is stated as an important limitation.
What to do
To reconstruct and validate what an attacker actually recovered (rather than stopping at "LSASS was touched"), the author ran TrickDump's own reconstruction script on the recovered artifacts:
python3 create_dump.py \
-l trick/lock.json \
-s trick/shock.json \
-b trick/barrel.json \
-z trick/trick.zip \
-o recovered.dmpthen parsed the result with pypykatz lsa minidump recovered.dmp. In this incident that confirmed reusable Kerberos credential material was actually recoverable for a specific account.
Hunting guidance given:
- Look for lock.json, shock.json, barrel.json plus a ZIP of many randomly-named chunk files (default name barrel.zip) in staging directories.
- Monitor for unexpected processes obtaining LSASS handles with memory-read rights (Sysmon EID 10 / EDR process-access telemetry).
- Watch for up to three binaries in the same working directory, with Shock and Barrel accessing LSASS in close temporal proximity (Lock may be absent; an all-in-one "Trick" variant collapses the workflow into one process).
- Where telemetry allows, chain: SeDebugPrivilege enablement → extensive LSASS memory reads → creation of a ZIP with many memory-region entries.
Caveats
File-based detections relying on a recognizable lsass.dmp will miss this technique entirely since no conventional dump file is written on the victim host; the reconstruction step requires running create_dump.py offline on the recovered artifacts.
Organisations named here
- PPL
- Ricardo J. Ruiz
Technologies named here
- TrickDump
- LSASS
- create_dump.py
- pypykatz
- Sysmon
- Windows
- Mimikatz
- Kerberos
Techniques named here
- LSASS memory dumping without conventional minidump file
- ntdll.dll unhooking
- Offline reconstruction of LSASS minidump
Related in Blue Team & Detection
AI-Coded Malware | Analyzing Vibe-Coded AD Enumeration | Huntress
