BabyTwo

Máquina de dificultad media de la plataforma HackTheBox

Comprobación

Comenzamos con esta máquina creándonos como siempre un directorio con el mismo nombre de la máquina, metiéndonos dentro y con la utilidad “machine” nos creamos nuestros directorios de trabajo

Una vez que los tenemos nos vamos a reconocimiento y le lanzamos una traza ICMP a la máquina víctima para comprobar si la podemos ver a nivel de red

Como podemos observar la vemos sin ningún tipo de problema por lo que vamos a empezar con el escaneo de puertos

Puertos

Al igual que en todas las máquinas vamos a comenzar con un escaneo básico de puertos para descubrir qué puertos son los que están activos

Este es el escaneo que solemos hacer y en el que incluimos parámetros de nmap que nos ayudan a ir más rápido y a ser más sigilosos, por ejemplo el parámetro -sS nos permite no ejecutar un three-way handshake lo que hace que sea más rápido y sigiloso ya que no deja evidencias de que se haya establecido una conexión, –min-rate 5000 nos permite especificarle a la herramienta que no queremos que se efectúe el escaneo con una velocidad menor a 5000 paquetes por segundo, -n le indica a nmap que no queremos que haga resolución DNS, -Pn para que no nos haga descubrimiento de hosts a través del protocolo ARP y por último -oG para exportar todas las evidencias en un formato que sea fácil de tratar más tarde con regex

Una vez que termina el escaneo, con la herramienta portsClean.sh vamos a poder extraer los datos más relevantes del escaneo

Como podemos ver tenemos muchos puertos abiertos, por lo que podemos pensar que igual estamos ante un dc, una vez que hemos terminado de ver qué puertos están abiertos vamos a identificar qué servicios y versiones corren para estos puertos

Con este escaneo de nmap lo podemos descubrir

Lo que le estamos indicando es con -sC que nos ejecute unos scripts básicos de reconocimiento que tiene previamente nmap programados en Lua, con -sV determinamos qué servicios y versiones están corriendo para esos puertos y con -oN le decimos a nmap que queremos que nos exporte todo el output tal y como sale por la terminal en un archivo llamado versiones

Podemos ver que está corriendo kerberos, dns, ldap, rpc entre otros por lo que sabemos con certeza que esta máquina es un DC

Ahora que sabemos esto vamos a pasar a ver cómo se llama el dominio de la máquina y a sacar cosas en claro

Usuario sin privilegios

Vamos a comenzar utilizando la herramienta netexec para sacar un poco más de información acerca del dc

Vemos que es un Windows Server 2022, esto tampoco es que sea súper útil pero ayuda a entender un poco mejor ante qué nos enfrentamos

Ahora que hemos visto un poco más de info sobre el dc vamos a ver si podemos listar sus recursos compartidos por SMB

(La ip ha cambiado porque he tenido que reiniciar la máquina)

Genial pues vemos que hay dos directorios que no son lo común de ver, homes y docs

Dentro de homes podemos ver que tenemos lo siguiente

Parecen nombres de usuario así que nos los vamos a guardar todos y los vamos a meter en un fichero

Como tenemos un posible listado de usuarios válidos lo que vamos a hacer es con kerbrute verificar si realmente estos usuarios existen o no en el dominio

Vemos que todos los usuarios son válidos por lo que tenemos un listado de usuarios sobre el que poder probar distintas cosas

Después de probar y no funcionar un ASREP-Roast Attack, vamos a comprobar si algún usuario tiene como contraseña su propio nombre de usuario

Podemos ver que el usuario Carl.Moore y library sí que tienen la contraseña igual que el nombre, de todas formas con netexec podemos volver a validarlo

Podemos ver que efectivamente sus nombres son sus contraseñas por lo que ya tendríamos dos usuarios válidos más

Como tenemos usuarios válidos a nivel de dominio lo que vamos a hacer es recopilar información para ver cómo podemos obtener acceso a la máquina ya que no sabemos si los usuarios de los que tenemos credenciales están dentro del grupo Remote Management Users

Para obtener e interpretar la información vamos a usar BloodHound

Ahora que hemos cargado toda la información obtenida en BloodHound vamos a ver qué sacamos en claro

Si miramos un poco acerca de la información del usuario que ya hemos comprometido podemos ver lo siguiente

Cuando el usuario “Carl.Moore” inicia sesión se ejecuta este script, el cual está en SYSVOL que es una carpeta compartida a nivel de red

Ahora que tenemos credenciales válidas podemos volver a mirar los recursos compartidos a nivel de red para ver si podemos entrar en algunos a los que antes no podíamos

Ahora tenemos más permisos y podemos entrar en más directorios que antes

Podemos ver que ahí está el script que ejecuta el usuario cuando inicia sesión

Lo que vamos a intentar es hacer lo siguiente, si yo modifico este script y le pongo un comando al final del archivo, cuando el usuario inicie sesión va a ejecutar el comando que yo le indique por lo que puedo entablarme de esta manera una reverse shell a mi máquina, pero para esto tengo que tener permiso para subir archivos, vamos a ir paso por paso, empezamos añadiendo la reverse shell al final del archivo

Ahora que tenemos el archivo .vbs preparado con una reverse shell vamos a ponernos en escucha por el puerto 1212 y a intentar subir el archivo al mismo directorio compartido en el que estaba

Si ahora esperamos un poco podemos ver que obtenemos una reverse shell

También podemos ver que no estamos como el usuario “Carl.Moore” sino como el usuario “amelia.griffiths”

Si nos vamos a la raíz del sistema, ahí podemos ver la flag del usuario no privilegiado

Privilegios

Pues ahora que ya tenemos acceso como un usuario no privilegiado vamos a intentar hacernos Administradores del dominio

Como usuarios locales de la máquina podemos ver los siguientes

Por lo que tenemos más información para ahora saber en Bloodhound por dónde mirar

Al observar en Bloodhound qué permisos tiene el usuario de amelia podemos ver lo siguiente

Vemos que amelia es miembro del grupo Legacy y este grupo tiene permisos de escritura de DACL sobre el usuario GPOADM por lo que vamos a poder cambiarle la contraseña y hacernos con este usuario

Lo primero que vamos a hacer es pasar el powerview de nuestra máquina de atacante a la máquina víctima para poder utilizar unos módulos específicos

Una vez que tenemos powerview vamos a importarlo

Y ahora sí que vamos a poder utilizar los módulos que tiene previamente programados

Para empezar lo que vamos a hacer es darle al usuario “amelia.griffiths” todos los permisos posibles sobre el usuario GPOADM

Una vez que nos hemos dado todos los permisos vamos a cambiarle la contraseña

Ahora con netexec podemos comprobar si efectivamente se le ha cambiado la contraseña al usuario GPOADM

Una vez que tenemos ya la contraseña de este usuario vamos a investigar en BloodHound qué cosas podemos hacer con este usuario

Podemos ver que tenemos control total sobre las políticas del dominio, esto es una GPO que afecta a todo el dominio

Para poder abusar de esta GPO vamos a utilizar la herramienta pygpoabuse.py

Lo que hemos hecho ha sido abusar de una GPO para ejecutar una acción que se aplica por defecto a todos los equipos y usuarios del dominio por lo que el usuario GPOADM ahora es un usuario Administrador del dominio

Ahora vamos a estar ejecutando netexec y cuando nos salga Pwned! significará que ya se ha ejecutado la instrucción que hemos programado

Ahora podemos ver que tenemos un usuario que es administrador del dominio por lo que podemos dumpear la sam y ganar acceso a la máquina efectuando un pass-the-hash

Y ahora que estoy dentro como el usuario Administrator solo falta visualizar la flag

Start searching

Enter keywords to search articles

↑↓
ESC
⌘K Shortcut