HTB - Windows Attacks & Defense
AD攻防
AD 基本介紹
AD 的基本層級
- Domain(網域):共享同一套 AD 資料庫的一群物件(使用者、電腦等)
- Tree(樹):多個有階層關係的 domain 組成(例如 test.local、staging.test.local)
- Forest(森林):多棵 tree 的集合,最高層
- OU(組織單位):放使用者/電腦/群組的容器,方便管理與套政策
- Trust(信任):不同 domain/forest 間的資源存取信任關係
Domain Controller(DC)是 AD 的核心主機
Windows 常見驗證方式
- 帳密 / 雜湊(LM、NTLM、NetNTLM)
- Kerberos
- LDAP 驗證(帳密或憑證)
Kerberos:票證制度
KDC(Key Distribution Center) 在 DC 上,會發票證:
- TGT:登入成功的證明
- TGS:你要存取某個服務時的服務票證
重要連接埠
- 53 DNS
- 88 Kerberos
- 135 WMI/RPC
- 137-139 / 445 SMB
- 389 / 636 LDAP
- 3389 RDP
- 5985 / 5986 WinRM
AD 的風險來源分成三類
Complexity(複雜度)
群組巢狀太多,權限鏈一層套一層,最後可能出現:
Domain Users 間接變成 Domain AdminsDesign(設計)
AD 需要靠 SMB / GPO / SYSVOL 等機制來遠端管理與同步。
這些設計是為了「能管理大型企業」,但也讓攻擊者只要拿到合適憑證,就能遠端操作很多東西。Legacy(相容舊系統)
文件舉例:NetBIOS、LLMNR
常見的攻擊手法:
- LLMNR/NBT-NS poisoning
- Responder 抓 hash
- NTLM relay 相關
Lab環境配置:
攻擊將從提供的 Windows 10(WS001) 和 Kali Linux 機器執行。
假設攻擊者已經在該 Windows 10(WS001) 機器上獲得了遠端程式碼執行。
被駭的用戶是 Bob, Active Directory 中的常規用戶,未指派特殊權限。
該環境由以下機器及其對應的IP位址組成:
DC1: 172.16.18.3
DC2: 172.16.18.4
Server01: 172.16.18.10
PKI: 172.16.18.15
WS001: DHCP or 172.16.18.25(取決於部分)
Kali Linux: DHCP or 172.16.18.20(取決於部分)
連線方式:
- 透過RDP連接到WS001(密碼:Slavi123 帳號:bob)
1
xfreerdp /u:eagle\\bob /p:Slavi123 /v:TARGET_IP - 使用ssh連線kali(機器為預設帳密:kali)
1
ssh kali@TARGET_IP
檔案傳輸:
- WS001 上有一個共用資料夾,可以透過 SMB 存取(Downloads/Share)
- 要使用Kali存取資料的話連上後可以使用put or get來抓檔案
1
smbclient \\\\TARGET_IP\\Share -U eagle/administrator%Slavi123
##攻擊手法
Kerberoasting
Kerberoasting 是一種針對 AD 網域內服務帳號(Service Account) 的離線密碼破解攻擊。
使用Rubeus進行爆破。
Kerberos與其他爆破來說有更多優點:
- 執行攻擊行為不需要用到域帳戶,只要連到KDC(88 port)即可。
- Kerberos 身分驗證錯誤不會在AD中紀錄為正常登入失敗事件(
4625),而是紀錄在Kerberos身分驗證失敗的日誌裡(4771)。 - Kerberos 在爆破就算密碼錯誤,也會提示用戶名是否正確,這樣可以減去枚舉用戶的時間。
- 因為在 Kerberos 爆破中,可以在不需要預身份驗證的情況下找到帳戶,這對於執行
ASREPRoast非常有用。
為了拿到破解後的票證,我們可以使用Rubeus