Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
NativeBypassCredGuard — Contourner Credential Guard en patchant WDigest.dll en utilisant uniquement les fonctions NTAPI | Kitploit
Outils/GitHubGitHub/ricardojoserf/nativebypasscredguard
Attaques de Mots de PasseÉvasion IDS/IPSPost-ExploitationRed Teaming
GitHubricardojoserf/nativebypasscredguard

NativeBypassCredGuard

Contourner Credential Guard en patchant WDigest.dll en utilisant uniquement les fonctions NTAPI

Voir le dépôt

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Site web
27034il y a 1 anVérifié par Kitploit

NativeBypassCredGuard

NativeBypassCredGuard est un outil conçu pour contourner Credential Guard en patchant WDigest.dll en utilisant uniquement des fonctions NTAPI (exportées par ntdll.dll). Il est disponible en deux déclinaisons : C# et C++.

L'outil localise le motif "39 ?? ?? ?? ?? 00 8b ?? ?? ?? ?? 00" dans le fichier WDigest.dll sur disque (comme expliqué dans le premier article de la section Références, le motif est présent dans ce fichier sur toutes les versions de Windows), puis calcule les adresses mémoire nécessaires, et finalement patch la valeur de deux variables dans WDigest.dll : g_fParameter_UseLogonCredential (à 1) et g_IsCredGuardEnabled (à 0).

Cela force le stockage des identifiants en clair en mémoire, garantissant qu'à partir de ce moment les identifiants sont stockés en clair à chaque connexion des utilisateurs. Par conséquent, la prochaine fois que le processus LSASS sera dumpé, il pourra contenir des mots de passe en clair.

Les fonctions NTAPI utilisées sont :

poc

  • NtOpenProcessToken et NtAdjustPrivilegesToken pour activer le privilège SeDebugPrivilege
  • NtCreateFile et NtReadFile pour ouvrir un handle sur le fichier DLL sur disque et lire ses octets
  • NtGetNextProcess et NtQueryInformationProcess pour obtenir un handle sur le processus lsass
  • NtReadVirtualMemory et NtQueryInformationProcess pour obtenir l'adresse de base de WDigest.dll
  • NtReadVirtualMemory pour lire les valeurs des variables
  • NtWriteProcessMemory pour écrire de nouvelles valeurs dans les variables

En utilisant uniquement des fonctions NTAPI, il est possible de remapper la bibliothèque ntdll.dll pour contourner les hooks en mode utilisateur et les mécanismes de sécurité, ce qui est une fonctionnalité optionnelle de l'outil. Si elle est utilisée, une version propre de ntdll.dll est obtenue à partir d'un processus créé en mode suspendu.


Utilisation

root@kitploit:~
NativeBypassCredGuard.exe <OPTION> <REMAP-NTDLL>

Option (requise) :

  • check : Lire les valeurs actuelles
  • patch : Écrire les nouvelles valeurs

Remap ntdll (optionnel) :

  • true : Remapper la bibliothèque ntdll
  • false (ou omis) : Ne pas remapper la bibliothèque ntdll

Exemples

Lire les valeurs (sans remappage de ntdll) :

root@kitploit:~
NativeBypassCredGuard.exe check

img1

Modifier les valeurs (avec remappage de ntdll) :

root@kitploit:~
NativeBypassCredGuard.exe patch true

img2


Remarques

  • L'outil est conçu pour les systèmes 64 bits, il doit donc être compilé en binaire 64 bits

  • Il ne fonctionnera pas s'il est impossible d'ouvrir un handle sur lsass ou si la structure PEB n'est pas lisible. Concernant ce dernier point, vous pouvez opter pour l'utilisation de kernel32!LoadLibrary pour charger WDigest.dll dans votre processus afin d'obtenir son adresse de base, plutôt que d'utiliser ntdll!NtReadVirtualMemory et ntdll!NtQueryInformationProcess pour l'obtenir depuis le processus lsass (le code pour cela est commenté dans la version C). Mais vous utiliseriez alors une fonction non exportée par ntdll.dll mais par kernel32.dll, et il est probablement étrange qu'un processus charge cette DLL :)

  • 0x3rhy a créé un fichier BOF basé sur ce projet : BypassCredGuard-BOF


Références

  • Revisiting a Credential Guard Bypass par itm4n - Une excellente analyse d'où j'ai tiré le motif pour rechercher la section .text de la DLL

  • WDigest: Digging the dead from the grave par neuralhax - Un blog incroyable qui prouve qu'il est possible d'utiliser d'autres valeurs pour g_fParameter_UseLogonCredential, je ne l'ai pas encore testé mais vous pouvez jouer avec la variable useLogonCredential_Value

  • Exploring Mimikatz - Part 1 - WDigest par xpn - Un superbe article de blog sur la rétro-ingénierie et l'explication de la mise en cache des identifiants WDigest

Télécharger l’outil