绕过Credential Guard 读取明文凭据

admin 2023年12月21日07:27:19评论21 views字数 2043阅读6分48秒阅读模式
绕过Credential Guard 读取明文凭据

Tips +1

绕过Credential Guard 读取明文凭据

前言

Windows 10 之前,Lsass 将操作系统所使用的密码存储在其进程内存中

当我们获取到机器权限后,经常使用Mimikatz在机器上获取各种凭证,包括明文密码,NTLM哈希和Kerberos票证。这些操作都是通过从LSASS进程内存中转储凭据的。

但是后来微软引入了 Windows Defender Credential Guard 这一概念,当Windows Defender Credential Guard 启动之后,LSASS进程内存隔离来保护这些凭证。

于是后续产生了绕过Windows Defender Credential Guard 来破坏对于lsass进程内存的保护,从而进一步提取内存凭证

具体的进程隔离描述可以参考微软官方提供的效果图:

绕过Credential Guard 读取明文凭据

Credential Guard 的工作原理

https://learn.microsoft.com/zh-CN/windows/security/identity-protection/credential-guard/how-it-works

Credential Guard 保护限制

绕过Credential Guard 读取明文凭据

如何开启Credential Guard

https://learn.microsoft.com/zh-cn/windows/security/identity-protection/credential-guard/configure?tabs=intune

攻击者通过Lsass进程的内存空间,可以 Widows 凭据,而微软为保护进程不被获取,在 Windows 10、Windows Server 2016 及以上的版本中添加了 Credential Guard 这解决方案。。在 Windows 10、Windows Server 2016 中 Credential Guard 需要手动开启,而在 Windows 企业版 22H2 和 Windows 11 教育版 22H2 之后的版本中 Credential Guard 会自动运行。

在启用 Credential Guard 之前,所使用的凭据将会被保存在 Lsass 进程内存中。启用Credential Guard 之后,所使用的凭据将会被保存在一个新的 Lsass 进程中,该进程存储的内容使用基于虚拟化的安全策略进行保护,而原来的 Lsass 进程会与被保护的 Lsass 进行通信以获取凭据。

开启 Credential Guard 需要满足以下几个前提条件

  • 系统必须为企业版的 Windows 10 或 Windows 11
  • 当前计算机 CPU 支持虚拟化 (Hyper-V)。
gpedit.msc-> 计算机配置->管理模板->系统->Device Guard->打开基于虚拟化的安全

绕过Credential Guard 读取明文凭据

绕过Credential Guard 读取明文凭据

设置完可以使用msinfo32查看是否开启成功。

绕过Credential Guard 读取明文凭据

开启后无法查看明文凭据

绕过Credential Guard 读取明文凭据

利用Mimikatz 绕过Credential Guard

mimikatz 无法直接获取受Credential Guard 保护的凭据,但是我们可以通过注入SSP的方法来记录用户输入的凭据。

利用过程

1、在mimikatz 中执行如下命令,向内存注入新的SSP来记录用户输入的凭据。

privilege::debug
misc::memssp

返回Injected =) 则说明注入成功。接下来登录的凭证则会被记录到C:WindowsSystem32mimilsa.log 文件中。

绕过Credential Guard 读取明文凭据

2、等待用户登录之后,成功获取账号密码

绕过Credential Guard 读取明文凭据

利用WDigest 绕过Credential Guard

Lsass 进程所加载的wdigest.dll 内有两个变量,分别是g_fParameter_userLogonCredential 和g_IsCredGuardEnabled。其中g_fParameter_userLogonCredential 变量用来判断是否将明文密码存入内存中。作用类似于注册表HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest 中的UseLogonCredential项。g_IsCredGuardEnabled项用来判断模块内Windows Defender Credential Guard 的状态。修改内存中的这两个变量的值,即可达到关闭Credential Guard 并开启WDigest 的效果。

但是这里需要注意的是绕过程序执行后并不能直接获取明文密码,因为本来的lsass进程中并没有保存明文凭据,所以还是需要用户再次登录后才可以获取明文凭据。

利用过程

1、执行bypassCredGuard,需要管理员权限执行

项目地址:https://github.com/wh0amitz/BypassCredGuard

绕过Credential Guard 读取明文凭据

2、我们使用runas 模拟登录后,成功获取明文密码

绕过Credential Guard 读取明文凭据

绕过Credential Guard 读取明文凭据

参考资料:https://xz.aliyun.com/t/12097
https://www.wangan.com/p/11v71d048dc77a4b《ATT&CK视角下的红蓝对抗实》

End

原文始发于微信公众号(贝雷帽SEC):绕过Credential Guard 读取明文凭据

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月21日07:27:19
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   绕过Credential Guard 读取明文凭据http://cn-sec.com/archives/2322631.html

发表评论

匿名网友 填写信息