Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
NativeBypassCredGuard — Evade Credential Guard parcheando WDigest.dll utilizando únicamente funciones NTAPI | Kitploit
Herramientas/GitHubGitHub/ricardojoserf/nativebypasscredguard
Ataques de ContraseñasEvasión de IDS/IPSPost-ExplotaciónRed Teaming
GitHubricardojoserf/nativebypasscredguard

NativeBypassCredGuard

Evade Credential Guard parcheando WDigest.dll utilizando únicamente funciones NTAPI

Ver Repositorio

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Sitio web
27034hace 1 añoRevisado por Kitploit

NativeBypassCredGuard

NativeBypassCredGuard es una herramienta diseñada para eludir Credential Guard parcheando WDigest.dll utilizando únicamente funciones NTAPI (exportadas por ntdll.dll). Está disponible en dos variantes: C# y C++.

La herramienta localiza el patrón "39 ?? ?? ?? ?? 00 8b ?? ?? ?? ?? 00" en el archivo WDigest.dll en disco (como se explica en el primer artículo de la sección Referencias, el patrón está presente en este archivo en todas las versiones de Windows), luego calcula las direcciones de memoria necesarias y, finalmente, parchea el valor de dos variables dentro de WDigest.dll: g_fParameter_UseLogonCredential (a 1) y g_IsCredGuardEnabled (a 0).

Esto fuerza el almacenamiento de credenciales en texto plano en memoria, asegurando que a partir de ese momento las credenciales se almacenen en texto claro cada vez que los usuarios inicien sesión. Como resultado, la próxima vez que se vuelque el proceso LSASS, este puede contener contraseñas en texto plano.

Las funciones NTAPI utilizadas son:

poc

  • NtOpenProcessToken y NtAdjustPrivilegesToken para habilitar el privilegio SeDebugPrivilege
  • NtCreateFile y NtReadFile para abrir un identificador al archivo DLL en disco y leer sus bytes
  • NtGetNextProcess y NtQueryInformationProcess para obtener un identificador al proceso lsass
  • NtReadVirtualMemory y NtQueryInformationProcess para obtener la dirección base de WDigest.dll
  • NtReadVirtualMemory para leer los valores de las variables
  • NtWriteProcessMemory para escribir nuevos valores en las variables

Utilizando únicamente funciones NTAPI, es posible reasignar la librería ntdll.dll para eludir los hooks en modo usuario y los mecanismos de seguridad, lo cual es una característica opcional de la herramienta. Si se utiliza, se obtiene una versión limpia de ntdll.dll de un proceso creado en modo suspendido.


Uso

root@kitploit:~
NativeBypassCredGuard.exe <OPCIÓN> <REMAP-NTDLL>

Opción (obligatoria):

  • check: Leer los valores actuales
  • patch: Escribir nuevos valores

Remap ntdll (opcional):

  • true: Reasignar la librería ntdll
  • false (u omitido): No reasignar la librería ntdll

Ejemplos

Leer valores (sin reasignación de ntdll):

root@kitploit:~
NativeBypassCredGuard.exe check

img1

Parchear valores (con reasignación de ntdll):

root@kitploit:~
NativeBypassCredGuard.exe patch true

img2


Notas

  • La herramienta está diseñada para sistemas de 64 bits, por lo que debe compilarse como un binario de 64 bits

  • No funcionará si no es posible abrir un identificador a lsass o si la estructura PEB no es legible. Con respecto a esto último, puedes optar por usar kernel32!LoadLibrary para cargar WDigest.dll en tu proceso y obtener su dirección base, en lugar de usar ntdll!NtReadVirtualMemory y ntdll!NtQueryInformationProcess para obtenerla del proceso lsass (tienes el código para esto comentado en la versión C). Pero estarías usando una función que no exporta ntdll.dll sino kernel32.dll, y probablemente sea extraño que un proceso cargue esa DLL :)

  • 0x3rhy ha creado un archivo BOF basado en este proyecto: BypassCredGuard-BOF


Referencias

  • Revisiting a Credential Guard Bypass por itm4n - Un gran análisis del cual tomé el patrón para buscar en la sección .text de la DLL

  • WDigest: Digging the dead from the grave por neuralhax - Un blog increíble que demuestra que es posible usar otros valores para g_fParameter_UseLogonCredential, aún no lo he probado pero puedes jugar con la variable useLogonCredential_Value

  • Exploring Mimikatz - Part 1 - WDigest por xpn - Fantástico artículo de blog que explica e ingenia ingeniería inversa sobre el almacenamiento en caché de credenciales de WDigest

Descargar herramienta