mimikatz的原理,哪个补丁导致了mimikatz无法获取明文密码,如何绕过?
作者:互联网
讲在前面:
对于mimikatz的原理本文只通过简单的话语表述,并在文章后给出分析的思路和参考文章。对于绕过补丁,本文只对KB2871997补丁做阐述,并且犹豫对mimikatz的介绍文章非常之多,所以本文只取重点罗列,让读者能够简单快速的明白关键点,深入理解在文章后给出分析思路和参考文章。
mimikazt的原理
注意:本文对mimikatz获取lsass.exe进程中明文密码的原理做简单描述。
- 开发语言:C/C++。
- 开发初衷:深入学习Windows系统以及C/C++语言。
- 获取明文密码:
-
- mimikatz获取高权限【使用命令privilege::debug来获取高权限,从而可以读取进程内存获取明文密码】。
- 读取lsass.exe进程中存储的明文登录密码。
那个补丁导致了mimikatz无法获取明文密码,如何绕过?
解释:
KB2871997补丁的出现导致了mimikatz无法再获取到lsass.exe的明文密码,因为lsass.exe不保存明文密码了。
KB2871997补丁的特点
注意:安装了KB2871997补丁或者系统版本大于windows server 2012时,系统的内存不保存明文的密码。
- 支持受保护用户组
- Protected Users组是一个新的域全局安全组,所属用户会被强制要求使用Kerberos认证,可以避免PTH攻击。注意:真正影响PTH的因素是UAC。
- 远程桌面客户端支持 Restricted Admin RDP 模式
- 受限管理员模式能够避免发送明文,服务端也不会缓存用户凭据,但是这种方式也可以增加了新的攻击路径,即可以以pth的方式向远处桌面服务器发起认证。
- LSA 凭据清理和其他更改
- 从 LSASS 中删除明文凭据
- 用户注销后,凭据将始终从内存中清除
注意:不得不提到一个知识点Wdigest,本文不展开讲解此知识。注意以下知识点告诉了我们为什么可以绕过。
更新KB2871997补丁后,Wdigest Auth强制系统的内存不再保存明文口令,此时mimikatz无法获得系统的明文口令。
但是实际情况是一些系统服务(例如IIS的SSO身份验证)在运行的过程中需要Wdigest Auth开启,所以补丁采取了折中的办法——安装补丁后可选择是否禁用Wdigest Auth。
如果启用Wdigest Auth,内存中还是会保存系统的明文口令。
绕过的方式
修改注册表键值
将下列注册表路径的
HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest
以下项的
UseLogonCredential
值修改成0或1
0:关闭Wdigest Auth
1:启动Wdigest Auth
注意:
几乎所有文章都提到了修改注册表键值需要重启主机亦或者注销当前会话诱导用户再次登录。有文章指出再调试过程中【对mimikatz的代码中的g_fParameter_UseLogonCredential值进行修改,将其默认值0修改为1就可以完成获取明文密码了】
一些实验的文章:
讲在后面
mimikatz的原理分析可以从命令入手,作者在github上对于mimikatz的所有命令做了一个wiki,我们可以针对这些命令来进行深入分析,例如本文就是针对【sekurlsa::wdigest】命令做了一个简单的分析。
对mimikatz的深入分析,需要以下几点:
- 充足的时间,并且有一定的耐心,沉得住气。
- 一定的Windows基本知识。
- 一定的C代码基础,明白指针的作用及实现方式。
祝正在分析或即将分析的同学,不论你是想要理解mimikatz某一个功能然后将其单独实现,亦或者是想要将其做免杀、去特征,都希望你勿忘初心,砥砺前行!
参考文章
标签:补丁,明文,密码,mimikatz,Wdigest,KB2871997 来源: https://blog.csdn.net/Ping_Pig/article/details/121228950