Hack The Box: Bastion (Windows, fácil)

Introducción

Bastion es un CTF de nivel fácil que encontramos en la plataforma Hack The Box. Presenta desafíos tales como el montaje de un Disco Virtual Duro (VHD) desde un recurso compartido de archivos, y la recuperación de credenciales desde un software de gestión de contraseñas.

El escenario inicial no implicó un sitio web, sino imágenes de VHD en un recurso compartido SMB, que, tras ser montadas, otorgaban el acceso al registro del sistema para la extracción de las credenciales necesarias. Estas permitían el ingreso al sistema anfitrión mediante SSH como usuario de bajos privilegios.

Para escalar privilegios y obtener acceso de administrador, se explotó la instalación del software mRemoteNG, extrayendo los datos de perfil y la información cifrada correspondiente. Una vez obtenida la contraseña de administrador, fue posible ingresar al sistema como tal, utilizando nuevamente SSH.

Enumeración

Como siempre comenzamos la resolución de la máquina enumerando que servicios tiene abiertos.

nmap -p- --open --min-rate 2000 -Pn -n 10.10.10.134

Múltiples servicios abiertos. El siguiente paso será la enumeración profunda de los servicios ejecutados en cada uno de los puertos.

nmap -p22,135,139,445,5985 -Pn -n -sVC 10.10.10.134

Podemos observar que el protocolo SSH y los servicios de Windows (135, 139, 445) están en funcionamiento. Es importante mencionar que hemos recibido información de que el acceso “guest” para SMB se ha dejado activado en “smb-security-mode”. Ahora procedamos a revisar los recursos compartidos de archivos públicos en nuestra máquina Bastion a través de SMB.

smbmap -u guest -H 10.10.10.134

Dado que se puede leer y escribir, continuamos con “Backups” para ver si contiene información interesante.

smbclient -N \\\\10.10.10.134\\Backups

Vemos un archivo note.txt, vamos a descargarlo a nuestra máquina para ver su contenido.

Los administradores de sistemas recomendaron que evitáramos transferir el archivo completo de copia de seguridad a nivel local debido a la lentitud de la conexión VPN.
Entramos al directorio Windows Backup

Como resultado de la enumeración, encontramos que se habían realizado copias de seguridad de una computadora dentro de la carpeta backups. Necesitamos sacar los archivos del SMB y montarlos. Necesitamos montar este dispositivo en nuestra computadora como un disco. Además, si tenemos en cuenta la advertencia dada por el administrador del sistema, puede llevar mucho tiempo obtener estos archivos.
¿Cómo hacemos esto? De la siguiente manera:
Vamos a montar este recurso compartido en mi sistema de archivos.

mount -t cifs //10.10.10.134/backups /mnt -o user=,password=

El siguiente paso será enumerar todos los archivos en el recurso compartido:

Continuamos montando los archivos del disco virtual y veré qué puedo encontrar en ellos. Primero, instalaré guestmount con apt install libguestfs-tools, una herramienta para montar archivos de disco duro virtual en Linux. Esta herramienta me permitirá examinar los archivos como si estuvieran en un disco físico en lugar de ser parte de un sistema operativo virtual.
Una vez instalada la utilidad, intentaremos montar cada uno de los dos archivos VHD. El primero falla:

guestmount --add /mnt/WindowsImageBackup/L4mpje-PC/Backup\ 2019-02-22\ 124351/9b9cfbc3-369e-11e9-a17c-806e6f6e6963.vhd --inspector --ro /mnt2/

Volvemos a repetir el proceso anterior con el otro archivo. Esta vez si funciona y nos proporcionando acceso a lo que parece ser una raíz del sistema de archivos de Windows:

guestmount --add /mnt/WindowsImageBackup/L4mpje-PC/Backup\ 2019-02-22\ 124351/9b9cfbc4-369e-11e9-a17c-806e6f6e6963.vhd --inspector --ro /mnt2

Explotación

Con acceso completo al sistema de archivos, podemos acceder a los archivos de registro. Estos archivos pueden estar bloqueados cuando el sistema está en funcionamiento, pero no tendremos ese problema en una unidad montada. En el directorio de config donde se guardan los registros. Usaremos impacket-secretsdump para extraer los hashes de las contraseñas.

impacket-secretsdump -sam SAM -security SECURITY -system SYSTEM LOCAL

Obtenemos múltiples hashes NTLM. Vamos a tratar de descifrarlos.

Para el usuario “L4mpje” resolvemos la contraseña bureaulampje.
Recordamos que durante el escaneo inicial, encontramos abierto un servicio SSH en el puerto 22. Vamos a tratar de utilizar las credenciales obtenidas para acceder al sistema objetivo.

ssh L4mpje@10.10.10.134

Obtenemos acceso al sistema objetivo como usuario “L4mpje”. Vamos a por la flag de usuario con bajos privilegios.

Elevación de privilegios

Si enumeramos en los diferentes directorios del usuario “L4mpje” no encontramos archivos interesantes.
A continuación, necesito enumerar para encontrar un camino a privesc. Un comienzo razonable sería ver que programas hay instalados en la máquina. Ejecuté el siguiente powershell para encontrar el software instalado en la máquina.

powershell Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select Object DisplayName, DisplayVersion, InstallDate

Encontré un programa llamado mRemoteNg, el cual es el único programa que no está instalado de manera predeterminada.
mRemoteNG es una variante de mRemote, un administrador de conexiones remotas de código abierto que soporta múltiples protocolos y permite la administración de dichas conexiones a través de pestañas. mRemoteNG introduce nuevas características y correcciones de errores a mRemote.
Buscando un poco en Internet, encontramos una vulnerabilidad de la versión 1.76 que permite obtener las claves cifradas. Básicamente lo que tenemos que hacer es buscar el archivo confCons.xml que se encuentra en la ruta “C:\Users\L4mpje\AppData\Roaming\mRemoteNG”:

Leemos el archivo con type:

Es decir, tenemos la contraseña cifrada del usuario administrador. Esta contraseña está cifrada en base64 y AES-128-GCM.
Descargamos este archivo a nuestra máquina de ataque.

scp l4mpje@10.10.10.134:/Users/L4mpje/AppData/Roaming/mRemoteNG/confCons.xml .

Ahora vamos a tratar de descifrar la contraseña con el siguiente script programado en Python.
Primero copiamos el hash de la contraseña cifrada del archivo que descargamos de la máquina objetivo. Posteriormente, ejecutamos el script de la siguiente manera:

python3 mremoteng_decrypt.py -s aEWNFV5uGcjUHF0uS17QTdT9kVqtKCPeoC0Nw5dmaPFjNQ2kt/zO5xDqE4HdVmHAowVRdC7emf7lWWA10dQKiw==

Y obtenemos la contraseña para el usuario administrator, thXLHM96BeKL0ER2. Vamos a tratar de iniciar sesión en la máquina objetivo con las credenciales obtenidas.

Ya podemos acceder a la máquina víctima como usuario administrator. Vamos a por la flag de privilegios elevados.

Y ya tendremos acabada la máquina Bastion de la plataforma Hack The Box.

No responses yet

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *