Driver [EASY🟢]

Dificultad: Fácil

1- Reconocimiento y escaneo

1.1 Ping

Podemos notar que se trata de una maquina Windows, debido al TTL:

1.2 Nmap

Se ven puertos comunes de Windows, como el 135, 139, y el 445(SMB), ademas del puerto 80 correspondiente a un servidor web(Microsoft IIS httpd 10.0)

1.3 whatweb

Tenemos tecnologías web como:

1.4 Fuzzing

Dentro del fuzzing del directorio por default no encontramos nada relevante

2- Explotación

2.1 admin/admin

Vamos a irnos a la pagina web alojada en el puerto 80:

Nos pide unas credenciales mediante un panel de login(común en dispositivos IoT)

Si recordamos el escaneo de "whatweb" para ver las tecnologías web, nos vamos a encontrar con esto:

Nos da el usuario a ingresar, en este caso "admin", si probamos la contraseña default de la mayoría de dispositivos IoT, "admin" y "admin":

Nos deja entrar y podemos ver que es una impresora que esta expuesta en internet con credenciales por default, esta aplicación web es el MFP Firmware Update Center, ósea para actualizar el firmware de la impresora

Si nos vamos a "Firmware Updates":

Tenemos un formulario para subida de archivos dentro del servidor web

2.2 SCF(Shortcut File) en impresoras vía SMB

Podríamos pensar que ya como tenemos un formulario de subida de archivos en el servidor web, ya podemos subir un archivo PHP malicioso para obtener ejecución remota de comandos, pero este no es el caso, la intrusión a la maquina objetivo viene por otro lado, en este caso vamos a aprovecharnos de una vulnerabilidad llamada "SCF"

La vulnerabilidad SCF (Shortcut File) en impresoras está relacionada con la explotación de archivos de acceso directo de Windows (.scf) y afecta a dispositivos de impresión que tienen recursos compartidos en la red. Se aprovecha principalmente en entornos donde las impresoras tienen un servidor SMB (Server Message Block) habilitado o comparten archivos en la red local.

Si recordamos en el escaneo de Nmap, teníamos abierto el puerto 445 correspondiente a un servidor SMB, por lo que corresponde la vulnerabilidad SCF

2.2.1 ¿Cómo funciona la vulnerabilidad SCF?

  1. Envío de un archivo malicioso: El atacante crea un archivo .scf modificado y lo almacena en la impresora (si tiene almacenamiento interno) o en un recurso compartido mayormente.

  2. Autenticación forzada (NTLM Relay): Cuando un usuario o el sistema accede a la impresora y abre el recurso compartido, el archivo .scf se ejecuta de manera automática. Este archivo puede apuntar a una ruta SMB controlada por el atacante.

  3. Robo de credenciales: Cuando el sistema intenta acceder a la ruta maliciosa, envía un hash NTLMv2 del usuario autenticado. El atacante puede capturar este hash y:

    • Realizar un ataque de Pass-the-Hash para acceder a otros sistemas.

    • Intentar crackear el hash para obtener la contraseña en texto claro.

  4. Escalada de privilegios o movimiento lateral: Una vez que el atacante tiene las credenciales, puede moverse por la red, acceder a otros dispositivos o comprometer recursos más sensibles.

En este caso, la modalidad que vamos a ejercer es la segunda opción, vamos a obtener el Hash de NTLMv2 del usuario autenticado en cuestión

Pero... ¿Cómo sabemos que un usuario va a acceder al sistema?

En el mismo panel de actualización de Firmware lo indica:

Así que vamos a crearnos un archivo ".SCF" para subirlo al servidor objetivo mediante SMB y obtener los hashes NTLMv2 teniendo en escucha la herramienta "responder"

En mi caso utilizare el siguiente archivo .SCF:

En mi caso quedaria de la siguiente manera:

Este archivo .SCF, es necesario que lo almacenemos dentro de una carpeta, asi que vamos a crear una carpeta y mover el archivo .SCF a la carpeta:

Y ahora vamos a alojar un servidor SMB dentro de nuestro Kali, especificándole la ruta que le dimos al archivo .SCF, esto lo hacemos con la herramienta de "impacket-smbserver" con el siguiente comando:

En mi caso quedaría de la siguiente manera:

Ejecutamos:

Y ahora vamos a subir el archivo .SCF al formulario de subida de archivos dentro de la pagina web:

Una vez subido el archivo .SCF, volvemos a la shell donde teníamos el servidor SMB alojado y veremos el hash NTLMv2:

El hash NTLMv2 es el siguiente:

Ahora vamos a almacenar este hash NTLMv2 en un fichero de texto y a visualizarlo:

La contraseña esta hasheada, por lo que hay que aplicar fuerza bruta para obtener la contraseña en texto plano, para eso vamos a utilizar John The Ripper con el siguiente comando:

En mi caso utilizare el diccionario "rockyou", de tal manera que el comando quedaría de la siguiente forma:

Ejecutamos:

Ya tenemos las credenciales del usuario "tony":

Y ahora vamos a validar las credenciales para ver si tenemos acceso al servidor SMB con "crackmapexec" con el siguiente comando:

Ejecutamos:

2.3 Obtención de reverse shell con evil-winrm

Tambien vamos a validar con "crackmapexec" si podemos acceder con estas credenciales mediante "evil-winrm":

Vemos que si es posible, asi que vamos a utilizar "evil-winrm" para conectarnos y obtener una shell de PowerShell con el siguiente comando:

De tal manera que:

Ejecutamos:

Ya tenemos una consola de PowerShell remota hacia la maquina de Hack The Box

2.4 Obtención de la flag user

La flag de user se encuentra dentro de la ruta absoluta "C:\Users\tony\Desktop\user.txt":

3- Escalado de privilegios

3.1 spoolsv.exe LPE

Si miramos los procesos que tenemos corriendo sobre la maquina con el comando "ps", veremos un proceso llamado "spoolsv":

Mediante este proceso podemos realizar un LPE(Local Privilege Escalation), podemos utilizar varios exploits que se encuentran en GitHub, en mi caso utilizare un exploit de John Hammond concretamente la vulnerabilidad publica CVE-2021-34527:

Repositorio de GitHub

Créditos al creador del repositorio

Asi que vamos a bajarnos con "wget" el archivo "CVE-2021-34527.ps1" para ejecutarlo en la reverse shell de PowerShell que obtuvimos con evil-winrm para ejecutar la escalada de privilegios

Lo que realiza este exploit es la creación de un nuevo usuario dentro de la maquina con un usuario y contraseña que nosotros le asignemos a los parámetros del exploit

Ejecutamos:

Y ahora vamos a alojar nuevamente un servidor SMB para pasarnos con el comando "copy" el archivo .ps1 del exploit:

Y para bajarnos el archivo dentro de la reverse shell PowerShell de evil-winrm utilizamos el siguiente comando:

En mi caso quedaría de la siguiente manera:

Ejecutamos:

(Dentro de la carpeta "Documents" del usuario "tony", tenemos permisos de escritura y lectura)

Antes de importar el modulo del script "lpe.ps1", vamos a habilitar la importación de modulos con el siguiente comando:

Ejecutamos

Y ahora vamos a importar el modulo del exploit que nos acabamos de bajar, en mi caso "lpe.ps1":

Una vez ya importado el modulo, vamos a crear un nuevo usuario desde PowerShell con las funciones del anterior modulo importado con el siguiente comando "Invoke-Nightmare":

Se creo un usuario admin con las siguientes credenciales

Ademas de crearse el payload en formato .dll

Ahora vamos a crear un usuario que sea Administrator con el siguiente comando:

En mi caso utilizare las siguientes credenciales:

Ejecutamos:

Ahora ya tenemos el usuario "t0mz" en mi caso, que ya pertenece al grupo de Administrators de esta maquina, asi que vamos a conectarnos con "evil-winrm" con estas credenciales:

Ejecutamos:

Ya tenemos un usuario Administrator solamente por el fallo de seguridad del proceso "spoolsv.exe"

3.2 Obtención de la flag root

La flag de user se encuentra dentro de la ruta absoluta "C:\Users\Administrator\Desktop\root.txt":

Con esto, concluimos la maquina "Driver" de Hack The Box

Espero te haya sido de ayuda este Write Up :)

Si tuviste alguna dificultad a la hora de resolverlo, no olvides contactarme en mis redes sociales

Última actualización