miércoles, 2 de mayo de 2018

BSides Vancouver: 2018 (Workshop)



Nombre: BSides Vancouver: 2018 (Workshop)
Autor: abatchy
Enlace: https://www.vulnhub.com/entry/bsides-vancouver-2018-workshop,231/

El fin de semana pasado me animé a probar a resolver un desafío CTF de vulnhub.com por primera vez. Elegí la VM más reciente, llamada "BSides Vancouver: 2018 (Workshop)" y... conseguí el flag!!! :D
Viendo que en vulnhub aún no hay ningún walkthrough (tutorial) sobre como resolver este desafío, he decidido compartir mis pasos desde el boot de la VM hasta el momento de conseguir el flag.

Los pre-requisitos de la VM requerían "VirtualBox pre-installed", así que tuve que descargar VirtualBox. Lo instalé y configuré un segmento de red de esta forma:

Fui al menú Archivo > Preferencias > Red y allí cree una "Red NAT".

Una "Red NAT" no es otra cosa que una VLAN solo visible por VirtualBox. En esta VLAN, junté las dos máquinas que usaría en este CTF: un Kali Linux para realizar el ataque y la propia VM a atacar.



VirtualBox me ofreció 10.0.2.0 como segmento por defecto. Yo le metí máscara /28 para que el escaneo posterior con nmap para descubrir la IP asignada a la VM fuese más rápido. Podría haber usado /29 para acotar más, pero /28 ya me estaba bien ya que me permitiría importar más VMs para jugar... :)

Una vez asignado el segmento de red, cargué las imágenes de ambas VMs en VirtualBox, las inicié y lancé un escaneo del segmento desde Kali usando nmap para descubrir la IP del objetivo:



Una vez descubierta la IP de la máquina objetivo, 10.0.2.6, lancé un escaneo más exhaustivo sobre su IP:



Lo primero que me llamó la atención fue que el servidor soportara acceso anónimo al FTP. Al ir a conectarme a la VM por FTP, me di cuenta que Kali no trae el comando ftp instalado por defecto (¿¿??) así que tuve que instalarlo mediante un "apt install ftp". Una vez instalado "ftp", probé a conectarme con "ftp anonymous@10.0.2.6" pero no resultó, así que busqué en Google y encontré un enlace que hablaba sobre cómo conectarse a un FTP de forma anónima.



Una vez dentro del FTP, encontré un archivo llamado users.txt.bk. Lo descargué con un "get" para ver qué contenía y al abrirlo vi que era una lista de usuarios. De posibles usuarios del sistema. Llegados a este punto, podría haber echado un ojo a la web, ya que la VM tenía un servicio corriendo en el puerto 80, y buscar más cosas pero decidí probar suerte con la lista de usuarios.

Lo que tenía en mente en este momento era lanzar un ataque de diccionario contra el servidor usando todos los nombres de usuario de users.txt.bk. Para ello, podría haber usado Hydra pero decidí usar otra herramienta, un script al que yo mismo contribuí con código hace algún tiempo: getsshpass.sh.

getsshpass.sh es un script hecho en bash por Radovan Brezula aka Brezular cuya función es probar usuarios y contraseñas contenidos en archivos de texto contra una IP por SSH hasta dar con unas credenciales de acceso válidas. Tal y como cuenta su creador, en un test Hydra tardó 4min 45s en obtener el password de un usuario mientras que getsshpass.sh lo obtuvo en 3min 29s. getsshpass.sh es más rápido que Hydra porque Hydra está limitado a un máximo de 64 sesiones paralelas mientras que getsshpass.sh usa el máximo de sesiones paralelas posibles según el hardware donde está corriendo.

Descripción completa y descarga de getsshpass.sh

Me descargué el script y le di permisos de ejecución.



Ejecuté el script usando la famosa wordlist "rockyou.txt" contenida en Kali y esperé...



...Hasta obtener el password del usuario "anne" ¡en 3 segundos! Viva getsshpass.sh :D

Para el que se pregunte por qué el script empezó por el usuario "anne" cuando había tres usuarios por encima de anne en la lista, lo hizo así porque añadí una función al script que comprueba si el usuario a testear puede acceder al sistema vía SSH con password o sólo con publickey. Si solo puede acceder vía SSH con publickey, lo desestima y prueba con el siguiente usuario. Y así hasta dar con un usuario que pueda acceder con password. Entonces, inicia el ataque con ese nombre de usuario.

Me conecté por SSH a la VM usando las credenciales recientemente encontradas. Una vez en la terminal, lancé el comando "id" y me encontré con que anne estaba incluida en el grupo "sudo". Miré entonces qué comandos podía ejecutar anne con sudo mediante "sudo -l".



Viendo que anne tenía acceso a todos los comandos (ALL), bastó con hacer "sudo su" para pasar a la cuenta root y capturar así el flag contenido en /root/flag.txt.




Opinión



El flag dice que hay varios métodos para superar este CTF. Supongo que yo usé el método más basto, pero fue igualmente efectivo y me permitió usar getsshpass.sh, lo cual me hizo ilusión.

El uso del FTP anónimo, por su parte, fue interesante, aunque el hecho de encontrar dentro sólo un archivo fue demasiado directo. Pienso que se podría haber ocultado de algún modo, por ejemplo creando una estructura de directorios, poniendo varios archivos con nombres a priori prometedores pero sin contenido interesante y haciendo, en definitiva, que el atacante tuviera que rebuscar por ese árbol de directorios hasta dar con la lista de usuarios.
0

0 comentarios:

Publicar un comentario