En esta oportunidad les presentamos una máquina que es de nivel EASY pero que es bastante interesante para practicar.
Como siempre lo recomiendo, primero debemos crear nuestro directorio donde vamos a trabajar.
Ahora tenemos todo listo y ordenado, podemos iniciar con la fase de reconocimiento. Lo primero es ver contra qué nos estamos enfrentando, y esto lo podemos hacer con un simple PING. Recordemos que los sistemas Linux tendrán un TTL de 64 y los sistemas Windows tendrán un TTL de 128, en ambos casos se resta una unidad por el nodo intermediario que hay para llegar a la máquina objetivo:
En este caso tenemos que el sistema objetivo es un sistema Windows. Ahora corresponde hacer una revisión de los puertos y servicios que tiene abiertos. Para esto ejecutamos un escaneo NMAP donde analizaremos solo los puertos con estado OPEN, evitando escaneos con resolución de dominio e ICMP, solo para que el escaneo vaya rápido:
Como resultado tendremos que los siguientes puertos se encuentran abiertos:
Vemos varios puertos abiertos, muchos son puertos no comunes así que no los tomaremos en cuenta por ahora. Ahora intentaremos sacar más información de los puertos con servicios conocidos:
El resultado que obtenemos es el siguiente:
Lo que siempre recomiendo es, si ves el puerto 80 abierto, dale una mirada a ver qué se tiene ahí como primer paso. Si no hay nada interesante pues pasamos a los siguientes puertos para analizarlos. En este caso, veamos qué tienen el puerto 80:
La página de inicio no tiene nada del otro mundo, incluso cuando se hace una revisión del código fuente no es posible encontrar alguna pista o indicio que se pueda hacer algo. En este caso lo que podemos hacer es ver lo que contiene el menú principal. Sin embargo, al entrar al menú de SETTINGS, vemos que se muestra un formulario de configuración:
Sí, yo también pensé que teníamos una contraseña disponible ahí (Password), pero al hacer la revisión del código fuente vemos que es un campo de tipo texto y que lo que está ahí es netamente asteriscos (*):
Sin embargo vemos que este sitio puede conectarse a un recurso externo (printer.return.local) mediante el puerto 389 y enviando credenciales. En este sentido, lo que podríamos probar es pone a nuestro equipo en modo escucha para ver qué información está transmitiendo nuestra máquina objetivo:
NOTA: La IP 10.10.14.28 es la IP que se me asigna al momento de conectarme a la VPN de HTB.
Al momento de hacer clic en UPDATE, vemos del lado de nuestre netcat que recibimos esta información:
Podríamos inferir que lo que recibimos desde la máquina objetivo es un usuario (svc-printer) y una contraseña (1edFg43012!!). Lo que podemos hacer es probar si efectivamente estas son credenciales de algún usuario válido. Para esto podemos usar la utilidad “crackmapexec”:
Como podemos ver en la parte resaltada, estas son credenciales válidas para el servicio SMB. Si recordamos el resultado del escaneo NMAP, sabemos que el puerto 5985 está abierto. Este puerto es del servicio Windows Remote Management, por tanto, podemos probar estas credenciales para este servicio y verificar si el usuario está en un grupo de administración:
Esto confirma lo que estábamos suponiendo. Ahora lo que haremos es hacer uso de Evil-WinRM para intentar conectarnos remotamente con las credenciales que tenemos:
Como podemos ver, la conexión es exitosa. Ahora solo queda explorar un poco los directorios para poder encontrar la flag del usuario:
ESCALAR PRIVILEGIOS
Lo primero que debemos hacer es conocer qué privilegios tenemos actualmente. Para esto ejecutamos el siguiente comendo:
Luego podemos ejecutar el siguiente comando para ver los grupos en los que nuestro usuario “svc-printer” está:
Con esta información pues ahora toca repasar un poco de teoría y hacer algo de investigación. Lo primero que haré es revisar de qué tratan los grupos a los que pertenece nuestro usuario. En la investigación logré encontrar esto:
Este grupo nos permite iniciar y detener servicios, que de hecho es una vía potencial de ataque pues podríamos crear nuestro propio servicio para poder escalar privilegios. Esto lo podríamos hacer con sc.exe, pero para eso necesitaremos subir el netcat a la máquina objetivo. Por tanto, vamos a copiar el archivo nc.exe a nuestro directorio actual de trabajo:
Una vez que lo tenemos en el directorio, desde la conexión remota podemos intentar subir el archivo:
Con esto ahora podemos intentar manipular un servicio existente, cosa que al momento de levantar el mismo vamos a intentar mandar ciertos comandos para establecer una Reverse Shell hacia nuestro equipo. Para esto primero tenemos que ver qué servicios están corriendo:
Como vimos en la investigación, el grupo de Server Operators nos permite iniciar o detener los servicios y modificar algunos, no todos. En este caso tenemos que ir probando qué servicio es el que nos permite hacer una modificación que nos permite establecer una ReverseShell:
Luego de algunos intentos, vemos que el servicio VMTools nos permite hacer la modificación del mismo para establecer nuestra ReverseShell. Ahora lo único que queda es ponernos en escuchar en nuestro equipo, cosa que cuando levantemos el servicio de nuevo, podamos tener la conexión que estamos buscando:
En este punto, como hemos logrado el acceso mediante un grupo de usuarios privilegiados, ya podremos tener acceso al servidor como usuario Administrator y así podremos navegar en los directorios para obtener la flag del root:
Con esto habríamos logrado obtener ambas flags de esta máquina, tanto la intrusión como la parte de escalar privilegios son bastante sencillos pero sirve para repasar algunos conceptos y tener en cuenta que siempre se debe investigar a fondo sobre nuestro objetivo.