Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
NativeBypassCredGuard — 绕过 Credential Guard,仅通过修补 WDigest.dll 并使用 NTAPI 函数实现。 | Kitploit
工具/GitHubGitHub/ricardojoserf/nativebypasscredguard
密码攻击IDS/IPS规避后渗透利用红队
GitHubricardojoserf/nativebypasscredguard

NativeBypassCredGuard

绕过 Credential Guard,仅通过修补 WDigest.dll 并使用 NTAPI 函数实现。

查看仓库网站
270341年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

NativeBypassCredGuard

NativeBypassCredGuard 是一款通过仅使用 NTAPI 函数(由 ntdll.dll 导出)修补 WDigest.dll 来绕过 Credential Guard 的工具。它提供两种版本:C# 和 C++。

该工具在磁盘上的 WDigest.dll 文件中定位模式 "39 ?? ?? ?? ?? 00 8b ?? ?? ?? ?? 00"(如参考资料部分的第一篇文章所述,该模式在所有 Windows 版本的这个文件中都存在),然后计算所需的内存地址,最后修补 WDigest.dll 中两个变量的值:g_fParameter_UseLogonCredential(设为 1)和 g_IsCredGuardEnabled(设为 0)。

这会强制在内存中以明文形式存储凭据,确保从此刻起,用户每次登录时凭据都会以明文存储。因此,下次转储 LSASS 进程时,其中可能包含明文密码。

所使用的 NTAPI 函数如下:

poc

  • NtOpenProcessToken 和 NtAdjustPrivilegesToken 用于启用 SeDebugPrivilege 权限
  • NtCreateFile 和 NtReadFile 用于打开磁盘上 DLL 文件的句柄并读取其字节
  • NtGetNextProcess 和 NtQueryInformationProcess 用于获取 lsass 进程的句柄
  • NtReadVirtualMemory 和 NtQueryInformationProcess 用于获取 WDigest.dll 的基地址
  • NtReadVirtualMemory 用于读取变量的值
  • NtWriteProcessMemory 用于向变量写入新值

通过仅使用 NTAPI 函数,可以重新映射 ntdll.dll 库以绕过用户模式挂钩和安全机制,这是该工具的一项可选功能。如果使用该功能,将从以挂起模式创建的进程中获取一份干净的 ntdll.dll。


用法

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

选项(必填):

  • check:读取当前值
  • patch:写入新值

重新映射 ntdll(可选):

  • true:重新映射 ntdll 库
  • false(或省略):不重新映射 ntdll 库

示例

读取值(不重新映射 ntdll):

root@kitploit:~
NativeBypassCredGuard.exe check

img1

修补值(重新映射 ntdll):

root@kitploit:~
NativeBypassCredGuard.exe patch true

img2


注意事项

  • 该工具面向 64 位系统设计,因此必须编译为 64 位二进制文件

  • 如果无法打开 lsass 的句柄,或者无法读取 PEB 结构,该工具将无法正常工作。对于后一种情况,你可以选择使用 kernel32!LoadLibrary 在你的进程中加载 WDigest.dll 以获取其基地址,而不是使用 ntdll!NtReadVirtualMemory 和 ntdll!NtQueryInformationProcess 从 lsass 进程中获取(C 版本中有实现此功能的代码,但已被注释)。但这样做你会使用一个并非由 ntdll.dll 导出、而是由 kernel32.dll 导出的函数,而且一个进程加载该 DLL 可能会显得很奇怪 :)

  • 0x3rhy 已基于此项目创建了一个 BOF 文件:BypassCredGuard-BOF


参考资料

  • 重新审视 Credential Guard 绕过 ,作者 itm4n —— 一篇非常出色的分析文章,我从中获取了用于搜索 DLL .text 节的模式

  • WDigest:从坟墓中挖出死者 ,作者 neuralhax —— 一篇令人惊叹的博客,证明了可以为 g_fParameter_UseLogonCredential 使用其他值。我还没有测试过,但你可以试试修改 useLogonCredential_Value 变量

  • 探索 Mimikatz - 第 1 部分 - WDigest ,作者 xpn —— 一篇非常精彩的博客文章,对 WDigest 凭据缓存进行了逆向分析和讲解

下载工具