BROOKLYN NINE NINE

Adrian Vidal Portofolio
# Escaneo ## NMAP El primer paso a llevar a cabo, es el de realizar un análisis que permite conocer los puertos abiertos que se encuentran en la máquina objetivo. Para lograr esto, se utiliza la herramiento nmap y en este caso, empleando el siguiente comando se consiguen los puertos abiertos que se pueden ver en la figura [1](../assets/img/brooklyn/1allPorts.png "Puertos abiertos"). ``` nmap -p- --open --min-rate 5000 -sS -n -Pn -oN allPorts ``` - -p-: escaneo de todos los puertos. - –open: se muestran los puertos abiertos exclusivamente. - –min-rate: tasa de envı́o de paquetes. - -sS: Opción por defecto, escaneo rápido. - -n: no se aplica resolución DNS. - -Pn: se evita el descubrimiento de hosts.
![Puertos abiertos | center](../assets/img/brooklyn/1allPorts.png )
Una vez se conocen los puertos abiertos (servicios _ftp_, _ssh_ y _http_), se continúa realizando un análisis para obtener las versiones de los servicios que en estos corren. Para lograr este objetivo se utiliza el siguiente comando, obtiendo los resultados que se pueden apreciar en la figura [2](../assets/img/brooklyn/2VersionPorts.png "Versiones de los puertos abiertos"). ``` nmap -p21,22,80 -sCV -oN versionPorts ```
![Versiones de los puertos abiertos | center](../assets/img/brooklyn/2VersionPorts.png )
A la vista de los resultados, el servicio _ftp_ permite una conexión sin autenticación, esto es, como usuario _anonymous_. Por otro lado, el servicio _ssh_ se encuentra en una versión desactualizada sobre la cual se podrı́a realizar una enumeración de usuarios. Finalmente, el último servicio corre bajo un Apache en la versión 2.4.29. Llegado este punto, el proceso de escaneo estarı́a finalizado, por lo que se pasa al reconocimiento de los servicios. # Reconocimiento ## Servicio FTP El primer servicio a analizar es el servicio que corre en el puerto 21. Como se ha visto en la sección de escaneo, es posible acceder al servicio de transferencia de archivos sin ningún tipo de autenticación (figura [3](../assets/img/brooklyn/ftp.png "Servicio FTP")).
![Servicio FTP | center](../assets/img/brooklyn/ftp.png )
Una vez se accede a dicho servicio, el siguiente paso será listar los archivos que pueda haber en el directorio. Al realizar dicha acción, aparece en este directorio un documento de texto denominado como _note_ to _jake.txt_ (figura [4](../assets/img/brooklyn/note.png "Note to Jake")), por lo que el siguiente paso será realizar la recuperación a la máquina local para poder visualizarla.
![Note to Jake | center](../assets/img/brooklyn/note.png )
El contenido de la nota permite encontrar una posible vı́a de vulnerabilidad de la máquina, pues en esta, Amy le escribe a Jake que modifique su contraseña, ya que la actual es débil (figura [5](../assets/img/brooklyn/jakePwd.png "Jake pwd")). Esta nota posibilita la vı́a de realizar un ataque de fuerza bruta con el usuario de _jake_.
![Jake pwd | center](../assets/img/brooklyn/jakePwd.png )
Una vez se realizado el análisis de este puerto, se efectua la investigación del servicio _http_. ## Servicio HTTP Al abrir en el navegador la dirección asociada a la máquina virtual bajo el servicio _http_, la página que se muestra es la siguiente (figura [6](../assets/img/brooklyn/web.png "Página principal")).
![Página principal | center](../assets/img/brooklyn/web.png )
Al realizar un análisis del código fuente de la página para comprobar que no haya ningún tipo de comentario o función que no sea visible, se encuentra un mensaje en el que se pregunta “¿Has oı́do hablar de la esteganografı́a?” (figura [7](../assets/img/brooklyn/estego.png "Código fuente")).
![Código fuente | center](../assets/img/brooklyn/estego.png )
Este mensaje permite saber que existe una imagen que contiene información oculta, y hasta el momento solo se ha podido localizar una imagen en este servicio. Por lo tanto, antes de examinar la página web en busca de directorios o ficheros ocultos, se procede a la descarga de la imagen principal para su investigación. Para realizar el examen sobre la fotografı́a, se utilizan las herramientas _stegcracker_ y _steghide_. Estas herramientas permitirán conocer la contraseña empleada para ocultar la información dentro de la imagen, y la recuperación de la misma. Para utilizar la herramienta _stegcracker_ han sido aplicadas las opciones por defecto, esto es, el diccionario empleado será el famoso _rockyou_. La ejecución de la herramienta revela la contraseña empleada en la ocultación de información (figura [8](../assets/img/brooklyn/stegcracker.png "Stegcracker")).
![Stegcracker | center](../assets/img/brooklyn/stegcracker.png )
A continuación, al ejecutar la herramienta _steghide_ se introduce la contraseña obtenida y se recupera un documento de texto _note.txt_ (figura [9](../assets/img/brooklyn/steghide.png "Steghide")).
![Steghide | center](../assets/img/brooklyn/steghide.png )
El contenido del documento revela la contraseña del capitán Holt en texto plano ([10](../assets/img/brooklyn/holtPwd.png "Holt pwd")).
![Holt pwd | center](../assets/img/brooklyn/holtPwd.png )
Este descubrimiento permite realizar un análisis del servicio _ssh_, pues a estas alturas de la investigación se poseen dos usuarios (_jake_ y _holt_) y una contraseña. ## Servicio SSH Para este servicio se podrı́a realizar un ataque de enumeración de usuarios, que permitirı́a comprobar si en la máquina existe alguno de los usuarios anteriormente mencionados. En este caso dicha prueba no es realizada, pero se realiza un intento de conexión entre la máquina local y el servidor remoto utilizando el usuario _holt_, obtiendo una prueba exitosa (figura [11](../assets/img/brooklyn/ssh.png "Conexión SSH")).
![Conexión SSH | center](../assets/img/brooklyn/ssh.png )
Una vez dentro del servidor remoto, se obtiene la _flag_ de usuario, accesible desde el directorio _/home_ del capitán Holt (figura [12](../assets/img/brooklyn/user.png "User Flag")).
![User Flag | center](../assets/img/brooklyn/user.png )
El siguiente paso será la explotación para lograr una escalada de privilegios. # Explotación En este punto de la investigación se tiene acceso al servidor remoto como un usuario. A continuación, se necesita conseguir el archivo asociado a la _flag_ del superusuario, por lo que será necesario realizar una escalada de privilegios. En esta sección se muestran los pasos seguidos para conseguir acceso al servidor remoto como usuario _root_. El primer paso realizado ha sido la comprobación de permisos con los que cuenta el usuario _holt_ (figura [13](../assets/img/brooklyn/permisos.png "Permisos del usuario")). ``` sudo -l ```
![Permisos del usuario | center](../assets/img/brooklyn/permisos.png )
El usuario cuenta con permisos de ejecución como superusuario del comando nano. Para comprender como realizar una escalada de privilegios a través del uso de este editor de texto, se utiliza el recurso provisto por [GTFOBins](https://gtfobins.github.io/) (figura [14](../assets/img/brooklyn/gtfobins.png "Permisos del usuario")).
![Nano, escalada de privilegios | center](../assets/img/brooklyn/gtfobins.png )
## Escalada de privilegios Para realizar la escalada de privilegios, se siguen los pasos mostrados en la figura [14](../assets/img/brooklyn/gtfobins.png "Permisos del usuario") (figura [15](../assets/img/brooklyn/root.png "Escalada de privilegios")).
![Escalada de privilegios | center](../assets/img/brooklyn/root.png )
Una vez ejecutado el comando, se accede al servidor como superusuario (figura [16](../assets/img/brooklyn/whoami.png "Escalada de whoami")). Finalmente, se consigue obtener la _flag_ asociado a este, dejando la máquina como vulnerada y acabada (figura [17](../assets/img/brooklyn/rootF.png "Flag de root")).
![whoami | center](../assets/img/brooklyn/whoami.png )
![Flag de root | center](../assets/img/brooklyn/rootF.png )