Brooklyn Nine Nine - TryHackMe

SUMMARY

Debemos encontrar dos banderas en la maquina Brooklyn99 CTF. Donde a partir del escaneo de puertos de Nmap pude saber que hay un servicio HTTP, FTP, y SSH. Además, con el script http-title.nse de Nmap supe que hay una página web almacenada en el servidor web, y analizando el código fuente de la página web pude deducir que se han almacenado datos ocultos en la imagen de portada de la página web. Para ello utilice la herramienta stegcracker para crackear la contraseña que necesitaba para acceder a los datos ocultos de la imagen a través de steghide. Luego, encontré unas credenciales del usuario holt que las utilicé para acceder al sistema objetivo a través del servicio SSH. Luego, aprovechándonos de que el usuario holt puede ejecutar el comando nano con los privilegios del usuario root a través del comando sudo, llegamos a ser el usuario root.”

FASE RECONOCIMIENTO

Para resolver este ejercicio empezaremos utilizando el comando openvpn con el fin de establecer una conexion VPN con la red virtual donde esta la maquina Brooklyn99 CTF. Para ello utilizaremos el archivo de configuracion, que lo podemos descargar en la plataforma de Tryhackme, que puede incluir informacion como la direccion del servidor VPN, los certificados y claves de seguridad, la configuracion de encriptacion, etc.

Luego de que se establece la conexion VPN se crea una interfaz virtual de red en nuestra maquina. Donde se enruta todo el trafico de red a traves de esa interfaz.

Ademas, la plataforma de Tryhackme nos muestra la direccion ip de la maquina Brooklyn99 CTF.

FASE ESCANEO Y ENUMERACION

Luego pasaremos a la fase de Escaneo y Enumeracion con el fin de poder escanear los puertos del nodo. Ademas, obtendremos los servicios que se han levantado en los puertos abiertos, las versiones de los servicios, y el sistema operativo de la maquina Brooklyn99 CTF. Para ello utilizaremos Nmap. Donde le pasaremos los siguientes parametros:

  • El parametro -sC o -script=”default” para utilizar todos los scripts de la categoria default con el fin de realizar un escaneo y deteccion de los puertos de manera avanzada.
  • El parametro -sV con el fin de conocer las versiones de los servicios levantados en los puertos abiertos.
  • El parametro -n para evitar la resolucion DNS, y el parametro -max-rate para indicarle el numero maximo de paquetes por segundo que va a utilizar Nmap para el escaneo con el fin de evitar sobrecargar la red con el trafico generado por la herramienta.
  • El parametro -p- para realizar un escaneo de los 65535 puertos del nodo y el parametro -open con el fin de que nos muestre informacion solo de los puertos abiertos.

Los resultados que obtuvimos del escaneo vienen a ser:

  • Hay un servicio HTTP que se está levantado en el puerto 80, y el programa servidor HTTP que se está corriendo. Además, la versión del programa servidor HTTP.
  • A partir del script http-tittle.nse de Nmap llegamos a saber que hay una página web que se aloja en el servidor web.
  • Hay un servicio FTP que se está levantado en el puerto 21, y el programa servidor FTP que se está corriendo. Además, la versión del programa servidor FTP.
  • Hay un servicio SSH, que esta levantado en el puerto 22, y el programa servidor SSH que se está corriendo. Además, la versión del programa servidor SSH.

Ahora accederemos a la página web a través de mi navegador web para observar su contenido.

Observamos que el código fuente de la pagina web nos realizan una pregunta sobre la esteganografía, que consiste en el arte de ocultar datos sobre un medio que puede ser un archivo, imagen, audio, etc.

Teniendo en cuenta esto utilizaremos una herramienta de esteganografía llamada steghide sobre la imagen que se utiliza en la porta de la pagina web con el fin de saber si hay datos ocultos en ella.

Podemos observar que los datos ocultos en la imagen están cifrados y se requieren de una clave o contraseña para acceder a ellos.

FASE HACKING O GANAR ACCESO O EXPLOTACION

Ahora utilizaremos la herramienta stegcracker que nos permite realizar fuerza bruta con un diccionario, de nuestra elección, con el fin de crackear la contraseña que se utiliza para ocultar datos ocultos sobre una imagen o audio.

Podemos observar que la herramienta llego a encontrar la contraseña necesaria para acceder a los datos ocultos en la imagen utilizada de portada en la página web almacenada en el servidor web.

Ahora accederemos a los datos ocultos de la imagen.

Podemos observar que el dato oculto viene a ser un archivo llamado note.txt que contiene las credenciales de un usuario llamado holt.

Ahora intentaremos acceder al sistema objetivo a través del servicio SSH utilizando las credenciales del usuario holt.

De esta manera obtenemos acceso al sistema objetivo siendo el usuario holt.

FASE ESCALADA DE PRIVILEGIOS

Ahora debemos buscar un vector de escalada de privilegios con el fin de ser un usuario con privilegios más elevados. Para ello utilizaremos el siguiente comando para observar que programas puedo ejecutar con el comando sudo, y con los privilegios del usuario root.

Podemos observar que aparece el termino (ALL) NOPASSWD al lado del archivo binario nano. Esto significa que el usuario holt puede ejecutar el archivo binario nano con los privilegios del usuario root a través del comando sudo sin requerir de unas credenciales.

Teniendo en cuenta esto aprovecharemos que a través del editor de texto de terminal nano se puede ejecutar comandos a través de su interfaz. Para ello primero crearemos un archivo llamado prueba para acceder al interfaz del editor nano. Luego, digitaremos Ctrl+R y Ctrl+X con el fin de poder ejecutar un comando que nos genera una conexión reverse shel hacia nuestra máquina.

Antes de ejecutar el comando debemos habilitar el puerto 1900 en nuestra maquina para que este en modo escucha y esperando la conexión entrante que generara el comando que ejecutaremos.

Ahora si ejecutamos el comando desde la interfaz del editor de texto de terminal nano.

De esta manera llegamos a ser el usuario root.

Ahora buscaremos las dos banderas contenidas en los archivos user.txt y root.txt. Para localizar los archivos utilizaremos el comando find para buscar desde el directorio /, archivos con sus nombres.