Return – HTB - Windows (A.D) - Fácil
Return es una máquina Windows (Active Directory), enfocada en explotar vulnerabilidades comunes en entornos AD, como LDAP inseguro, abuso de grupos privilegiados y BinPath Hijacking.
Reconocimiento
Escaneo inicial
Con esta información sabemos que nos encontramos ante una máquina Windows y enumeramos los puertos para verificar que servicios corren en ellos.
Enumeración
Al revisar el servicio web nos encontramos con un panel de una impresora a la cual podemos acceder a la configuración de esta.
Aquí nos encontramos con un usuario llamado svc-printer
Al inspeccionar el código de la página no encontramos información importante. Con la herramienta “enum4linux” realizaremos un escaneo, esta se utiliza para enumerar información de sistemas Windows a través del protocolo SMB (puerto 445) y RPC (puerto 135). Este escaneo permite obtener información sin necesidad de credenciales.
Este escaneo podría enumerar:
- Usuarios de dominio
- Grupos y miembros
- Shares Compartidos (SMB)
- Políticas de contraseñas
- Controlador de dominio
- Arquitectura y versión del sistema
- Políticas de bloqueo de cuentas
- Servicios del sistema
- computadores conectados al dominio
Con esta herramienta encontramos algo de información.
- Dominio NetBIOS: RETURN
- Dominio DNS: return.local
- SID del dominio: S-1-5-21-3750359090-2939318659-876128439
- Controlador de dominio: printer.return.local
- Nombre del host: PRINTER
- Sistema operativo identificado: Windows Server 2019 (Build 17763)
- SMBv1: deshabilitado
- SMB Signing: requerido (firmas obligatorias en sesiones SMB)
- Servicios expuestos: LDAP (389), LDAPS (636), SMB (445), NetBIOS (139)
Este panel de administración de la impresora permite configurar un servidor LDAP externo al cual se conectaría una impresora para autenticarse o consultar usuarios. Estos paneles tienen los campos vistos
- Server Address / IP
- LDAP Port
- Blin Dn / Ususario LDAP
- Password
Explotación
En el panel de configuración pondremos nuestra IP en el Server Address y pondremos en nuestra máquina el puerto 389 en escucha. Con esto lograremos que la impresora se intente autenticar con el usuario svc-printer y su contraseña.
Esto funcionó por que el panel de la impresora usa una configuración de LDAP simple, y es por esto que podemos ver la contraseña en texto plano. Ahora que tenemos un usuario, su contraseña y el servicio de winrm (administración remota de Windows) disponible, utilizaremos la herramienta evil-winr para conectarnos a la máquina objetivo.
Y establecemos la conexión.
Navegando por los directorios encontramos la flag de usuario
Elevación de privilegios.
Con la sesión activa por medio de evil-winrm lanzaremos el comando net user svc-printer
, con esto podremos enumerar los grupos a los que pertenece el usuario svc-printer.
Aquí encontramos información importante. Entre algunas es que el usuario esta en el grupo Remote Management Use. Este grupo no es tan elevado como Administrators, pero nos permite reiniciar servicios, cambiar configuraciones del sistema, entre otros.
En los sistemas de Windows hay un servicio que funciona por defecto llamado Volume Shadow Copy Service (vss). Este corre con privilegios elevados y no está protegido contra modificaciones si un usuario no tiene permisos suficientes.
Con el comando sc.exe query vss
podemos comprobar si el servicio está instalado y detenido. Esto nos permitirá modificar el binario.
BinPath hijacking
Esta es una técnica de escalada de privilegios en sistemas Windows, que se aprovecha de como el sistema interpreta rutas de archivos mal formateadas o sin comillas. Cuando creamos un servicio con sc.exe o desde el registro, se le asigna una ruta binaria (binPath) que indica qué ejecutable debe correr el servicio. Cuando la ruta contiene espacios y no está correctamente entrecomillada, windows interpreta la ruta por partes, y esto puede ejecutar un binario incorrecto si este existe. Sabiendo esto, nos crearemos una Reverse Shell y la subiremos a la máquina víctima para establecer una conexión. Esto lo vamos a realizar con meterpreter ya que es más robusta y estable.
Nos crearemos el payload ejecutable con msfvenom
Y lo subimos a la máquina víctima
Ahora con Metasploit configuraremos un listener para la reverse Shell que subimos en la máquina víctima.
En la sesión de evil-winrm con el comando:
sc.exe config vss binPath="C:\Users\svc-printer\Desktop\rs.exe
Este comando configura el servicio vss para que, en vez de ejecutar el comando original, ejecute rs.exe
Ahora debemos migrar a un proceso con privilegios de SYSTEM, ya que la sesión que creamos se cierra al cabo de unos minutos. Para esto utilizamos el comando ps
cuando obtengamos la sesión y buscamos un proceso que se ejecute como NT AUTHORITY\SYSTEM
Con el comando migrate
y el número PID obtendremos más estabilidad.
Luego abrimos una Shell y ya tendremos un acceso completo con todos los privilegios a la máquina.
Ahora solo nos queda encontrar la flag correspondiente.