Bypass LSA Protection&Credential Guard获取密码

2019-12-19 约 225 字 预计阅读 2 分钟

声明:本文 【Bypass LSA Protection&Credential Guard获取密码】 由作者 皮皮鲁 于 2019-12-19 09:52:24 首发 先知社区 曾经 浏览数 374 次

感谢 皮皮鲁 的辛苦付出!

在渗透过程中,获得一台windows机器权限之后,很重要一个环节就是抓密码。 但是在使用mimikatz抓取系统账号密码时,有时运维人员会开启一些防护措施,导致mimikatz抓取失败或异常。 本文主要几种mimikatz运行方式,来bypass LSA Protection 和Credential Guard获取密码。

Bypass LSA Protection

自Windows 8.1 开始为LSA提供了额外的保护(LSA Protection),以防止读取内存和不受保护的进程注入代码。保护模式要求所有加载到LSA的插件都必须使用Microsoft签名进行数字签名。 在LSA Protection保护模式下,mimikatz运行 sekurlsa::logonpasswords抓取密码会报错。

1) 开启 LSA Protection

测试环境:Windows 10 X64

可以通过注册表开启LSA Protection,注册表位置:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
新建-DWORD(32)值,名称为 RunAsPPL,数值为 00000001,然后重启系统生效。

REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v "RunAsPPL" /t REG_DWORD /d "00000001" /f

验证LSA是否以保护模式启动,查看系统日志,事件id为12-LSASS.exe作为受保护的进程启动:

2) LSA Protection运行下的sekurlsa::logonpasswords

在开启LSA Protection时,mimikatz运行 sekurlsa::logonpasswords会报错 “ERROR kuhl_m_sekurlsa_acquireLSA;Handle on memery”

mimikatz # privilege::debug
mimikatz # sekurlsa::logonpasswords

3) lsadump::sam bypass

mimikatz 运行 lsadump :: sam 从磁盘上的SAM读取凭据,可成功pypass LSA Protection,读取到用户哈希

mimikatz # privilege::debug
mimikatz # token::whoami
mimikatz # token::elevate
mimikatz # lsadump::sam

4) mimidrv.sys bypass

mimikatz其中的mimidrv.sys驱动程序,可从lsass.exe进程中删除LSA保护,成功pypass LSA Protection。

mimikatz # privilege::debug
mimikatz # !+
mimikatz # !processprotect /process:lsass.exe /remove

Bypass Credential Guard

在Windows 10和Windows Server 2016中,Microsoft启用Credential Guard(凭据防护),使用基于虚拟化技术来保护和隔离lsass进程,以保护凭证。启用Credential Guard后,lsass包含2个进程:正常LSA进程和隔离LSA进程(在VSM中运行)。

1) 开启Credential Guard

测试环境:Windows 10 X64

可以使用组策略启用Windows Defender凭据保护:
在组策略管理控制台中,在”计算机配置” -> “管理模板” -> “系统” -> “Device Guard”,打开”打开基于虚拟化的安全”,选择”已启用”;
在”选择平台安全级别”框中,选择”安全启动”或”安全启动和DMA保护”;
在”凭据保护配置”框中,选择”使用UEFI锁启用”。如果希望能够远程关闭Windows Defender Credential Guard,选择”无锁启用”。
运行gpupdate /force 强制执行组策略

验证Windows Defender Credential Guard是否运行:
输入msinfo32.exe,在 ”系统摘要”-> ”已配置基于虚拟化的安全服务”处,可看到显示”Credential Guard”

2) Credential Guard运行下的sekurlsa::logonpasswords

在开启Credential Guard时 mimikatz运行 sekurlsa::logonpasswords,经测试,可以抓到部分用户哈希,但是存在缺陷:1)抓取到的用户不全,有遗漏 2)抓不到密码明文

mimikatz # privilege::debug
mimikatz # sekurlsa::logonpasswords

只抓取其中一个用户lltest的哈希,缺失了用户lltest2,并且没有了之前的明文:

3 ) lsadump::sam bypass

mimikatz 运行 lsadump :: sam 从磁盘上的SAM读取凭据,可成功bypass Credential Guard,读取到全部的用户哈希

mimikatz # privilege::debug
mimikatz # token::whoami
mimikatz # token::elevate
mimikatz # lsadump::sam

新增抓到了用户lltest2的哈希:

4) misc::memssp bypass

SSP是参与用户身份验证的Microsoft软件包,如在用户登录时被调用,并接收该用户的凭据。在系统启动时SSP会被加载到进程lsass.exe中。

Mimikatz可通过内存安装自定义的ssp,修改lsass进程的内存,实现从lsass进程中提取凭据,mimikatz执行misc::memssp后,如果再输入了新的凭据(如用户锁屏后重新登录),将会在c:\windows\system32下生成文件mimilsa.log,其中保存有用户明文密码。

mimikatz # privilege::debug
mimikatz # misc::memssp


锁屏后,重新登陆,成功记录到用户密码明文:

补充:此外 还可以尝试mimikatz的 lsadump::secrets 从注册表中获取syskey信息来解密、以及PwDump7 、QuarksPwDump等工具来bypass LSA Protection和Credential Guard。

参考

https://docs.microsoft.com/en-us/windows-server/security/credentials-protection-and-management/configuring-additional-lsa-protection
https://docs.microsoft.com/en-us/windows/security/identity-protection/credential-guard/credential-guard-manage
https://blog.nviso.be/2018/01/09/windows-credential-guard-mimikatz/
https://medium.com/red-teaming-with-a-blue-team-mentaility/poking-around-with-2-lsass-protection-options-880590a72b1a
https://blogs.jpcert.or.jp/en/2016/10/verification-of-ad9d.html

关键词:[‘渗透测试’, ‘渗透测试’]


author

旭达网络

旭达网络技术博客,曾记录各种技术问题,一贴搞定.
本文采用知识共享署名 4.0 国际许可协议进行许可。

We notice you're using an adblocker. If you like our webite please keep us running by whitelisting this site in your ad blocker. We’re serving quality, related ads only. Thank you!

I've whitelisted your website.

Not now