# 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.

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
```

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")).

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.

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_.

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")).

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")).

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")).

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")).

El contenido del documento revela la contraseña del capitán Holt en texto
plano ([10](../assets/img/brooklyn/holtPwd.png "Holt pwd")).

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")).

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")).

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
```

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")).

## 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")).

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")).

