Protections des identifiants Windows
Tip
Apprenez et pratiquez le hacking AWS :
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP :HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- VĂ©rifiez les plans dâabonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépÎts github.
WDigest
Le protocole WDigest, introduit avec Windows XP, est conçu pour lâauthentification via le protocole HTTP et est activĂ© par dĂ©faut sur Windows XP jusquâĂ Windows 8.0 et sur Windows Server 2003 Ă Windows Server 2012. Ce rĂ©glage par dĂ©faut entraĂźne le stockage des mots de passe en clair dans LSASS (Local Security Authority Subsystem Service). Un attaquant peut utiliser Mimikatz pour extraire ces identifiants en exĂ©cutant :
sekurlsa::wdigest
Pour activer ou dĂ©sactiver cette fonctionnalitĂ©, les clĂ©s de registre UseLogonCredential et Negotiate situĂ©es dans HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\WDigest doivent ĂȘtre dĂ©finies sur â1â. Si ces clĂ©s sont absentes ou dĂ©finies sur â0â, WDigest est dĂ©sactivĂ© :
reg query HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential
LSA Protection (PP & PPL protected processes)
Protected Process (PP) et Protected Process Light (PPL) sont des protections au niveau noyau de Windows conçues pour empĂȘcher lâaccĂšs non autorisĂ© Ă des processus sensibles comme LSASS. Introduit dans Windows Vista, le modĂšle PP a Ă©tĂ© créé Ă lâorigine pour lâapplication du DRM et ne permettait de protĂ©ger que des binaires signĂ©s avec un certificat mĂ©dia spĂ©cial. Un processus marquĂ© PP ne peut ĂȘtre accĂ©dĂ© que par dâautres processus Ă©galement PP et ayant un niveau de protection Ă©gal ou supĂ©rieur, et encore, seulement avec des droits dâaccĂšs limitĂ©s sauf autorisation explicite.
PPL, introduit dans Windows 8.1, est une version plus flexible de PP. Il permet des cas dâutilisation plus larges (p.ex. LSASS, Defender) en introduisant des « niveaux de protection » basĂ©s sur le champ EKU (Enhanced Key Usage) de la signature numĂ©rique. Le niveau de protection est stockĂ© dans le champ EPROCESS.Protection, qui est une structure PS_PROTECTION contenant :
- Type (
ProtectedorProtectedLight) - Signer (p.ex.
WinTcb,Lsa,Antimalware, etc.)
Cette structure est empaquetée dans un seul octet et détermine qui peut accéder à qui :
- Les signers de valeur plus élevée peuvent accéder aux signers de valeur plus faible
- Les PPL ne peuvent pas accéder aux PP
- Les processus non protégés ne peuvent accéder à aucun PPL/PP
Ce que vous devez savoir dâun point de vue offensif
- Quand LSASS sâexĂ©cute en tant que PPL, les tentatives de lâouvrir via
OpenProcess(PROCESS_VM_READ | QUERY_INFORMATION)depuis un contexte administrateur normal Ă©chouent avec0x5 (Access Denied), mĂȘme siSeDebugPrivilegeest activĂ©. - Vous pouvez vĂ©rifier le niveau de protection de LSASS en utilisant des outils comme Process Hacker ou programmaticalement en lisant la valeur
EPROCESS.Protection. - LSASS aura typiquement
PsProtectedSignerLsa-Light(0x41), qui ne peut ĂȘtre accĂ©dĂ© que par des processus signĂ©s avec un signer de niveau supĂ©rieur, commeWinTcb(0x61ou0x62). - PPL est une restriction uniquement au niveau Userland ; le code cĂŽtĂ© kernel peut la contourner complĂštement.
- Le fait que LSASS soit en PPL nâempĂȘche pas le credential dumping si vous pouvez exĂ©cuter du kernel shellcode ou tirer parti dâun processus fortement privilĂ©giĂ© avec les accĂšs appropriĂ©s.
- Activer ou dĂ©sactiver PPL nĂ©cessite un redĂ©marrage ou des rĂ©glages Secure Boot/UEFI, ce qui peut rendre la configuration PPL persistante mĂȘme aprĂšs lâannulation des changements de registre.
Create a PPL process at launch (documented API)
Windows expose une mĂ©thode documentĂ©e pour demander un niveau Protected Process Light pour un processus enfant lors de sa crĂ©ation en utilisant la extended startup attribute list. Cela ne contourne pas les exigences de signature â lâimage cible doit ĂȘtre signĂ©e pour la classe de signer demandĂ©e.
Minimal flow in C/C++:
// Request a PPL protection level for the child process at creation time
// Requires Windows 8.1+ and a properly signed image for the selected level
#include <windows.h>
int wmain(int argc, wchar_t **argv) {
STARTUPINFOEXW si = {0};
PROCESS_INFORMATION pi = {0};
si.StartupInfo.cb = sizeof(si);
SIZE_T attrSize = 0;
InitializeProcThreadAttributeList(NULL, 1, 0, &attrSize);
si.lpAttributeList = (PPROC_THREAD_ATTRIBUTE_LIST)HeapAlloc(GetProcessHeap(), 0, attrSize);
if (!si.lpAttributeList) return 1;
if (!InitializeProcThreadAttributeList(si.lpAttributeList, 1, 0, &attrSize)) return 1;
DWORD level = PROTECTION_LEVEL_ANTIMALWARE_LIGHT; // or WINDOWS_LIGHT/LSA_LIGHT/WINTCB_LIGHT
if (!UpdateProcThreadAttribute(
si.lpAttributeList, 0,
PROC_THREAD_ATTRIBUTE_PROTECTION_LEVEL,
&level, sizeof(level), NULL, NULL)) {
return 1;
}
DWORD flags = EXTENDED_STARTUPINFO_PRESENT;
if (!CreateProcessW(L"C\\Windows\\System32\\notepad.exe", NULL, NULL, NULL, FALSE,
flags, NULL, NULL, &si.StartupInfo, &pi)) {
// If the image isn't signed appropriately for the requested level,
// CreateProcess will fail with ERROR_INVALID_IMAGE_HASH (577).
return 1;
}
// cleanup
DeleteProcThreadAttributeList(si.lpAttributeList);
HeapFree(GetProcessHeap(), 0, si.lpAttributeList);
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
return 0;
}
Notes et contraintes:
- Utiliser
STARTUPINFOEXavecInitializeProcThreadAttributeListetUpdateProcThreadAttribute(PROC_THREAD_ATTRIBUTE_PROTECTION_LEVEL, ...), puis passerEXTENDED_STARTUPINFO_PRESENTĂCreateProcess*. - Le DWORD de protection peut ĂȘtre dĂ©fini sur des constantes telles que
PROTECTION_LEVEL_WINTCB_LIGHT,PROTECTION_LEVEL_WINDOWS,PROTECTION_LEVEL_WINDOWS_LIGHT,PROTECTION_LEVEL_ANTIMALWARE_LIGHT, orPROTECTION_LEVEL_LSA_LIGHT. - Le processus enfant ne démarre en tant que PPL que si son image est signée pour cette classe de signataire ; sinon la création du processus échoue, généralement avec
ERROR_INVALID_IMAGE_HASH (577)/STATUS_INVALID_IMAGE_HASH (0xC0000428). - Il ne sâagit pas dâun contournement â câest une API prise en charge destinĂ©e aux images correctement signĂ©es. Utile pour durcir des outils ou valider des configurations protĂ©gĂ©es par PPL.
Example CLI using a minimal loader:
- Signataire Antimalware:
CreateProcessAsPPL.exe 3 C:\Tools\agent.exe --svc - Signataire LSA-light:
CreateProcessAsPPL.exe 4 C:\Windows\System32\notepad.exe
Options pour contourner les protections PPL :
Si vous voulez dump LSASS malgré PPL, vous avez 3 options principales :
- Use a signed kernel driver (e.g., Mimikatz + mimidrv.sys) to remove LSASSâs protection flag:

- Bring Your Own Vulnerable Driver (BYOVD) pour exécuter du code kernel personnalisé et désactiver la protection. Des outils comme PPLKiller, gdrv-loader, ou kdmapper rendent cela faisable.
- Steal an existing LSASS handle depuis un autre processus qui lâa ouvert (ex., un processus AV), puis le dupliquer dans votre processus. Ceci est la base de la technique
pypykatz live lsa --method handledup. - Abuser dâun processus privilĂ©giĂ© qui vous permettra de charger du code arbitraire dans son espace dâadressage ou dans celui dâun autre processus privilĂ©giĂ©, contournant ainsi les restrictions PPL. Vous pouvez consulter un exemple de ceci dans bypassing-lsa-protection-in-userland or https://github.com/itm4n/PPLdump.
VĂ©rifier lâĂ©tat actuel de la protection LSA (PPL/PP) pour LSASS:
reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA /v RunAsPPL
When you running mimikatz privilege::debug sekurlsa::logonpasswords itâll probably fail with the error code 0x00000005 becasue of this.
- Pour plus dâinformations sur cette vĂ©rification https://itm4n.github.io/lsass-runasppl/
Credential Guard
Credential Guard, une fonctionnalitĂ© exclusive Ă Windows 10 (Enterprise and Education editions), renforce la sĂ©curitĂ© des identifiants machine en utilisant Virtual Secure Mode (VSM) et Virtualization Based Security (VBS). Il exploite les extensions de virtualisation CPU pour isoler les processus clĂ©s dans un espace mĂ©moire protĂ©gĂ©, hors de portĂ©e du systĂšme dâexploitation principal. Cette isolation garantit que mĂȘme le kernel ne peut accĂ©der Ă la mĂ©moire dans le VSM, protĂ©geant ainsi efficacement les identifiants contre des attaques comme pass-the-hash. Le Local Security Authority (LSA) fonctionne dans cet environnement sĂ©curisĂ© en tant que trustlet, tandis que le processus LSASS dans lâOS principal agit uniquement comme un communicateur avec le LSA du VSM.
Par dĂ©faut, Credential Guard nâest pas actif et nĂ©cessite une activation manuelle au sein dâune organisation. Il est essentiel pour renforcer la sĂ©curitĂ© contre des outils comme Mimikatz, qui se trouvent limitĂ©s dans leur capacitĂ© Ă extraire les identifiants. Cependant, des vulnĂ©rabilitĂ©s peuvent encore ĂȘtre exploitĂ©es par lâajout de Security Support Providers (SSP) personnalisĂ©s pour capturer les identifiants en clair lors des tentatives de connexion.
Pour vĂ©rifier lâĂ©tat dâactivation de Credential Guard, la clĂ© de registre LsaCfgFlags sous HKLM\System\CurrentControlSet\Control\LSA peut ĂȘtre inspectĂ©e. Une valeur de â1â indique une activation avec UEFI lock, â2â sans lock, et â0â signifie quâil nâest pas activĂ©. Cette vĂ©rification du registre, bien quâĂ©tant un indicateur fort, nâest pas la seule Ă©tape pour activer Credential Guard. Des instructions dĂ©taillĂ©es et un script PowerShell pour activer cette fonctionnalitĂ© sont disponibles en ligne.
reg query HKLM\System\CurrentControlSet\Control\LSA /v LsaCfgFlags
Pour une comprĂ©hension complĂšte et des instructions sur lâactivation de Credential Guard dans Windows 10 et son activation automatique dans les systĂšmes compatibles de Windows 11 Enterprise and Education (version 22H2), consultez Microsoftâs documentation.
Des dĂ©tails supplĂ©mentaires sur lâimplĂ©mentation de custom SSPs pour la capture dâidentifiants sont fournis dans this guide.
RDP RestrictedAdmin Mode
Windows 8.1 and Windows Server 2012 R2 ont introduit plusieurs nouvelles fonctionnalités de sécurité, dont le Restricted Admin mode for RDP. Ce mode a été conçu pour renforcer la sécurité en atténuant les risques associés aux attaques pass the hash.
Traditionnellement, lorsque vous vous connectez Ă un ordinateur distant via RDP, vos identifiants sont stockĂ©s sur la machine cible. Cela reprĂ©sente un risque de sĂ©curitĂ© important, surtout lorsque vous utilisez des comptes avec des privilĂšges Ă©levĂ©s. Toutefois, avec lâintroduction du Restricted Admin mode, ce risque est fortement rĂ©duit.
Lorsque vous initiez une connexion RDP en utilisant la commande mstsc.exe /RestrictedAdmin, lâauthentification auprĂšs de lâordinateur distant est effectuĂ©e sans stocker vos identifiants dessus. Cette approche garantit que, en cas dâinfection par un malware ou si un utilisateur malveillant accĂšde au serveur distant, vos identifiants ne sont pas compromis, car ils ne sont pas stockĂ©s sur le serveur.
Il est important de noter que dans le Restricted Admin mode, les tentatives dâaccĂšs aux ressources rĂ©seau depuis la session RDP nâutiliseront pas vos identifiants personnelsâŻ; câest plutĂŽt lâidentitĂ© de la machine qui est utilisĂ©e.
Cette fonctionnalité représente une avancée importante pour sécuriser les connexions Remote Desktop et protéger les informations sensibles contre une exposition en cas de faille de sécurité.

Pour plus dâinformations dĂ©taillĂ©es, visitez this resource.
Cached Credentials
Windows sĂ©curise les domain credentials via la Local Security Authority (LSA), en prenant en charge les processus de logon avec des protocoles de sĂ©curitĂ© comme Kerberos et NTLM. Une caractĂ©ristique clĂ© de Windows est sa capacitĂ© Ă mettre en cache les dix derniĂšres connexions de domaine pour sâassurer que les utilisateurs peuvent toujours accĂ©der Ă leurs ordinateurs mĂȘme si le domain controller est hors ligne â trĂšs utile pour les utilisateurs de laptops souvent hors du rĂ©seau de lâentreprise.
Le nombre de connexions en cache est réglable via une clé de registre spécifique ou une stratégie de groupe. Pour afficher ou modifier ce paramÚtre, la commande suivante est utilisée :
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\WINLOGON" /v CACHEDLOGONSCOUNT
LâaccĂšs Ă ces identifiants mis en cache est strictement contrĂŽlĂ©, seul le compte SYSTEM disposant des autorisations nĂ©cessaires pour les consulter. Les administrateurs qui doivent accĂ©der Ă ces informations doivent le faire avec les privilĂšges de lâutilisateur SYSTEM. Les identifiants sont stockĂ©s Ă : HKEY_LOCAL_MACHINE\SECURITY\Cache
Mimikatz peut ĂȘtre utilisĂ© pour extraire ces identifiants mis en cache en exĂ©cutant la commande lsadump::cache.
Pour plus de détails, la source originale fournit des informations complÚtes.
Protected Users
Lâappartenance au groupe Protected Users apporte plusieurs amĂ©liorations de sĂ©curitĂ© pour les utilisateurs, garantissant un niveau de protection plus Ă©levĂ© contre le vol et lâabus dâidentifiants :
- Credential Delegation (CredSSP) : MĂȘme si le paramĂštre de stratĂ©gie de groupe Allow delegating default credentials est activĂ©, les identifiants en clair des Protected Users ne seront pas mis en cache.
- Windows Digest : à partir de Windows 8.1 et Windows Server 2012 R2, le systÚme ne mettra pas en cache les identifiants en clair des Protected Users, indépendamment du statut de Windows Digest.
- NTLM : Le systĂšme ne mettra pas en cache les identifiants en clair des Protected Users ni les fonctions Ă sens unique NT (NTOWF).
- Kerberos : Pour les Protected Users, lâauthentification Kerberos ne gĂ©nĂ©rera pas de clĂ©s DES ou RC4, et ne mettra pas en cache les identifiants en clair ni les clĂ©s Ă long terme au-delĂ de lâacquisition initiale du Ticket-Granting Ticket (TGT).
- Offline Sign-In : Les Protected Users nâauront pas de vĂ©rificateur mis en cache créé lors de la connexion ou du dĂ©verrouillage, ce qui signifie que la connexion hors ligne nâest pas prise en charge pour ces comptes.
Ces protections sont activĂ©es dĂšs quâun utilisateur membre du groupe Protected Users se connecte Ă lâappareil. Cela garantit que des mesures de sĂ©curitĂ© critiques sont en place pour se prĂ©munir contre diverses mĂ©thodes de compromission des identifiants.
Pour des informations plus détaillées, consultez la documentation officielle.
Table from the docs.
| Windows Server 2003 RTM | Windows Server 2003 SP1+ |
Windows Server 2012, | Windows Server 2016 |
|---|---|---|---|
| Account Operators | Account Operators | Account Operators | Account Operators |
| Administrator | Administrator | Administrator | Administrator |
| Administrators | Administrators | Administrators | Administrators |
| Backup Operators | Backup Operators | Backup Operators | Backup Operators |
| Cert Publishers | |||
| Domain Admins | Domain Admins | Domain Admins | Domain Admins |
| Domain Controllers | Domain Controllers | Domain Controllers | Domain Controllers |
| Enterprise Admins | Enterprise Admins | Enterprise Admins | Enterprise Admins |
| Enterprise Key Admins | |||
| Key Admins | |||
| Krbtgt | Krbtgt | Krbtgt | Krbtgt |
| Print Operators | Print Operators | Print Operators | Print Operators |
| Read-only Domain Controllers | Read-only Domain Controllers | ||
| Replicator | Replicator | Replicator | Replicator |
| Schema Admins | Schema Admins | Schema Admins | Schema Admins |
| Server Operators | Server Operators | Server Operators | Server Operators |
References
- CreateProcessAsPPL â minimal PPL process launcher
- STARTUPINFOEX structure (Win32 API)
- InitializeProcThreadAttributeList (Win32 API)
- UpdateProcThreadAttribute (Win32 API)
- LSASS RunAsPPL â background and internals
Tip
Apprenez et pratiquez le hacking AWS :
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP :HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- VĂ©rifiez les plans dâabonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépÎts github.


