Home Hackthebox Writeup Timelapse
Post
Cancel

Hackthebox Writeup Timelapse

Máquina Windows donde enumeramos por el protocolo SMB (Server Message Block) un archivo backup .zip protegido por contraseña, al romperlo por Brute Force obtenemos otro archivo .pfx (Personal Information Exchange) protegido por contraseña que rompemos fácilmente. Del archivo extraemos con OpenSSL certificados digitales del protocolo SSL/TLS (Secure Socket Layer/Transport Layer Security) de un usuario para luego entrar con evil-winrm y completar la escalada. Ahora para obtener privilegios con la herramienta WinPEAS enumeramos un archivo .txt con un historial de comandos que nos permite extraer credenciales de un usuario que pertenece a un grupo del servicio LAPS, el cuál le concede acceso a un archivo en texto claro con las credenciales del administrador del sistema.


Timelapse

OSIPRelease DateDifficultyPoints
Windows10.10.11.15226 Mar 2022Easy20

Antes de empezar es importante verificar que estamos conectados a la VPN de HackTheBox y tenemos conexión con la máquina, para ello usamos el comando ping:

Ping

Observamos que enviamos un paquete _1 packets transmitted_ y lo recibimos _1 received_, por ende tenemos una conexión exitosa.

Enumeration


Empezamos enumerando los puertos TCP que están abiertos en la máquina víctima, para ello usamos la herramienta nmap:

Nmap

Explicación de parámetros :

-p- : Escanear todos los puertos, del 1 al 65,535

--open : Escanear solo puertos abiertos

-sS : Solo enviar paquetes de tipo SYN (inicio de conexión), incrementa velocidad del escaneo

--min-rate <number> : Enviar una taza (<number>) de paquetes por segundo como mínimo

-n : No buscar nombres de dominio asociadas a la IP en cuestión (rDNS)

-oG <file> : Guardar output en un archivo (<file>) de formato grepable

Agregado :

2> /dev/null : Redirigir stderr (mensajes de error) al archivo /dev/null (“Agujero Negro”)

Como estamos en una instancia Windows observamos varios puertos abiertos, para tener un poco más de información realizamos un escaneo a cada uno en específico:

Target

Explicación de parámetros :

-p<port_1,port_2,...> : Indicamos que puertos queremos escanear

-sC : Ejecutar en los puertos scripts por defecto de nmap

-sV : Activar detección de versiones de los servicios que corren por los puertos

-oN <file> : Guardar el output del escaneo en un archivo con formato Nmap

A primera vista y observando los puertos podemos deducir que estamos frente a un servicio Active Directory, viendo el puerto 445 (SMB) podemos tirar de la herramienta crackmapexec para confirmarlo:

Crackmapexec

Observamos en la información del equipo por el protocolo SMB que el Hostname es DC01 (Domain Controller), el cúal es un concepto asociado a Active Directory

DC_Concept

Ya que el puerto 445 (SMB) está abierto, usamos la herramienta smbmap para listar recursos compartidos Samba y descargar un archivo .zip con interesante nombre:

Extract_Zip

Ojito: También observamos un archivo .msi y documentos .docx con la palabra LAPS, el cúal es un concepto muy importante que lo veremos más adelante . . .

Foothold


Al intentar extraer el archivo .zip notamos que está protegido con contraseña, para ello usamos zip2john para generar un hash del archivo protegido y luego crackearlo con john:

Cracked_Zip

Después de extraer el archivo zip nos encontramos con un archivo legacyy_dev_auth.pfx, para conocer un poco de la extensión investigamos un poco:

Meaning_Pfx

Con el conocimiento de que el archivo contiene certificados digitales (SSL, Private keys) para procesos de autenticación (el nombre del archivo tiene muchas pistas), ahora solo toca buscar una manera de extraer esos certificados.

Para ello, usamos la herramienta openssl que está ligada a realizar funciones de criptografía con cifrado SSL (Secure Sock Layer):

Invalid\password

Gracias la investigación de este nuevo concepto, sabemos que el archivo contiene una private key y por ello una protección por contraseña.

A pesar de ello, aplicamos el mismo método que usamos con el archivo .zip, usamos pfx2john para generar un hash del archivo protegido y luego crackearlo con john:

Cracked_Pfx

Ahora solo queda extraer los cetificados con openssl:

Extract_Pfx

Explicación de parámetros :

pkcs12 : Especificar el formato de la data con la cúal trabajaremos

-in <file> : Especificar el archivo (<file>) del cuál queremos extraer el certificado y la llave privada

-nocerts : No extraer certificados

-clcerts : Extraer solo certificados de cliente

-nokeys : No extraer llaves privadas

-out <file> : Especificar archivo de salida (<file>)

Para más información del proceso pueden visitar la siguiente página de IBM: https://www.ibm.com/docs/en/arl/9.7?topic=configurations-ssl-certification

Disponemos de un certificado y una llave privada, pero aún no sabemos a quién pertenece.

Ojito : Desde que descubrimos el archivo .zip tuvimos varias pistas en la descripción de sus nombres: winrm_backup.zip -> legacyy_dev_auth.pfx

Aparte de eso, al mirar el certificado extraído observamos en el campo Subject como CN (Common Name) y como Issuer (Emisor) a legacyy.

Ahora sí, para asegurarnos del todo investigamos en internet y encontramos con el tipo de certificado X.509 que proporciona un campo de extensión para añadir campos adicionales al certificado:

Certificate_Info

Para más información sobre Atributos del Certificado

Con toda la información segura y las pistas, ahora podemos usar la herramienta evil-winrm para entrar como el usuario legacyy usando el certificado y la llave privada para la autenticación y pa-dentro:

Foothold

Explicación de parámetros:

-i <ip> : Ip o nombre de host remoto para la conexión

-S : Aplicar protocolo SSL (Secure Socket Layer)

-u <user> : Asignar usuario para la autenticación

-c <certificate> : Asignar certificado de llave pública

-k <private key> : Asignar certificado de llave privada

Privilege Scalation


Estamos dentro del sistema como usuerio legacyy, ahora usamos la herramienta conocida winPEAS que nos ayuda a enumerar diversas rutas para poder escalar privilegios. Al ejecutarla encontramos la ruta del .txt que guarda el historial de Powershell:

PS_History

Importante! : Para que les permita subir el archivo de nuestra máquina local a la víctima es importante que nos ubiquemos en un Writeable path (rutas por defecto con permisos de escritura para usuarios normales)

Al abrir el archivo encontramos cierta ejecución de comandos con el propósito de iniciar una sesión de cierto usuario para poder ejecutar algún comando:

Host_Hisyory

Para no tirar siempre de WinPEAS, puedes investigar sobre otras posibles rutas para escalar privilegios en el repositorio PayloadsAllTheThings

Aquí puedes tener mayor información sobre la Creación del objeto de credenciales para la sesión

Ahora que tenemos credenciales del usuario svc_deploy solo queda logearnos de nuevo con evil-winrm:

SVC_Login

Empezamos con una enumeración básica del usuario actual y encontramos que pertenece al grupo LAPS_Readers:

Laps_Group

¿ Recuerdan los archivos de la enumeración por SMB ?, con está información ya estamos completamente seguros que se está aplicando LAPS (Local Administrator Password Solution)

Investigando en internet sobre esta solución encontramos una vulnerabilidad que permite visualizar las contraseñas en texto claro de administradores locales del dominio:

Laps_Vuln

Puede visitar la siguiente página con más vulnerabilidades LAPS: https://www.attivonetworks.com/blogs/laps-vulnerability-assessment

Asociando estos conceptos con el grupo al que pertenece nuestro usuario actual, estamos listos para explotar esta vulnerabilidad.

Primero verificamos que LAPS se encuentre en el sistema para luego ejecutar una linea de comandos extraída de PayloadsAllTheThings, y ya que pertenecemos al grupo LAPS_Readers, está claro que podremos visualizar las credenciales en texto claro:

Admin_Pass

Con las credenciales del usuario Administrator solo queda volvernos a logear por evil-winrm y pa-dentro:

Priv_Scalation


This post is licensed under CC BY 4.0 by the author.