通过修补 Wdigest 内存绕过 Credential Guard
作者:Sec-Labs | 发布时间:
项目地址
https://github.com/wh0nsq/BypassCredGuard
相关文章
《从 Wdigest 重温 Credential Guard 绕过》
BypassCredGuard - 通过修补 Wdigest 内存绕过 Credential Guard
背景
Adam Chester ( @_xpn_ ) 写了一篇名为“ 探索 Mimikatz - 第 1 部分 - WDigest ”的文章,内容是关于内存修补以启用 UseLogonCredential 并使 Wdigest 缓存明文凭据引起了我的兴趣。
LSASS进程加载的wdigest.dll模块有两个有趣的全局变量: g_fParameter_useLogonCredential 和 g_IsCredGuardEnabled ,它们的作用单从名字就不言而喻了,前者用来判断明文密码是否应该存入内存,后者持有模块内 Windows Defender Credential Guard 的状态,并且可以通过修补内存中这两个全局变量的值在具有 Credential Guard 的系统上启用 Wdigest 明文密码缓存。
更详细的分析,请阅读我的博客:《 Revisiting a Credential Guard Bypass From Wdigest 》
让我们看看它的实际效果
在启用了 Credential Guard 保护的系统上运行我们编写的 POC。 当用户再次输入用户名和密码登录时,我们又得到了他的明文密码,如下图所示。
BypassCredGuard.exe

提醒一句
事实上,早在 2020 年 8 月,Team Hydra( @N4k3dTurtl3 )就在博客上发表了一篇名为 “绕过 Credential Guard” 的文章,讨论了这个非常巧妙和简单的技巧,并简要发布了一个概念性的 CredGuard_PoC ,但它并不适用于所有 Windows系统。
Hydra 团队就此问题向 Microsoft 提交了一份报告,并收到了以下回复:
“调查此问题后,我们认为这不是 Credential Guard 绕过。Credential Guard 旨在保护启用该功能时缓存的凭据。如果特权用户禁用 Credential Guard,则该功能无法保护后续登录。我们“将更新我们的公共文档以澄清此行为”
鉴于此响应,我怀疑这将是在可预见的未来启用 Credential Guard 的系统上获取明文凭据的可靠方法。