从mimikatz抓取密码学习攻防
字数 1702 2025-08-05 08:18:15
Mimikatz密码抓取攻防技术详解
1. 调试权限(Debug Privilege)机制
1.1 调试权限的作用
- 允许调试原本无权访问的进程,包括作为本地系统运行的服务
- 提供对敏感和关键操作系统组件的完全访问权限
- 默认情况下为管理员组启用此权限
1.2 Mimikatz依赖调试权限
- Mimikatz需要调试权限才能读取进程内存
- 默认管理员权限可获取调试权限
- 本地安全策略默认给管理员组调试权限
1.3 防御措施
- 在组策略中将"调试程序"权限设为空
- 路径:计算机配置 > Windows设置 > 安全设置 > 本地策略 > 用户权限分配
- 将"调试程序"策略中的用户组全部删除
- 效果:Mimikatz无法通过
privilege::debug提升权限
2. WDigest认证机制
2.1 WDigest概述
- 摘要身份验证协议,用于LDAP和基于Web的身份验证
- 使用HTTP和SASL交换进行认证
- 以明文形式将密码存储在lsass.exe进程内存中
2.2 安全风险
- 攻击者可获取账户明文密码
- 可用于pass-the-hash攻击和其他服务登录尝试
2.3 系统默认行为
- Windows 2008之后版本默认禁用WDigest
- Windows 2008之前版本若安装KB2871997补丁也无法获取明文
2.4 注册表键值
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\WDigest
UseLogonCredential键值控制WDigest行为:- 0:禁用明文存储(默认)
- 1:启用明文存储
2.5 攻击与防御
攻击方法:
- 修改注册表启用WDigest:
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f - 强制用户重新登录(锁屏):
Function Lock-WorkStation { $signature = @" [DllImport("user32.dll", SetLastError = true)] public static extern bool LockWorkStation(); "@ $LockWorkStation = Add-Type -memberDefinition $signature -name "Win32LockWorkStation" -namespace Win32Functions -passthru $LockWorkStation::LockWorkStation() | Out-Null } Lock-WorkStation - 检测用户重新登录后抓取明文
防御措施:
- 确保
UseLogonCredential值为0 - 监控注册表键值变化:
$key=Get-ItemProperty -Path "Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest\" -Name "UseLogonCredential" $Flag=$key.UseLogonCredential while($Flag -eq 1) { Start-Sleep -Seconds 10 $key=Get-ItemProperty -Path "Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest\" -Name "UseLogonCredential" $Flag=$key.UseLogonCredential }
3. 凭证缓存(Credential Caching)
3.1 域缓存凭证(DDC/mscache)
- 两个版本:XP/2003为第一代,Vista/2008之后为第二代
- 用途:域成员无法访问域控时使用本地缓存凭证认证
- 默认缓存10条凭证
3.2 缓存位置
HKEY_LOCAL_MACHINE\SECURITY\Cache
- 默认情况下Administrator也无法直接访问
3.3 防御措施
- 修改缓存数量为0:
- 组策略:计算机配置 > Windows设置 > 安全设置 > 本地策略 > 安全选项
- 设置"交互式登录:之前登录的缓存在域控制器不可用情况下的次数"为0
4. 受保护用户组(Protected Users Group)
4.1 功能
- Windows 2012及之后版本引入的安全组
- 强制高权限用户只能通过Kerberos认证
- 防止明文密码和NTLM hash泄露
4.2 实施方法
- 将需要保护的用户添加到"Protected Users"组
5. 受限管理员模式(Restricted Admin Mode)
5.1 功能
- 防止RDP用户的凭据存储在目标计算机内存中
- 使用网络登录而非交互式登录进行RDP认证
- 不需要提供密码,使用NTLM Hash或Kerberos票证认证
5.2 启用方法
REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v DisableRestrictedAdmin /t REG_DWORD /d 00000000 /f
5.3 攻击利用
- 使用Mimikatz进行Hash传递:
sekurlsa::pth /user:<username> /domain:<comptername or ip> /ntlm: <ntlm hash> "/run:mstsc.exe /restrictedadmin"
6. KB2871997补丁的安全增强
6.1 主要改进
- 支持"ProtectedUsers"组
- 支持Restricted Admin RDP模式
- 注销后删除LSASS中的凭据
- 添加两个新的SID:
- S-1-5-113:所有本地帐户
- S-1-5-114:所有本地Administrators组中的本地帐户
- LSASS中只允许wdigest存储明文密码
6.2 防御应用
- 将S-1-5-113和S-1-5-114添加到以下策略:
- 拒绝从网络访问这台计算机
- 拒绝通过远程桌面服务登录
7. 综合防御建议
- 限制调试权限:仅必要人员拥有此权限
- 保持WDigest禁用状态并监控注册表
- 减少或禁用凭证缓存
- 关键账户加入Protected Users组
- 启用Restricted Admin Mode
- 确保安装最新安全补丁
- 监控LSASS进程的异常访问
- 实施网络访问控制限制横向移动
通过以上措施的综合应用,可以有效防御Mimikatz等工具获取系统凭证的攻击行为。