CTF SecureLAB Hard
URL Download CTF = https://drive.google.com/file/d/1Egn3NKBBF8eRtGG9xMpcb-LnzwgCb6pH/view?usp=sharing
Instalación
Cuando obtenemos el .zip nos lo pasamos al entorno en el que vamos a empezar a hackear la maquina y haremos lo siguiente.
unzip secureLAB.zipNos lo descomprimira y despues montamos la maquina de la siguiente forma.
bash auto_run.sh securelab.tarInfo:
██████╗ ██╗ ██╗███╗ ██╗██████╗ ██████╗ ██╗
██╔══██╗██║ ██║████╗ ██║╚════██╗██╔══██╗██║
██████╔╝██║ █╗ ██║██╔██╗ ██║ █████╔╝██║ ██║██║
██╔═══╝ ██║███╗██║██║╚██╗██║ ╚═══██╗██║ ██║╚═╝
██║ ╚███╔███╔╝██║ ╚████║██████╔╝██████╔╝██╗
╚═╝ ╚══╝╚══╝ ╚═╝ ╚═══╝╚═════╝ ╚═════╝ ╚═╝
==
@+:@ @##@
@++:-----+@ @@#+:----:+#
#-+-----:+:---------:
*::-----++-----::::#
::------+:--------:
#-+------+:-::-----#@
*::+=@@#++-------::@
@+= @++::+#@@@#*#
#-@
*+#++@
+-:::+-@
:-:+:::+
@+::*::::
*::++-::*
=:--:-:++ @-#
#*:---:--++@ @@
@::-:--++*
@::-:++#
*++*
:: Plataforma de máquinas vulnerables ::
:: Desarrollado por Pwn3d! y Dockerlabs - creado por @d1se0 ::
█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
█ FLAG{Pwn3d!_is_awesome!} █
█▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
[✔] bc ya está instalado.
[✔] Docker ya está instalado
[!] Limpiando previos contenedores e imágenes
[✔] Cargando la máquina virtual
[✔] Activando máquina virtual
[✔] Máquina activa. Dirección IP: 172.17.0.2
[!] Presiona Ctrl+C para limpiar y salirPor lo que cuando terminemos de hackearla, le damos a Ctrl+C y nos eliminara la maquina para que no se queden archivos basura.
Escaneo de puertos
Info:
Vemos que hay un puerto 80 abierto, si entramos a el, veremos una pagina normal aparentemente, pero podemos descargarnos un binario en la parte que pone Descargar MatrixCloud, pero si lo ejecutamos veremos que es un binario simple y normal, nada fuera de lo normal, lo que si me atrae es el nombre que tiene puesto matrix, vamos a probar si fuera el nombre de algun directorio en la web o de algun archivo .html, .php, etc...
Si probamos a poner lo siguiente:
Veremos que si nos funciona, veremos una lluvia de codigo en la pagina, lo malo es que no podremos inspeccionar nada, ni utilizar curl o wget para traernos el archivo de la pagina, ni nada de eso para ver su codigo fuente, pero si esperamos un poco, podremos ver que se nos va resaltando palabras en un tono mas anaranjado formando una especie de palabra.
Despues de un rato de analizar esa secuencia de palabras, me da como resultado la siguiente frase:
Tambien podremos capturar la respuesta del servidor mediante BurpSuite y obtener el codigo fuente para poder ver el JavaScript y obtener la palabra.
Teniendo esta palabra, podemos deducir que puede ser de un dominio, le añadiremos un .dl al final ya que esta subido en Dockerlabs.
Lo guardamos y entramos mediante ese dominio.
Veremos un login respecto a una API en la nube, pero las credenciales por defecto no nos van a funciona, si nosotros probamos a meter como usuario admin y como contraseña tendremos que realizar fuerza bruta de la siguiente forma:
brutePass.py
Lo ejecutaremos de la siguiente forma:
Info:
Veremos que nos saco la contraseñalove, si lo probamos en la web entraremos a un panel de administrador, pero que aparentemente no veremos nada en especial.
Curl
Vamos a probar a utilizar curl enviando esa peticion de la misma forma, pero con otro tipo de respuesta para intentar interactuar directamente mediante curl de la siguiente forma:
Info:
Nos pondra que nos esta redireccionando al panel de admin, pero no nos sirve de mucho, si probamos a volcar esta informacion que nos esta proporcionando a un archivo .txt para ver que vemos de la siguiente forma:
Info:
Ahora si leemos nuestro archivo .txt veremos lo siguiente:
Vemos que nos esta volcando una Cookie, ahora que tenemos una posible cookie de sesion, vamos a investigar mas por los directorio.
Si nos vamos al famosos archivo llamado robots.txt pero de la IP de la pagina principal veremos lo siguiente:
Vemos que hay un parametro interesante llamado execute, si entramos dentro desde la web veremos que el metodo no es el correcto:
Por lo que vamos a hacerlo desde curl vimos antes que obtuvimos una cookie, vamos a utilizarla para este parametro de URL podemos deducir que sirve para ejecutar algo, pero no sabemos el parametro en concreto, por lo que vamos a realizar fuerza bruta con un script casero.
La estructura del comando seria algo asi:
findParamAPICommand.py
Lo ejecutaremos de la siguiente forma:
Info:
Veremos que encontramos que el parametro es command por lo que haremos lo siguiente:
Info:
Veremos que el resultado es positivo y que nos ejecuta el comando de forma correcta, por lo que vamos a probar a generarnos una reverse shell.
Antes de ejecutarlo nos pondremos a la escucha de la siguiente forma:
Y si ejecutamos el comando anterior y volvemos a donde tenemos la escucha, veremos lo siguiente:
Vemos que entramos como el usuario www-data, por lo que tendremos que sanitizar la shell.
Sanitización de shell (TTY)
Escalate user administrator
Si nos vamos a la siguiente ruta veremos lo siguiente:
Info:
Vemos que hay una carpeta bastante interesante llamada analisys, si entramos dentro veremos 2 archivos uno de ellos sera un traficDetect.pcap y el otro sera note.txt, si leemos la nota veremos lo siguiente:
Vemos que estaba en proceso de sacar unas credenciales del .pcap que servirian para el usuario administrator, por lo que vamos a investigar que tiene ese .pcap pasandonoslo al host.
Host
Una vez que nos lo hayamos pasado lo abriremos y veremos muchisimo trafico de red y como sabemos que tenemos que encontrar alguna autenticacion vemos que hay una autenticacion por kerberos, que se ha realizado un TGS y un TGT, por lo que vamos a probar a crackear la contraseña de dicha autenticacion, para ello tendremos que obtener varios componentes de la siguiente forma.
Primero filtramos el trafico por kerberos, despues vamos a ver bajo que usuario se encuentra dicha autenticacion:

Con el cname podemos ver a que usuario pertenece, en este caso a empleado1 por lo que nos guardaremos el nombre.
Ahora vamos a ver los datos del AS-REQ que envia la IP del empleado1 al servidor DC del dominio, que en este caso el valor con el que nos tenemos que quedar es con el de cipher que sera el hash que utilizaremos para formar el hash del kerberos.

Ahora tenemos que ver la respuesta en este caso el AS-REP que le responde el servidor DC al usuario empleado1 mediante una serie de pasos de autenticacion con el usuario krbtgt, por lo que nos quedaremos con el salt que hace falta para el hash de kerberos en este caso CORP.LOCALempleado1 y mas abajo vemos bajo que dominio(bosque) se encuentre que sera CORP.LOCAL.

Teniendo todo esto, tendremos que formar el hash para que sea uno valido de kerberos que tendra la siguiente estructura.
Hash Kerberos (Estructura)
Ahora con todos los datos vamos a formar nuestro hash quedando de la siguiente forma:
hash
Ahora se lo vamos a pasar a john para que lo cracke.
Crack Hash Kerberos
Info:
Despues de unos 18 minutos, veremos que nos saca la contraseña que sera Passw0rd2, ahora le tendremos que añadir lo que nos menciono la nota anteriormente pero para descubrir dicha contraseña, tendremos que probar fuerza bruta creandonos un script de la siguiente forma:
suBruteforceUpdate.sh
Lo que vamos hacer es utilizar la palabra Passw0rd2 delante de las palabras del diccionario que pongamos, lo ejecutaremos de la siguiente forma:
Info:
Como resultado vemos que la contraseña es:
Si esto lo probamos para el usuario Administrator veremos que funciona.
Metemos como contraseña Passw0rd2kitty1 y veremos que estamos dentro, por lo que leeremos la flag del usuario.
user.txt
Escalate Privileges
Si hacemos sudo -l veremos lo siguiente:
Por lo que vemos podemos ejecutar como root el binario find, pero si nos vamos a GTFOBins y buscamos la escala del binario no aparecera algo asi:
Pero esto no va a funcionar y podemos deducir que es un binario modificado, por lo que no es el original, vamos a realizarle ingenieria inversa para ver que contiene.
Ghidra
Abriremos ghidra y cargaremos el binario pero antes nos lo tendremos que pasar.
Maquina victima
Host
Una vez que hayamos cargado el binario en la herramienta veremos una funcion bastante interesante en el apartado de funciones llamada find_callback:
Vemos que si buscamos por la palabra leersecretpassroot llamara a la funcion de leer un .txt en la carpeta de root, por lo que tendremos que hacer lo siguiente en la maquina victima:
Info:
Y si ahora hacemos lo siguiente:
Metemos como contraseña rootpasswordsupersecret y veremos que seremos root, por lo que leeremos la flag de root.
root.txt
Last updated