Resolución del CTF PACHARÁN
💢Plataforma TheHackersLabs
❌Nombre: Pacharán
📈Nivel: Avanzado
💻OS: WINDOWS (Active Directory)
🙋🏽♂️Creador: CuriosidadesDeHackers & @condor7777
Enumeración
Escaneo de puertos
Realizamos un escaneo de todos los puertos para saber cuáles están activos.

Los parámetros utilizados son:
- -p- : Escaneo de todos los puertos. (65535)
- -sS : Realiza un TCP SYN Scan para escanear de manera rápida que puertos están abiertos.
- -sC : Realiz una escaneo con los scripts basicos de reconocimiento
- -sV : Realiza un escaneo en buqueda de los servicios
- –min-rate 5000: Especificamos que el escaneo de puertos no vaya más lento que 5000 paquetes por segundo, el parámetro anterior y este hacen que el escaneo se demore menos.
- -n: No realiza resolución de DNS, evitamos que el escaneo dure más tiempo del necesario.
- -Pn: Deshabilitamos el descubrimiento de host mediante ping.
Vamos a enumerar recursos compartidos mediante el usuario invitado.

Y vemos que tenemos uno el cual podemos leer llamado PACHARAN, vemos que parece una credencial lo que nos hace sospechar que es la credencial del usuario Orujo.

Asi que enumeramos recursos compartidos y tenemos uno llamad NETLOGON2.

Nos lo traemos.

Y tenemos una serie de contraseñas.

Asi que con el mismo usuario y contraseña con rpclient enumeramos usuarios.

Los vamos a meter en una lista.

Y con crackmapexec vamos a ver que credenciales coinciden mediante smb.


Obtennos un usuario y contraseña y volvemos a enumerar con rpclient, en este caso tenemos una contraseña en una de las impresoras.

Nuevamente utilizamos crackmapexec para ver con que usuario de los que enumeramos anteriormente funciona, pero esta vez por winrm.

Entramos por winrm y vemos que tenemos el permiso SeLoadDriverPrivilege, el cual tenemos la explicación de dicho privilegio en este articulo.

Nos vamos a crear una carpeta temporal y subiremos los exploit que tenemos para abusar de dicho privilegio.


A partir de este punto, mediante nuestra prueba de concepto LOADRIVER.exe
- Habilitar el privilegio SeLoadDriverPrivilege
- Crear los distintos parámetros vinculados a la carga del driver bajo la clave del registro HKEY_CURRENT_USER
- Ejecutar la función NTLoadDriver, especificando la clave del registro creada previamente El parámetro ClaveRegistro especifica el nombre de la clave del registro creada a partir de la ruta “\Registry\User{SID_USUARIO_NO_PRIVILEGIADO}\”, mientras que el argumento RutaDriver define la localización del driver. Tal y como se visualiza en la imagen la localización es el escritorio del usuario.
![[Pasted image 20240731200812.png]]
Tras la ejecución se puede comprobar la carga correcta del driver haciendo uso de la herramienta DriverView o WinObj.
Con mskvenon crearemos un payload para tener conexion remota
![[Pasted image 20240731200839.png]]
Una vez identificada la forma de cargar un driver desde una cuenta de usuario no privilegiada, el siguiente paso es identificar un driver firmado que cuente con alguna vulnerabilidad que nos permita elevar privilegios en el sistema.
Para este ejemplo, hemos seleccionado el driver de Capcom.sys (SHA1: c1d5cf8c43e7679b782630e93f5e6420ca1749a7) el cual cuenta con una ‘funcionalidad’ que permite ejecutar código en espacio de kernel a partir de una función definida en espacio de usuario.
Una vez cargado es posible ejecutar cualquier exploit descrito anteriormente. La siguiente imagen evidencia la utilización del exploit “ExploitCapcom” de Tandasat para obtener una terminal como SYSTEM.

